《第四章(第8讲)_Verilog_HDL_《电子设计自动化EDA》16405.pptx》由会员分享,可在线阅读,更多相关《第四章(第8讲)_Verilog_HDL_《电子设计自动化EDA》16405.pptx(107页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章(第8讲)Verilog HDL 2008-9-1EDA技术与DE2实践2本章概要:本章介绍硬件描述语言Verilog HDL的语言规则、数据类型和语句结构,并介绍最基本、最典型的数字逻辑电路的Verilog HDL描述,作为Verilog HDL工程设计的基础。知识要点:(1)Verilog HDL设计模块的基本结构;(2)Verilog HDL的语言规则;(3)用Verilog HDL实现各种类型电路及系统设计的方法;(4)Verilog HDL设计流程。2008-9-1EDA技术与DE2实践3教学安排:本章教学安排8学时。通过本章的学习,使同学们熟悉Verilog HDL设计模块的
2、基本结构和Verilog HDL的语言规则,进而掌握Verilog HDL的编程方法,并使读者在第2章学习的基础上,进一步掌握EDA技术的Verilog HDL文本输入设计法。2008-9-1EDA技术与DE2实践44.2.9 编译指令所有的Verilog HDL编译指令均以反引号“”开头(如timescale),编译指令用于在EDA工具软件对 Verilog HDL源程序代码编译时,指定进行某种操作。例如,宏编译指令用于在编译时把一个文本替换为宏的名字;条件编译指令用于在编译时,根据指令指定的条件对相关的源程序语句代码进行选择性的编译;包含编译指令用于在编译时将指令指定的文件包含进来一起编译
3、等。2008-9-1EDA技术与DE2实践5在一般数字电路及系统的设计中,使用编译指令比较少,这里不再对它们进行一一介绍,仅以timescale编译指令为例,介绍编译指令的基本使用方法,供同学们参考。timescale编译指令用来声明跟在其后的程序模块的时间单位和时间精度,timescale指令的使用格式为:timescale时间的基准单位/模拟时间的精度;2008-9-1EDA技术与DE2实践6“时间的基准单位”用来指明时间或延迟的基准单位,“模拟时间的精度”用来指明该模块的模拟时间的精确程度。时间的基准单位和模拟时间的精度的数字必须是整数,有效数字为1、10和100,单位为s(秒)、ms(
4、1毫秒=103秒)、s(1微秒=106秒)、ns(1纳秒=109秒)、ps(1皮秒=1012秒)和fs(1飞秒=1015秒)。2008-9-1EDA技术与DE2实践7例如,语句:timescale 10us/100ns;声明了其后的设计模块的时间数值均为10s的整数倍(即#1=10s),时间的精度为0.1s(100ns)。如果程序模块不使用timescale编译指令,则编译时自动执行timescale 1ns/1ns编译指令(默认)结果,即#1=1ns,时间精确度为1ns。2008-9-1EDA技术与DE2实践8 4.3 Verilog HDL的语句语句是构成Verilog HDL程序不可缺少
5、的部分。Verilog HDL的语句包括赋值语句、条件语句、循环语句、结构声明语句和编译预处理语句等类型,每一类语句又包括几种不同的语句。在这些语句中,有些语句属于顺序执行语句,有些语句属于并行执行语句。2008-9-1EDA技术与DE2实践9 4.3.1 赋值语句在Verilog HDL中,赋值语句常用于描述硬件设计电路输出与输入之间的信息传送,改变输出结果。Verilog HDL有门基元、连续赋值、过程赋值和非阻塞赋值4种赋值方法(即语句)。不同的赋值语句使输出产生新值的方法不同。2008-9-1EDA技术与DE2实践10 1.门基元赋值语句 门基元赋值语句的格式为:基本逻辑门关键词例化门
6、名称(门输出,门输入1,门输入2,门输入n);其中,基本逻辑门关键词是Verilog HDL预定义的逻辑门,包括and、or、not、xor、nand、nor等:例化门名称属于可选项;圆括号中的内容是被描述门的输出和输入信号。例如,具有a、b、c、d4个输入和y为输出与非门的门基元赋值语句为:nand (y,a,b,c,d);2008-9-1EDA技术与DE2实践11或者 nand mynand(y,a,b,c,d);上述语句与“assign y=(a&b&c&d);”语句等效。2008-9-1EDA技术与DE2实践12 2.连续赋值语句 连续赋值语句的关键词是assign,赋值符号是“=”,
7、赋值语句的格式为:assign 赋值变量=表达式;例如,具有a、b、c、d4个输入和y为输出与非门的连续赋值语句为:assign y=(a&b&c&d);连续赋值语句的“=”号两边的变量都应该是wire类型变量。在执行中,输出y的变化跟随输入a、b、c、d的变化而变化,反映了信息传送的连续性。连续赋值语句用于逻辑门和组合逻辑电路的描述。2008-9-1EDA技术与DE2实践13 例4.4 4输入端与非门的Verilog HDL源程序。module example_4(y,a,b,c,d);output y;input a,b,c,d;assign#1 y=(a&b&c&d);endmodule
8、 程序中的“#1”表示该门的输出与输入信号之间具有1个单位的时间延迟。2008-9-1EDA技术与DE2实践14 3.过程赋值语句 过程赋值语句出现在initial块语句和always块语句中,赋值符号是“=”,语句格式为:赋值变量=表达式;在过程赋值语句中,赋值号“=”左边的赋值变量必须是reg(寄存器)型变量,其值在该语句结束即可得到。如果一个块语句中包含若干条过程赋值语句,那么这些过程赋值语句按照语句编写的顺序由上至下一条一条地执行,前面的语句没有完成,后面的语句就不能执行,就如同被阻塞了一样。因此,过程赋值语句也称为阻塞赋值语句。2008-9-1EDA技术与DE2实践15 4.非阻塞赋
9、值语句 非阻塞赋值语句也是出现在initial块语句和always块语句中,赋值符号是“=”,语句格式为:赋值变量=表达式;在非阻塞赋值语句中,赋值号“=”左边的赋值变量也必须是reg型变量,其值不像过程赋值语句那样在语句结束时即刻得到,而在该块语句结束才可得到。2008-9-1EDA技术与DE2实践16例如,在下面的块语句中包含4条赋值语句:always (posedge clock)m=3;n=75;n=m;r=n;语句执行结束后,r的值是75,而不是3,因为第4行是非阻塞赋值语句“n=m”,该语句要等到本块语句结束时,n的值才能改变。块语句中的“(posedge clock)”是定时控制
10、敏感函数,表示时钟信号clock的上升沿到来的敏感时刻。2008-9-1EDA技术与DE2实践17过程赋值语句和非阻塞赋值语句都是在initial块语句和always块语句中使用的,因此都称为过程赋值语句,只是赋值方式不同。过程赋值语句常用于数字系统的触发器、移位寄存器、计数器等时序逻辑电路的描述。2008-9-1EDA技术与DE2实践18例4.5 上升沿触发的D触发器的Verilog HDL的源程序。module D_FF(q,d,clock);input d,clock;output q;reg q;always (posedge clock)q=d;endmodule 在源程序中,q是触
11、发器的输出,属于reg型变量;d和clock是输入,属于wire型变量(由隐含规则定义)。在过程赋值语句中,赋值号“=”左边的赋值变量必须是reg(寄存器)型变量2008-9-1EDA技术与DE2实践19语句是构成Verilog HDL程序不可缺少的部分。Verilog HDL的语句包括赋值语句、条件语句、循环语句、结构声明语句和编译预处理语句等类型,每一类语句又包括几种不同的语句。在这些语句中,有些语句属于顺序执行语句,有些语句属于并行执行语句。2008-9-1EDA技术与DE2实践20复习与回顾VHDL的IF语句 1.IF语句 IF语句的格式有3种。格式1为:IF条件句Then顺序语句:E
12、NDIF;VHDL2008-9-1EDA技术与DE2实践21格式2为:IF条件句 then 顺序语句:ELSE 顺序语句:ENDIF;格式3为:IF条件句Then 顺序语句:ELSIF条件句Then 顺序语句;顺序语句;ENDIF;VHDLVHDL2008-9-1EDA技术与DE2实践22 4.3.2 条件语句 条件语句包含if语句和case语句,它们都是顺序语句,应放在always块语句中。2008-9-1EDA技术与DE2实践23 begin 语句;end else begin 语句;end1.if语句 完整的Verilog HDL的if语句结构如下:If(表达式)begin 语句;end
13、 elseif(表达式)2008-9-1EDA技术与DE2实践24 根据需要,if语句可以写为另外两种变化形式。(1)if(表达式)begin 语句;end(2)if(表达式)begin 语句;end else begin 语句;end 2008-9-1EDA技术与DE2实践25在if语句中,“表达式”一般为逻辑表达式或关系表达式,也可以是位宽为1位的变量。系统对表达式的值进行判断,若为0,x,z,按“假”处理;若为1,按“真”处理,执行指定的语句。语句可以是多句,多句时用“begin-end语句括起来:也可以是单句,单句可以省略“begin-end语句。对于if语句嵌套,如果不清楚if和el
14、se的匹配,最好用“begin-end语句括起来。2008-9-1EDA技术与DE2实践26 if语句及其变化形式属于条件语句,在程序中用来改变控制流程。例4.6 8线-3线优先编码器的设计。8线-3线优先编码器的功能见表4.5,in0 in7是8个信号输入端,定义in7的优先级最高,in0的优先级最低。当in7有效时(低电平0),其他输入信号无效,编码输出out20utlout0=111(in7输入的编码):如果in7无效(高电平1),而in6有效,则out20utlout0=110(in6输入的编码);依次类推。在传统的电路设计中,优先编码器的设计是一个相对困难的课题,而采用Verilog
15、 HDL的IF语句,此类难题迎刃而解,充分体现了硬件描述语言在数字电路设计方面的优越性。2008-9-1EDA技术与DE2实践27表4.5 8线-3线优先编码器的功能表2008-9-1EDA技术与DE2实践288线-3线优先编码器设计电路的Verilog HDL源程序example_6.v如下:module example_6(y,a);input7:0 a;output2:0 y;reg2:0 y;always (a)begin if(a7)y=b111;elseif(a6)y=b110;elseif(a5)y=b101;elseif(a4)y=b100;elseif(a3)y=b011;e
16、lseif(a2)y=b010;elseif(a1)y=b001;else y=b000;end endmodule 2008-9-1EDA技术与DE2实践29 2.case语句 case语句是一种多分支的条件语句,完整的case语句的格式为:case(表达式)选择值1:语句1;选择值2:语句2;选择值n:语句n;default:语句 n+l;endcase执行case语句时,首先计算表达式的值,然后执行在条件句中找到的“选择值”与其值相同的语句。当所有的条件句的“选择值”与表达式的值不同时,则执行“default后的语句。default语句如果不需要,可以去掉。case语句多用于数字系统中的
17、译码器、数据选择器、状态机及微处理器的指令译码器等电路的描述。2008-9-1EDA技术与DE2实践30 例4.7 用case语句描述4选1数据选择器。4选1数据选择器的逻辑符号如图4.6所示,其逻辑功能见表4.6。由表可知,4选1数据选择器的功能是:在控制输入信号s1和s2的控制下,使输入数据信号a、b、c、d中的一个被选中传送到输出y。s1和s2有4种组合值,可以用case语句实现其功能。4选1数据选择器Verilog HDL的源程序如下:2008-9-1EDA技术与DE2实践31图4.5 4选1数据选择器的逻辑符号表4.6 4选1数据选择器逻辑功能表 2008-9-1EDA技术与DE2实
18、践32module example_7(y,a,b,c,d,sl,s2);input s1,s2;input a,b,c,d;output y;reg y;always (s1 or s2)begin case(s1,s2)2b00:y=a;2b01:y=b;2b10:y=c;2b11:y=d;endcaseendendmodule 多个敏感信号时,用or连接。2008-9-1EDA技术与DE2实践33图4.5 4选1数据选择器的逻辑符号表4.6 4选1数据选择器逻辑功能表 2008-9-1EDA技术与DE2实践34case语句还有两种变体语句形式,即casez语句和casex语句。casez
19、语句和 casex语句与case语句的格式完全相同,它们的区别是:在 casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就不予以考虑,只关注其他位的比较结果:在 casex语句中,把不予以考虑的位扩展到未知x,即不考虑值为高阻z和未知x的那些位,只关注其他位的比较结果。2008-9-1EDA技术与DE2实践35 4.3.3 循环语句 循环语句包含for语句、repeat语句、while语句和forever语句4种。1.for语句 for语句的语法格式为:for(循环指针=初值;循环指针终值;循环指针=循环指针+步长值)begin 语句;end2008-9-1EDA技术与DE
20、2实践36 for语句可以使一组语句重复执行,语句中的循环指针、初值、终值和步长值是循环语句定义的参数,这些参数一般属于整型变量或常量。语句重复执行的次数由语句中的参数确定,即循环重复次数=(终值初值)/步长值 2008-9-1EDA技术与DE2实践37 例4.8 8位奇偶校验器的设计。本例用a表示输入信号,它是一个长度为8位的向量。在程序中,用for语句对a的值逐位进行模2加(即异或xor)运算,循环指针变量n控制模2加的次数。循环变量的初值为0,终值为8,因此,控制循环共执行了8次。8位奇偶校验器的Verilog HDL源程序example_8v如下:2008-9-1EDA技术与DE2实践
21、38module example_8(a,out);input7:0 a;output out;reg out;integer n;always (a)begin out=0;for(n=0;n=b)max=a;,else max=b;end endfunction 2008-9-1EDA技术与DE2实践57函数调用的格式如下:函数名(关联参数表);函数调用一般出现在模块、任务或函数语句中。通过函数的调用来完成某些数据的运算或转换。例如,调用例4.9编制的求最大值的函数:peak=max(data,peak);其中,data和peak是与函数定义的两个参数a、b关联的关联参数。通过函数的调用,
22、求出data和peak中的最大值,并用函数名max返回。2008-9-1EDA技术与DE2实践58 函数和任务存在以下几点区别:(1)任务可以有任意不同类型的输入输出参数,函数不能将inout类型作为输出:(2)任务只可以在过程语句中调用,不能在连续赋值语句assign中调用;函数可以作为表达式中的一个操作数,在过程赋值语句和连续赋值语句中调用:(3)任务可以调用其他任务或函数:函数可以调用其他函数,但不能调用任务;(4)任务不向表达式返回值,函数向调用它的表达式返回一个值。2008-9-1EDA技术与DE2实践59 4.3.5 语句的顺序执行与并行执行Verilog HDL中有顺序执行语句和
23、并行执行语句之分。Verilog HDL的always块语句与VHDL的PROCESS(进程)语句类似,块中的语句是顺序语句,按照程序书写的顺序执行。always块本身却是并行语句,它与其他always语句及assign语句、例化元件语句都是同时(即并行)的。由于always语句的并行行为和顺序行为的双重特性,所以使它成为Verilog HDL程序中使用最频繁和最能体现Verilog HDL风格的一种语句。2008-9-1EDA技术与DE2实践60always块语句中有一个敏感信号表,表中列出的任何信号的改变,都将启动always块语句,使always块语句内相应的顺序语句被执行一次。实际上,
24、用Verilog HDL描述的硬件电路的全部输入信号都是敏感信号,为了使Verilog HDL的软件仿真与综合和硬件仿真对应起来,应当把always块语句中所有输入信号都列入敏感信号表中。在时序逻辑电路的编程中,由于时钟信号(clk)和复位信号(clr)是电路变化的主要条件,因此在敏感参数表中,仅列出clk或 clr就可以了(其他输入参数可以不列出)。2008-9-1EDA技术与DE2实践61 例4.10 同步清除十进制加法计数器的描述。同步清除是指复位信号有效,而且时钟信号的有效边沿到来时,计数器的状态被清0。在本例中,复位信号是clr,高电平有效;时钟信号是clk,上升沿是有效边沿。当cl
25、k的上升沿到来时,如果clr清除信号有效(为1),则计数器被清0;clr无效时,如果计数器原态是9(4b1001),计数器回到0态(4b0000),否则计数器的状态将加1。同步清除十进制加法计数器的Verilog HDL的源程序example_10.v如下:2008-9-1EDA技术与DE2实践622008-9-1EDA技术与DE2实践63module example_10(clr,clk,cnt,out);input clr,clk;output3:0 out;output cnt;reg3:0 out;reg cnt;always (posedge clk)begin if(clr)beg
26、in cnt=0;out=4b0000;endelse if(out=4b1001)begin out=4b0000;cnt=l;end else begin cnt=0;out=out+1;end end endmodule 2008-9-1EDA技术与DE2实践64本例设计的计数器的仿真波形如图4.6所示,从仿真结果可以看到,当clk的上升沿到来时,同步清除计数器的清除信号clr是优先信号,clr有效时,计数器被清0。顺序语句的描述,最能体现这类信号的优先顺序。2008-9-1EDA技术与DE2实践65图4.6 同步清除十进制加法计数器的仿真波形 2008-9-1EDA技术与DE2实践66
27、 例4.11 异步清除十进制加法计数器的描述。异步清除是指复位信号有效后,计数器的状态立即被清0,与时钟信号无关。在本例中,复位信号是clr,上升沿有效;时钟信号是clk,上升沿是有效边沿。当clr的上升沿到来时,计数器被清0:clr无效时,当时钟clk的上升沿到来后,如果计数器原态是9(4b1001),计数器回到0态(4b0000),否则计数器的状态将加1。异步清除十进制加法计数器的Verilog HDL的源程序example_11.v如下:2008-9-1EDA技术与DE2实践67module example-11(clr,clk,cnt,out);input clr,clk;output
28、3:0 out;output cnt;reg3:0 out;reg cnt;always (posedge clk or posedge clr)begin if(clr)begin cnt=0;out=4b0000;end else if(out=4b1001)begin out=4b0000;cnt=1;end else begin cnt=0;out=out+1;end end endmodule 2008-9-1EDA技术与DE2实践68 异步清除十进制加法计数器的仿真波形如图4.7所示,仿真结果验证了设计的正确性。注意,同步清除十进制加法计数器的源程序(example_10.v)与异
29、步清除十进制加法计数器的源程序(example_11.v)的区别。在example_10.v源程序中,复位信号clr不包含在always块的敏感参数表中,则clr是同步复位;而在example 11.v源程序中,复位信号clr作为上升沿敏感参数包含在always块的敏感参数表中,则构成异步复位电路。2008-9-1EDA技术与DE2实践69图4.7 异步清除十进制加法计数器的仿真波形2008-9-1EDA技术与DE2实践70module example_10(clr,clk,cnt,out);input clr,clk;output3:0 out;output cnt;reg3:0 out;r
30、eg cnt;always (posedge clk)begin if(clr)begin cnt=0;out=4b0000;endmodule example-11(clr,clk,cnt,out);input clr,clk;output3:0 out;output cnt;reg3:0 out;reg cnt;always (posedge clk or posedge clr)begin if(clr)begin cnt=0;out=4b0000;end2008-9-1EDA技术与DE2实践71else if(out=4b1001)begin out=4b0000;cnt=l;end
31、else begin cnt=0;out=out+1;end end endmodule else if(out=4b1001)begin out=4b0000;cnt=1;end else begin cnt=0;out=out+1;end end endmodule 2008-9-1EDA技术与DE2实践722008-9-1EDA技术与DE2实践734.4 不同抽象级别的Verilog HDL模型Verilog HDL是一种用于逻辑电路设计的硬件描述语言。用Verilog HDL描述的电路称为该设计电路的Verilog HDL模型。Verilog HDL具有行为描述和结构描述功能。行为描述
32、是对设计电路的逻辑功能的描述,并不用关心设计电路使用哪些元件及这些元件之间的连接关系。行为描述属于高层次的描述方法,在Verilog HDL中,行为描述包括系统级(System Level)、算法级(Algorithm Level)和寄存器传输级(Register Transfer Level,RTL)3种抽象级别。2008-9-1EDA技术与DE2实践74结构描述是对设计电路的结构进行描述,即描述设计电路使用的元件及这些元件之间的连接关系。结构描述属于低层次的描述方法,在Verilog HDL中,结构描述包括门级(Gate Level)和开关级(Switch Level)两种抽象级别。在Ve
33、rilog HDL的学习中,应重点掌握高层次描述方法,但结构描述也可以用来实现电路的系统设计。2008-9-1EDA技术与DE2实践75 4.4.1 Verilog HDL门级描述Verilog HDL提供了丰富的门类型关键词,用于门级的描述。比较常用的包括:not(非门)、and(与门)、nand(与非门)、or(或门)、nor(或非门)、xor(异或门)、xnor(异或非门)、buf(缓冲器)及bufifl(高电平使能的三态缓冲器)、bufif0(低电平使能的三态缓冲器)、notifl(高电平使能非门)、notif0(低电平使能非门)、pullup(上拉电阻)、pulldown(下拉电阻)
34、等基本门级元件。2008-9-1EDA技术与DE2实践76 门级描述语句格式为:门类型关键词例化门的名称(端口列表);其中,“例化门的名称”是用户定义的标识符,属于可选项;端口列表按(输出、输入、使能控制端)的顺序列出。例如:nand nand2(y,a,b);/2输入端与非门 xor myxor(y,a,b);/异或门 bufif0 mybuf(y,a,en);/低电平使能的三态缓冲器 例4.12 采用结构描述方式描述图4.8所示的硬件电路。用户定义的标识符门类型关键词输出、输入、使能2008-9-1EDA技术与DE2实践77 例4.12 采用结构描述方式描述图4.8所示的硬件电路。图4.8
35、 例4.12的硬件实现电路2008-9-1EDA技术与DE2实践78图4.8所示电路是在例4.3中用行为描述方式描述过的电路,为了方便结构描述,在电路中增加了s1、s2、s3信号连线,用结构描述方式的Verilog HDL源程序example_12.v如下:module example_12(y,a,b,c);input a,b,c;output y;wire s1,s2,s3;not (s1,a);nand (s2,c,s1);nand (s3,a,b);nand (y,s2,s3);endmodule 2008-9-1EDA技术与DE2实践79 4.4.2 Verilog HDL的行为级描
36、述Verilog HDL的行为级描述是最能体现EDA风格的硬件描述方式,它既可以描述简单的逻辑门,也可以描述复杂的数字系统乃至微处理器;既可以描述组合逻辑电路,也可以描述时序逻辑电路。下面再通过几个组合逻辑和时序逻辑电路设计例子,来加深读者对Verilog HDL行为级描述方法的理解。2008-9-1EDA技术与DE2实践80 例4.13 3线-8线译码器的设计。3线-8线译码器设计电路的元件符号如图4.9所示,en是低电平有效的使能控制输入端,a、b、c是数据输入端,y是8位数据输出端。图4.9 3线-8线译码器设计电路的元件符号 2008-9-1EDA技术与DE2实践81 3线-8线译码器
37、设计电路的Verilog HDL源程序example_13.v如下:module example_13(a,b,c,y,en);input a,b,c,en;output7:0 y;reg7:0 y;always (en or a or b or c)2008-9-1EDA技术与DE2实践82begin if(en)y=8b11111111;else begin case(c,b,a)3b000:y=8b11111110;3b001:y=8b11111101;3b010:y=8b11111011;3b011:y=8b11110111;3b100:y=8b11101111;并接.相当于VHDL的
38、(c&b&a)2008-9-1EDA技术与DE2实践83 3b101:y=8b11011111;3b110:y=8b10111111;3b111:y=8b01111111;endcase end end endmodule 2008-9-1EDA技术与DE2实践84 例4.14 8D锁存器的设计。8D锁存器设计电路的元件符号如图4.10所示,其中,d7.0是8位数据输入端,q7.0是8位数据输出端,en是使能控制输入端,当en=0(无效)时,锁存器的状态不变,en=l(有效)时,q7.0=d7.0。图4.10 8D锁存器设计电路的元件符号 2008-9-1EDA技术与DE2实践858D锁存器设
39、计电路的Verilog HDL源程序example_14.v如下:module example_14(d,q,en);input en;input7:0 d;output7:0 q;reg7:0 q;always (en or d)begin if(-en)q=q;else q=d;end endmodule 当en=0(无效)时,-en=1,锁存器的状态不变2008-9-1EDA技术与DE2实践86 4.4.3 用结构描述实现电路系统设计任何用Verilog HDL描述的电路设计模块(module),均可用模块例化语句例化一个元件,来实现电路系统的设计。模块例化语句格式与逻辑门例化语句格式类
40、似,具体格式如下:设计模块名例化电路名(端口列表);2008-9-1EDA技术与DE2实践87其中,“设计模块名”是用户设计的电路模块名;“例化电路名”是用户为系统设计定义的标识符(为可选项),相当于系统电路板上为插入设计模块元件的插座:而“端口列表”用于描述设计模块元件上的引脚与插座上引脚的连接关系。2008-9-1EDA技术与DE2实践88 端口列表的方法有两种。位置关联法 位置关联法要求端口列表中的引脚名称应与设计模块的输入输出端口一一对应。例如,设计模块名为cntl0的输入输出端口为clk和cout,而以u1为例化电路名的两个引脚名是x1和x2,那么位置关联法的模块例化语句格式为:cn
41、tlo ul(xl,x2);名称关联法 名称关联法的格式如下:(.设计模块端口名(插座引脚名),设计模块端口名(插座引脚名),);例如,用名称关联法完成cntl0的模块例化语句格式为:cntl0 ul(.Clk(x1),.cout(x2);两种关联法各有特点,位置关联法简单,但没有名称关联法直观。2008-9-1EDA技术与DE2实践89 例4.15 用模块例化方式设计8位计数译码器电路系统。在8位计数译码系统电路设计中,需要事先设计一个4位二进制加法计数器cnt4e模块和一个七段数码显示器的译码器Dec7s模块,然后用模块例化方式将这两种模块组成计数译码系统电路。2008-9-1EDA技术与
42、DE2实践90 1.4位二进制加法计数器cnt4e的设计 cnt4e的元件符号如图4.11所示,clk是时钟输入端:clr是复位控制输入端,当clr=1时计数器被复位,输出q3.0=0000;ena是使能控制输入端,当 ena=l时,计数器才能工作;cout是进位输出端,当输出q3.0=1111时,cout=l。图4.11 cnt4e的元件符号 2008-9-1EDA技术与DE2实践91图4.11 cnt4e的元件符号 2008-9-1EDA技术与DE2实践92cnt4e的Verilog HDL源程序cnt4e.v如下:module cnt4e(clk,clr,ena,cout,q);inpu
43、t clk,clr,ena;output3:0 q;output cout;reg 3:0 q;always(posedge clr or posedge clk)begin if(clr)q=b0000;else if(ena)q=q+1;end assign cout=&q;endmodule cout=(q0&q1)&q2)&q3;与约简运算2008-9-1EDA技术与DE2实践93 图4.12 Dec7s的元件符号 2008-9-1EDA技术与DE2实践94Dec7s的Verilog HDL源程序Dec7s.v如下:module Dec7s(a,q);input3:0 a;output
44、7:0 q;reg 7:0 q;always(a)begin case(a)0:q=8b00111111;l:q=8b00000110;2008-9-1EDA技术与DE2实践95 2:q=8b01011011;3:q=8101001111;4:q=8b01100110;5:q=8b01101101;6:q=8b01111101;7:q=8b00000111;8:q=8b01111111;9:q=8b01101111;10:q=8b01110111:11:q=8b0lllll00;12:q=8b00111001;13:q=8b0l011110;14:q=8b011ll00l;15:q=8b011
45、10001;endcase end endmodule 2008-9-1EDA技术与DE2实践96 3.计数译码系统电路的设计 计数译码系统电路的结构图如图4.13所示,它是用Quartus II的图形编辑方式设计出来的。其中,u1和u2是两个cnt4e元件的例化模块名,相当于cnt4e系统电路板上的插座;u3和u4是Dec7s 元件的例化模块名,相当于Dec7s在系统电路板上的插座。x、q1、q2是电路中的连线。2008-9-1EDA技术与DE2实践97图4.13 计数译码系统电路的结构图 2008-9-1EDA技术与DE2实践98用模块例化方式将cnt4e和Dec7s两种模块组成计数译码系
46、统电路cnt_dec7s的源程序 cnt_Dec_v.v如下:module cnt_Dec_v(clk,clr,ena,cout,q);input clk,clr,ena;output15:0 q;output cout;reg 15:0J q;wire3:0)ql,q2;wire x;2008-9-1EDA技术与DE2实践99cnt4e u1(clk,clr,ena,x,q1);/位置关联法的模/块例化 cnt4e u2(clk,clr,x,cout,q2);dec7s u3(.a3:0(q1),.q7:0(q7:0);/名称关联法的模块例化 dec7s u4(.a3:0(q2),.q7:0(q15:8);endmodule 2008-9-1EDA技术与DE2实践100计数译码系统电路的仿真波形如图4.14所示。其中,数据“3F3F是电路输出端q(15:0送给七段数码管显示“00的数据;“3F06”是显示“01”的数据;依次类推。仿真结果验证了设计的正确性。图4.14 计数译码系统电路的仿真波形 2008-9-1EDA技术与DE2实践101图4.14 计数译码系统电路的仿真波形