硬件描述语言5题稿.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GUET School of Information Communications 硬件描述语言及其在数字系统中的应用 主讲:信息与通信学院谢跃雷 (副教授) 3.3 组合逻辑电路设计:行为建模 行为级描述是对系统的高抽象级描述。在这个抽象级,注重的是整个系统的功能而不是实现。 Verilog有高级编程语言结构用于行为描述,包括: wait, while, if then, case和forever,for等 Verilog的行为建模是用一系列以高级编程语言编写的并行的、动态的过程块来描述系统的工作。 1.initial语句 只能执行一次 一个模块中若有多个initial块,则它们同时执行。 块内若有多条语句,需要用begin和end将它们组合。 2. always语句 循环执行 按顺序执行其中的语句,最后一条语句执行完后,再次执行第一条语句 一个模块中若有多个always块,则它们同时执行。 二、过程赋值语句 在always过程块中的赋值称为过程赋值。 在过程赋值语句中表达式左边的信号必须是寄存器类型(如reg类型) 在过程赋值语句等式右边可以是任何有效的表达式,数据类型也没有限制。 如果一个信号没有声明则缺省为wire类型。使用过程赋值语句给wire赋值会产生错误。 1.阻塞赋值语句 使用“=”作为赋值符 阻塞赋值语句按顺序执行,一条语句完全执行完后,才执行下一条语句,即有“阻塞”作用。 2.非阻塞赋值语句 使用“=”作为赋值符 非阻塞赋值语句并行执行,即一条语句不会“阻塞”其它语句执行,充许赋值调度。 阻塞与非阻塞语句使用原则 用always块建立组合逻辑模型,用阻塞赋值。 always块建立时序逻辑电路建模,使用非阻塞赋值。 锁存器电路建模,使用非阻塞赋值。 在同一个always块中建立时序和组合逻辑电路时,用非阻塞。 在同一个always块不要同时使用两种语句。 不要在多个always块中对同一变量赋值。 三、 时序控制 四、条件语句 条件语句用于根据某个条件来确定是否执行其后的语句,用关键词if和else来表示,共有三种形式的条件语句 五、 多路分支语句 六、循环语句 1.Repeat语句 2.while语句 3. forever语句 4. for语句 七、组合逻辑电路行为建模实例 四选1数据选择器 译码器3-8 四选1数据选择器行为建模 . 译码器3-8 1.任务 2.函数(function) //四选一多路选择器行为建模case语句 module mux4_to_1 ( y, d0,d1,d2,d3,s1,s0); output y; input d0,d1,d2,d3; input s1,s0; reg y; always @(d0 or d1 or d2 or d3 or s1 or s0) case ( {s1,s0}) 2’b00: y = d0; 2’b01: y = d1; 2’b10: y = d2; 2’b11: y = d3; default : y = 1’bx; endcase endmodule 与门级建模和数据流建模相比,行为建模更大简洁,可读性更强 //四选一多路选择器行为建模if语句 module mux_if(y,d0,d1,d2,d3,sel); output y; input d0,d1,d2,d3; input[1:0] sel; reg y; always @(d0 or d1 or d2 or d3 or sel) begin if(sel==2b00) y=d0; else if(sel==2b01) y=d1; else if(sel==2b10) y=d2; else y=d3; end endmodule module decoder_38(out,in); output [7:0] out; Input [2:0] in; reg[7:0] out; always @(in) begin case(in) 3d0: out=8 3d1: out=8 3d2: out=8 3d3: out=8 3d4: out=8 3d5: out=8 3d6: out=8 3d7: out=8 endcase end endmodule 在行为级设计中,经常需要在程序的多个不同地方实现同样的功能。这表明有必要把这些公共的部分提取出来

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档