第三章_Verilog设计入门02.ppt

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

3.1.2 4选1及CASE语句 3.1.3 4选1数据流描述方式 3.1.4 4选1的 if 语句 赋值语句 在Verilog HDL语言中,信号有两种赋值方式: 赋值语句 ? 徐州师范大学物理与电子工程学院 陈斯 chensism@126.com 电子设计自动化 徐州师范大学 物电学院 陈斯 chensism@126.comEDA技术实用教程 第3章 4选1电路外部结构 块名,可以不要 可以写成 (a,b,c,d,s0,s1) { }并位运算符, 可以将两个或两个以上的信号按二进制拼接起来,作为一个信号来使用。 可以换成= 有default语句 无default语句 1.按位逻辑操作符 2.等式操作符 设Data=’b11x0,Addr= ’b11x0,则 Data==Addr不定,值为x, 但Data===Addr为真, 值为1. module MUX41b(a,b,c,d,s1,s0,y); input a,b,c,d,s1,s0; wire[1:0] SEL; output y; wire AT,BT,CT,DT; assign SEL={s1,s0}; assign AT=(SEL==2D0); assign BT=(SEL==2D1); assign CT=(SEL==2D2); assign DT=(SEL==2D3); assign y=(aAT)|(bBT)|(cCT)|(dDT); endmodule 可以用wire表达assign语句 wire y=tmp1^tmp2 等同于 wire tmp1,tmp2; assign y=tmp1^tmp2 例3-4 module MUX41c(a,b,c,d,s1,s0,y); input a,b,c,d,s1,s0; output y; wire AT=s0?d:c; wire BT=s0?b:a; wire y=s1?AT:BT; endmodule 数据类型可以不同 (1).非阻塞(Non_Blocking)赋值方式( 如 b = a; ) 块结束后才完成赋值操作。 b的值并不是立刻就改变的。 这是一种比较常用的赋值方法。(特别在编写可综合模块时) (2).阻塞(Blocking)赋值方式( 如 b = a; ) 赋值语句执行完后,块才结束。 b的值在赋值语句执行完后立刻就改变的。 可能会产生意想不到的结果。 initial begin Clr = #5 0; Clr = #4 1; Clr = #10 0; end initial begin Clr = #5 1; Clr = #4 0; Clr = #10 0; end 第一条语句在0时刻执行, Clr在5个时间单位后被赋值;接着执行第二条语句,使Clr在4个时间单位后被赋值为1 (从0时刻开始为第9个时间单位);然后执行第三条语句促使Clr在1 0个时间单位后被赋值为0 (从0时刻开始为第19个时间单位) 第一条语句的执行使Clr 在第5个时间单位被赋于值1;第二条语句的执行使Clr在第4个时间单位被赋值为0 (从0时刻开始的第4个时间单位);最终,第3条语句的执行使Clr在第10个时间单位被赋值为0 (从0时刻开始的第1 0个时间单位)。注意3条语句都是在0时刻执行的。此外,在这种情况下,非阻塞性赋值执行次序变得彼此不相关。 D CLK Q a b c clk [例1]:always @( posedge clk ) begin b=a; c=b; end [例2]: always @(posedge clk) begin b=a; c=b; end [例1] 中的always块中用了非阻塞赋值方式,定义了两个reg型信号b和c,clk信号的上升沿到来时,b就等于a,c就等于b,这里应该用到了两个触发器。请注意:赋值是在always块结束后执行的,c应为原来b的值。 [例2]中的 always块用了阻塞赋值方式。clk信号的上升沿到来时,将发生如下的变化:b马上取a的值,c马上取b的值(即等于a),生成的电路图如下所示只用了一个触发器来寄存器a的值,又输出给b和c。这大概不是设计者的初衷,如果采用[例1]所示的非阻塞赋值方式就可以避免这种错误。 * *

文档评论(0)

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

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

1亿VIP精品文档

相关文档