《第四章Verilog设计初步与入门》由会员分享,可在线阅读,更多相关《第四章Verilog设计初步与入门(45页珍藏版)》请在金锄头文库上搜索。
1、可编程逻辑器件与EDA第四讲第四讲 VerilogVerilog设计入门设计入门 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.1 2选选1多路选择器及其多路选择器及其Verilog描述描述 4.1.1 2选选1多路选择器及其多路选择器及其Verilog描述描述 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 1模块表达模块表达 2端口语句、端口信号名和端口模式端口语句、端口信号名和端口模式 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.1 2选选1多路选择器及其多路选择器及其Verilog描述描
2、述 module MUX21a(a,b,s,y);input a,b,s;output y;assign y=(s? a:b);endmodule3赋值语句和条件操作符赋值语句和条件操作符 4关键字关键字 5标识符标识符 6规范的程序书写格式规范的程序书写格式 7文件取名和存盘文件取名和存盘 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.1 2选选1多路选择器及其多路选择器及其Verilog描述描述 module MUX21a(a,b,s,y);input a,b,s;output y;assign y=(s? a:b);endmodule4.1.2 4选选
3、1多路选择器及其多路选择器及其case语句表述方式语句表述方式 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 module MUX41a(a,b,c,d,s1,s0,y);input a,b,c,d;input s1,s0;output y;reg y;always (a,b,c,d,s1,s0)begincase (s1,s0)2b00 : y=a;2b01 : y=b;2b10 : y=c;2b11 : y=d;default: y=a;endcaseendendmodule 4.1.2 4选选1多路选择器及其多路选择器及其case语句表述方式语句表述方式 4.
4、1 4.1 组合电路的组合电路的VerilogVerilog描述描述 1reg型变量定义型变量定义 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.2 4选选1多路选择器及其多路选择器及其case语句表述方式语句表述方式 (1)Verilog中最常用的两种变量:寄存器型和网线型中最常用的两种变量:寄存器型和网线型 (2)模块中涉及的信息必须定义其类型;)模块中涉及的信息必须定义其类型;(3)默认的变量类型为网线型()默认的变量类型为网线型(wire););(4)过程语句中被赋值的变量必须为寄存器型;)过程语句中被赋值的变量必须为寄存器型;选择正确的数据类型选择
5、正确的数据类型module top;wire y; reg a, b;DUT u1 (y, a, b) ;initial begina = 0; b = 0; #5 a = 1; endendmodulemodule DUT (Y, A, B);output Y;input A, B;wire Y, A, B;and (Y, A, B) ;endmodule输入端口可以由输入端口可以由net/register驱动,驱动,但输入端口只能是但输入端口只能是net输出端口可以是输出端口可以是net/register类型,类型,输出端口只能驱动输出端口只能驱动net在过程块中只能给在过程块中只能给re
6、gister类型赋值类型赋值若若Y,A,B说明为说明为reg则会产生错误。则会产生错误。in1in2OABY双向端口输入双向端口输入/输出输出只能是只能是net类型类型4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 2过程语句过程语句 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.2 4选选1多路选择器及其多路选择器及其case语句表述方式语句表述方式 (1)可用)可用 or 连接所有敏感信号;连接所有敏感信号;(2)可用)可用 逗号(逗号(,)区分或连接所有敏感信号;)区分或连接所有敏感信号;(3)可用通配符)可用通配符 * 省略
7、形式给出所有敏感信息;省略形式给出所有敏感信息;注:试图通过选择性地列出敏感信号来改变逻辑设计是无效的。注:试图通过选择性地列出敏感信号来改变逻辑设计是无效的。3块语句块语句begin_ end 4case条件语句和条件语句和4种逻辑状态种逻辑状态 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.2 4选选1多路选择器及其多路选择器及其case语句表述方式语句表述方式 case语句使用事项:语句使用事项:case语句是测试表达式与另外一系列表达式分支是否匹配的一个多路条件语句。语句是测试表达式与另外一系列表达式分支是否匹配的一个多路条件语句。Case语句进行逐
8、位比较以求完全匹配(包括语句进行逐位比较以求完全匹配(包括x和和z)。)。Default语句可选,在没有任何条件成立时执行。此时如果未说明语句可选,在没有任何条件成立时执行。此时如果未说明default,Verilog不执行任何动作。不执行任何动作。多个多个default语句是非法的。语句是非法的。重要内容:重要内容:使用使用default语句是一个很好的编程习惯,特别是用于检测语句是一个很好的编程习惯,特别是用于检测x和和z。Casez和和casex为为case语句的变体,允许比较无关语句的变体,允许比较无关(dont-care)值。)值。case表达式或表达式或case项中的任何位为无关值
9、时,在比较过程中该位不予考虑。项中的任何位为无关值时,在比较过程中该位不予考虑。在在casez语句中,语句中,? 和和 z 被当作无关值。被当作无关值。在在casex语句中,语句中,?,z 和和 x 被当作无关值。被当作无关值。case , :赋值语句或空语句;:赋值语句或空语句; , :赋值语句或空语句;:赋值语句或空语句; default:赋值语句或空语句;:赋值语句或空语句;case语法:语法:4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 5并位操作和数字表达并位操作和数字表达 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.
10、2 4选选1多路选择器及其多路选择器及其case语句表述方式语句表述方式 (1)B 二进制;二进制;O:八进制;:八进制;H:十六进制;:十六进制;D:十进制。(不区分大小):十进制。(不区分大小)(2)Verilog中只要标明了数制才能确定其二进制位数;中只要标明了数制才能确定其二进制位数;(3)Verilog-2001可定义有符号二进制数;可定义有符号二进制数;(4b1010与与4sb1010为不同)为不同)4.1.3 4选选1多路选择器及其数据流描述方式多路选择器及其数据流描述方式 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 1按位逻辑操作符按位逻辑操作符
11、4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.3 4选选1多路选择器及其数据流描述方式多路选择器及其数据流描述方式 2等式操作符等式操作符 3assign连续赋值语句连续赋值语句 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.3 4选选1多路选择器及其数据流描述方式多路选择器及其数据流描述方式 注:注:assign连续赋值语句中不允许有不同的数据赋给连续赋值语句中不允许有不同的数据赋给同一变量;(如下将出现错误)。同一变量;(如下将出现错误)。 4wire定义网线型变量定义网线型变量 4.1 4.1 组合电路的组合电路的V
12、erilogVerilog描述描述 4.1.3 4选选1多路选择器及其数据流描述方式多路选择器及其数据流描述方式 (1)用用wire定义的网线型变量可以在任何类型的表达式或赋定义的网线型变量可以在任何类型的表达式或赋值语句中用作输入信号;值语句中用作输入信号; 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.3 4选选1多路选择器及其数据流描述方式多路选择器及其数据流描述方式 module MUX41a(a,b,c,d,s1,s0,y);input a,b,c,d;input s1,s0;output y;wire AT=s0? d:c;wire BT=s0?
13、 a:b;wire y=s1? AT:BT;endmodule 用用wirewire定义描述定义描述4 4选选1 1语句语句 4.1.4 4选选1多路选择器及其多路选择器及其if语句描述方式语句描述方式4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 1if_ else条件语句条件语句 2过程赋值语句过程赋值语句 (1)阻塞式赋值)阻塞式赋值 (2)非阻塞式赋值)非阻塞式赋值 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.4 4选选1多路选择器及其多路选择器及其if语句描述方式语句描述方式module MUX41a(a,b,c,d,s
14、1,s0,y);input a,b,c,d;input s1,s0;output y;reg1:0 SEL;reg y;always (a,b,c,d,SEL)beginSEL=s1,s0;if(SEL=0)y=a;else if(SEL=1)y=b;else if(SEL=2)y=c;elsey=d;endendmodule l 用=作为阻塞式赋值语句; l 执行完毕立即更新数据;l 多条阻塞语句将阻塞后面语句;l 用=作为非阻塞式赋值语句; l 在块语句执行完毕后才更新数据;l 其他语句处于并行执行;4.1.5 加法器及其加法器及其Verilog描述描述 1. 半加器描述半加器描述 4.1
15、 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描述描述 module h_adder(a,b,so,co);input a,b;output so,co;assign so=ab;assign co=a & b;endmodule 1. 半加器描述半加器描述 1. 半加器描述半加器描述 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描述描述 module h_adder(a,b,s
16、o,co);input a,b;output so,co;reg so,co;always (a,b) begin case (a,b)0: begin so=0;co=1b0; end/使用块语句1: begin so=1;co=1b0; end2: begin so=1;co=1b0; end3: begin so=0;co=1b1; enddefault: begin so=0;co=1b0; endendcaseendendmodule 1. 半加器描述半加器描述 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描
17、述描述 module h_adder(a,b,so,co);input a,b;output so,co;assign co,so=a+b;endmodule2. 全加器描述全加器描述 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描述描述 2. 全加器顶层文件设计和例化语句全加器顶层文件设计和例化语句 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描述描述 module f_adder(ain,bin,cin,cout,sum);input ai
18、n,bin,cin;output cout,sum;wire e,d,f;h_adder u1(ain,bin,e,d); /位置关联h_adder u2(.a(e),.so(sum),.b(cin),.co(f);/端口关联or2a u3(.a(d),.b(f),.c(cout);endmodule2. 全加器顶层文件设计和例化语句全加器顶层文件设计和例化语句 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描述描述 h_adder u1(ain,bin,e,d); /位置关联 h_adder u2(.a(e),.so(
19、sum),.b(cin),.co(f);/端口关联or2a u3(.a(d),.b(f),.c(cout);4. 8位加法器描述位加法器描述 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描述描述 module ADDER8B(A,B,CIN,COUT,DOUT);input 7:0 A,B;input CIN;output 7:0 DOUT;output COUT;wire 8:0 DATA;assign DATA=A+B+CIN;assign COUT=DATA8;assign DOUT=DATA7:0;endmod
20、ulemodule ADDER8B(A,B,CIN,COUT,DOUT);input 7:0 A,B;input CIN;output 7:0 DOUT;output COUT;assign COUT,DOUT=A+B+CIN;endmodule3. 8位加法器描述位加法器描述 4.1 4.1 组合电路的组合电路的VerilogVerilog描述描述 4.1.5 加法器及其加法器及其Verilog描述描述 4.2 4.2 时序模块及其时序模块及其VerilogVerilog表述表述 4.2.1 边沿触发型触发器及其边沿触发型触发器及其Verilog表述表述 module DFF1(CLK,D,
21、Q);input CLK,D;output Q;reg Q;always (posedge CLK)Q=D;endmodule 4.2.2 电平触发型锁存器及其电平触发型锁存器及其Verilog表述表述 4.2 4.2 时序模块及其时序模块及其VerilogVerilog表述表述 module LATCH1(CLK,D,Q);input CLK,D;output Q;reg Q;always (D,CLK)if(CLK)Q=D; else Q=Q;endmodule4.2.3 含异步复位含异步复位/时钟使能型触发器及其时钟使能型触发器及其Verilog表述表述 4.2 4.2 时序模块及其时序
22、模块及其VerilogVerilog表述表述 module DFF2(CLK,D,Q,RST,EN); input CLK,D,RST,EN; output Q; reg Q; always (posedge CLK,negedge RST) beginif(!RST) Q=0;else if(EN) Q=D;endendmodule 4.2.4 同步复位型触发器及其同步复位型触发器及其Verilog表述表述 4.2 4.2 时序模块及其时序模块及其VerilogVerilog表述表述 module DFF2(CLK,D,Q,RST);input CLK,D,RST;output Q;reg
23、Q;always (posedge CLK)beginif(RST=1)Q=0;else if(RST=0)Q=D;elseQ=Q;endendmodule 4.2.5 异步复位型锁存器及其异步复位型锁存器及其Verilog表述表述 4.2 4.2 时序模块及其时序模块及其VerilogVerilog表述表述 4.2.5 异步复位型锁存器及其异步复位型锁存器及其Verilog表述表述 4.2 4.2 时序模块及其时序模块及其VerilogVerilog表述表述 module LATCH3(CLK,D,Q,RST); input CLK,D,RST; output Q; assign Q=(!R
24、ST) ? 0:(CLK ? D:Q);endmodulemodule LATCH4(CLK,D,Q,RST);input CLK,D,RST;output Q;reg Q;always(D,CLK,RST)if(!RST)Q=0;else if(CLK) Q=D;endmodule 4.2.6 Verilog的时钟过程表述的特点和规律的时钟过程表述的特点和规律 4.2 4.2 时序模块及其时序模块及其VerilogVerilog表述表述 1、如如果果将将某某信信号号A定定义义为为边边沿沿敏敏感感时时钟钟信信号号,则则必必须须在在敏敏感感信信号号表表中中给给出出对应的表述;但在对应的表述;但在
25、always 过程结构中不能在出现信号过程结构中不能在出现信号A;2、如如果果将将某某信信号号定定义义为为对对应应于于时时钟钟的的电电平平敏敏感感的的异异步步控控制制信信号号,则则除除了了在在敏敏感感信信号号表表中中给给出出对对应应的的表表述述外外;在在always 过过程程结结构构中中必必须须明明示示信信号号的逻辑行为;的逻辑行为;、如如果果将将某某信信号号定定义义为为对对应应于于时时钟钟的的同同步步控控制制信信号号,则则绝绝不不能能以以任任何何形形式式出现在敏感信号表中;出现在敏感信号表中;、敏敏感感信信号号表表中中一一旦旦出出现现边边沿沿表表述述形形式式,则则不不允允许许出出现现其其他他
26、非非敏敏感感信信号号的的表述;表述;.2.7 异步时序模块的异步时序模块的Verilog表述表述 4.2 4.2 时序模块及其时序模块及其VerilogVerilog表述表述 module AMOD(D,A,CLK,Q);input D,A,CLK;output Q;reg Q,Q1;always (posedge CLK)beginQ1=(A|Q);endalways (posedge Q1) begin Q=D;endendmodule.3.1 4位二进制计数器及其位二进制计数器及其Verilog表述表述 4.3 4.3 二进制计数器及其二进制计数器及其VerilogVerilog设计设计
27、 module CNT4(CLK,Q);input CLK;output3:0 Q;reg3:0 Q;always (posedge CLK)beginQ=Q+1;end/assign Q=Q1;endmodule4.3 4.3 二进制计数器及其二进制计数器及其VerilogVerilog设计设计 .3.1 4位二进制计数器及其位二进制计数器及其Verilog表述表述 .3.2 功能更全面的计数器设计功能更全面的计数器设计 4.3 4.3 二进制计数器及其二进制计数器及其VerilogVerilog设计设计 .3.2 功能更全面的计数器设计功能更全面的计数器设计 4.3 4.3 二进制计数器及其二进制计数器及其VerilogVerilog设计设计 .3.2 功能更全面的计数器设计功能更全面的计数器设计 4.3 4.3 二进制计数器及其二进制计数器及其VerilogVerilog设计设计 1 用Verilog 设计一个功能类似74LS160的计数器,并查看综合和仿真结果;4.4 4.4 习题习题2 用Verilog设计一个8位计数器,并查看综合结果和仿真结果。3 给出含有异步清0和计数使能的16位二进制加减可控计数器的Verilog HDL描述,并查看综合结果和仿真结果。谢谢谢谢