资源描述
综合电子系统设计课程系列讲座综合电子系统设计课程系列讲座数字电路设计(上)数字电路设计(上)20092009年年4 4月月综合电子系统设计系列讲座主要内容数字系统设计部分讲座概述常用数字系统单元设计范例l常用组合逻辑单元l常用时序逻辑单元l常用综合逻辑设计示范数字系统设计技巧举例(上)lQuartusII使用流程l宏函数使用l三态门使用课后习题综合电子系统设计系列讲座数字系统设计部分讲座说明主要讲座内容l常用数字系统设计范例l常用数字系统设计技巧l数字系统设计注意事项讲座与数字电路课程教学的差异l课时安排l内容覆盖面l能力侧重点综合电子系统设计系列讲座数字系统设计部分讲座说明(续)课后习题要求l两次课后都有习题布置l作业电子档递交:l文件命名要求:姓名+学号+作业名其它lPLD设计开发平台使用自学为主lHDL语言(不限种类)自学为主综合电子系统设计系列讲座数字电路课程内容回顾数制和码制组合逻辑电路l组合逻辑电路的分析l组合逻辑电路的设计时序逻辑电路l时序逻辑电路的分析l时序逻辑电路的设计培训关注点培训关注点培训关注点培训关注点综合电子系统设计系列讲座数字电路课程内容回顾(续)组合逻辑设计流程时序逻辑设计流程综合电子系统设计系列讲座传统数字系统设计案例设计题:设计一个电路,其输入范围为二进制数字015,当此数为素数时电路输出为1。l最小化设计方法l标准化设计方法(8选1数据选择器)综合电子系统设计系列讲座数字电路课程内容回顾(续)典型组合逻辑单元案例l编码/译码器l数据选择器l查找表/ROM典型时序逻辑单元案例l计数器l移位寄存器数字系统设计要点l编码编码/状态状态的优化选择l中小规模的逻辑电路单元拆分综合电子系统设计系列讲座基于HDL和PLD器件的逻辑设计名词解释lHDL:HardwareDescriptionLanguagelPLD:ProgrammableLogicDevice技术优势l兼容原逻辑电路设计方法l增加电路行为描述设计方法l器件数量减少、设计效率提升、系统可靠性提升综合电子系统设计系列讲座组合逻辑电路单元设计范例编码器/译码器多路数据选择器综合电子系统设计系列讲座编码器/译码器设计案例8-3编码器编码器(Verilog HDL设计)设计)3-8译码器译码器(电路图设计)(电路图设计)综合电子系统设计系列讲座41MUX设计案例41MUX(VHDL设计)设计)41MUX(电路图设计)(电路图设计)综合电子系统设计系列讲座时序逻辑电路单元设计范例计数器移位寄存器有限状态机综合电子系统设计系列讲座计数器设计案例可正向、倒向计数器l异步清零l同步置数综合电子系统设计系列讲座计数器设计案例具体时序仿真结果综合电子系统设计系列讲座时钟三分频设计案例综合电子系统设计系列讲座时钟三分频设计案例具体时序仿真结果综合电子系统设计系列讲座有限状态机(FSM)设计基础FSM分米勒型(Mealy)和摩尔型(Moore)两种,前者的输出取决于机器状态和输入,后者的输出与输入无关。FSM的设计方法有两类:一种是将状态的转移和状态的操作写在同一个模块中,另一个是将状态转移单独写成一个模块。后者利于综合器优化代码、布局布线。综合电子系统设计系列讲座Moore型FSMalways(w,state)begincase(state)/DefinestatecircleA:if(w)next_state=B;elsenext_state=A;B:if(w)next_state=C;elsenext_state=A;C:if(w)next_state=C;elsenext_state=A;default:next_state=A;endcasez=(state=C);/Defineoutputend/Definethesequentialblockalways(posedgeclkornegedgerst)beginif(!rst)state=A;elsestate=next_state;endendmoduleA为初始状态;为初始状态;w为输入;为输入;z为输出为输出modulesimple(clk,rst,w,z);inputclk,rst,w;outputz;regz;reg2:1state,next_state;parameter2:1A=2b00,B=2b01,C=2b10;综合电子系统设计系列讲座Moore型FSM波形图综合电子系统设计系列讲座Mealy型FSM/Definethenextstateandoutputcombinationcircuitsalways(w,state)begincase(state)A:if(w)beginz=0;next_state=B;endelsebeginz=0;next_state=A;endB:if(w)beginz=1;next_state=B;endelsebeginz=0;next_state=A;endendcaseendendmodulemodulemealy(clk,rst,w,z);inputclk,rst,w;outputz;regz;regstate,next_state;parameterA=1b0,B=1b1;/Definethesequentialblockalways(posedgeclkornegedgerst)beginif(!rst)state=A;elsestate=next_state;end综合电子系统设计系列讲座Mealy型FSM波形图综合电子系统设计系列讲座流水灯设计案例需求分析/设计方案流水灯需求分析l通过8个单色LED实现流水灯显示效果流水灯设计方案l用CASE语句实现l用移位寄存器实现l用有限状态机实现状态状态LED显示要求显示要求Idlestate0 state1state2state3state4state5state6state7综合电子系统设计系列讲座流水灯设计之CASE语句实现modulelamp(rst,clk,state);inputrst,clk;output7:0state;reg7:0state,next_state;parameterIdle=8b11111111,state0=8b11111110,state1=8b11111100,state2=8b11111000,state3=8b11110000,state4=8b11100000,state5=8b11000000,state6=8b10000000,state7=8b00000000;always(posedgeclkornegedgerst)beginif(!rst)state=Idle;elsestate=next_state;endalways(state)begincase(state)Idle:next_state=state0;state0:next_state=state1;state1:next_state=state2;state2:next_state=state3;state3:next_state=state4;state4:next_state=state5;state5:next_state=state6;state6:next_state=state7;state7:next_state=Idle;default:next_state=Idle;endcaseendendmoduleQuestion:如果流水灯效果要求为双向移动,本程序如何修改?综合电子系统设计系列讲座流水灯波形注1:CPLD实验板上的LED当电平为0时亮,为1时灭;注2:实际的时钟需要适当降低到人眼可以识别的变化范围内。综合电子系统设计系列讲座流水灯设计之移位寄存器实现modulelamp(rst,clk,state);inputrst,clk;output7:0 state;reg7:0state,next_state;always(posedgeclkornegedgerst)beginif(!rst)state=8b11111111;elsestate=next_state;endalways(state)beginif(state=8b000000000)next_state=8b11111111;elsenext_state=state1;endendmoduleQuestions:1.如果流水灯效果要求如果流水灯效果要求为双向移动,本程序为双向移动,本程序如何修改?如何修改?2.如果流水灯跳变节奏如果流水灯跳变节奏需要有变化,本程序需要有变化,本程序如何修改?如何修改?3.本程序原设计本身是本程序原设计本身是否有不足?否有不足?综合电子系统设计系列讲座流水灯设计之有限状态机实现modulelamp(rst,clk,w,state);inputrst,clk,w;output7:0state;reg7:0state,next_state;parameterIdle=8b11111111,state0=8b11111110,state1=8b11111100,state2=8b11111000,state3=8b11110000,state4=8b11100000,state5=8b11000000,state6=8b10000000,state7=8b00000000;always(posedgeclkornegedgerst)beginif(!rst)state=Idle;elsestate=next_state;endalways(stateorw)begincase(state)Idle:beginif(w)next_state=state0;elsenext_state=Idle;endstate0:beginif(w)next_state=state1;elsenext_state=state0;endstate1:state2:state7:default:next_state按钮,页面二是在新建的工程中添加已有VerilogHDL文件的。Step3:点击Next按钮,进入页面三,完成器件选择。图3、QuartusII中器件选择窗口综合电子系统设计系列讲座利用向导建立新项目(3)Step4:后面两步分别是对EDA工具的设定和工程综述,都不作任何操作。点击Finish完成工程创建。图4、QuartusII项目设定完成综述窗口综合电子系统设计系列讲座新建一个VerilogHDL文件QuartusII中包含完整的文本编辑程序(TextEditor),在此用VerilogHDL来编写源程序新建一个VerilogHDL文件,可以通过l快捷按钮l快捷键Ctrl+Nl从File菜单中选择New.弹出页式对话框后选择Device Design Files页面的Verilog HDL File,点击OK按钮。综合电子系统设计系列讲座VerilogHDL程序输入在用户区VerilogHDL文件窗口中输入源程序,保存时文件名与实体名保持一致。modulebasic_ddf(d,clk,q,qd);inputd,clk;output q,qd;regq,qd;always(posedgeclk)beginq=d;qd=d;endendmodule综合电子系统设计系列讲座对源程序进行语法检查和编译使用快捷按钮,对以上程序进行分析综合,检查语法规范;如果没有问题则编译整个程序,使用如果出现问题,则对源程序进行修改,直至没有问题为止。综合电子系统设计系列讲座仿真QuartusII内置波形编辑程序(WaveformEditor)可以生成和编辑波形设计文件。QuartusII中的仿真包括功能仿真和时序仿真。两种仿真操作类似,只需在Tools菜单中选择Simulater Tool,在其Simulatermode中进行选择即可图5、QuartusII项目仿真设定窗口综合电子系统设计系列讲座时序仿真(1)Step1、新建一个波形文件:该过程与新建VerilogHDL文件类似,只是在弹出页式对话框后选择Other Files页面的Vector Waveform File。综合电子系统设计系列讲座时序仿真(2)Step2、在波形文件中加入所需观察波形的管脚:在Name中单击右键,选择Insert Node or bus.选项,出现Insert Node or bus对话框,此时可在该对话框的Name栏直接键入所需仿真的管脚名,也可点击Node Finder.按钮,将所有需仿真的管脚一起导入。图6、QuartusII建立待仿真文件时的管脚及内部信号选择窗口综合电子系统设计系列讲座时序仿真(3)Step3、给输入管脚指定仿真波形:分别选中输入管脚,使用波形编辑器:对其输入波形进行编辑。最后保存波形文件图7、QuartusII中编辑完成的待仿真波形文件综合电子系统设计系列讲座时序仿真(5)对basic_ddf的仿真结果说明l仿真结果在时间20ns时,输入信号d已经是1状态,但是由于时钟脉冲信号clk这时不是处于上升沿,所以必须等到时间轴30ns的地方,才会让输出信号q变成1,不过由于芯片的传输延迟效应,最后是在37ns处才会产生1。l在时间轴90ns处,输入信号d和时钟脉冲信号同时出现是1状态,但这上升沿的瞬间十分短暂,有仿真结果知道,输出信号q必须等到下一个时钟上升沿之后才会出现1状态。l在时间轴160ns之后,由于没有时钟脉冲信号clk,这时不论d的输入信号为何,输出信号q始终保持不变。综合电子系统设计系列讲座*.pof文件的生成(1)图9、QuartusII项目管理中的管脚分配窗口程序中管脚名实际管脚说明dPin 96扩展口J6的第一脚clkPin 18全局时钟qPin 107扩展口J5的第一脚qbPin 106扩展口J5的第三脚表1基本D触发器管脚分配综合电子系统设计系列讲座*.pof文件的生成(2)Step1、分配管脚:选择Assignment菜单的pins选项,进入管脚分配界面。l在管脚分配之前确定类别栏按钮,管脚过滤栏和分色显示按钮都处于有效状态,按下类别栏的Pin按钮。l在Node Filter栏中单击右键,选择Node Finder.选项,选中所有输入输出管脚。在管脚分配栏中,将程序中的输入输出脚分配到MAXII的管脚上,并保存。Step2、编译:使用进行整体编译,系统将自动生成*.pof文件。综合电子系统设计系列讲座下载实验电路板接5V电源,确保其供电正常;连接下载电缆;点击进入下载界面。点击Add File.加入下载数据流文件basic_ddf.pof,进行下载。如图1.10所示。点击Start按钮开始下载。图10、QuartusII项目下载管理窗口综合电子系统设计系列讲座QuartusII软件宏函数使用说明综合电子系统设计系列讲座主要宏函数算术函数l加法l减法l乘法l除法l比较l门电路函数l与/或/非门l三态门l多路选择器/译码器lI/O端口函数lPLL锁相环l振荡器lLVDS端口l存储器函数l触发器FFl锁存器Latchl移位寄存器l内存函数l单/双口RAMlFIFOlFlashMemory综合电子系统设计系列讲座宏函数调用示范综合电子系统设计系列讲座宏函数调用示范综合电子系统设计系列讲座宏函数调用示范综合电子系统设计系列讲座宏函数调用示范综合电子系统设计系列讲座宏函数调用示范综合电子系统设计系列讲座宏函数调用示范补充说明l一般常用规模较小的函数命名以LPM打头,是早期函数l有些函数命名以ALTFP打头,一般功能设计更强lIP是指一些专业大型函数,可免费调用和测试,但不能用作最后固化下载,最终使用需付费综合电子系统设计系列讲座三态门/双向端口调用综合电子系统设计系列讲座三态门/双向端口调用如何理解该波形含义?注意OE使能信号或Tri_en三态使能信号的时序关系,建议使用MegaWizard中的三态门函数。
展开阅读全文