数字系统设计与VerilogHDL学习教案

上传人:辰*** 文档编号:109572097 上传时间:2022-06-17 格式:PPTX 页数:100 大小:2.53MB
返回 下载 相关 举报
数字系统设计与VerilogHDL学习教案_第1页
第1页 / 共100页
数字系统设计与VerilogHDL学习教案_第2页
第2页 / 共100页
数字系统设计与VerilogHDL学习教案_第3页
第3页 / 共100页
点击查看更多>>
资源描述
会计学1数字数字(shz)系统设计与系统设计与Verilog HDL第一页,共100页。 主要(zhyo)内容第1页/共100页第二页,共100页。ABFCD门级结构(jigu)描述 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数据流描述(mio sh)module gate2(F,A,B,C,D);input A,B,C,D;output F;assign F=(A&B)|(B&C&D);/assign持续赋值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);endendmodule第2页/共100页第三页,共100页。n第3页/共100页第四页,共100页。第4页/共100页第五页,共100页。module 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=8b11011111; 3d6: out=8b10111111; 3d7: out=8b01111111; endcase endendmodule第5页/共100页第六页,共100页。第6页/共100页第七页,共100页。第7页/共100页第八页,共100页。第8页/共100页第九页,共100页。第9页/共100页第十页,共100页。校验位nendmodule第10页/共100页第十一页,共100页。nbeginnif(sel=2b00) out=in0;nelse if(sel=2b01) out=in1;nelse if(sel=2b10) out=in2;nelse out=in3;nendnendmodule第11页/共100页第十二页,共100页。输出信号的7位分别接如下(rxi)图数码管的7个段,高位在左,低位在右。例如当输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。共阴数码管及其电路(dinl)第12页/共100页第十三页,共100页。第13页/共100页第十四页,共100页。第14页/共100页第十五页,共100页。第15页/共100页第十六页,共100页。能立即跟着变化。只有当a 或 b 或 c 或 d 变化时e 的变化后果才显示出来。可见需要有一个寄存器来储存 e 的变化。第16页/共100页第十七页,共100页。第17页/共100页第十八页,共100页。module DFF(Q, D, CLK);output Q;input D, CLK;reg Q;always (posedge CLK)beginQ = D;endendmodule第18页/共100页第十九页,共100页。nendn endnendmodule第19页/共100页第二十页,共100页。第20页/共100页第二十一页,共100页。always (clk or d) begin if(clk) q=d; endassign用always置换(zhhun):第21页/共100页第二十二页,共100页。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置换(zhhun):第22页/共100页第二十三页,共100页。第23页/共100页第二十四页,共100页。第24页/共100页第二十五页,共100页。nelse out_data = in_data;nendnendmodule第25页/共100页第二十六页,共100页。第26页/共100页第二十七页,共100页。第27页/共100页第二十八页,共100页。第28页/共100页第二十九页,共100页。第29页/共100页第三十页,共100页。第30页/共100页第三十一页,共100页。第31页/共100页第三十二页,共100页。第32页/共100页第三十三页,共100页。 output out; input in, enable; assign out = enable? In : bz; endmodule第33页/共100页第三十四页,共100页。第34页/共100页第三十五页,共100页。第35页/共100页第三十六页,共100页。第36页/共100页第三十七页,共100页。第37页/共100页第三十八页,共100页。累加器顶层(dn cn)电路accout第38页/共100页第三十九页,共100页。 该文本(wnbn)描述与上图电路连接的效果是完全相同的。需注意是在调用add8和reg8这两个模块时,要注意模块端口信号的一一对应。第39页/共100页第四十页,共100页。第40页/共100页第四十一页,共100页。第41页/共100页第四十二页,共100页。n为了便于显示,百分秒、秒和分钟信号皆采用BCD码计数方式,并直接输出到6个数码管显示出来。第42页/共100页第四十三页,共100页。第43页/共100页第四十四页,共100页。第44页/共100页第四十五页,共100页。第45页/共100页第四十六页,共100页。第46页/共100页第四十七页,共100页。第47页/共100页第四十八页,共100页。第48页/共100页第四十九页,共100页。第49页/共100页第五十页,共100页。第50页/共100页第五十一页,共100页。第51页/共100页第五十二页,共100页。 Hz(赫)、kHz(千赫)、MHz(兆赫)、 GHz(吉赫)其中 1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz第52页/共100页第五十三页,共100页。第53页/共100页第五十四页,共100页。8位数字频率计的顶层(dn cn)框图如图721所示,整个系统可分为三个模块:控制模块、计数测量模块和锁存器模块。频率计原理(yunl)框图1Hz BCD码七段数码管译码器第54页/共100页第五十五页,共100页。第55页/共100页第五十六页,共100页。控制(kngzh)模块计数(j sh)模块32位锁存器被测输入信号基准时钟频率值(输出到数码管显示)第56页/共100页第五十七页,共100页。 fre_ctrl控制模块的作用前面已经讲过,它用于产生3个控制信号。此模块用Verilog描述见下例。注意:使用阻塞赋值第57页/共100页第五十八页,共100页。阻塞(zs)赋值结果非阻塞(zs)赋值结果第58页/共100页第五十九页,共100页。encount_en clrcount_clrclk signal(低四位(s wi)clkcout(其余) count10是一个带有计数使能输入端(EN)和异步清0端(CLR)的模为10的计数模块。当EN为高电平时开始计数,为低电平时停止计数。CLR为异步消0端,当它为高电平时,计数器输出为0。第59页/共100页第六十页,共100页。din32位out第60页/共100页第六十一页,共100页。第61页/共100页第六十二页,共100页。第62页/共100页第六十三页,共100页。第63页/共100页第六十四页,共100页。n或连线第64页/共100页第六十五页,共100页。第65页/共100页第六十六页,共100页。aout2BUFFbINVout1第66页/共100页第六十七页,共100页。dout2AND2i1clkout1D QDFF第67页/共100页第六十八页,共100页。第68页/共100页第六十九页,共100页。0n-10n-1n-2地址第69页/共100页第七十页,共100页。第70页/共100页第七十一页,共100页。第71页/共100页第七十二页,共100页。第72页/共100页第七十三页,共100页。采用的描述级别越高,设计越容易,程序代码越简单;但耗用器件采用的描述级别越高,设计越容易,程序代码越简单;但耗用器件(qjin)(qjin)资源更多。对特定综合器,可能无法将某些抽象级别高的描述转化为电路!资源更多。对特定综合器,可能无法将某些抽象级别高的描述转化为电路!基于门级描述的硬件模型不仅可以仿真,而且可综合,且系统速度快。基于门级描述的硬件模型不仅可以仿真,而且可综合,且系统速度快。所有所有Verilog HDLVerilog HDL编译软件只是支持该语言的一个子集。编译软件只是支持该语言的一个子集。尽量采用编译软件支持的语句来描述设计;或多个软件配合使用。尽量采用编译软件支持的语句来描述设计;或多个软件配合使用。一般用算法级(写出逻辑表达式)或一般用算法级(写出逻辑表达式)或RTLRTL级来描述逻辑功能,尽量避免用门级描述,除非对系统速度要求比较高的场合才采用门级描述。级来描述逻辑功能,尽量避免用门级描述,除非对系统速度要求比较高的场合才采用门级描述。 第73页/共100页第七十四页,共100页。(1 1)采用什么)采用什么(shn me)(shn me)描述级别更合适?描述级别更合适?系统级描述太抽象,有时无法综合成具体的物理电路;门级描述要求根据逻辑功能画出逻辑电路图,对于复杂的数字系统很难做到;系统级描述太抽象,有时无法综合成具体的物理电路;门级描述要求根据逻辑功能画出逻辑电路图,对于复杂的数字系统很难做到;而算法级和而算法级和RTLRTL级描述级别适中,代码不是很复杂,且一般容易综合成具体的物理电路,故建议尽量采用算法级和级描述级别适中,代码不是很复杂,且一般容易综合成具体的物理电路,故建议尽量采用算法级和RTLRTL级来描述。级来描述。(2 2)怎样减少器件逻辑资源的耗用?)怎样减少器件逻辑资源的耗用?当器件容量有限时,为减少器件逻辑资源的耗用,建议少用当器件容量有限时,为减少器件逻辑资源的耗用,建议少用if-elseif-else语句和语句和casecase语句,尽量直接使用逻辑表达式来描述系统的逻辑功能;语句,尽量直接使用逻辑表达式来描述系统的逻辑功能;或者用或者用casecase语句取代语句取代if-elseif-else语句。语句。第74页/共100页第七十五页,共100页。第75页/共100页第七十六页,共100页。注:当某个变量有多个触发条件时,最好将它们放在一个(y )always块中,并用if-else语句描述在不同触发条件下应执行的操作!正确的写法第76页/共100页第七十七页,共100页。注:这里q和qn在两个(lin )always块中都被赋值!因为always块之间是并行操作,造成某些语句可能是互相矛盾的,所以编译器无所适从,只能报错!第77页/共100页第七十八页,共100页。always(posedge start or posedge reset) if (reset) enable =0; if (start) enable=1;编译后出现了多条警告信息,指明(zhmng)在语句always (posedge start or posedge reset)中,变量enable不能被分配新的值!错误的写法第78页/共100页第七十九页,共100页。注:由于在最初一段,start和reset均为0,导致enable为不定态,则scan_data开始加1计数(正确情况应是在按下start时scan_data才开始加1计数,因为(yn wi)此时reset=0,导致enable=1。当start和reset同时为1时, enable为0。)第79页/共100页第八十页,共100页。always(posedge start or posedge reset) if (reset) enable =0; else enable=1;注:可见在最初一段,当start和reset均为0时,enable被认为初值为0,则scan_data不计数,保持初值为0;一旦start有效时,则scan_data才开始加1计数。当start和reset同时(tngsh)为1时,先执行的是“if (reset) enable =0; ”,故enable仍为0,则scan_data保持原值0。 正确的写法第80页/共100页第八十一页,共100页。错误(cuw)的写法output run_cnt;reg4:0run_cnt;正确的写法output4:0 run_cnt; /这里一定要指明位宽! reg4:0run_cnt;第81页/共100页第八十二页,共100页。high3:0、mid3:0、low3:0都有输出,但下载时音名显示数码管始终为000。这主要是因为他在分频子模块中clk_4Hz的分频用计数器count_4位宽设置不够,则clk_4Hz输出为0,故音名显示计数器high3:0、mid3:0、low3:0输出始终为0,电路不能正常工作。第82页/共100页第八十三页,共100页。module f20MHz_to_6MHz_4Hz(clkin,clr,clk_6M,clk_4); inputclkin,clr; outputclk_6M,clk_4; regclk_6M,clk_4; reg2:0count_6M; reg15:0count_4; parameter count_6M_width=3; parameter count_4_width=5000000; always(posedge clkin or posedge clr) beginif(clr) begin count_4=0;clk_4=0; endelse begin if(count_4=count_4_width-1) /此条件不可能(knng)满足! begin count_4=0; clk_4=1; end else begin count_4=count_4+1; clk_4=0; end end endendmodule223=8388608,故计数器位宽应为23,应写为22:0 。若写成15:0,216=65536,则clk_4一直为0,则下载后数码管显示(xinsh)一直为0,扬声器一直是一个音调第83页/共100页第八十四页,共100页。第84页/共100页第八十五页,共100页。第85页/共100页第八十六页,共100页。实 验 实验实验(shyn)五(一)五(一) 7段段BCD码译码器设计码译码器设计(1)实验目的:通过设计7段BCD码译码器学习组合电路的设计方法。(2)实验原理:7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便(fngbin)的方法就是利用译码程序在FPGA/CPLD中来实现。下面作为7段BCD码译码器,输出信号LED7S的7位分别接如图6-21数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。第86页/共100页第八十七页,共100页。实 验 实验五(一)实验五(一) 7段数码显示段数码显示(xinsh)译码器设计译码器设计图6-21 共阴数码管及其电路(dinl)(3)实验内容1:说明下面的代码中各语句的含义,以及该例的整体功能。在QuartusII上对下例进行编辑、编译、综合、适配、仿真,给出其所有信号(xnho)的时序仿真波形(提示:用输入总线的方式给出输入信号(xnho)仿真数据)。 实验内容2:把程序改成显示十六进制后重复上述过程。第87页/共100页第八十八页,共100页。第88页/共100页第八十九页,共100页。第89页/共100页第九十页,共100页。(4)实验报告:将实验原理、程序各个语句的含义、 编译仿真(fn zhn)波形、仿真(fn zhn)波形分析结果、硬件测试实验结果写进实验报告。第90页/共100页第九十一页,共100页。4个键输入(shr):“1011”对应(duyng)显示:“B”电路(dinl)模式为:“6”第91页/共100页第九十二页,共100页。4个键输入(shr):“0101”对应(duyng)显示:“5”电路(dinl)模式为:“6”第92页/共100页第九十三页,共100页。实 验 实验实验(shyn)五五(二二) 含异步清含异步清0和同步时钟使能的和同步时钟使能的4位加法计数器位加法计数器(1) 实验目的(md):学习计数器的设计、仿真和硬件测试,进一步熟悉用Verilog HDL设计时序电路技术。(2)实验原理:本例是用verilog HDL描述设计一个含异步清0和同步时钟使能的4位加法计数器。 reset是异步清0信号,高电平有效,当reset为1时将“0000”加载于输出端;clk是时钟信号;en为同步计数使能端,当en为0时,允许计数器计数(加一)。第93页/共100页第九十四页,共100页。第94页/共100页第九十五页,共100页。第95页/共100页第九十六页,共100页。第96页/共100页第九十七页,共100页。第97页/共100页第九十八页,共100页。(4)实验报告:将实验原理、程序各个语句的含义、编译仿真波形、仿真波形分析结果(包括:各个信号的作用、时钟周期是多少、什么(shn me)时间有复位信号且复位信号高或低有效、使能信号同样、输出情况等等)、实验结果写进实验报告。第98页/共100页第九十九页,共100页。实 验 实验实验(shyn)六六 顶层电路设计顶层电路设计 计数器和译码器连接电路的顶层(dn cn)文件原理图(1) 实验目的:学习Verilog HDL的多层次设计方法。(2)实验原理:把前两个(lin )实验结果当做两个(lin )底层设计,设计一个顶层结构电路,把顶层电路的连接关系用文本描述出来(使用模块调用的方法,可以用名称关联也可以用位置关联),可以把计数器的计算结果用数码管显示出来。第99页/共100页第一百页,共100页。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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