<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

基于Xilinx FPGA的復位信號處理

454398 ? 來源:csdn ? 作者:NingHeChuan ? 2020-12-25 12:08 ? 次閱讀

作者:NingHeChuan

Get Smart About Reset: Think Local, Not Global。
對于復位信號的處理,為了方便我們習慣上采用全局復位,博主在很長一段時間內都是將復位信號作為一個I/O口,通過撥碼開關硬件復位。后來也看了一些書籍,采用異步復位同步釋放,對自己設計的改進。

不過自從我研讀了Xilinx的White Paper后,讓我對復位有了更新的認識。

One of the commandments of digital design states,"Thou shalt have a master reset for all flip-flops so that the test engineer will love you, and your simulations will not remain undefined for time eternal."

這句是用來裝逼的。使用全局復位有利于我們仿真,所有的寄存器都是有初始值的,也可以在任意時刻讓你的寄存器恢復初值,所以驗證工程師很喜歡這樣的設計,但是Xilinx建議的是盡量避免使用全局復位,這是為什么呢。

全局復位并不是好的處理方式
我們習慣上通常使用的復位有三種,

硬件開關:復位信號接一個撥碼開關。

電源芯片:上電時候電源芯片產生,可以長時間維持,直到穩定。

控制芯片:控制芯片產生復位脈沖。

這些復位信號和FPGA內部信號的變化比起來是比較慢的。復位按鈕最快也會到達毫秒級別,而FPGA內部信號都是納秒級別的變化。全局復位的周期遠大于系統時鐘的周期,是完全可以保證所有的觸發器被成功復位的。

但隨著系統的頻率越來越快,全局復位信號的釋放形成一個高扇出的網絡。

Fan-out即扇出,模塊直接調用的下級模塊的個數,如果這個數值過大的話,在FPGA直接表現為net delay較大,不利于時序收斂。因此,在寫代碼時應盡量避免高扇出的情況。

o4YBAF9uHs6AahZPAACQLpLP5B4391.png

如圖,全局復位的釋放需要傳輸到不同的觸發器。每一個觸發器需要被釋放復位,但是隨著時鐘頻率的提高,加上復位路徑網絡的延遲,而且全局復位還是一個高扇出的網絡,所以這對系統的時序是一個大挑戰。

pIYBAF9uHtCAVVkSAABsVYI7OAc112.png

通常情況下,復位信號的異步釋放,沒有辦法保證所有的觸發器都能在同一時間內釋放。觸發器在A時刻接收到復位信號釋放是最穩定的,在下一個時鐘沿來臨被激活,但是如果在C時刻接收到復位信號釋放無法被激活,在B時刻收到復位信號釋放,則會引起亞穩態。

o4YBAF9uHtGALPeWAABLbZOjaLA239.png

隨著系統時鐘頻率的提高,并不是所有的觸發器都能在同一個時刻從復位狀態被釋放。

復位真的有那么重要嗎?
白皮書上又說了,好的消息是99.9%的情況下,全局復位的異步釋放并不會出現問題。所以大多數電路都可以正常工作。但是,如果你有了第一次就不能工作的電路,那你就是遇到那0.01%的情況,很不幸你的復位信號被在錯誤的時刻重置。(哈哈,皮)
在一些情況下,復位釋放的時間并不重要。

pIYBAF9uHtKAUEP3AAAyIyDDKXk798.png

當你的數據采用流水線操作的時候,復位釋放的時間并不重要,因為不管你流水線后面的觸發器復位釋放后是否出錯,只需要一些周期后,整個流水線就又會正常工作了。白皮書上還說,這樣的復位也是沒有意義的。

但是有一些情況下,復位的釋放后是很重要的。

pIYBAF9uHtSASvUJAABCFCV0ow8779.png

比如獨熱碼狀態機。如果表示獨熱碼狀態的第一個觸發器比第二個觸發器早釋放了一個時鐘周期,那狀態機的狀態機會跳轉到一個無效的狀態。如果所有的表示獨熱碼的寄存器無法在同一個周期內被釋放,那狀態機肯定會跳轉到一個無效的狀態。還有一些例子,請讀者自己看白皮書。

解決99.99%的情況

pIYBAF9uHtWAdB6oAABXpcuKfDY636.png

其實當Xilinx FPGA配置或重新配置時,所有的單元都會被初始化。白皮書稱為master reset,因為這可比你復位一些D觸發器要強得多,它甚至初始化了片內RAM。

Xilinx的器件也有嵌入處理的系列,軟核或硬核。在程序執行第一條指令前,程序和數據區域已經定義好了。有了上電復位,還用專門消耗邏輯資源去復位觸發器是沒有意義的。

解決0.01%的方法
當然,白皮書也給出了處理復位的建議和方法。

o4YBAF9uHtaAOxOSAABTjgt_6zA048.png

Think Local, Not Global。異步復位,同步釋放的方法。用內部定義復位信號的方法來復位觸發器,而不是全都直接使用全局復位信號。當進行復位操作時,所有的觸發器被預設為1。如上圖,移位寄存器的最后一個觸發器去操作模塊內部定義的復位網絡。當復位信號釋放時,移位寄存器經過移位,當最后一個觸發器由高電平變為低電平時,對本地的復位網絡進行復位操作。也就是異步復位,同步釋放。

復位的消耗的資源比你想象的要多
復位網絡占用大量布線資源。
提高了布局布線時間。
使用器件的邏輯資源。
會使你的設計變得更大。
占用更多的邏輯資源肯定會影響你的性能。
具體請參閱白皮書。

總結
并不是所有部分的設計都需要復位,所以設計者在設計過程中應該準確判斷需要被復位的部分,從而采用異步復位、同步釋放的方法進行對復位的嚴格處理。

當我們在設計每一個部分的時候,都要內心問問自己,這個bit需要被復位嗎?

那么怎樣處理Xilinx FPGA中的復位呢?Xilinx的工程師也給出了解釋和方法。

https://www.eetimes.com/document.asp?doc_id=1278998

http://xilinx.eetrend.com/d6-xilinx/article/2013-07/4343.html

簡單總結就是,Xilinx的FPGA 應該盡量避免全局復位,有些部分的設計都可以不用復位,必需要復位的設計而采用 同步 高復位。

代碼如下。設計中需要復位的部分,使用產生的sys_rst信號進行同步復位,而且是同步 高復位。再次貼出下圖。

o4YBAF9uHtiAWahlAABTjgt_6zA083.png

module Sys_Rst(
input clk,
input rst,
output sys_rst

);

reg rst_r0;
reg rst_r1;

always @(posedge clk or posedge rst)begin
if(rst)begin
rst_r0 rst_r1 end
else begin
rst_r0 rst_r1 end
end

assign sys_rst = rst_r1;

endmodule

編輯:hfy


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

    關注

    1608

    文章

    21367

    瀏覽量

    594616
  • 寄存器
    +關注

    關注

    30

    文章

    5164

    瀏覽量

    118133
  • Xilinx
    +關注

    關注

    70

    文章

    2129

    瀏覽量

    119637
  • 狀態機
    +關注

    關注

    2

    文章

    486

    瀏覽量

    27244
收藏 人收藏

    評論

    相關推薦

    Xilinx 7系列FPGA功能特性介紹

    Xilinx7系列FPGA由四個FPGA系列組成,可滿足一系列系統需求,從低成本、小尺寸、成本敏感的大容量應用到最苛刻的高性能應用的超高端連接帶寬、邏輯容量和信號
    發表于 04-22 10:49 ?736次閱讀
    <b class='flag-5'>Xilinx</b> 7系列<b class='flag-5'>FPGA</b>功能特性介紹

    Xilinx fpga芯片系列有哪些

    Xilinx FPGA芯片擁有多個系列和型號,以滿足不同應用領域的需求。以下是一些主要的Xilinx FPGA芯片系列及其特點。
    的頭像 發表于 03-14 16:24 ?1248次閱讀

    對于芯片中的復位信號我們通常會有哪些特殊處理?

    經常在面試時問到一個問題:對于芯片中的復位信號我們通常會有哪些特殊處理?這個時候我一般希望得到的回答包括:復位消抖、異步復位同步撤離、降頻
    的頭像 發表于 12-25 09:52 ?726次閱讀
    對于芯片中的<b class='flag-5'>復位</b><b class='flag-5'>信號</b>我們通常會有哪些特殊<b class='flag-5'>處理</b>?

    Xilinx FPGA芯片內部時鐘和復位信號使用方法

    如果FPGA沒有外部時鐘源輸入,可以通過調用STARTUP原語,來使用FPGA芯片內部的時鐘和復位信號,Spartan-6系列內部時鐘源是50MHz,Artix-7、Kintex-7等
    的頭像 發表于 10-27 11:26 ?1193次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>芯片內部時鐘和<b class='flag-5'>復位</b><b class='flag-5'>信號</b>使用方法

    如何將Arm Cortex-M處理器與XilinxFPGA和SoC結合使用

    電子發燒友網站提供《如何將Arm Cortex-M處理器與XilinxFPGA和SoC結合使用.pdf》資料免費下載
    發表于 09-15 15:04 ?1次下載
    如何將Arm Cortex-M<b class='flag-5'>處理</b>器與<b class='flag-5'>Xilinx</b>的<b class='flag-5'>FPGA</b>和SoC結合使用

    Xilinx FPGA的GTx的參考時鐘

    本文主要介紹Xilinx FPGA的GTx的參考時鐘。下面就從參考時鐘的模式、參考時鐘的選擇等方面進行介紹。
    發表于 09-15 09:14 ?2827次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的GTx的參考時鐘

    為什么需要復位樹?復位信號用什么電路產生?

    復位信號在數字電路里面的重要性僅次于時鐘信號。對一個芯片來說,復位的主要目的是使芯片電路進入一個已知的,確定的狀態。
    的頭像 發表于 08-27 10:18 ?1559次閱讀
    為什么需要<b class='flag-5'>復位</b>樹?<b class='flag-5'>復位</b><b class='flag-5'>信號</b>用什么電路產生?

    kv260采用的FPGA型號是什么?

    是一款基于FPGA的數字信號處理器,其采用了Xilinx Virtex-6 XC6VLX760型號的FPGA。
    的頭像 發表于 08-16 11:15 ?937次閱讀

    Arm Cortex-M1 DesignStart FPGA Xilinx版用戶指南

    器適用于需要將小型處理器集成到FPGA中的深度嵌入式應用。 該處理器實現ARMv6-M架構,并與用于ASIC實現的Cortex-M0和Cortex-M0+處理器密切相關。 本章介紹了C
    發表于 08-16 06:10

    復位信號是什么意思?復位信號的作用?詳解Xilinx FPGA復位信號那些事

    復位信號幾乎是除了時鐘信號外最常用的信號了,幾乎所有數字系統在上電的時候都會進行復位,這樣才能保持設計者確定該系統的系統模式的狀態,以便于更
    的頭像 發表于 07-27 09:48 ?5861次閱讀
    <b class='flag-5'>復位</b><b class='flag-5'>信號</b>是什么意思?<b class='flag-5'>復位</b><b class='flag-5'>信號</b>的作用?詳解<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b><b class='flag-5'>復位</b><b class='flag-5'>信號</b>那些事

    xilinx FPGA復位方法講解

    能不復位盡量不用復位,如何判斷呢?如果某個模塊只需要上電的時候復位一次,工作中不需要再有復位操作,那么這個模塊可以不用復位,用上電初始化所有
    發表于 06-28 14:44 ?673次閱讀
    <b class='flag-5'>xilinx</b> <b class='flag-5'>FPGA</b><b class='flag-5'>復位</b>方法講解

    你真的會Xilinx FPGA復位嗎?

    對于復位信號處理,為了方便我們習慣上采用全局復位,博主在很長一段時間內都是將復位信號作為一個I
    發表于 06-21 10:39 ?751次閱讀
    你真的會<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的<b class='flag-5'>復位</b>嗎?

    Xilinx FPGA異步復位同步釋放—同步后的復位該當作同步復位還是異步復位?

    針對異步復位、同步釋放,一直沒搞明白在使用同步化以后的復位信號時,到底是使用同步復位還是異步復位?
    發表于 06-21 09:59 ?929次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>異步<b class='flag-5'>復位</b>同步釋放—同步后的<b class='flag-5'>復位</b>該當作同步<b class='flag-5'>復位</b>還是異步<b class='flag-5'>復位</b>?

    請問DSP和FPGA的時鐘信號如何產生?

    我做的一個基于DSP的系統中,DSP做主處理器,控制著整個系統,包括信號處理,整體調度等;選擇了一塊XilinxFPGA做FIFO UAR
    發表于 06-19 06:43

    XILINX FPGA IP之Clocking Wizard詳解

    鎖相環基本上是每一個fpga工程必不可少的模塊,之前文檔xilinx 7 系列FPGA時鐘資源對xilinx fpga的底層時鐘資源做過說明
    發表于 06-12 17:42 ?3851次閱讀
    <b class='flag-5'>XILINX</b> <b class='flag-5'>FPGA</b> IP之Clocking Wizard詳解
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>