- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 基于EDA的时序电路设计、综合及验证(7.1-7.5)
PAGE 42
PAGE 43
基于EDA的时序电路设计、综合及验证
学习基础:
第3章介绍了时序逻辑电路的基础知识。学习本章前,应先掌握第3章的知识。
第4章介绍了Verilog HDL的基本语法及简单设计的建模方法。
5.5~5.7的综合实例,介绍了EDA工具Libero IDE的使用。本章所有综合和验证均基于Libero IDE环境实现。
阅读指南:
本章讲述内容对应第3章的知识,把相应功能通过Verilog HDL语言进行实现。
本章多处对同一个设计提供了多种设计思路和实现方法,并不是所有都是最优的方法,只是方便对比和学习。读者可根据情况选择合适的方法。
7.4、7.6、7.7中讨论了第3章中没有涉及的理论知识和多个综合例子,这些知识和例子综合性强,较难理解,但却是数字系统实际开发中非常重要和实用的内容,对于想进入数字系统设计实践阶段的读者来说很有实际意义。
锁存器
基本RS锁存器(一)
1.使用Verilog进行描述
module rs_1(R,S,Q,Qn);
input R,S;
output Q,Qn; // Qn表示,而不是时序电路中的现态。
reg Q;
assign Qn=~Q;
always @(R or S) // 通过case语句,按真值表方式写出程序逻辑。
case({R,S})
2b01:Q=1;
2b10:Q=0;
2b11:Q=1bx;
endcase
endmodule
读者在一开始看这种程序时很容易产生疑问:触发器是存放数字电路中基本二进制信号的单元电路,也就是寄存器变量Q的值是需要使用触发器来存放,而触发器是由锁存器所构成,用触发器存放的Q来实现一个锁存器显然是不合理的。
这就需要读者理解在Verilog HDL中,采用行为风格编写代码,是为了让程序编写者可用更趋向行为的方式更方便的编写代码,而不需考虑具体的物理细节。虽然在程序中指定要使用一个寄存器变量Q,但在使用EDA工具进行综合的时候,是不会也不可能用触发器来实现锁存器的,通过综合结果可看出。
2.综合结果
第7章的工艺视图不一定要给学生讲,各位老师自行处理
3.测试平台设计
`timescale 1ns/1ns
module testbench ();
reg r,s;
wire q,qn;
rs_1 test_rs(r,s,q,qn);
initial
begin
r=0;s=0;
#10 s=1;
#10 r=1;
#10 s=0;
#10 r=0;
#10;
end
endmodule
4.功能验证
综合前仿真
综合后仿真
波形说明:
综合前仿真(功能仿真)的结果中,在0~10ns和20~30ns之间,q和qn都是x态。0~10ns之间产生的x态是因为r和s的值为0,q保持原态;20~30ns之间产生的x态是因为r和s的值为1,代码中规定了处理为x态。
综合后仿真的结果中,20~30ns之间q和qn并不是x态(都为0),具体状态视20ns时r、s、q的值而定。
基本RS锁存器(二)
1.使用Verilog进行描述
module rs_2(R,S,Q,Qn);
input R,S;
output Q,Qn;
nor (Q,R,Qn);
nor (Qn,S,Q);
endmodule
2.综合结果
测试平台与设计一相同。
3.功能验证
波形分析:对比设计一和设计二的波形,可发现在设计一中,当r,s为1时,Q和Qn均为x,而在设计二中Q和Qn均为0。由于对RS锁存器来说,R,S同为1是不允许的,故可忽略之。
门控D锁存器
1.使用Verilog进行描述
module latch_1_a(Clk,D,Q);
input Clk,D;
output Q;
reg Q;
always @(D or Clk)
if (Clk) Q=D;
endmodule
程序说明:
(1)当Clk为高电平时,输出Q的数值会随D输入的数据更新,而当Clk为低电平时将保持其高电平时锁入的数据。
(2)Clk由0变为1时,满足if语句的条件,语句“Q=D”被执行,将D的数值赋值给Q;Clk由1变为0时(无论D是否变化),都将执行if语句,但此时Clk=0,语句Q=D不被执行,于是Q保持原值不变。
(3)如果敏感信号D发生变化,但Clk为0,Q保持原值不变;如果敏感信号D发生变化,且Clk为1,则执行语句Q=D。
2.综合结果
\
3.测试平台设计
`timescale 1ns/1ns
module testbench_latch;
文档评论(0)