数字系统设计与Verilog-HDL学习课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数字系统设计与Verilog-HDL学习课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 Verilog HDL 学习 课件
- 资源描述:
-
1、 XXXXXXXX大学大学XXXXXX学院学院1第第9章章 Verilog数字电路设计实践数字电路设计实践 主要内容主要内容2基本组合电路的设计基本组合电路的设计1 1ABFCD门级结构描述门级结构描述 module gate1(F,A,B,C,D);input A,B,C,D;output F;nand(F1,A,B);/调用门元件调用门元件and(F2,B,C,D);or(F,F1,F2);endmodule数据流描述数据流描述module gate2(F,A,B,C,D);input A,B,C,D;output F;assign F=(A&B)|(B&C&D);/assign持续赋值持
2、续赋值endmodule行为描述行为描述module gate3(F,A,B,C,D);input A,B,C,D;output F;reg F;always(A or B or C or D)/过程赋值过程赋值beginF=(A&B)|(B&C&D);endendmodule3基本组合电路的设计基本组合电路的设计2 2用用bufif1关键字描述的三态门关键字描述的三态门 module tri_1(in,en,out);input in,en;output out;tri out;bufif1 b1(out,in,en);/注意三态门端口的排列顺序注意三态门端口的排列顺序endmodule4用
3、用assign语句描述三态门语句描述三态门 用用MAX+PLUS II进行编译,生成上图所示的模块符号。进行编译,生成上图所示的模块符号。5基本组合电路的设计基本组合电路的设计 33-to-8 decodermodule decoder_38(out,in);output7:0 out;input2:0 in;reg7:0 out;always(in)begin case(in)3d0:out=8b11111110;3d1:out=8b11111101;3d2:out=8b11111011;3d3:out=8b11110111;3d4:out=8b11101111;3d5:out=8b1101
4、1111;3d6:out=8b10111111;3d7:out=8b01111111;endcase endendmodule628-3的优先编码器的优先编码器 作为条件语句,作为条件语句,if-else语句的分支是有优先顺序的。利用语句的分支是有优先顺序的。利用if-else语语句的特点,可以很方便地实现优先编码器。句的特点,可以很方便地实现优先编码器。下面的例子是一个下面的例子是一个8-3优先编码器,该编码器输人为优先编码器,该编码器输人为a、b、c、d、e、f、g和和h,输人信号高电平有效,输人信号高电平有效,h的优先级最高。的优先级最高。7续续8符号符号 用用QuartusII软件对上
5、面的代码综合后,生成一个模块符号,再加上输入输出软件对上面的代码综合后,生成一个模块符号,再加上输入输出端口,即构成了如下图所示的优先编码器电路。端口,即构成了如下图所示的优先编码器电路。9对该编码器进行仿真,得到如下图所示的波形对该编码器进行仿真,得到如下图所示的波形10基本组合电路的设计基本组合电路的设计 4奇偶校验位产生器奇偶校验位产生器 module parity(even_bit,odd_bit,input_bus);output even_bit,odd_bit;input7:0 input_bus;assign odd_bit=input_bus;/产生奇校验位产生奇校验位ass
6、ign even_bit=odd_bit;/产生偶校验位产生偶校验位endmodule11基本组合电路的设计基本组合电路的设计 5用用if-else语句描述的语句描述的4选选1 MUXmodule mux4_1(out,in0,in1,in2,in3,sel);output out;input in0,in1,in2,in3;input1:0 sel;reg out;always(in0 or in1 or in2 or in3 or sel)beginif(sel=2b00)out=in0;else if(sel=2b01)out=in1;else if(sel=2b10)out=in2;e
7、lse out=in3;endendmodule127段段LED数码管译码电路数码管译码电路输出信号的输出信号的7位分别接如下图数码管的位分别接如下图数码管的7个段,高位在左,低个段,高位在左,低位在右。位在右。例如当输出为例如当输出为“1101101”时,数码管的时,数码管的7个段:个段:g、f、e、d、c、b、a分别接分别接1、1、0、1、1、0、1;接有高电平的段发亮,于;接有高电平的段发亮,于是数码管显示是数码管显示“5”。共阴数码管及其电路共阴数码管及其电路13源程序源程序1415组合逻辑设计要点组合逻辑设计要点 16组合逻辑设计要点组合逻辑设计要点 17结论结论组合电路的输入一旦有
8、变化,输出马上跟着变化组合电路的输入一旦有变化,输出马上跟着变化组合电路一般都用组合电路一般都用assign语句语句当用当用always描述纯组合电路时,括号内的敏感列描述纯组合电路时,括号内的敏感列表要把表要把所有的输入所有的输入列出来列出来18基本时序电路的设计基本时序电路的设计 1 D-FF designs(基本基本D触发器触发器)module DFF(Q,D,CLK);output Q;input D,CLK;reg Q;always(posedge CLK)beginQ=D;endendmodule19基本时序电路的设计基本时序电路的设计 2 带异步清带异步清0、异步置、异步置1的的
9、D触发器触发器module DFF1(q,qn,d,clk,set,reset);input d,clk,set,reset;output q,qn;reg q,qn;always(posedge clk or negedge set or negedge reset)beginif(!reset)beginq=0;/异步清异步清0,低电平有效,低电平有效qn=1;end else if(!set)beginq=1;/异步置异步置1,低电平有效,低电平有效qn=0;end else beginq=d;qn=d;end endendmodule20基本时序电路的设计基本时序电路的设计 3 带同步
10、清带同步清0、同步置、同步置1的的D触发器触发器module DFF2(q,qn,d,clk,set,reset);input d,clk,set,reset;output q,qn;reg q,qn;always(posedge clk)beginif(reset)begin q=0;qn=1;end/同步清同步清0,高电平有效,高电平有效else if(set)begin q=1;qn=0;end/同步置同步置1,高电平有效,高电平有效else begin q=d;qn=d;end endendmodule21数据锁存器数据锁存器1.数据锁存器数据锁存器a 下面用下面用assign语句描述
11、了一个电平敏感(触发)的数据锁存器,该锁存语句描述了一个电平敏感(触发)的数据锁存器,该锁存器只能锁存一位数据器只能锁存一位数据always(clk or d)begin if(clk)q=d;endassign用always置换:222.数据锁存器数据锁存器b下面代码描述的是一个带置位和复位端的电平敏感型的下面代码描述的是一个带置位和复位端的电平敏感型的1位数据锁存器。位数据锁存器。always(clk or reset or set or d)begin if(reset)q=0;else if(set)q=1;else if(clk)q=d;end assign用always置换:23基
12、本时序电路的设计基本时序电路的设计 4 8位数据锁存器位数据锁存器module latch_8(qout,data,clk);output7:0 qout;input7:0 data;input clk;reg7:0 qout;always(clk or data)beginif(clk)qout=data;endendmodule24数据寄存器数据寄存器数据锁存器和数据寄存器的区别:数据锁存器和数据寄存器的区别:从寄存数据的角度看,锁存器和寄存器的功能是相从寄存数据的角度看,锁存器和寄存器的功能是相同的同的锁存器一般是由电平信号来控制(电平触发),属锁存器一般是由电平信号来控制(电平触发),
13、属于电平敏感型于电平敏感型寄存器一般由同步时钟信号控制(边沿触发)寄存器一般由同步时钟信号控制(边沿触发)25基本时序电路的设计基本时序电路的设计5 58位数据寄存器位数据寄存器module reg8(out_data,in_data,clk,clr);output7:0 out_data;input7:0 in_data;input clk,clr;reg7:0 out_data;always(posedge clk or posedge clr)beginif(clr)out_data=0;else out_data=in_data;endendmodule26移位寄存器移位寄存器设计了一
14、个设计了一个8位移位寄存器。该寄存器有位移位寄存器。该寄存器有1个时钟输个时钟输入端、入端、1个同步清个同步清0端。信号串行输入,端。信号串行输入,8位并行输位并行输出,每个时钟周期内输出信号左移出,每个时钟周期内输出信号左移1位,同时将串位,同时将串行输入的行输入的1位补充到输出信号的最低位。位补充到输出信号的最低位。27续续28基本时序电路的设计基本时序电路的设计6 6 可变模加法可变模加法/减法计数器减法计数器module updown_count(d,clk,clear,load,up_down,qd);input7:0 d;input clk,clear,load,up_down;o
15、utput7:0 qd;reg7:0 cnt;assign qd=cnt;always (posedge clk)beginif(!clear)cnt=8h00;/同步清同步清0,低电平有效,低电平有效else if(load)cnt=d;/同步预置同步预置else if(up_down)cnt=cnt+1;/加法计数加法计数else cnt=cnt-1;/减法计数减法计数 endendmodule29结论结论时序电路的输出是由时钟控制的(电平控制时序电路的输出是由时钟控制的(电平控制、边沿控制)、边沿控制)边沿控制的时序电路一定要用边沿控制的时序电路一定要用always语句描语句描述述30结
16、论结论1组合电路的输入一旦有变化,输出马上跟着变化组合电路的输入一旦有变化,输出马上跟着变化组合电路一般都用组合电路一般都用assign语句语句当用当用always描述纯组合电路时,括号内的敏感列表里要把描述纯组合电路时,括号内的敏感列表里要把所有的输入列出来所有的输入列出来31结论结论2时序电路的输出是由时钟控制的(电平控制、边沿控时序电路的输出是由时钟控制的(电平控制、边沿控制)制)边沿控制方式一定要用边沿控制方式一定要用always语句描述语句描述电平控制可以使用电平控制可以使用assign语句,也可以使用语句,也可以使用always语语句。但使用句。但使用always语句是要注意在敏感
17、列表里要把语句是要注意在敏感列表里要把时时钟信号钟信号和所有的输入信号都列出来。和所有的输入信号都列出来。326.3 多层次结构电路的设计多层次结构电路的设计本节将介绍怎样进行这种多层次结构电路的设计。本节将介绍怎样进行这种多层次结构电路的设计。多层次结构电路的描述既可以采用纯文本方式,也多层次结构电路的描述既可以采用纯文本方式,也可以用图形和文本输入相结合的方式。可以用图形和文本输入相结合的方式。这里用这里用2个例子来说明这两种设计方式。个例子来说明这两种设计方式。33简单的 Verilog HDL 模块例:module trist1(out,in,enable);output out;in
18、put in,enable;mytri tri_inst(out,in,enable);endmodule module mytri(out,in,enable);output out;input in,enable;assign out=enable?In:bz;endmodule34简单的 Verilog HDL 模块上述程序例子通过另一种方法描述了一个三态门。上述程序例子通过另一种方法描述了一个三态门。在这个例子中存在着两个模块:模块在这个例子中存在着两个模块:模块trist1 trist1 调用模块调用模块 mytrimytri 的实例元的实例元件件 tri_insttri_inst。
19、模块模块 trist1 trist1 是上层模块。模块是上层模块。模块 mytrimytri 则被称为子模块。则被称为子模块。通过这种结构性模块构造可构成特大型模块。通过这种结构性模块构造可构成特大型模块。356.3.1 图形与文本混合设计图形与文本混合设计 设计一个设计一个8位累加器位累加器ACC,用于对输入的用于对输入的8位数据位数据进行累加。进行累加。首先进行层次设计。可以把累加器分为两个模块,首先进行层次设计。可以把累加器分为两个模块,一个是一个是8位全加器,一个是位全加器,一个是8位寄存器。位寄存器。全加器负责对不断输入的数据和进位进行累加,寄全加器负责对不断输入的数据和进位进行累加
20、,寄存器负责暂存累加和,并把累加和输出并反馈到累存器负责暂存累加和,并把累加和输出并反馈到累加器输入端,以进行下一次的累加。加器输入端,以进行下一次的累加。在划分好模块后,再把每个模块的端口和连接关系在划分好模块后,再把每个模块的端口和连接关系设计好,就可以分别设计各个功能模块。设计好,就可以分别设计各个功能模块。361、8位全加器位全加器372、8位寄存器位寄存器383顶层连接顶层连接对对8 8位全加器和位全加器和8 8位寄存器分别进行编译,生成两个位寄存器分别进行编译,生成两个模块符号,再把这两个模块进行连接,加上编人端模块符号,再把这两个模块进行连接,加上编人端和输出端,就构成了完整的累
21、加器电路。如下图所和输出端,就构成了完整的累加器电路。如下图所示。示。累加器顶层电路累加器顶层电路accout396.3.2 纯文本描述纯文本描述 该文本描述与上图电路连接的效果是完全相同的。该文本描述与上图电路连接的效果是完全相同的。需注意是在调用需注意是在调用add8和和reg8这两个模块时,要注意模这两个模块时,要注意模块端口信号的一一对应。块端口信号的一一对应。406.5 数字跑表(以下内容自学)数字跑表(以下内容自学)以数字跑表的设计为例,介绍利用以数字跑表的设计为例,介绍利用Verilog HDL设计数字电路的完整设计数字电路的完整过程。过程。41结构与功能结构与功能设计一个数字跑
22、表,该跑表具有复位、暂停、秒表计设计一个数字跑表,该跑表具有复位、暂停、秒表计时等功能。时等功能。按照自上而下的设计思路,首先对数字跑表进行结构按照自上而下的设计思路,首先对数字跑表进行结构和功能的划分。和功能的划分。下图是数字跑表的结构示意图。下图是数字跑表的结构示意图。42 该跑表有该跑表有3 3个输入端,分别为时钟输入个输入端,分别为时钟输入(CLK)(CLK)、复位复位(CLR)(CLR)和和启动暂停启动暂停(PAUSE)(PAUSE)。复位信号高电平有效,可对整个系统异步清复位信号高电平有效,可对整个系统异步清0 0;当启动暂当启动暂停键为低电平时跑表开始计时,为高电平时暂停,变低后
23、在停键为低电平时跑表开始计时,为高电平时暂停,变低后在原来的数值基础上再计数。这两个控制信号的作用如表原来的数值基础上再计数。这两个控制信号的作用如表7.17.1所示。所示。为了便于显示,百分秒、秒和分钟信号皆采用为了便于显示,百分秒、秒和分钟信号皆采用BCDBCD码计数方码计数方式,并直接输出到式,并直接输出到6 6个数码管显示出来。个数码管显示出来。43源程序源程序444546474849仿真及波形图仿真及波形图50下载及验证下载及验证516.6 八位数字频率计八位数字频率计6.6.1 功能要求功能要求 设计一个设计一个8位频率计,可以测量从位频率计,可以测量从1Hz到到 99 999 9
24、99Hz的信号频率,并将被测信号的频率的信号频率,并将被测信号的频率在在8个数码管上显示出来。个数码管上显示出来。6.6.2 工作原理工作原理 采用一个标准的基准时钟,在单位时间采用一个标准的基准时钟,在单位时间(如如1s)里对里对被测信号的脉冲数进行计数,即为信号的频率。被测信号的脉冲数进行计数,即为信号的频率。52测频原理测频原理 f=N/t f=N/t 其中:其中:NN脉冲计数值脉冲计数值 t t 计数时间计数时间 由上式得知:由上式得知:频率是在单位时间(频率是在单位时间(1 1秒)内所产生的脉冲个数。秒)内所产生的脉冲个数。频率在数学表达式中用频率在数学表达式中用“f”f”表示,其相
25、应的单位有:表示,其相应的单位有:HzHz(赫)、赫)、kHzkHz(千赫)、千赫)、MHzMHz(兆赫)、兆赫)、GHzGHz(吉赫)吉赫)其中其中 1GHz=1000MHz1GHz=1000MHz,1MHz=1000kHz1MHz=1000kHz,1kHz=1000Hz1kHz=1000Hz53频率计至少包括:频率计至少包括:计数模块(计数电路)计数模块(计数电路)计数时间限定模块(控制电路)计数时间限定模块(控制电路)显示模块(电路)显示模块(电路)548位数字频率计的顶层框图如图721所示,整个系统可分为三个模块:控制模块、计数测量模块和锁存器模块。频率计原理框图频率计原理框图1Hz
展开阅读全文