赞
踩
当前时刻的输入
。 组合逻辑电路只考虑当前输入信号对输出信号的影响,不考虑过去或未来的状态`。
触发器、计数器
等时序元件
组成的电路,其输出不仅依赖于当前时刻的输入,还依赖于过去时刻和未来时刻的状态
。时序逻辑电路考虑的是电路的状态随时间变化的情况,具有记忆性和状态控制的功能。
上升沿
采样,所以在一个时钟周期内,两个上升沿之间的毛刺会被过滤掉,时序逻辑对毛刺有极好的屏蔽作用。延迟
输入数据一拍
:(D触发器为例)假设输入信号和时钟上升沿在同一时刻拉高,因为默认采集到的数据是前一拍
的数据,此时采集到的输入信号还是低电平。在下一个时钟上升沿,采集到输入信号为高电平,所以输出信号会在下一个时钟信号上升沿
拉高。module dff(input clk, input d, output reg q);
always @(posedge clk)
q <= d;
endmodule
上述代码中,输入端口包括时钟信号clk和数据输入信号d,输出端口为输出状态信号q。
通过always关键词声明时钟上升沿触发的行为,即在时钟信号上升沿时,
将输入数据d存储到输出状态信号q中
时钟信号边沿未出现,即使输入信号改变,输出信号仍旧保持原值。
时序电路(寄存器和各种出发器)
和组合逻辑
构成的电路,是指电路中各个部件的操作都在同一个时钟信号的控制下
完成的。上升沿
或者下降沿
完成。计数器
、移位寄存器
、时序控制电路
等。确定的时刻
进行复位,以保证它们都处于相同的初始状态。复位信号拉低
且在时钟的上升沿
生效。当复位信号拉高,不会马上生效
,需要等到时钟的上升沿
检测到复位信号拉高才生效。module sync_reset_module ( input clk, // 时钟信号 input rst, // 复位信号 // 其他模块输入输出端口 ); // 定义一个寄存器用于存储复位状态 reg rst_state; // 复位状态的同步器 always @(posedge clk) begin if (rst) begin rst_state <= 1; end else begin rst_state <= 0; end end endmodule
稳定状态
时才发生变化。组合逻辑电路
,用于产生FIFO和RAM,也用于时序逻辑
。Latch可代替寄存器的角色
。module async_reset(input clk,input async_reset_n, // 异步复位信号
input [7:0] data_in,
output reg [7:0] data_out);
always@(posedge clk or negedge async_reset_n) begin
if(!async_reset_n) begin // 当异步复位信号为0时,复位状态被激活
data_out <= 8'h00; // 在复位状态下,数据输出为0
end
else begin
data_out <= data_in; // 否则,数据输出等于数据输入
end
end
endmodule
async_reset_n是一个异步复位信号,当它被拉至低电平时,电路会进入复位状态,数据输出为0。
当该信号恢复到高电平时,电路将恢复正常工作状态,数据输出等于输入数据
时钟沿
。当复位信号拉高,不会马上生效
,需要等到时钟的上升沿
检测到复位信号拉高才生效。Latch:一种存储元件,用于存储一个电子信号的状态,具有一个或多个输入和一个输出。
非理想的状态
,导致未定义的情况发生。组合逻辑
才会产生,异步电路中,Latch可代替寄存器的角色
。输入发生改变
。没有时钟输入
,因此它的输出取决于输入变化的时间。reg latch_out;
always @(latch_in)
begin
if(latch_en)
latch_out <= latch_in;
end
a.输入信号latch_in被存储于状态变量latch_out中,当latch_en为真时,
b.这个状态变量latch_out在输入信号latch_in发生变化时被更新,并且保持在输出端口上。
对毛刺敏感 | 占用更多逻辑资源 |
---|---|
不能异步复位 | 额外的延时 |
复杂的静态时序分析 | 功耗过高 |
时序问题 | 设计不确定性 |
一直保持存储的状态
,需要占用更多的电力和空间,从而导致功耗过高;可以在任何时间被改变
,这可能导致时序问题。异步元件
,它们可能会导致电路输出的值与输入值之间存在不一致的情况,从而导致电路输出的结果不可预测。触发器
替代Latch,以确保电路的可靠性和正确性。避免以下情况
:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。