SR latch D latch D filp-flop SR触发器 D触发器 D双稳态多谐震荡器 【数字电路】

 SR  latch D latch D filp-flop





SR Latch



典型的SR 触发器就长上面那样啦


不要以为简单,就把 S R Q Q’ 之间的相对位置关系记错了!


组成的元素很简单——或非门,但是实现的功能却很重要


SR是两个输入端口,Q 和 Q' 是输出端口



不要慌,两个端口,就四种输入情况,一个个分析,就可以了解SR latch是怎么工作的



当 s == 1 , R == 0, 或门,只要是有1 ,或门处理结果就是1。

这里S端口输入的是1,那么Q‘ 得到的是0,这个0反馈到R输入端,由于R的输入端输入的两个都是0,于是Q就是1,这个Q反馈到S输入端


于是我们得到,S == 1 R ==0 ----->>>Q == 1 && Q’ == 0





当 s == 0 , R == 0




这种状态很有意思,始终要记得是或非门,那么此时如果输入0,是对结果“不影响”的,应为就相当于把输出的状态控制权交给了另外一个反馈输入

于是我们得到,S == 0 R ==0 ----->>> Q 和Q‘ ==不变





当 s == 0 , R == 1



此时,由于R输入了1,Q必为0,反馈到S的输入端,0,0,输入到S输入端口,Q‘ == 1

于是我们得到,S == 0 R ==1 ----->>>Q == 0 && Q’ == 1





当 s == 1 , R == 1


此时,由于S R都输入了1,Q和Q‘必为0,反馈到S的输入端,0,0,输入到S R输入端口

于是我们得到,S == 1 R ==1 ----->>> Q == 0 && Q’ == 0




S == 0 R ==0 ----->>> Q 和Q‘ ==不变

S == 1 R ==0 ----->>>Q == 1 && Q’ == 0

S == 0 R ==1 ----->>>Q == 0 && Q’ == 1

S == 1 R ==1----->>> Q == 0 && Q’ == 0

规律看的出来,不解释。。。规律的本质落脚在那个电路的或和非的功能上!




D Latch





用一个非门改进SR触发器,相当于讲SR触发器置于只能工作在 0 1 或者 1 0输入的状态下,这里的效果就是使得输出始终跟随着输入D。

图中,我给出了当D是0 和D是1两种情况的各个引脚端口的电位高低




不能怪我手抖,鼠标写出来的。。。都是扭曲的。。。字体



            实际的D触发器还有个端口,就是CLK时钟信号端口,这个相当于一个使能作用端口,这个端口如果是高电平,那么整个器件正常工作,如果是低电平,保持原来的输出




可以看到上图中,在CLK 2ns-3ns之间,输出Q是维持不变的,只有在CLK为高电平的时候,Q跟随D的电平,something is interesting, isn't it?




D flip-flop


OK, flip-flop的时间到了





如果clk端口是没有非门,如上图这样,就是上升沿触发,如果有个非门,就是下降沿触发



D触发器和D flip-flop(我实在不想鸟那个又臭又长的中文名字)的对比图,一目了然,有木有!












《自由引导人民》

欧仁·德拉克罗瓦(Eugène Delacroix)为纪念1830年法国七月革命而创作的油画作品



  • 14
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Verilog是一种高级的硬件描述语言,可以用来实现电路的表示和描述。要写一个D触发器,首先需要定义一个模块,然后使用输入和输出端口来定义模块的接口,最后使用always关键字来描述模块的功能。可以参考下面的示例代码: module D_latch(D,Clk,Q); input D,Clk; output Q; always @(Clk or D) begin if(Clk == 1'b1) Q <= D; end endmodule ### 回答2: Verilog是一种硬件描述语言,可以用于设计和描述数字电路。下面是用Verilog写一个D触发器的代码: module d_flip_flop ( input d, input clk, input reset, output reg q ); always @(posedge clk or posedge reset) begin if (reset) q <= 1'b0; else q <= d; end endmodule 上述代码定义了一个名为d_flip_flop的模块,该模块包含一个输入端口d、一个时钟输入端口clk、一个复位输入端口reset,以及一个输出端口q。在时钟边沿上升沿或复位边沿上升沿时,always块内的代码会执行。 在always块内部,首先检查reset信号是否为1。如果是1,则将输出端口q赋值为0;如果不是1,则将输出端口q赋值为输入端口d。 这样,当reset信号为1时,D触发器的输出q将始终为0,当reset信号为0时,D触发器的输出q将与输入信号d相同,并且在时钟上升沿处更新。 以上就是使用Verilog语言写一个D触发器的代码。 ### 回答3: D触发器是一种数字逻辑件,可以将输入信号D的状态延迟一段时间后输出。在Verilog中,我们可以通过组合逻辑门和时序逻辑来实现D触发器。 首先,我们需要定义一个模块来表示D触发器。以下是一个用Verilog语言编写的D触发器的简单实现: ```verilog module D_FlipFlop(input D, input clk, output reg Q); always @(posedge clk) Q <= D; endmodule ``` 上面的代码定义了一个名为`D_FlipFlop`的模块,它有三个输入`D`、`clk`和一个输出`Q`。`D`是输入信号,`clk`是时钟信号,`Q`是输出信号,表示延迟了一个时钟周期的`D`信号。 `always @(posedge clk)`表示在时钟信号上升沿处执行以下操作。这里我们将输入信号`D`直接赋值给输出信号`Q`,实现了一个简单的D触发器。 在主代码中,我们可以实例化这个`D_FlipFlop`模块并为输入和输出信号提供具体的值。例如,可以这样使用: ```verilog module Main; reg D; reg clk; wire Q; D_FlipFlop d_ff(.D(D), .clk(clk), .Q(Q)); initial begin clk = 0; forever #10 clk = ~clk; // 时钟周期为20个时间单位 end initial begin D = 0; #30 D = 1; // 延迟30个时间单位 #30 $finish; end endmodule ``` 上面的例子中,主模块`Main`中实例化了一个`D_FlipFlop`模块,并为输入信号`D`和时钟信号`clk`提供了具体的值。`Q`是一个连线。 在初始化块中,我们将时钟信号`clk`起始值设为0,并循环每隔10个时间单位改变一次`clk`的值,模拟时钟的上升沿。 同时,我们将输入信号`D`起始值设为0,然后延迟30个时间单位后将其设为1,模拟了输入信号`D`的变化。 到达`$finish`时,仿真运行结束。 综上,我们可以使用Verilog语言编写一个简单的D触发器,有效地将输入信号延迟一个时钟周期输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值