- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Verilog语言教程逻辑及语法部分
module dircase(a, b, c, d) input b, c; input [1:0] a; output d; reg d; always @(a or b or c) case (a) //ambit synthesis case = full 2’b00: d=b; 2’b01: d=c; endcase endmodule 语法详细讲解由综合指令实现的完整 case 语句 在此例中,虽然没有定义所有可能的选择,但其中的综合指令通知优化器没有定义的选择将不会发生。此例为纯组合逻辑,不会产生锁存器。 当设置了 case 综合指令为 full 时,也可从 case 语句中综合出锁存 器。举例说明如下: module select ( a, b, sl); input [1:0] sl; output a, b; reg a, b; always @(sl) case (sl) //ambit synthesis case = full 2’b00: begin a=0; b=0; end 2’b01: begin a=1; b=1; end 2’b10: begin a=0; b=1; end 语法详细讲解 case 指令的例外情况 2‘b11: b=1; default: begin a=‘bx; b=‘bx; end endcase endmodule 虽然case覆盖的情况是全的,但电平敏感列表不全,a ,b 都没有列 入。所以有锁存器产生。 语法详细讲解 case 指令的例外情况 函数不包含时间控制,因此它们综合为组合逻辑。可以在过程块和连续赋值语句中调用函数。 下面是 or/and 块,其中在连续赋值语句中调用了函数。 module orand(out, a, b, c, d, e); input a, b, c, d, e; output out; wire out; assign out=forand(a, b, c, d, e); function forand; if(e==1) forand(a|b)(c|d); 语法详细讲解 函数 else forand=0; endfunction endmodule 语法详细讲解 函数 任务仅用于测试模块中,因为: 不包含时间控制的任务与函数的作用相似。 包含时间控制的任务是不可综合的。 下面的 or/and 块中调用了任务: module orandtask(out, a, b, c, d, e); input a, b, c, d, e; output out; reg out; always @(a or b or c or d or e) orand(out, a, b, c, d, e); task orand; input a, b, c, d, e; 语法详细讲解 任务 output out; if(e==1) out=(a|b)(c|d); else out=0; endtask endmodule 语法详细讲解 任务 在 always 块中,如果条件语句中的规定的条件不完整,综合时则 会产生锁存器。在下面的例子中,因为未定义若当 enable 为低电平 时,怎样来处理 q 和 data,故 data 的值会保存在q寄存器中。为 保证语义的正确解释,综合器必须使用存储元件才能产生与此模 块对应的逻辑。 module latch(q, data, enable); input data,enable; output q; reg q; always @(enable or data) if(enable) q=data; endmodule 语法详细讲解 锁存器是怎样产生的? 一般的综合工具只能支持同步时序电路中的组合反馈电路的生成, 而不能支持组合电路中的组合反馈电路的生成。综合时如果在条件语 句的分支中, 出现有的分支没有为输出赋值,就会在生成的电路中产生 组合反馈电路。 语法详细讲解 同步反馈是怎样产生的? 产生反馈: module dffn(q,d,clk,en); input d, clk, en; output q; reg q; always @(negedge clk) if(en) q=d; endmodule 不产生反馈: module dffn(q,d,clk,en); inpu
您可能关注的文档
- 2013年注册核安全工程师专业实务第三章核设施选址与评价含第六章案例分析.ppt
- 2013年注册核安全工程师案例分析质量保证案例.ppt
- 2013年湖北省咸宁市中考化学试题Word版及答案.doc
- 2013年海南高考地理政治历史真题及答案解析汇总word版.doc
- 2013年浙江高考语文数学文史类文综英语真题及答案解析汇总word版.docx
- 2013年海南高考化学物理生物试题及答案汇总word版.doc
- 2013年注册核安全工程师综合知识第九章核安全文化.pptx
- 2013年湖北高考数学试题及答案解析图片版.doc
- 2013年湖北高考文科数学试题及答案解析word版.doc
- 2013年注册核安全工程师核安全综合知识第七章辐射防护基础.ppt
原创力文档


文档评论(0)