数字系统设计(上).ppt

上传人:小** 文档编号:3762799 上传时间:2020-10-24 格式:PPT 页数:67 大小:2.92MB
返回 下载 相关 举报
数字系统设计(上).ppt_第1页
第1页 / 共67页
数字系统设计(上).ppt_第2页
第2页 / 共67页
点击查看更多>>
资源描述

《数字系统设计(上).ppt》由会员分享,可在线阅读,更多相关《数字系统设计(上).ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数字电路设计(上),汤勇明 东南大学电子科学与工程学院 2009年4月,主要内容,数字系统设计部分讲座概述 常用数字系统单元设计范例 常用组合逻辑单元 常用时序逻辑单元 常用综合逻辑设计示范 数字系统设计技巧举例(上) Quartus II使用流程 宏函数使用 三态门使用 课后习题,数字系统设计部分讲座说明,主要讲座内容 常用数字系统设计范例 常用数字系统设计技巧 数字系统设计注意事项 讲座与数字电路课程教学的差异 课时安排 内容覆盖面 能力侧重点,数字系统设计部分讲座说明(续),课后习题要求 两次课后都有习题布置 作业电子档递交: 文件命名要求:姓名+学号+作业名 其它 PLD设计开发平台使

2、用自学为主 HDL语言(不限种类)自学为主,数字电路课程内容回顾,数制和码制 组合逻辑电路 组合逻辑电路的分析 组合逻辑电路的设计 时序逻辑电路 时序逻辑电路的分析 时序逻辑电路的设计,培训关注点,培训关注点,数字电路课程内容回顾(续),组合逻辑设计流程,时序逻辑设计流程,传统数字系统设计案例,设计题:设计一个电路,其输入范围为二进制数字015,当此数为素数时电路输出为1。 最小化设计方法 标准化设计方法(8选1数据选择器),数字电路课程内容回顾(续),典型组合逻辑单元案例 编码/译码器 数据选择器 查找表/ROM 典型时序逻辑单元案例 计数器 移位寄存器 数字系统设计要点 编码/状态的优化选

3、择 中小规模的逻辑电路单元拆分,基于HDL和PLD器件的逻辑设计,名词解释 HDL:Hardware Description Language PLD:Programmable Logic Device 技术优势 兼容原逻辑电路设计方法 增加电路行为描述设计方法 器件数量减少、设计效率提升、系统可靠性提升,组合逻辑电路单元设计范例,编码器/译码器 多路数据选择器,编码器/译码器设计案例,8-3编码器 (Verilog HDL设计),3-8译码器 (电路图设计),41MUX设计案例,41MUX (VHDL设计),41MUX (电路图设计),时序逻辑电路单元设计范例,计数器 移位寄存器 有限状态机

4、,计数器设计案例,可正向、倒向计数器 异步清零 同步置数,计数器设计案例,具体时序仿真结果,时钟三分频设计案例,时钟三分频设计案例,具体时序仿真结果,有限状态机(FSM)设计基础,FSM分米勒型(Mealy)和摩尔型(Moore)两种,前者的输出取决于机器状态和输入,后者的输出与输入无关。 FSM的设计方法有两类:一种是将状态的转移和状态的操作写在同一个模块中,另一个是将状态转移单独写成一个模块。后者利于综合器优化代码、布局布线。,Moore型FSM,always (w, state) begin case(state) / Define state circle A: if(w)next_s

5、tate=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; endcase z=(state=C);/Define output end / Define the sequential block always (posedge clk or negedge rst) begin if (!rst)state=A; elsestate=next_state; end endmodule,A为初始状态;w为

6、输入;z为输出,module simple (clk, rst, w, z); input clk, rst, w; outputz; regz; reg2:1state, next_state; parameter2:1 A=2b00,B=2b01, C=2b10;,Moore型FSM波形图,Mealy型FSM,/Define the next state and output combination circuits always (w,state) begin case(state) A: if(w) begin z=0; next_state=B; end else begin z=0

7、; next_state=A; end B: if(w) begin z=1; next_state=B; end else begin z=0; next_state=A; end endcase end endmodule,module mealy (clk, rst, w, z); inputclk, rst, w; outputz; regz; regstate, next_state; parameter A=1b0, B=1b1; /Define the sequential block always (posedge clk or negedge rst) begin if (!

8、rst) state=A; elsestate=next_state; end,Mealy型FSM波形图,流水灯设计案例需求分析/设计方案,流水灯需求分析 通过8个单色LED实现流水灯显示效果 流水灯设计方案 用CASE语句实现 用移位寄存器实现 用有限状态机实现,流水灯设计之CASE语句实现,module lamp (rst, clk, state); inputrst, clk; output7:0state; reg7:0state, next_state; parameterIdle = 8b11111111, state0=8b11111110, state1=8b11111100,

9、 state2=8b11111000, state3=8b11110000, state4=8b11100000, state5=8b11000000, state6=8b10000000, state7=8b00000000; always (posedge clk or negedge rst) begin if (!rst)state=Idle; elsestate=next_state; end,always (state) begin case(state) Idle:next_state=state0; state0:next_state=state1; state1:next_s

10、tate=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; endcase end endmodule,Question:如果流水灯效果要求为双向移动,本程序如何修改?,流水灯波形,注1:CPLD实验板上的LED当电平为0时亮,为1时灭; 注2:实际的时钟需要适当降低到人眼可

11、以识别的变化范围内。,流水灯设计之移位寄存器实现,module lamp (rst, clk, state); inputrst, clk; output7:0state; reg7:0state, next_state; always (posedge clk or negedge rst) begin if (!rst)state=8b11111111; elsestate=next_state; end always(state) begin if (state=8b000000000) next_state=8b11111111; elsenext_state=state1; end

12、endmodule,Questions: 如果流水灯效果要求为双向移动,本程序如何修改? 如果流水灯跳变节奏需要有变化,本程序如何修改? 本程序原设计本身是否有不足?,流水灯设计之有限状态机实现,module lamp (rst, clk, w, state); inputrst, clk, w; output7:0 state; reg7:0state, next_state; parameter Idle= 8b11111111, state0= 8b11111110, state1= 8b11111100, state2= 8b11111000, state3= 8b11110000,

13、state4= 8b11100000, state5= 8b11000000, state6= 8b10000000, state7= 8b00000000; always (posedge clk or negedge rst) begin if (!rst)state=Idle; elsestate=next_state; end,always (state or w) begin case (state) Idle:begin if (w)next_state=state0; else next_state=Idle; end state0:begin if (w)next_state=

14、state1; elsenext_state=state0; end state1: state2: state7: default:next_state=Idle; endcase end endmodule,三种流水灯设计对比,移位操作语句设计 移位操作与流水灯操作统一,程序设计简易且易于理解 CASE语句设计 状态转换条件单一时的简易FSM设计方法 有限状态机设计 具备复杂状态转换设计能力 程序扩展能力强 程序本身语句复杂度偏高 有限状态机是逻辑系统设计中重要的设计手段,需要熟练掌握和灵活应用。,波形序列发生器设计案例,波形序列发生器设计案例(续),波形序列发生器设计案例,具体时序仿真结

15、果 程序设计含嵌套式有限状态机设计思想,交通灯项目设计示范(一),交通灯项目要求说明 为某路口设计交通灯,控制2组红、绿、黄指示灯及两组(各两位)七段码数字指示灯。两组红、绿、黄指示灯分别控制东西和南北两个方向的通行情况。要求设计两种工作状态:日间正常态和夜间休息态,由一个输入信号控制两状态之间的切换。夜间休息态要求数字灯显示为“00”,两个方向上都显示闪烁的黄灯(0.5Hz左右),以示慢行。日间正常态要求两方向交替通行,南北方向通行时间为32秒(秒为粗略值,相近即可,下同),东西方向通行时间为28秒,两位数码指示灯显示倒数计时,计数的最后两秒在通行方向由绿灯变为显示黄灯,非通行方向保持红灯不

16、变。,交通灯项目设计示范(二),端口分析 输入: 时钟信号 日夜模式控制 输出: 南北方向交通灯 东西方向交通灯 南北方向计时显示 东西方向计时显示,交通灯项目设计示范(三),功能清单,注:此处选择与实际应用接近的倒数计数方案。,交通灯项目设计示范(四),设计方案1 以MUX为核心 设计方案2 以状态机为核心 设计方案3 状态机嵌套,交通灯项目设计示范(五),硬件实验平台推荐 CPLD DSK + 交通灯显示电路 CPLD DSK 2,设计方案二说明,设计方案二说明(续),状态1(夜间) 黄灯闪烁 状态0(南北绿) 主计数器从30到1 状态2(南北黄) 从计数器从2到1 状态3(东西绿) 主计

17、数器从26到1 状态4(东西黄) 从计数器从2到1,设计方案二说明(续),七段码显示模块 译码器(case语句优先) 分频模块 计数器 主控模块核心 状态机 主/从计数器模块 带置数/使能控制的递减计数器,其它综合逻辑设计案例列举,电子钟设计 试设计一个电子钟,正常情况下能显示小时和分钟信息(四位七段码),中间间隔2个LED灯每秒闪烁一次,当按某一按键后七段码切换为秒数显示。 串并转换 试设计一个串并转换电路模块,能实现串行数据到8位并行数据的转换功能(输入:clk, reset,en,datas;输出:7:0 datap),注意数据缓冲设计。,Quartus II软件使用,Quartus I

18、I是个集成的PLD设计开发环境,功能涵盖设计输入、设计编译、设计仿真、编程下载等各个设计流程需要 Quartus II支持第三方EDA厂家的设计工具输入,Quartus II 界面简介,Fig.1 Quartus II基本界面,利用向导建立新项目 (1),Step 1: 在File菜单中选择New Project Wizard.选项启动项目向导。,Fig.2 QuartusII项目名称、路径、顶层文件设定窗口,分别指定创建工程的路径,工程名和顶层文件名。 工程名和顶层文件可以一致也可以不同。 一个工程中可以有多个文件,但只能有一个顶层文件。,利用向导建立新项目 (2),Step2:点击Next

19、按钮,页面二是在新建的工程中添加已有Verilog HDL文件的。 Step3:点击Next按钮,进入页面三,完成器件选择。,图3、QuartusII中器件选择窗口,利用向导建立新项目 (3),Step4:后面两步分别是对EDA工具的设定和工程综述,都不作任何操作。点击Finish完成工程创建。,图4、QuartusII项目设定完成综述窗口,新建一个Verilog HDL文件,Quartus II中包含完整的文本编辑程序(Text Editor),在此用Verilog HDL来编写源程序 新建一个Verilog HDL文件,可以通过 快捷按钮 快捷键Ctrl+N 从File菜单中选择New.

20、弹出页式对话框后选择Device Design Files页面的Verilog HDL File,点击OK按钮。,Verilog HDL程序输入,在用户区Verilog HDL文件窗口中输入源程序,保存时文件名与实体名保持一致。 module basic_ddf(d,clk,q,qd); inputd,clk; outputq,qd; regq,qd; always(posedge clk) begin q=d; qd=d; end endmodule,对源程序进行语法检查和编译,使用快捷按钮 ,对以上程序进行分析综合,检查语法规范; 如果没有问题则编译整个程序,使用 如果出现问题,则对源程序

21、进行修改,直至没有问题为止。,仿真,Quartus II内置波形编辑程序(Waveform Editor)可以生成和编辑波形设计文件。 Quartus II中的仿真包括功能仿真和时序仿真。两种仿真操作类似,只需在Tools菜单中选择Simulater Tool,在其Simulater mode中进行选择即可,图5、QuartusII项目仿真设定窗口,时序仿真 (1),Step1、 新建一个波形文件:该过程与新建Verilog HDL文件类似,只是在弹出页式对话框后选择Other Files页面的Vector Waveform File。,时序仿真 (2),Step2、 在波形文件中加入所需观察

22、波形的管脚:在Name中单击右键,选择Insert Node or bus.选项,出现Insert Node or bus对话框,此时可在该对话框的Name栏直接键入所需仿真的管脚名,也可点击Node Finder.按钮,将所有需仿真的管脚一起导入。,图6、QuartusII建立待仿真文件时的管脚及内部信号选择窗口,时序仿真 (3),Step3、 给输入管脚指定仿真波形:分别选中输入管脚,使用波形编辑器: 对其输入波形进行编辑。最后保存波形文件,图7、QuartusII中编辑完成的待仿真波形文件,时序仿真 (5),对basic_ddf的仿真结果说明 仿真结果在时间20ns时,输入信号d已经是1

23、状态,但是由于时钟脉冲信号clk这时不是处于上升沿,所以必须等到时间轴30ns的地方,才会让输出信号q变成1,不过由于芯片的传输延迟效应,最后是在37ns处才会产生1。 在时间轴90ns处,输入信号d和时钟脉冲信号同时出现是1状态,但这上升沿的瞬间十分短暂,有仿真结果知道,输出信号q必须等到下一个时钟上升沿之后才会出现1状态。 在时间轴160ns之后,由于没有时钟脉冲信号clk,这时不论d的输入信号为何,输出信号q始终保持不变。,*.pof 文件的生成 (1),图9、QuartusII项目管理中的管脚分配窗口,表1 基本D触发器管脚分配,*.pof 文件的生成 (2),Step1、分配管脚:选

24、择Assignment菜单的pins选项,进入管脚分配界面。 在管脚分配之前确定类别栏按钮 ,管脚过滤栏 和分色显示按钮 都处于有效状态,按下类别栏的Pin按钮。 在Node Filter栏中单击右键,选择Node Finder.选项,选中所有输入输出管脚。在管脚分配栏中,将程序中的输入输出脚分配到MAX II的管脚上,并保存。 Step2、编译:使用 进行整体编译,系统将自动生成*.pof文件。,下载,实验电路板接5V电源,确保其供电正常;连接下载电缆;点击 进入下载界面。点击Add File.加入下载数据流文件basic_ddf.pof,进行下载。如图1.10所示。点击Start按钮开始下

25、载。,图10、QuartusII项目下载管理窗口,Quartus II软件宏函数使用说明,主要宏函数,算术函数 加法 减法 乘法 除法 比较 门电路函数 与/或/非门 三态门 多路选择器/译码器 ,I/O端口函数 PLL锁相环 振荡器 LVDS端口 存储器函数 触发器FF 锁存器Latch 移位寄存器 内存函数 单/双口RAM FIFO Flash Memory,宏函数调用示范,宏函数调用示范,宏函数调用示范,宏函数调用示范,宏函数调用示范,宏函数调用示范,补充说明 一般常用规模较小的函数命名以LPM打头,是早期函数 有些函数命名以ALTFP打头,一般功能设计更强 IP是指一些专业大型函数,可免费调用和测试,但不能用作最后固化下载,最终使用需付费,三态门/双向端口调用,三态门/双向端口调用,如何理解该波形含义? 注意OE使能信号或Tri_en三态使能信号的时序关系,建议使用MegaWizard中的三态门函数。,课后习题,采用适合的设计方案完成交通灯案例设计(输入时钟晶振为50M Hz) 设计源代码及项目工程 仿真验证结果(波形图、功能可加速) PLD内部资源消耗统计结果,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁