阅读量:0
一、组合逻辑、时序逻辑的适用场合
1、时序逻辑 和组合逻辑
组合逻辑:
组合逻辑是一类逻辑电路,其输出仅仅取决于当前的输入信号状态,而不考虑过去的信号状态。
组合逻辑电路的输出完全由输入决定,没有时钟信号的概念,因此输出是输入的函数。
例子包括逻辑门(AND、OR、NOT等)和其他不带存储元件(如触发器)的电路。
时序逻辑:
时序逻辑是一类逻辑电路,其输出不仅取决于当前的输入信号状态,还受到时钟信号和过去的输入信号状态的影响。
时序逻辑包括时钟触发器(flip-flops)和时钟触发器之间的互连,以及时序逻辑电路,如寄存器、计数器等。
时序逻辑考虑了时间的概念,通常在时钟信号的上升沿或下降沿触发,因此可以用来存储信息和实现状态机等功能。
总体而言,组合逻辑处理无状态的逻辑功能,而时序逻辑引入了状态和时钟信号,使得电路能够存储和处理有状态的信息,从而实现更复杂的功能和控制。在硬件描述语言(如Verilog和VHDL)中,
通过 always @ (*) 表达式通常表示组合逻辑,
而 always @(posedge clock) 表达式表示时序逻辑。
2、何时使用:
带有反馈(直接反馈、间接反馈)的必须用时序逻辑
(反馈:输出拉回到输入即为反馈,如 assign cnt = cnt + 1; assign flag = ~flag;没有时序控制 就会出现无限反馈)
//错误示例 always @ (flag) begin if (flag == 1'b1) cnt = cnt + 1'b1; else cnt = cnt; end
这个代码会出现的问题就是 没有时序控制 会出现无限反馈 我们无法知道cnt加了多少次
等效电路如下
根据时序对齐关系进行选择:
这里就很经典了 之前写牛客题目的时候颇有感受!(最近没写牛客题目,到组合逻辑 利用门电路进行经典组合逻辑的编写,有点折磨!)根据运行速度进行选择:
就是如果一个组合逻辑很长 延时很大 我们可以通过在中间加入寄存器实现传输速度的增加
二、数字逻辑电路的时序分析
1、FPGA真实结构:基于SRAM(静态存储器)(掉电丢失)的FPGA 即为LUT(查找表)一般是4/5/6输入
一个LUT+一个触发器 构成一个最小逻辑单元 产生随机的0、1序列的方法 (妙啊)同理可以产生0-2、0-3、0-4......2、组合逻辑产生延时 导致时序逻辑出错
组合逻辑:由于门电路的信号间延时 输出端会产生毛刺 组合逻辑越长 就越容易产生问题 时序逻辑:中很多时候会将数字以二进制编码转换成格雷码的形式原因( 竞争冒险(存在于时序逻辑中)): 故有时候为了保证准确性 会将二进制编码转换成格雷码3、时序分析(时序约束):
- 建立时间(setup time、Tsu):在采样(时钟上升沿)之前,数据要保持不变的最小时间;(由器件本身特性决定)
- 时间裕量:在时钟上升延前保持不变的时间I(一般认为<1个时钟周期)-Tsu;
- 保持时间(hold time、Th):在在采样(时钟上升沿)之后,数据要保持不变的最小时间;(由器件本身特性决定)
- 建立时间或保持时间不足就会出现亚稳态
4、单拍系统:
r0、r1间可以加入组合逻辑 但是不能加寄存器; 解释一下: 由于逻辑1比较复杂 输出延时比较大(关键路径长) 导致逻辑1输出出现亚稳态 而寄存器2每次信号来都要对逻辑1进行采样 导致寄存器采样数据出现错误 (妙啊)5、建立时间的分析模型
- 悲观移除( 共同路径悲观去除):去除clock path上相同路径的悲观计算量
- 多角度分析:根据PVT分析 温度越低、电压越高 延迟越小(利用此特点进行快模型、慢模型时序仿真,无论快慢模型 都要满足时序约束(建立时间、保持时间))
- 定义:在一片wafer(晶圆)上,不可能每点的载流子平均漂移速度都是一样的,随着电压、温度不同,它们的特性也会不同,把他们分类就有了PVT(Process,Voltage,Temperature)
- 性能影响:
7、亚稳态的缓解:亚稳态无法彻底消除,只能缓解。
- 1.降低时序逻辑延迟:如采用流水线、重定时技术;
- 2.降低寄存器延迟:使用反应更加迅速的寄存器;
- 3.降低时钟频率,增大时钟周期;
- 4.复位电路采用异步复位同步释放;
- 5:数据在跨时钟域传输中,可以采用两级缓存、握手信号、异步FIFO等方法缓解。