什么是亚稳态
打两拍解决亚稳态
在B寄存器后面再加一级寄存器,并且设置
(* ASYNC_REG="true" *)reg reg B,reg C;
(* ASYNC_REG = “TRUE” *) 能够将这两级寄存器挨的足够近(把两个寄存器约束到一个slice里面),数据传输时延很小,留给B输出的亚稳态状态时间就可以多一些。什么意思了?就是说B的Q端输出到C寄存器D端被采样的时候,要满足建立时间和保持时间(就是说要稳定),数据传输时延越短(两个寄存器挨得越近),B输出的亚稳态状态(一段数据,持续时间是固定的)就能在C寄存器D端的建立时间之前到,数据传输时延越长(两个寄存器挨得越近),B输出的亚稳态状态(一段数据,持续时间是固定的),达到C寄存器D端时间越晚,就不能在C寄存器D端的建立时间之前到。
所以这两个寄存器挨得近的话,就可以解决异步信号进入带来的亚稳态问题,俗称打两拍。
异步复位信号的异步进入+同步释放
为什么要这样做?
解释一下这张图
首先异步复位写法就是不管你的时钟上升沿来不来,我复位信号一来就得复位,比如这种写法:
它的好处就是能马上检测的复位信号,把你寄存器清零,但是你全局复位使用异步复位,它是高扇出的,它到达每个时钟域下的每个寄存器的时间不一样,那么它释放时(复位失效的时候比如1变成0的时候),对于每个时钟域下的每个寄存器来说,它是异步信号,寄存器采样时,就会造成上面说的亚稳态情况。
同步复位写法是这样:
它要上升沿检测到复位信号有效时,才复位。虽然同步复位的释放不会造成亚稳态,但是当你复位信号持续时间短,小于你当前时钟域的一个时钟周期,那么同步复位它检测不到你的复位信号。就像这样
你的clk检测不到rst_async
所以就有了异步复位同步释放,其和打两拍解决亚稳态的方法类似,主要就是异步复位的释放要在你当前的时钟域,需要打多拍(一般两拍就够了),与当前时钟域的时钟同步。
申明的两个寄存器的赋值写法如下
在项目中,通常会有来自pll的locked,或者一些ip核给到用户的复位信号,那么在用到这些复位的模块里面,我需要把这些复位在该模块的时钟下打两拍,实现异步复位同步释放
我对复位设计的思考
有一篇文章还行
https://blog.youkuaiyun.com/Reborn_Lee/article/details/104351693
我的方法:用常用的复位体系规划模板,即“两级复位体系”,大体思路为:整个FPGA芯片必须有一个全局复位信号(找一个pll locked信号或者ip给出来给用户用的复位信号),如果FPGA设计包含不止一个时钟域的话,让该全局复位信号在不同的时钟域进行异步复位同步释放,转化为每个时钟域的时钟域复位信号,就是打两拍用那个寄存器的值去驱动时钟域复位信号
每个时钟域下的子域根据其对应时钟域复位信号,采用同步复位的方式。
如果你觉得用一个寄存器的值作为某个时钟域复位信号去驱动该时钟域下的多个子域,扇出太大,那么你可以将该时钟域划分成多个局部子域,让全局复位信号在每个局部子域里面都打两拍,去驱动该时钟域下的每个局部子域,如下图所示两种方案
几篇好文章,按顺序阅读
-
不得不读的 FPGA 设计白皮书——Xilinx FPGA 复位策略白皮书翻译(WP272)【FPGA探索者
https://mp.weixin.qq.com/s?__biz=MzUyNTc4NTk0OA==&mid=2247484081&idx=1&sn=fa274fe2976efb4908c61aa414ed30b0&chksm=fa198c82cd6e0594248f63bba2fd6a9b83b08e4b20e3aa19beba52eea24b6ca2ac7f2844ceb1&scene=21#wechat_redirect -
同步后的复位该当作同步复位还是异步复位?——Xilinx FPGA异步复位同步释放
https://mp.weixin.qq.com/s?__biz=MzUyNTc4NTk0OA==&mid=2247484179&idx=1&sn=b893f9e515ad98071fe6f2f18a734ea7&chksm=fa198d20cd6e0436b3caa0e6e80cf3d0ff3cfd44224a42f00e96e5570237bd6d1adc45fbbc5e&scene=21#wechat_redirect -
联发科数字IC简答题(9)——异步复位同步释放问题
https://mp.weixin.qq.com/s?__biz=MzUyNTc4NTk0OA==&mid=2247485958&idx=1&sn=39065a977f75b883a66626aba2ec700e&chksm=fa198435cd6e0d23c3eb1375807e8c5b2af83f4fd4fb789bc33d6f499e3b6efcf295be5273f9&scene=21#wechat_redirect