对RS触发器的理解

逻辑电路图

【说明】:用与非门或者用或非门均可构成RS触发器,下图是以用与非门构成的RS触发器为例。
与非门构成的RS触发器
(下面这个是或非门的,图是网上找的)
或非门构成的RS触发器

真值表

【说明】:

  • 这是理论上的真值表,网上的解释过于生硬死板,下面我会对这个结果进行通俗易懂的解释。
  • 所谓的Set,Reset,以及Y就是Q\overline{Q},是根据RS触发器的实际特性(真值表的分析结果)得出的。
输入A\overline{A}(Set置位) 输入B\overline{B}(Reset复位) 状态Q 输出Y(Q\overline{Q})
0 1 1 0 复位
1 0 0 1 置位
1 1 保持 保持
0 0 禁止 禁止
前提知识

【说明】:需要明确一点,触发器的端口即使我们不人为设置电平,他们也是有电平的,即默认接地,为0电平。

具体分析
  • 1.输入端A\overline{A}为0,输入端B\overline{B}为1,Q端为1,Y均为0(这里可以看出输入端B起的是复位的作用)
  • 2.输入端A\overline{A}为1,输入端B\overline{B}为0,Y均为1,Q为0 (这里可以看出输入端A起的是置位的作用)
  • 3.输入端A\overline{A}为1,输入端B\overline{B}为1时
    • 从状态1变为状态3,当输入端A由0变为1,状态为Q此时仍然为1,根据分析可知Y为0,保持了1的状态
    • 从状态2变为状态3,当输入端B由0变为1,状态为Q此时仍然为0,根据分析可知Y为1,保持了2的状态
  • 4.输入端A\overline{A}为0,输入端B\overline{B}为0,Y为1,Q为1 (实际上应该:输入端A\overline{A}为0,输入端B\overline{B}为0,Q不定,Y不定)
    【解释说明状态4】:这是理论分析的结果,但这是不现实的.当输入端A\overline{A}和输入端B\overline{B}同时从1变为0时,实际上总有先后,要么A\overline{A}先完成这个变化,要么B\overline{B}先完成这个变化,就会导致Q的状态也不定,也就是出现了Q==Q\overline{Q}的逻辑矛盾。

用Verilog语言描述RS触发器

实验任务

描述一个RS触发器电路,开发板上的12M晶振作为触发器时钟信号CLK,两个拨码开关的状态作为触发器输入信号S、R,触发器的输出信号Q和Q\overline{Q},用来分别驱动开发板上的LED,在CLK上升沿的驱动下,当拨码开关状态变化时LED状态发生相应的变化。

Verilog HDL建模描述

程序文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module rs
(
input wire clk,r,s,//rs触发器输入信号
output reg q,//输出端口q,在always块里面幅值,定义为reg型
output wire y//输出端口y,即非q
);

assign y=~q;

always@(posedge clk)
begin
case({r,s})
2'b11: q<=q;
2'b00: q<=1'bx;
2'b10: q<=1'b0;
2'b01: q<=1'b1;
endcase
end
endmodule

仿真文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
`timescale 1ns/100ps //仿真时间单位/时间精度
module rs_tb();

reg clk,r,s; //需要产生的激励信号定义
wire q,y; //需要观察的输出信号定义
//初始化过程块
initial
begin
clk = 0;
r = 0;
s = 0;
#50
r = 0;
s = 1;
#50
r = 1;
s = 0;
#50
r = 1;
s = 1;
#50
r = 0;
s = 1;

end
always #10 clk = ~clk; //产生输入 clk,频率 50MHz
//module 调用例化格式
rs u1 ( //rs_ff 表示所要例化的 module 名称,u1 是我们定义的例化名称
.clk(clk), //输入输出信号连接。
.r(r),
.s(s),
.q(q), //输出信号连接
.y(y)
);
endmodule
管脚分配

管脚分配图
管脚分配图

时序仿真

时序仿真图
时序仿真图

实验现象

略(注:自然应该是符合真值表咯)

工程文件下载