EDA技术306720.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EDA技术306720.ppt

GUET School of Information Communications EDA技术 主讲:信息与通信学院 谢跃雷 (副教授) 第三讲 Verilog HDL行为设计 行为级描述是对系统的高抽象级描述。在这个抽象级,注重的是整个系统的功能而不是实现。 Verilog有高级编程语言结构用于行为描述,包括: wait, while, if then, case和forever,for等 . always语句 循环执行 按顺序执行其中的语句,最后一条语句执行完后,再次执行第一条语句 一个模块中若有多个always块,则它们同时执行。 二、过程赋值语句 在always过程块中的赋值称为过程赋值。 左边的信号必须是寄存器类型(如reg类型) 等式右边可以是任何有效的表达式数据类型也没有限制。 如果一个信号没有声明则缺省为wire类型。使用过程赋值语句给wire赋值会产生错误。 1.阻塞赋值语句 使用“=”作为赋值符 阻塞赋值语句按顺序执行,一条语句完全执行完后,才执行下一条语句,即有“阻塞”作用。 2.非阻塞赋值语句 使用“=”作为赋值符 非阻塞赋值语句并行执行,即一条语句不会“阻塞”其它语句执行,充许赋值调度。 阻塞与非阻塞语句使用原则 组合逻辑模型,用阻塞赋值。 时序逻辑电路建模,使用非阻塞赋值。 锁存器电路建模,使用非阻塞赋值。 时序和组合逻辑电路混合时,用非阻塞。 在同一个always块不要同时使用两种语句。 不要在多个always块中对同一变量赋值。 三、 时序控制 四、条件语句 条件语句用于根据某个条件来确定是否执行其后的语句,用关键词if和else来表示,共有三种形式的条件语句 五、 多路分支语句 六、循环语句 七、组合逻辑电路行为建模实例 四选1数据选择器 译码器3-8 四选1数据选择器行为建模 . 译码器3-8 * * 结构化的过程语句 过程赋值语句 时序控制。 条件语句 分支语句 循环语句 行为描述:从电路的外部行为角度进行描述,即描述电路的输入与输出之间的关系。 3.1 行为建模 一、结构化过程语句 Verilog中有两种结构化过程语句:initial和always语句,是行为建模的两种基本语句,所有的行为语句只能出现在这两种结构化过程语句里。 always语句代表一个独立的执行过程(或过程块) initial语句仅用于仿真 这两种语句不能嵌套使用。 verilog本质上是并发的,这些块并发执行,而不是顺序执行。 module………..; …….. reg clock; always clock = ~clock; endmodule always块语句是verilog行为建模的主要块语句,是学习的重点。 Verilog包括两种过程赋值语句 阻塞赋值 非阻塞赋值 reg x, y, z; reg [15:0] reg_a, reg_b; interget counter; always @(*) begin count=count +1; reg_b[15:13]={x, y, z}; reg_a=regb+count; end reg x, y, z,clk; reg [15:0] reg_a, reg_b; interget counter; always @ (clk) if (clk) begin count=count +1; reg_b[15:13]={x, y, z}; reg_a=regb+count; end end 非阻塞赋值常用来描述多个数据并发传输的行为。 always @ ( posedge clock) begin reg1= in1; reg2= in2 ^ in3; reg3= reg1; end 在每个时钟上升沿时读取in1,in2,in3和reg1,计算右侧表达式,该值临时保存。 对左侧的赋值在相应的调度时刻发生。 每个赋值操作在被调度的仿真时刻完成。 在数字系统设计中,时序控制起着十分重要的作用,它使得设计者可以指定过程赋值发生的时刻。有2种时序控制方法: 基于事件的时序控制。 电平敏感的时序控制。 .基于事件的时序控制 在verilog中,事件是指某一个寄存器或线网变量的值发生了变化。事件可以触发声明语句或块语句的执行。Verilog中有2类事件控制 常规事件控制 OR事件控制 常规事件控制 使用符号 @( ) 语句执行的条件是信号的值发生了变化 正向跳变 posedge 负向跳变 negedge always @ (c) q =d; always @ (posedge clock) q=d; always @ (negedge clock) q=

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档