网站大量收购独家精品文档,联系QQ:2885784924

Verilog-HDL中的语句.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Verilog-HDL中的语句

第三章Verilog-HDL中的语句1.基本语句1.1赋值语句赋值语句分为连续赋值语句和过程赋值语句。1.1.1连续赋值语句1.连续赋值语句用于把值赋给wire型变量(不能为reg型变量赋值)。语句形式为:assign A = B C;a.只要在右端表达式的操作数上有事件(事件为值的变化)发生时,表达式即被计算;b.如果计算的结果值有变化,新结果就赋给左边的线网。2.连续赋值的目标类型标量线网wire a;向量线网wire [7:0] a;向量线网的常数型位选择 a[1]向量线网的常数型部分选择 a[3:1]上述类型的任意的拼接运算结果{3a[2],a[2:1]}注:多条assign语句可以合并到一起。3.线网说明赋值连续赋值可作为线网说明本身的一部分。这样的赋值被称为线网说明赋值。如:wire Clear = b1;等价于wire clear; assign clear=‘b1;1.1.2 过程赋值语句 1.a.过程性赋值是仅仅在initial语句或always语句内的赋值 b.它只能对reg型的变量赋值。表达式的右端可以是任何表达式。 c.过程性赋值分两类:阻塞性过程赋值 = 非阻塞性过程赋值=2.语句内部时延与句间时延a.在赋值语句中表达式右端出现的时延是语句内部时延。Done = #5 1b1;b.通过语句内部时延表达式,右端的值在赋给左端目标前被延迟。即右端表达式在语句内部时延之前计算,随后进入时延等待,再对左端目标赋值。c.对比以下语句间的时延beginTemp = 1b1;#5 Done = Temp; //语句间时延控制end 3.阻塞性过程赋值a.赋值运算符是“=”的过程赋值是阻塞性过程赋值。b.阻塞性过程赋值在在下一语句执行前,执行该赋值语句。例:initialbeginClr = #5 0;Clr = #4 1;Clr = #10 0;end4.非阻塞性过程赋值a.在非阻塞性过程赋值中,使用赋值符号“=”。对目标的赋值是非阻塞的,但可预定在将来某个时间步发生。b.当非阻塞性过程赋值被执行时,计算右端表达式,右端值被赋于左端目标,并继续执行下一条语句。c.在当前时间步结束或任意输出被调度时,即完成对左端目标赋值。例如:initialbeginClr = #5 1; Clr = #4 0; Clr = #10 0;end注:在编写可综合的时序逻辑模块时,这是最常用的赋值方法。5.阻塞性赋值与非阻塞型赋值比较a.非阻塞性赋值:always @(posedgeclk)begin b = a; c = b;endb.阻塞性赋值:always@(posedgeclk)beginb = a;c = b;end 6.过程赋值与连续赋值的比较7.使用过程赋值八原则规则1: 建立时序逻辑模型时,采用非阻塞赋值语句。规则2: 建立latch模型时,采用非阻塞赋值语句。规则3: 在always块中建立组合逻辑模型时,采用阻塞赋值语句。规则4: 在一个always块中同时有组合和时序逻辑时时, 采用非阻塞赋值语句。规则5: 不要在一个always块中同时采用阻塞和非阻塞赋值语句。 ???规则6: 同一个变量不要在多个always块中赋值。规则7: 调用$strobe系统函数显示用非阻塞赋值语句赋值。规则8: 不要使用#0延时赋值。1.2 条件语句1.2.1 if语句1.2.2 case语句case语句是多路条件分支形式,其语法如下:case(case_expr)case_item_expr:procedural_statement; ......default:procedural_statement; endcasecase语句首先对条件表达式case_expr求值,然后依次对各分支项求值并进行比较。第一个与条件表达式值相匹配的分支中的语句被执行。可以在1个分支中定义多个分支项;这些值不需要互斥。缺省分支(default)覆盖所有没有被分支表达式覆盖的其他分支。如果case表达式和分支项表达式的长度不同情况下,在进行任何比较前所有的case表达式都统一为这些表达式的最长长度。在casez语句中,出现在case表达式和任意分支项表达式中的值z被认为是无关值,即那个位被忽略(不比较)。在casex语句中,值x和z都被认为是无关位。casex( Mask )4b1??? : Dbus[4] = 0;4b01?? : Dbus[3] = 0;4b001? : Dbus[2] = 0;4b0001 : Dbus[1] = 0;defalut : Dbus=4’hf;endcase1.2.3 条件语句的优先级case语句和if…else嵌套描述

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档