数字逻辑期末复习

时序逻辑基本了解

  • 时序逻辑电路:和电路的历史状态有关
  • 有存储单元,电路内有反馈
  • 同步:存储电路的更新与时钟节拍一致

环形振荡器

  • 环形振荡器:由奇数个反相器收尾相连接构成的自激振荡电路,不需要外部输入信号就能产生周期性的方波输出
  • 利用反相器的传输延迟,让信号在环路中循环反转,自发产生周期性时钟信号
  • 反相器数量必须是奇数,因为偶数个反相器会让信号相位抵消,无法震荡
  • 如图所示,信号绕环路一圈的总延迟是 5×tpd,但完成一次 “高低电平完整变化” 需要绕2 圈(信号从初始到再次回到相同状态 ),所以周期 T=2×5×tpd=10tpd (对应图中时间轴到 10tpd 时,信号回到初始模式 )。

时钟

  • 提供触发与节拍
  • 上升沿(posedge),下降沿(negedge)

锁存器、触发器

锁存器(Latch)

  • 用于存储一位电平的电路

SR锁存器

  • 输入:R:reset,S:set
  • 输出:Q,~Q
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
module SR_latch(
input R,
input S,
output Q,
output Q_bar
);

wire S_bar, R_bar;

nor n1(R, Q, S_bar);
nor n2(S, Q_bar, R_bar);

assign Q = S_bar;
assign Q_bar = R_bar;

endmodule
  • 通过图片可以看出来,这两个门电路是或非门,根据或非门的真值表,可以推出下面的三种情况
  • 第三种情况出现了一个问题:R和S同时为1的时候,是无效输入,在这个电路基础上,把R和S同时重置为0,会得到一个不稳定的电路

门控SR锁存器

  • 只有在clk有效的时候,S,R才能影响锁存器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module SR_latch(
input clk,
input reset,
input set,

output reg q,
output reg qbar
);

always @(posedge clk or posedge reset) begin
if (reset) begin
q <= 1'b0;
qbar <= 1'b1;
end else begin
if (set) begin
q <= 1'b1;
qbar <= 1'b0;
end else begin
q <= q;
qbar <= qbar;
end
end
end

D锁存器(电平触发)

  • 只用一个输入控制输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module D_latch_basic (
input wire d, // 数据输入
input wire en, // 使能信号,高电平有效,控制锁存器是否更新
output reg q // 数据输出,用 reg 存储状态
);

// 敏感列表:d 或 en 变化时触发
always @(d or en) begin
if (en) begin // en 为高电平,更新输出
q <= d;
end
// en 为低电平时,不执行赋值,q 保持原有状态(锁存特性)
end

endmodule

D触发器(边沿触发)

  • 边沿触发:在时钟上升或下降沿触发

    时序:输入在触发沿附近保持不变

    输出在一段延时后相应的改变

时钟复位方式

  • 同步复位:
1
2
3
4
5
always @(posedge clk)  //敏感列表只有clk
if(reset)
q<=0;
else
q<=d;
  • 复位信号长度大于时钟周期才能保证可靠复位

  • 优点:有利于时序分析,综合结果的频率通常较高,有利于基于周期机制的仿真器进行仿真,可以有效避免复位电路毛刺造成亚稳态,增强电路稳定性

  • 同步复位可能会增加逻辑资源

  • 异步复位:

1
2
always @(posedge clk or posedge reset) //敏感列表有clk和reset
if(reset)
  • 只要复位信号有效沿到达,立即复位

  • 设计简单,可以节省逻辑资源

  • 缺点:

    与时钟沿无关,如果异步复位释放时间与时钟有效沿同时到达,可能造成触发器输出亚稳态

    如果异步复位的逻辑树组合逻辑产生了毛刺,则有毛刺的有效沿回事触发器误复位

阻塞与非阻塞

寄存器

  • 存储多位电平的电路(n位寄存器由n个锁存器/触发器组成)
  • 并行:同时输入、同时输出
  • 串行:串行输入,在一个时钟周期,输入一串数据