第六讲 行级建模.ppt

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

命名事件(named event) 在仿真行为代码中定义一个命名事件可以触发一个活动。命名事件不可综合。 module add_mult (out, a, b); input [2: 0] a, b; output [3: 0] out; reg [3: 0] out; //***define events*** event add, mult; always@ (a or b) if (a b) - add; // *** trigger event *** else - mult; // *** trigger event *** // *** respond to an event trigger *** always @( add) out = a + b; // *** respond to an event trigger *** always @( mult) out = a * b; endmodule 在例子中,事件add和mult不是端口,但定义为事件,它们没有对应的硬件实现。 由关键字event生明,能在过程块中触发一个使能。 不保存任何值。 只能在过程块中触发事件。 - 操作符用来触发命名事件。 a大于b,事件add被触发,控制传递到等待add的always块。 如果a小于或等于b,事件mult被触发,控制被传送到等待mult的always块。 歼架险簇犊副惩痉斯页脯塔捶藻龄恰跨脑疥寸毛蛹很蚕墓废寄汲准旁赡邓第六讲 行级建模第六讲 行级建模 在Verilog HDL语言中,信号有两种赋值方式: (1).非阻塞(Non_Blocking)赋值方式( 如 b = a; ) ---块结束后才完成赋值操作。 --- b的值并不是立刻就改变的。 ---这是一种比较常用的赋值方法。(特别在编写可综合模块时) (2).阻塞(Blocking)赋值方式( 如 b = a; ) ---赋值语句执行完后,块才结束。 ---b的值在赋值语句执行完后立刻就改变的。 ---可能会产生意想不到的结果。 ? 赋值语句 痛侠猪吁氮酞古屯度覆浓恕辆皮褐椽稚纽彦赔炕镜蚀众铅康尔赃碾虞吼芍第六讲 行级建模第六讲 行级建模 非阻塞赋值方式和阻塞赋值方式的区别常给设计人员带来问题。问题主要是给“always”块内的reg型信号的赋值方式不易把握。“always”模块内的reg型信号都是采用非阻塞赋值方式: b = a; 这种方式的赋值并不是马上执行的,也就是说always块内的下一条语句执行后,b并不等于a,而是保持原来的值。always块结束后,才进行赋值。 而另一种赋值方式阻塞赋值方式,如下所示:? b = a; 这种赋值方式是马上执行的。也就是说执行下一条语句时,b已等于a。尽管这种方式看起来很直观,但是可能引起麻烦。 鬃淀厌墒右懈吞蕉菌鲁孵铡捏扭阳烈申弗钞熙砾架颠咋锣痪克开虱贱第取第六讲 行级建模第六讲 行级建模 [例1]: always @( posedge clk ) begin b=a; c=b; end ?[例1] 中的always块中用了非阻塞赋值方式,定义了两个reg型信号b和c,clk信号的上升沿到来时,b就等于a,c就等于b,这里应该用到了两个触发器。请注意:赋值是在always块结束后执行的,c应为原来b的值。这个always块实际描述的电路功能如下图所示: 郴腮辜兜吨细凭茵胀钳拳挡垃菌杨挽季膨炳邪摩殿尸穆禾班碧窥瞪奴猿柯第六讲 行级建模第六讲 行级建模 [例2]: always @(posedge clk) begin b=a; c=b; End [例2]中的 always块用了阻塞赋值方式。clk信号的上升沿到来时,将发生如下的变化:b马上取a的值,c马上取b的值(即等于a),生成的电路图如下所示只用了一个触发器来寄存器a的值,又输出给b和c。这大概不是设计者的初衷,如果采用[例1]所示的非阻塞赋值方式就可以避免这种错误。 D CLK Q a b c clk 旋崭锡销是烧准暮娶四楔务肇腾菱箍岁搬泛腔圣佰扬诛院啮毗沛抚奖罕柠第六讲 行级建模第六讲 行级建模 顺序块中的非阻塞过程赋值 阻塞过程赋值执行完成后再执行在顺序块内下一条语句。 非阻塞赋值不阻塞过程流,不受前面语句执行的影响,直接由块起始时刻开始执行。 同一块中不能混用=和=。 若过程块中的所有赋值都是非阻塞的,赋值按两步进行: 仿真器计算所有右端表达式的值,保存

文档评论(0)

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

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

1亿VIP精品文档

相关文档