- 1、本文档共126页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch04-时序逻辑电路建模精要
工程学院
信息技术教研室;4.1 锁存器;锁存器和触发器的基本特性;锁存器与触发器的区别;4.1 锁存器;1. 用与非门构成的基本SR锁存器;4.1.1 基本SR锁存器;、;;4.1.2 门控D 锁存器;工作原理;特性表和特性方程 ;波形图;4.1.3 门控D 锁存器的Verilog HDL建模;//版本1: Structural description of a D latch
module Dlatch_Structural (E, D, Q, Q_);
input E, D;
output Q, Q_;
wire R_, S_;
nand N1(S_, D,E);
nand N2(R_,~D,E);
SRlatch_1 N3(S_,R_,Q,Q_);
endmodule
;第一个版本根据图4.1.3使用基本的逻辑门元件,采用结构描述风格,编写了两个模块,这两个模块可以放在一个文件中,文件名为Dlatch_Structural.v。
在一个文件中可以写多个模块,其中有一个是主模块(或者称为顶层模块)。
文件名必须使用顶层模块名。本例中Dlatch_Structural是主模块,它调用SRlatch_1模块。;//版本2: Behavioral description of a D latch
module Dlatch_bh (E, D, Q, Q_);
input E, D;
output Q,Q_;
reg Q;
assign Q_ = ~Q;
always @(E or D)
if (E)
Q = D; //当使能有效时,输出跟随输入变化
else
Q = Q; //保持不变
endmodule
;18;第二个版本采用功能描述风格的代码,不涉及到实现电路的具体结构,靠“算法”实现电路操作。对于不太喜欢低层次硬件逻辑图的人来说,功能描述风格的Verilog HDL是一种最佳选择。其中“=”为非阻塞赋值符,将在下一节介绍。
注意:
always内部不能使用assign。
在写可综合的代码时,建议明确地定义if-else中所有可能的条件分支,否则,就会在电路的输出部分增加一个电平敏感型锁存器。 ; Verilog行为级描述用关键词initial或always,但initial是面向仿真,不能用于逻辑综合。always是无限循环语句,其用法为: ;4.2.1 阻塞型赋值语句与非阻塞型赋值语句;4.2.1 阻塞型赋值语句与非阻塞型赋值语句;
;阻塞型过程赋值与非阻塞型过程赋值;25;注意:
在可综合的电路设计中,一个语句块的内部不允许同时出现阻塞型赋值语句和非阻塞型赋值语句。
在时序电路的设计中,建议采用非阻塞型赋值语句。;4.2.2 事件控制语句;
;边沿触发事件;4.3 D触发器;4.3.1 D触发器的逻辑功能;2. 特性表 ;33;4.3.2 有清零输入和预置输入的D 触发器;4.3.2 有清零输入和预置输入的D 触发器;有同步清零端的 D 触发器 ;4.3.3 有使能端的D 触发器;4.3.4 D触发器及其应用电路的Verilog HDL建模;//版本1:
module Set_Rst_DFF (Q,Q_,D,CP,Rd_,Sd_);
output Q,Q_;
input D,CP,Rd_,Sd_;
wire Y1,Y2,Y3,Y4,Y5,Y6;
assign #5 Y1 = ~(Sd_ Y2 Y4);
assign #5 Y2 = ~(Rd_ CP Y1);
assign #5 Y3 = ~(CP Y2 Y4);
assign #5 Y4 = ~(Rd_ Y3 D);
assign #5 Y5 = ~(Sd_ Y2 Y6);
assign #5 Y6 = ~(Rd_ Y3 Y5);
assign Q = Y5;
assign Q_= Y6;
endmodule
;//版本2
module Set_Rst_DFF_bh (Q,Q_,D,CP,Rd_,Sd_);
output reg Q;
output Q_;
input D,CP,Rd_,Sd_;
assign Q_= ~Q;
always @(posedge CP or negedge Sd_ or negedge Rd_)
if (~Sd_) //等同于: if (Sd_== 0)
Q = 1b1;
文档评论(0)