Verilog设计初步与入门_第1页
Verilog设计初步与入门_第2页
Verilog设计初步与入门_第3页
Verilog设计初步与入门_第4页
Verilog设计初步与入门_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1Verilog设计初步与入门4.1组合电路的Verilog描述4.1.12选1多路选择器及其Verilog描述第1页/共44页4.1.12选1多路选择器及其Verilog描述4.1组合电路的Verilog描述第2页/共44页1.模块表达2.端口语句、端口信号名和端口模式4.1组合电路的Verilog描述4.1.12选1多路选择器及其Verilog描述moduleMUX21a(a,b,s,y); inputa,b,s; outputy; assigny=(s?a:b);endmodule 第3页/共44页3.赋值语句和条件操作符4.关键字5.标识符6.规范的程序书写格式7.文件取名和存盘4.1组合电路的Verilog描述4.1.12选1多路选择器及其Verilog描述moduleMUX21a(a,b,s,y); inputa,b,s; outputy; assigny=(s?a:b);endmodule 第4页/共44页4.1.24选1多路选择器及其case语句表述方式4.1组合电路的Verilog描述moduleMUX41a(a,b,c,d,s1,s0,y); inputa,b,c,d; inputs1,s0; outputy; regy; always@(a,b,c,d,s1,s0) begin case({s1,s0}) 2'b00:y<=a; 2'b01:y<=b; 2'b10:y<=c; 2'b11:y<=d; default:y<=a; endcase endendmodule第5页/共44页4.1.24选1多路选择器及其case语句表述方式4.1组合电路的Verilog描述第6页/共44页1.reg型变量定义4.1组合电路的Verilog描述4.1.24选1多路选择器及其case语句表述方式(1)Verilog中最常用的两种变量:寄存器型和网线型(2)模块中涉及的信息必须定义其类型;(3)默认的变量类型为网线型(wire);(4)过程语句中被赋值的变量必须为寄存器型;第7页/共44页选择正确的数据类型moduletop;wirey;rega,b; DUTu1(y,a,b); initialbegin a=0;b=0; #5a=1;endendmodulemoduleDUT(Y,A,B);outputY;inputA,B;wireY,A,B; and(Y,A,B);endmodule输入端口可以由net/register驱动,但输入端口只能是net输出端口可以是net/register类型,输出端口只能驱动net在过程块中只能给register类型赋值若Y,A,B说明为reg则会产生错误。in1in2OABY双向端口输入/输出只能是net类型4.1组合电路的Verilog描述第8页/共44页2.过程语句4.1组合电路的Verilog描述4.1.24选1多路选择器及其case语句表述方式(1)可用or连接所有敏感信号;(2)可用逗号(,)区分或连接所有敏感信号;(3)可用通配符*省略形式给出所有敏感信息;注:试图通过选择性地列出敏感信号来改变逻辑设计是无效的。第9页/共44页3.块语句begin_end4.case条件语句和4种逻辑状态4.1组合电路的Verilog描述4.1.24选1多路选择器及其case语句表述方式第10页/共44页case语句使用事项:case语句是测试表达式与另外一系列表达式分支是否匹配的一个多路条件语句。Case语句进行逐位比较以求完全匹配(包括x和z)。Default语句可选,在没有任何条件成立时执行。此时如果未说明default,Verilog不执行任何动作。多个default语句是非法的。重要内容:使用default语句是一个很好的编程习惯,特别是用于检测x和z。Casez和casex为case语句的变体,允许比较无关(don‘t-care)值。case表达式或case项中的任何位为无关值时,在比较过程中该位不予考虑。在casez语句中,?和z被当作无关值。在casex语句中,?,z和x被当作无关值。case<表达式><表达式>,<表达式>:赋值语句或空语句;

<表达式>,<表达式>:赋值语句或空语句;

default:赋值语句或空语句;case语法:4.1组合电路的Verilog描述第11页/共44页5.并位操作和数字表达4.1组合电路的Verilog描述4.1.24选1多路选择器及其case语句表述方式<位宽>’<进制><数字>(1).B二进制;O:八进制;H:十六进制;D:十进制。(不区分大小)(2).Verilog中只要标明了数制才能确定其二进制位数;(3).Verilog-2001可定义有符号二进制数;(4’b1010与4’sb1010为不同)第12页/共44页4.1.34选1多路选择器及其数据流描述方式4.1组合电路的Verilog描述第13页/共44页1.按位逻辑操作符4.1组合电路的Verilog描述4.1.34选1多路选择器及其数据流描述方式2.等式操作符第14页/共44页3.assign连续赋值语句4.1组合电路的Verilog描述4.1.34选1多路选择器及其数据流描述方式注:assign连续赋值语句中不允许有不同的数据赋给同一变量;(如下将出现错误)。第15页/共44页4.wire定义网线型变量4.1组合电路的Verilog描述4.1.34选1多路选择器及其数据流描述方式(1)用wire定义的网线型变量可以在任何类型的表达式或赋值语句中用作输入信号;第16页/共44页4.1组合电路的Verilog描述4.1.34选1多路选择器及其数据流描述方式moduleMUX41a(a,b,c,d,s1,s0,y); inputa,b,c,d; inputs1,s0; outputy; wireAT=s0?d:c; wireBT=s0?a:b; wirey=s1?AT:BT;endmodule用wire定义描述4选1语句第17页/共44页4.1.44选1多路选择器及其if语句描述方式4.1组合电路的Verilog描述第18页/共44页1.if_else条件语句2.过程赋值语句(1)阻塞式赋值(2)非阻塞式赋值4.1组合电路的Verilog描述4.1.44选1多路选择器及其if语句描述方式moduleMUX41a(a,b,c,d,s1,s0,y); inputa,b,c,d; inputs1,s0; outputy; reg[1:0]SEL; regy; always@(a,b,c,d,SEL) begin SEL={s1,s0}; if(SEL==0) y=a; elseif(SEL==1) y=b; elseif(SEL==2) y=c; else y=d; endendmodule用=作为阻塞式赋值语句;执行完毕立即更新数据;多条阻塞语句将阻塞后面语句;用<=作为非阻塞式赋值语句;在块语句执行完毕后才更新数据;其他语句处于并行执行;第19页/共44页4.1.5加法器及其Verilog描述1.半加器描述4.1组合电路的Verilog描述第20页/共44页4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述moduleh_adder(a,b,so,co); inputa,b; outputso,co; assignso=a^b; assignco=a&b;endmodule1.半加器描述第21页/共44页1.半加器描述4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述moduleh_adder(a,b,so,co); inputa,b; outputso,co; regso,co; always@(a,b) begin case({a,b}) 0:beginso=0;co=1‘b0;end//使用块语句 1:beginso=1;co=1'b0;end 2:beginso=1;co=1'b0;end 3:beginso=0;co=1'b1;end default:beginso=0;co=1'b0;end endcase endendmodule第22页/共44页1.半加器描述4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述moduleh_adder(a,b,so,co); inputa,b; outputso,co; assign{co,so}=a+b;endmodule第23页/共44页2.全加器描述4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述第24页/共44页2.全加器顶层文件设计和例化语句4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述modulef_adder(ain,bin,cin,cout,sum); inputain,bin,cin; outputcout,sum; wiree,d,f; h_adderu1(ain,bin,e,d);//位置关联 h_adderu2(.a(e),.so(sum),.b(cin),.co(f));//端口关联 or2au3(.a(d),.b(f),.c(cout));endmodule第25页/共44页2.全加器顶层文件设计和例化语句4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述h_adderu1(ain,bin,e,d);//位置关联

h_adderu2(.a(e),.so(sum),.b(cin),.co(f));//端口关联or2au3(.a(d),.b(f),.c(cout));第26页/共44页4.8位加法器描述4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述moduleADDER8B(A,B,CIN,COUT,DOUT); input[7:0]A,B; inputCIN; output[7:0]DOUT; outputCOUT; wire[8:0]DATA; assignDATA=A+B+CIN; assignCOUT=DATA[8]; assignDOUT=DATA[7:0];endmodulemoduleADDER8B(A,B,CIN,COUT,DOUT); input[7:0]A,B; inputCIN; output[7:0]DOUT; outputCOUT; assign{COUT,DOUT}=A+B+CIN;endmodule 第27页/共44页3.8位加法器描述4.1组合电路的Verilog描述4.1.5加法器及其Verilog描述第28页/共44页4.2时序模块及其Verilog表述4.2.1边沿触发型触发器及其Verilog表述moduleDFF1(CLK,D,Q); inputCLK,D; outputQ; regQ; always@(posedgeCLK) Q<=D;endmodule第29页/共44页4.2.2电平触发型锁存器及其Verilog表述4.2时序模块及其Verilog表述moduleLATCH1(CLK,D,Q); inputCLK,D; outputQ; regQ; always@(D,CLK) if(CLK) Q<=D;elseQ<=Q;endmodule第30页/共44页4.2.3含异步复位/时钟使能型触发器及其Verilog表述4.2时序模块及其Verilog表述moduleDFF2(CLK,D,Q,RST,EN);inputCLK,D,RST,EN;outputQ;regQ;always@(posedgeCLK,negedgeRST)begin if(!RST) Q<=0; elseif(EN) Q<=D; endendmodule第31页/共44页4.2.4同步复位型触发器及其Verilog表述4.2时序模块及其Verilog表述moduleDFF2(CLK,D,Q,RST); inputCLK,D,RST; outputQ; regQ; always@(posedgeCLK) begin if(RST==1) Q<=0; elseif(RST==0) Q<=D; else Q<=Q; endendmodule第32页/共44页4.2.5异步复位型锁存器及其Verilog表述4.2时序模块及其Verilog表述第33页/共44页4.2.5异步复位型锁存器及其Verilog表述4.2时序模块及其Verilog表述moduleLATCH3(CLK,D,Q,RST);inputCLK,D,RST;outputQ;assignQ=(!RST)?0:(CLK?D:Q);endmodulemoduleLATCH4(CLK,D,Q,RST); inputCLK,D,RST; outputQ; regQ; always@(D,CLK,RST) if(!RST) Q<=0; elseif(CLK) Q<=D;endmodule

第34页/共44页4.2.6Verilog的时钟过程表述的特点和规律4.2时序模块及其Verilog表述1、如果将某信号A定义为边沿敏感时钟信号,则必须在敏感信号表中给出对应的表述;但在always过程结构中不能在出现信号A;2、如果将某信号B定义为对应于时钟的电平敏感的异步控制信号,则除了在敏感信号表中给出对应的表述外;在always过程结构中必须明示信号B的逻辑行为;3、如果将某信号定义为对应于时钟的同步控制信号,则绝不能以任何形式出现在敏感信号表中;4、敏感信号表中一旦出现边沿表述形式,则不允许出现其他非敏感信号的表述;第35页/共44页4.2.7异步时序模块的Verilog表述4.2时序模块及其Verilog表述moduleAMOD(D,A,CLK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论