代码编织梦想

对于时序逻辑中的negedge rst_n和posedge rst复位,实际的电路是什么样呢?实际上由于不同的工艺库下不一定有直接对应DFF,所以很可能就是一个DFF+复位通路上一个INV组成。根据不同的复位信号和复位值的组合有以下4中情况:

1.低复位,复位值为0

2.低复位,复位值为1

3.高复位,复位值为0

4.高复位,复位值为1

我们以TSMC 7NM工艺库为例,由于该库中只存在以下两种stdcell

SDFSYNC1RPQD1xxxxxVT :高复位,复位值为0

SDFSYNC1SNQD1xxxxxVT:低复位,复位值为1

可参考:

tsmc 7nm工艺下用做syncCell的stdCell介绍_cy413026的博客-CSDN博客

所以对于下面的4个dff,只有b_0和a_1可以直接map到stdCell

而对于a_0和b_1,最终结果如下:


SDFSYNC1RPQD1xxxxxULVT UI_sync(.D(d), .SI(1'b0), .SE(1'b0), .CP(clk), .CD(~rst_n), .Q(a_0));
SDFSYNC1SNQD1xxxxxULVT UI_sync(.D(d), .SI(1'b0), .SE(1'b0), .CP(CLK), .SDN(~rst), .Q(b_1));

 即在选择cell类型时以复位值为参考,复位信号极性不满足时,取反。

always @(posedge clk or negedge rst_n) begin
    if (rst_n == 1'd0) begin
        a_0 <= 1'd0;
        a_1 <= 1'd1;
    end
    else begin
        a_0 <= xxx;
        a_1 <= xxx;
    end
end

always @(posedge clk or posedge rst) begin
    if (rst_n == 1'd0) begin
        b_0 <= 1'd0;
        b_1 <= 1'd1;
    end
    else begin
        b_0 <= xxx;
        b_1 <= xxx;
    end
end

 通过综合发现SDF前复位信号进入CD/SDN的取反都是用的普通INV cell,所以对于复位信号来说普通取反问题不大,但是这些取反只是在SDF之前的,如果是在RST Tree上最好还是用专用的INV cell,这样可以保证transition更快。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cy413026/article/details/128412679

Verilog中clk为什么要用posedge,而不用negedge-爱代码爱编程

posedge是上升沿,电平从低到高跳变negedge是下降沿,电平从高到低跳变 对于典型的counter逻辑 always @(posedge sys_clk or negedge sys_rst_n) begin if(!sys_rst_n) counter <= 24'd0; //十进制0 else if(counter &l

时序逻辑电路设计___计数器-爱代码爱编程

实验目的: 以计数器为例学会简单的时序逻辑电路设计实验平台: FPGA开发板实验原理 时序逻辑电路是指电路任何时刻的稳态输出不仅取决于当前的输入,还与前一时刻输入 形成的状态有关。这跟组合逻辑电路相反,组合逻辑的输出只会跟目前的输入成一种函数关 系。换句话说,时序逻辑拥有储存元件(内存)来存储信息,而组合逻辑则没有。 计数器的核心元件是触发器,基本功能是对

verilog之时序逻辑电路(附代码)-爱代码爱编程

前言 刚学前端设计的时候,听到的就是组合逻辑、时序逻辑,很重要!但是究竟有什么用?到底怎么体现,没有多少老师可以明确指出来,当自己看的东西多了,就可以理解了,甚至可以得出自己的范式。 到目前为止,要想掌握组合逻辑,就请先掌握本文列出的计数器、触发器、锁存器、寄存器分频器等简单的组合逻辑电路。 1.触发器 包括RS触发器、JK触发器、D触发器、T触发

verilog中的同步复位与异步复位-爱代码爱编程

特点: 同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下: always @ (posedge clk) begin if (!Rst_n) … end 异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下: always @

5时序逻辑之寄存器,阻塞赋值与非阻塞赋值的区别-爱代码爱编程

一、时序逻辑:寄存器 1.组合逻辑中的竞争冒险 竞争(Competition): 在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争。把不会产生错误输出的竞争的现象称为非临界竞争。把产生暂时性的或永久性错误输出的竞争现象称为临界竞争。 冒险(risk):信号在器件内部通过

Verilog HDL学习日记——分频器-爱代码爱编程

 分频器        分频器的功能就是对较高频率的信号进行分频。分频电路在本质上是加法计数器的变种,其计数值由分频系数N=fin/fout决定。分频器常用于对数字电路中的时钟信号进行分频,用以得到较低频率的时钟信号。 程序 module div4(clk_out,clk,rst_n); output clk_out; input clk,rst_n

verilog中 两个always语句块并非纯并行执行-爱代码爱编程

        仿真的时候发现结果怎么都不对,最后互换了always块的顺序才解决问题 比如下面这段代码  always  @(posedge clk or negedge rst_n)begin         if(rst_n==1'b0)             B = 0;                else              

关于verilog不同!rst_n、~rst_n、rst_n == 1‘b0编译比较-爱代码爱编程

先给结论,不同写法在相同编译工具RTL结果完全一致。对于很多编码规范都会加以区别对待,笔者认为可能是古老的编译工具存在的问题,新版本工具已经优化了此类算法。有兴趣可以用早期版本尝试一下。 module rst_test( input rst_n, input mclk, input data_i, output reg d

verilog的时钟控制信号——学习笔记-爱代码爱编程

引言:在学习verilog时发现对上升沿和下降沿的介绍和资料较少,故自己整理了一下。 posedge CLK ——上升沿; negedge RST_n——下降沿; 1.异步复位的时序电路 always @ (posedge CLK or negedge RST_n): 注释:当 CLK 上升沿或者 RSTn 下降沿触发。 begin     i

时序逻辑电路-爱代码爱编程

时序逻辑电路 1.1 简介1.2 锁存器1.2.1 概念1.2.2 产生1.3 触发器1.3.1 概念1.3.2 分类1.3.2 两种触发方式1.3.3 程序设计与验证1.4 寄存器1.4.1 概念1.4.2 程序设计与验证1.5 计数器1.5.1 概念1.5.2 程序设计与验证1.6 寄存器1.6.1 概念1.6.2 程序设计与验证 1.1

3 Verilog入门篇之时序逻辑-爱代码爱编程

VL21 根据状态转移表实现时序电路 描述 某同步时序电路转换表如下,请使用D触发器和必要的逻辑门实现此同步时序电路,用Verilog语言描述。 电路的接口如下图所示。 输入描述:       input                A   ,       input                clk ,       input

异步复位,同步释放_lethe_01的博客-爱代码爱编程

FPGA笔试题1:异步复位,同步释放 (1)同步复位:always@(posedge sys_clk) 只有在时钟上升沿到来时,复位信号才有效。优点:只有在时钟上升沿判断是否复位,从而降低了亚稳态出现的概率;缺点:需要消耗更多的器件资源。因为没有使用寄存器的清零端,是将sys_rst_n作 为输入逻辑的使能信号。 同步复位 always@

fpga学习(四)——语句_fpga initial-爱代码爱编程

文章目录 结构语句initialalways语句 赋值语句阻塞赋值非阻塞赋值 条件语句if _ else 语句case语句 结构语句 initial initial语句它在模

fpga时序逻辑(三段式状态机模板、rom实现、边沿检测)-爱代码爱编程

目录 VL21 根据状态转移表实现时序电路 VL22 根据状态转移图实现时序电路 VL23 ROM的简单实现 VL24 边沿检测 VL21 根据状态转移表实现时序电路 题目分析: 1、使用三段式状态机,实现更为方便和简洁。 2、三段式和(一段式、二段式)对比:         优点:                 (1)时