0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談FPGA的復位設(shè)計問題

C29F_xilinx_inc ? 來源:賽靈思 ? 作者:賽靈思 ? 2022-02-19 19:10 ? 次閱讀

1、為什么要設(shè)計復位?

首先回想一下,在平常的設(shè)計中我們是不是經(jīng)常采用同步復位或者異步復位的寫法,這一寫法似乎都已經(jīng)形成了肌肉記憶----每次我們寫always塊的時候總是會對所有的寄存器寫一個復位賦初值的語句。

這樣設(shè)計的目的是什么?似乎是為了給寄存器一個初值,避免仿真不定態(tài)或初始化操作錯誤。又似乎是為了在調(diào)試時能方便地使用按鍵進行復位(最常用的全局復位)。這么一看復位似乎是蠻重要的。

2、復位是否有必要?

似乎在平常的設(shè)計中,多數(shù)會使用異步復位的方式,異步復位由于是異步信號,所以不可避免地引入了亞穩(wěn)態(tài)的可能,這一可能性隨著時鐘頻率的提高而增加。好像在平常的設(shè)計與使用中,異步復位電路也不會引發(fā)什么問題。這是因為隨著器件工藝的提升,現(xiàn)在器件的上升時間在0.0x 納秒級,而一般設(shè)計的時鐘周期可能在100~200M。只要復位的釋放不是剛好在這0.0x 納秒內(nèi)就不會引發(fā)亞問題問題,顯然這個概率極小(比例--0.0x:10),基本可以說是99.99不會有問題。但是著名的墨菲定律高速我們:再小概率的事情都會發(fā)生。所以不管怎樣這種事情我們都應該要想辦法避免。

再來看我們使用復位的主要目的:為了給寄存器一個初始值,從而避免仿真或使用錯誤。然而實際上,Xilinx的FPGA的內(nèi)部資源(觸發(fā)器和RAM)等都會在上電后默認賦初值,一般是0,或者可以在定義寄存器時手動賦值,如:

reg [1:0] test = 2'b01; //定義時即賦初值

這么看的話僅僅為了賦初值而存在的賦值就沒有意義的。數(shù)據(jù)鏈路上有初值就夠了,因為后來的數(shù)據(jù)總會沖走之前的數(shù)據(jù),數(shù)據(jù)仍然能穩(wěn)步傳遞。但是控制鏈路就一定需要被復位后一定要恢復到初始狀態(tài),不然會“亂跑‘從而導致代碼運行異常。其中最經(jīng)典的例子就是狀態(tài)機了,顯然,如果狀態(tài)機的狀態(tài)模塊沒有復位的話,那么可能在出現(xiàn)異常后永遠無法恢復到正常狀態(tài)了。

最后,復位所使用的資源遠超你的想象:

3、應該怎樣設(shè)計復位?

說了這么多,那到底要怎么設(shè)計復位?

同步or異步?

在一文中探討過同步復位與異步復位的特點。

同步復位:

有利于仿真

由于只在時鐘有效電平到來時才有效,所以可以濾除高于時鐘頻率的復位毛刺,沒有亞穩(wěn)態(tài)問題

可以使所設(shè)計的系統(tǒng)成為 100%的同步時序電路,有利于時序分析

復位信號的有效時長必須大于時鐘周期,才能真正被系統(tǒng)識別并完成復位任務(wù)。同時還要考慮延時因素

大多數(shù)的FPGA的DFF都只有異步復位端口,采用同步復位的話,綜合器就會在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,這樣會耗費邏輯資源

異步復位

大多數(shù)目標器件庫的dff都有異步復位端口,因此采用異步復位可以節(jié)省資源

設(shè)計相對簡單,異步復位信號識別方便,而且可以很方便的使用FPGA的全局復位端口GSR

復位信號容易受到毛刺的影響且容易存在亞穩(wěn)態(tài)問題

建議使用同步復位的方式,若一定要使用異步復位的話,則建議使用異步復位、同步釋放的方法。

高or低?

選擇高還是低,需要根據(jù)具體的電平標準、器件結(jié)構(gòu)來選擇,并不是一概而論低電平有效的好或者高電平有效的好。簡單經(jīng)驗:Altera的用低電平復位,Xilinx的用高電平復位。

總結(jié)

復位信號能不用就不要用,需要特定初值的可以在定義寄存器時賦值

如果一定需要則使用異步復位、同步釋放的方法,并將復位信號局部化,避免高扇出。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21777

    瀏覽量

    604707
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2169

    瀏覽量

    121793
  • 復位
    +關(guān)注

    關(guān)注

    0

    文章

    174

    瀏覽量

    24234
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA復位的8種技巧

    FPGA 設(shè)計中,復位起到的是同步信號的作用,能夠?qū)⑺械拇鎯υO(shè)置成已知狀態(tài)。在數(shù)字電路設(shè)計中,設(shè)計人員一般把全局復位作為一個外部引腳來實現(xiàn),在加電的時候初始化設(shè)計。全局復位
    的頭像 發(fā)表于 11-16 10:18 ?363次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>復位</b>的8種技巧

    復位電路的設(shè)計問題

    前言 最近看advanced fpga 以及fpga設(shè)計實戰(zhàn)演練中有講到復位電路的設(shè)計,才知道復位電路有這么多的門道,而不是簡單的外界信號輸入系統(tǒng)
    的頭像 發(fā)表于 11-15 11:13 ?191次閱讀
    <b class='flag-5'>復位</b>電路的設(shè)計問題

    復位電路的電容多大的 復位電路設(shè)計類型有哪幾種

    復位電路是電子系統(tǒng)中的一個關(guān)鍵部分,它確保系統(tǒng)在啟動或發(fā)生故障時能夠正確地初始化。復位電路的設(shè)計取決于多種因素,包括系統(tǒng)的復雜性、所需的復位時間、以及是否需要上電復位(Power-On
    的頭像 發(fā)表于 10-21 10:24 ?400次閱讀

    復位電路靜電整改案例分享(一)——交換機復位電路

    ? ?復位電路靜電整改案例分享(一)——交換機復位電路 一、摘要 復位電路可確保電路在啟動時處于可控的狀態(tài),避免上電造成的未知問題。復位電路通常由一個
    的頭像 發(fā)表于 10-19 14:56 ?427次閱讀
    <b class='flag-5'>復位</b>電路靜電整改案例分享(一)——交換機<b class='flag-5'>復位</b>電路

    復位電路介紹 復位電路的原理及作用

    復位電路(Reset Circuit)是現(xiàn)代電子設(shè)備中常見的一種關(guān)鍵電路,它用于確保在正確的時間和條件下將系統(tǒng)恢復到初始狀態(tài)。復位電路的設(shè)計和應用對于保障電子系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重要。 一、復位
    的頭像 發(fā)表于 10-18 16:44 ?2396次閱讀

    STM32復位電路用復位芯片和阻容復位電路區(qū)別

    STM32是一款廣泛使用的微控制器,其復位電路設(shè)計對于系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重要。本文將詳細介紹STM32復位電路中使用復位芯片和阻容復位電路的區(qū)別,以及各自的優(yōu)缺點和應用場景。 引
    的頭像 發(fā)表于 08-06 10:26 ?1706次閱讀

    FPGA同步復位和異步復位

    FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)中的復位操作是設(shè)計過程中不可或缺的一環(huán),它負責將電路恢復到初始狀態(tài),以確保系統(tǒng)的正確啟動和穩(wěn)定運行。在FPGA設(shè)計中,
    的頭像 發(fā)表于 07-17 11:12 ?1663次閱讀

    FPGA設(shè)計添加復位功能的注意事項

    本文將回顧使用重置輸入對給定功能進行編碼的一些基本注意事項。設(shè)計者可能會忽視使用復位輸入的后果,但不正確的復位策略很容易造成嚴重處罰。復位功能會對 FPGA 設(shè)計的速度、面積和功耗產(chǎn)生
    發(fā)表于 05-03 09:49 ?230次閱讀
    向<b class='flag-5'>FPGA</b>設(shè)計添加<b class='flag-5'>復位</b>功能的注意事項

    MCU復位RAM會保持嗎,如何實現(xiàn)復位時變量數(shù)據(jù)保持

    在使用MCU時,通常大家默認MCU復位時RAM會被復位清零,那實際MCU復位時RAM是什么狀態(tài)?如何讓mcu復位時RAM保持不變呢?
    的頭像 發(fā)表于 03-01 09:32 ?2581次閱讀
    MCU<b class='flag-5'>復位</b>RAM會保持嗎,如何實現(xiàn)<b class='flag-5'>復位</b>時變量數(shù)據(jù)保持

    ABB變頻器怎么復位 | 復位時可能會出現(xiàn)哪些問題?

    ABB變頻器是一種應用廣泛的工業(yè)自動化設(shè)備,廣泛應用于電機控制、電力傳輸、風機控制和制造等領(lǐng)域。然而,在使用ABB變頻器的過程中,有時候我們可能需要對設(shè)備進行復位,以達到重新設(shè)置和調(diào)整的目的。那么
    的頭像 發(fā)表于 02-21 10:50 ?8194次閱讀
    ABB變頻器怎么<b class='flag-5'>復位</b> | <b class='flag-5'>復位</b>時可能會出現(xiàn)哪些問題?

    如何排查GD32 MCU復位是由哪個復位源導致的?

    上期為大家講解了GD32 MCU復位包括電源復位和系統(tǒng)復位,其中系統(tǒng)復位還包括獨立看門狗復位、內(nèi)核軟復位
    的頭像 發(fā)表于 02-03 09:46 ?1798次閱讀
    如何排查GD32 MCU<b class='flag-5'>復位</b>是由哪個<b class='flag-5'>復位</b>源導致的?

    GD32 MCU電源復位和系統(tǒng)復位有什么區(qū)別

    GD32 MCU的復位分為電源復位和系統(tǒng)復位,電源復位又稱為冷復位,相較于系統(tǒng)復位,上電
    的頭像 發(fā)表于 02-02 09:37 ?1553次閱讀
    GD32 MCU電源<b class='flag-5'>復位</b>和系統(tǒng)<b class='flag-5'>復位</b>有什么區(qū)別

    異步復位異步釋放會有什么問題?FPGA異步復位為什么要同步釋放呢?

    一般來說,復位信號有效后會保持比較長一段時間,確保 register 被復位完成。但是復位信號釋放時,因為其和時鐘是異步的關(guān)系,我們不知道它會在什么時刻被釋放。
    的頭像 發(fā)表于 01-24 09:32 ?1784次閱讀
    異步<b class='flag-5'>復位</b>異步釋放會有什么問題?<b class='flag-5'>FPGA</b>異步<b class='flag-5'>復位</b>為什么要同步釋放呢?

    什么是復位針腳?

    復位針腳是指在集成電路或者微控制器中用于復位電路的引腳。當該引腳接收到復位信號時,會使整個芯片回到初始狀態(tài),清除所有寄存器和內(nèi)部狀態(tài),重新開始執(zhí)行程序。
    的頭像 發(fā)表于 01-20 09:57 ?1788次閱讀

    為什么需要復位電路?漫談復位reset

    在IC設(shè)計中,把復位和時鐘電路稱為最重要的兩個電路一點也不為過。前者復位電路把IC設(shè)計的電路引導到一個已知的狀態(tài),
    的頭像 發(fā)表于 01-19 16:41 ?2432次閱讀
    為什么需要<b class='flag-5'>復位</b>電路?漫談<b class='flag-5'>復位</b>reset