- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字系统设计与verilog_HDL_第7章.ppt
第7章 Verilog行为语句 Verilog HDL行为语句 7.1 过程语句 initial always 在一个模块(module)中,使用initial和always语句的次数是不受限制的。initial语句常用于仿真中的初始化,initial过程块中的语句仅执行一次;always块内的语句则是不断重复执行的。 always过程语句使用模板 always @ 敏感信号表达式event-expression begin //过程赋值 //if-else,case,casex,casez选择语句 //while,repeat,for循环 //task,function调用 end “always”过程语句通常是带有触发条件的,触发条件写在敏感信号表达式中,只有当触发条件满足时,其后的“begin-end”块语句才能被执行。 敏感信号表达式“event-expression” 敏感信号表达式又称事件表达式或敏感信号列表,即当该表达式中变量的值改变时,就会引发块内语句的执行。因此敏感信号表达式中应列出影响块内取值的所有信号。若有两个或两个以上信号时,它们之间用“or”连接。 例如: @ a //当信号a的值发生改变 @ a or b //当信号a或信号b的值发生改变 @ posedge clock //当clock 的上升沿到来时 @ negedge clock //当clock 的下降沿到来时 @ posedge clk or negedge reset //当clk的上升沿到来或reset信号的下降沿到来 敏感信号列表举例(4选1数据选择器) module mux4_1 out,in0,in1,in2,in3,sel ; output out; input in0,in1,in2,in3; input[1:0] sel; reg out; always @ in0 or in1 or in2 or in3 or sel //敏感信号列表 case sel 2b00: out in0; 2b01: out in1; 2b10: out in2; 2b11: out in3; default: out 2bx; endcase endmodule posedge和negedge关键字 对于时序电路,事件通常是由时钟边沿触发的,为表达边沿这个概念,Verilog提供了posedge和negedge关键字来描述。比如: 【例】同步置数、同步清零的计数器 module count out,data,load,reset,clk ; output[7:0] out; input[7:0] data; input load,clk,reset; reg[7:0] out; always @ posedge clk //clk上升沿触发 begin if !reset out 8h00; //同步清0,低电平有效 else if load out data; //同步预置 else out out+1; //计数 end endmodule 7.2 块语句 [例] begin b a; c b; end 7.3 赋值语句 2、过程赋值语句(Procedural Assignments) 过程赋值语句多用于对reg型变量进行赋值。过程赋值有阻塞(blocking)赋值和非阻塞(non_blocking)赋值两种方式。 (1)非阻塞(non_blocking)赋值方式 赋值符号为“ ”, 如:b a; 非阻塞赋值在整个过程块结束时才完成赋值操作,即b的值并不是立刻就改变的。 (2)阻塞(blocking)赋值方式 赋值符号为“ ”, 如:b a; 阻塞赋值在该语句结束时就立即完成赋值操作,即b的值在该条语句结束后立刻改变。如果在一个块语句中,有多条阻塞赋值语句,那么在前面的赋值语句没有完成之前,后面的语句就不能被执行,仿佛被阻塞了(blocking)一样,因此称为阻塞赋值方式。 阻塞赋值与非阻塞赋值 阻塞赋值与非阻塞赋值 非阻塞赋值仿真波形图 阻塞赋值与非阻塞赋值 非阻塞赋值综合结果 7.4 条件语句 ( if-else语句) if-else语句使用方法有以下3种: (1)if(表达式) 语句1; (2)if(表达式) 语句1; else 语句2; (3)if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; …… else if(表达式n) 语句n; else 语句n+1; case语句的使用格式如下。 case
原创力文档


文档评论(0)