1、為什么要設計復位?
首先回想一下,在平常的設計中我們是不是經常采用同步復位或者異步復位的寫法,這一寫法似乎都已經形成了肌肉記憶----每次我們寫always塊的時候總是會對所有的寄存器寫一個復位賦初值的語句。
這樣設計的目的是什么?似乎是為了給寄存器一個初值,避免仿真不定態或初始化操作錯誤。又似乎是為了在調試時能方便地使用按鍵進行復位(最常用的全局復位)。這么一看復位似乎是蠻重要的。
2、復位是否有必要?
似乎在平常的設計中,多數會使用異步復位的方式,異步復位由于是異步信號,所以不可避免地引入了亞穩態的可能,這一可能性隨著時鐘頻率的提高而增加。好像在平常的設計與使用中,異步復位電路也不會引發什么問題。這是因為隨著器件工藝的提升,現在器件的上升時間在0.0x 納秒級,而一般設計的時鐘周期可能在100~200M。只要復位的釋放不是剛好在這0.0x 納秒內就不會引發亞問題問題,顯然這個概率極小(比例--0.0x:10),基本可以說是99.99不會有問題。但是著名的墨菲定律高速我們:再小概率的事情都會發生。所以不管怎樣這種事情我們都應該要想辦法避免。
再來看我們使用復位的主要目的:為了給寄存器一個初始值,從而避免仿真或使用錯誤。然而實際上,Xilinx的FPGA的內部資源(觸發器和RAM)等都會在上電后默認賦初值,一般是0,或者可以在定義寄存器時手動賦值,如:
reg [1:0] test = 2'b01; //定義時即賦初值
這么看的話僅僅為了賦初值而存在的賦值就沒有意義的。數據鏈路上有初值就夠了,因為后來的數據總會沖走之前的數據,數據仍然能穩步傳遞。但是控制鏈路就一定需要被復位后一定要恢復到初始狀態,不然會“亂跑‘從而導致代碼運行異常。其中最經典的例子就是狀態機了,顯然,如果狀態機的狀態模塊沒有復位的話,那么可能在出現異常后永遠無法恢復到正常狀態了。
最后,復位所使用的資源遠超你的想象:
3、應該怎樣設計復位?
說了這么多,那到底要怎么設計復位?
同步or異步?
在一文中探討過同步復位與異步復位的特點。
同步復位:
有利于仿真
由于只在時鐘有效電平到來時才有效,所以可以濾除高于時鐘頻率的復位毛刺,沒有亞穩態問題
可以使所設計的系統成為 100%的同步時序電路,有利于時序分析
復位信號的有效時長必須大于時鐘周期,才能真正被系統識別并完成復位任務。同時還要考慮延時因素
大多數的FPGA的DFF都只有異步復位端口,采用同步復位的話,綜合器就會在寄存器的數據輸入端口插入組合邏輯,這樣會耗費邏輯資源
異步復位
大多數目標器件庫的dff都有異步復位端口,因此采用異步復位可以節省資源
設計相對簡單,異步復位信號識別方便,而且可以很方便的使用FPGA的全局復位端口GSR
復位信號容易受到毛刺的影響且容易存在亞穩態問題
建議使用同步復位的方式,若一定要使用異步復位的話,則建議使用異步復位、同步釋放的方法。
高or低?
選擇高還是低,需要根據具體的電平標準、器件結構來選擇,并不是一概而論低電平有效的好或者高電平有效的好。簡單經驗:Altera的用低電平復位,Xilinx的用高電平復位。
總結
復位信號能不用就不要用,需要特定初值的可以在定義寄存器時賦值
如果一定需要則使用異步復位、同步釋放的方法,并將復位信號局部化,避免高扇出。
審核編輯:湯梓紅
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605996 -
Xilinx
+關注
關注
71文章
2171瀏覽量
122130 -
復位
+關注
關注
0文章
174瀏覽量
24267
發布評論請先 登錄
相關推薦
FPGA復位的8種技巧
![<b class='flag-5'>FPGA</b><b class='flag-5'>復位</b>的8種技巧](https://file1.elecfans.com/web1/M00/F5/38/wKgaoWc4ATOAbcWyAAASgM8ghVE065.jpg)
復位電路的三種方式 復位電路的原理和作用
復位電路的電容多大的 復位電路設計類型有哪幾種
復位電路靜電整改案例分享(一)——交換機復位電路
![<b class='flag-5'>復位</b>電路靜電整改案例分享(一)——交換機<b class='flag-5'>復位</b>電路](https://file1.elecfans.com//web2/M00/0A/A4/wKgaomcRzPyAXQS-AADcOLWLkJk432.png)
復位電路介紹 復位電路的原理及作用
淺談國產異構雙核RISC-V+FPGA處理器AG32VF407的優勢和應用場景
STM32復位電路用復位芯片和阻容復位電路區別
FPGA同步復位和異步復位
向FPGA設計添加復位功能的注意事項
![向<b class='flag-5'>FPGA</b>設計添加<b class='flag-5'>復位</b>功能的注意事項](https://file1.elecfans.com/web2/M00/D2/4C/wKgaomYjHvCAS9irAAA1tSZIcBc408.png)
電容在復位電路中的作用(復位電路具體要怎么設計)
![電容在<b class='flag-5'>復位</b>電路中的作用(<b class='flag-5'>復位</b>電路具體要怎么設計)](https://file1.elecfans.com/web2/M00/C5/0A/wKgaomXxKQaAVda6AAArJwVzDmI600.png)
ABB變頻器怎么復位 | 復位時可能會出現哪些問題?
![ABB變頻器怎么<b class='flag-5'>復位</b> | <b class='flag-5'>復位</b>時可能會出現哪些問題?](https://file1.elecfans.com/web2/M00/C1/55/wKgaomXVZSuAVEomAABPP1HiulA951.png)
什么是復位同步電路 reset synchronizer?
![什么是<b class='flag-5'>復位</b>同步電路 reset synchronizer?](https://file1.elecfans.com/web2/M00/C1/07/wKgaomXSrhGAfPFtAAAVEFTgyYI591.png)
復位電路的基本功能介紹
![<b class='flag-5'>復位</b>電路的基本功能介紹](https://file1.elecfans.com/web2/M00/A8/3E/wKgaomUskVuAYJFFAABI29sTRl8157.png)
評論