在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

詳細解讀FPGA復位的重點

454398 ? 來源: 科學計算technomania ? 作者:貓叔 ? 2020-11-18 17:32 ? 次閱讀

本篇文章參考Xilinx White Paper:Get Smart About Reset: Think Local, Not Global

在沒看這篇文章前,回想一下平時我們常用的復位方式:
① 首先,上電后肯定是要復位一下,不然仿真時會出現沒有初值的情況;
② 最好有個復位的按鍵,在調試時按一下復位鍵就可以全局復位了;
③ 也許是同步復位,也許是異步復位,不同的工程師可能有不同的方案。

但如果認真看了Xilinx的White Paper,就會對復位有了新的認識。

我們把White Paper的內容總結為下面4個問題:
① 需不需要復位?
② 同步復位 or 異步復位?
③ 高復位 or 低復位?
④ 全局復位 or 局部復位?怎么用?

1. 需不需要復位?

看到這個問題,可能很多同學會有點懵,怎么可能不需要復位?其實Xilinx FPGA在系統上電配置時,會有一個GSR(Global Set/Reset)的信號,這個信號有以下幾個特點:
? 預布線
? 高扇出
? 可靠的

這個信號可初始化所有的cell,包括所有的Flip-Flop和BRAM。


如果我們在程序里用自己生成的復位信號,也只能復位Flip-Flop。

這個GSR信號我們可以在程序中通過實例化STARTUP直接調用,但Xilinx并不推薦這么使用。


主要原因是FPGA會把像系統復位這種高扇出的信號放到高速布線資源上,這比使用GSR要快,而且更容易進行時序分析。

雖然有GSR,但這并不是說要避免使用復位信號,以下兩種情況就必須要加復位:

? 帶有反饋的模塊,比如IIR這種濾波器和狀態機,當狀態跑飛了,就需要復位一下


? 應用過程中需要復位的寄存器

這個就具體看是什么應用了,我們公司的很多寄存器都需要在調試過程中需要經常復位,像這種復位就是必須的了。

所以,需不需要復位完全看設計。這里多提一點,時序收斂也是一樣,主要看設計,而不是約束。

2. 同步復位 or 異步復位?

在HDL中,如果敏感列表中不包含rst,會被綜合成同步復位:

always @ ( posedge clk )
begin
    if(rst)
        ...
end

如果敏感列表中包含rst,則會被綜合成異步復位:

always @ ( posedge clk or posedge rst)
begin
    ...
end

同步復位的好處,不言而喻,有利于時序分析,降低亞穩態的幾率,避免毛刺。

同步信號的缺點:
? 復位信號有效電平持續時間必須大于時鐘周期,不然時鐘可能采不到復位
? 在沒有時鐘的時候無法復位

也有很多同學會說同步復位會需要額外的資源,但對于Xilinx的FPGA,是沒有這個問題的,具體原因后面講。

對于異步復位,好處就是同步復位的反方面:脈沖寬度沒有限制,沒有時鐘也可以復位。

缺點就是異步電路,容易引起亞穩態,產生毛刺,不利于時序分析,而且不同觸發器的復位時間可能不同。下面這個圖中,在A時刻接收到復位信號拉低的FF可以在下一個時鐘上升沿時就釋放復位狀態,但C時刻接收到復位信號拉低的FF則在下下個時鐘上升沿時才能釋放復位狀態。


按照White Paper上所講,99.99%的概率這種情況都不會發生,但如果你剛好碰到一次這種現象,那你就是那0.01%。

下面我們來舉一個例子來說明同步復位和異步復位,FPGA為V7,代碼如下:

module rst_demo(
 input clk,
 input rst1,
 input rst2,
 input in1,
 input in2,
 output reg out1,
 output reg out2);

 always @ ( posedge clk )
 begin
    if(rst1)
        out1 <= 1'b0;
    else
        out1 <= in1;
 end

 always @ ( posedge clk or posedge rst2 )
 begin
    if(rst2)
        out2 <= 1'b0;
    else
        out2 <= in2;
 end

 endmodule

綜合后的schematic如下圖:


可以看出來,同步復位和異步復位都是占用一個Storage Element,我們在之前的一篇文章中講過Storage Element可以配置為Latch,同樣的,也可以配置為FDRE和FDCE,而且在7Series手冊中也并未提到配置成FDRE或FDCE時是否會占用更多資源(比如,7Series的FPGA中,一個Slice中有8個Storage Element,如果其中一個被配置成了Latch,那有4個Storage Element是不能用的),因此在Xilinx的FPGA中,同步復位和異步復位在資源占用上,并沒有區別。

3. 高復位 or 低復位?

很多處理器上的復位都是低復位,這也導致了很多同學在使用復位信號時也習慣使用低復位了。但從我們上一節所講中可以看出,無論是同步復位還是異步復位,復位信號都是高有效,如果采用低復位,還需要增加一個反相器。

如果接收到其他處理器發過來的低有效復位信號,我們最好在頂層模塊中翻轉復位信號的極性,這樣做可以將反相器放入IO Logic中,不會占用FPGA內部的邏輯資源和布線資源。

這里多補充一點,如果使用Zynq和Microblaze,則Reset模塊默認是低復位,我們可以手動設置為高復位。

4. 全局復位 or 局部復位?怎么用?

我們對復位常用的做法是將系統中的每個FF都連接到某個復位信號,但這樣就造成了復位信號的高扇出,高扇出就容易導致時序的違規。而且全局復位占用的資源比我們想象中要高的多:

? 布線資源占用
? 其他網絡的布線空間就相應減少
? 可能會降低系統性能
? 增加布線時間
? 邏輯資源占用
? 占用FF作為專門的復位電路
? 如果該復位信號還受其他信號控制,會導致FF的輸入前增加門電路
? 會增加整個設計的size
? 增加的邏輯資源會影響系統性能
? 增加布局布線時間
? 全局復位不會使用像SRL16E這種高效結構
? 在LUT中SRL16E可當作16個FF
? 這些Virtual FF不支持復位
? 增加設計的size,并降低系統性能
? 增加布局布線時間

因此,Xilinx推薦盡量使用局部復位的方式,前面我們也講到然同步復位和異步復位都多多少少有些問題,那有沒有一種方式可以結合同步復位和異步復位的優點?當然有,就是異步復位,同步釋放。這種方法可以將兩者結合起來,取長補短。如下圖所示,所謂異步復位,就是輸入的復位信號仍然是異步的,這樣可以保證復位信號能夠起效;而同步釋放是指當復位信號釋放時,輸出的sys_rst并不是立即變化,而且被FF延遲了一個時鐘周期,這樣讓復位和時鐘同步起來。


圖中的Verilog代碼如下:

module rst_demo(
 input      clk, 
 input      rst_async, 
 (* keep = "true" *)
 output  reg  rst_module1 = 0,
 (* keep = "true" *)
 output  reg  rst_module2 = 0
    );

reg         sys_rst;
reg         rst_r;

always @(posedge clk or posedge rst_async) begin
    if (rst_async) begin
        rst_r <= 1'b1;
    end
    else begin
        rst_r <= 1'b0;
    end
end

always @(posedge clk or posedge rst_async) begin
    if (rst_async) begin
        sys_rst <= 1'b1;
    end
    else begin
        sys_rst <= rst_r;
    end
end

always @ ( posedge clk ) begin
    rst_module1 <= sys_rst;
    rst_module2 <= sys_rst;
end

endmodule

綜合后的schematic如下圖:


異步復位模塊輸出的sys_rst通過n個D觸發器后輸出給n個模塊,當做模塊的復位信號。

總結

在使用復位信號時,考慮這個寄存器需不需要在運行過程中進行復位,如果只需要上電后復位一次,那只需在定義時寫上初值即可,無需使用其他復位信號;在Xilinx的FPGA中盡量使用高有效的復位信號,采用異步復位同步釋放的方式,并且要將復位信號局部化,避免使用高扇出的全局復位。

編輯:hfy


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

    關注

    1644

    文章

    21989

    瀏覽量

    615210
  • 寄存器
    +關注

    關注

    31

    文章

    5426

    瀏覽量

    123671
  • Xilinx
    +關注

    關注

    73

    文章

    2184

    瀏覽量

    124568
  • 復位信號
    +關注

    關注

    0

    文章

    67

    瀏覽量

    6548
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【高云GW5AT-LV60 開發套件試用體驗】代碼解讀-點燈實驗

    這篇文章解讀一下開發板的第一個demo,這個demo是個點燈demo,通過這個demo可以讓小白了解高云開發的基本過程,所以也是非常重要的,如果之前完全沒用過高云的產品,通過學習這篇文章可以快速
    發表于 05-17 20:23

    復位電路的作用、控制方式和類型

    復位電路也是數字邏輯設計中常用的電路,不管是 FPGA 還是 ASIC 設計,都會涉及到復位,一般 FPGA或者 ASIC 的復位需要我們自
    的頭像 發表于 03-12 13:54 ?2061次閱讀
    <b class='flag-5'>復位</b>電路的作用、控制方式和類型

    做APPSFPGA的vhdl源碼,fpga如何修改pgen送數據到數據總線然后復位

    有人在做 APPSFPGA的 vhdl 源碼嗎,我剛開始接觸 fpga 如何修改 pgen 送數據 到數據總線 然后 復位 ,有大佬可以指點一下嗎
    發表于 02-21 06:01

    FPGA復位的8種技巧

    FPGA 設計中,復位起到的是同步信號的作用,能夠將所有的存儲元件設置成已知狀態。在數字電路設計中,設計人員一般把全局復位作為一個外部引腳來實現,在加電的時候初始化設計。全局復位
    的頭像 發表于 11-16 10:18 ?1072次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>復位</b>的8種技巧

    復位電路的設計問題

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

    4G模組加解密藝術:通用函數的深度解讀

    今天是對加解密通用函數的深度解讀,我將詳細講解,建議收藏,不可錯過。
    的頭像 發表于 11-12 09:58 ?586次閱讀
    4G模組加解密藝術:通用函數的深度<b class='flag-5'>解讀</b>

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

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

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

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

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

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

    單片機異常復位的原因

    單片機異常復位是指單片機在正常工作過程中,非預期地返回到初始狀態或重啟。這種異常復位現象可能由多種因素引起,以下是對單片機異常復位原因的詳細分析:
    的頭像 發表于 10-17 17:56 ?2896次閱讀

    STM32復位電路用復位芯片和阻容復位電路區別

    STM32是一款廣泛使用的微控制器,其復位電路設計對于系統的穩定性和可靠性至關重要。本文將詳細介紹STM32復位電路中使用復位芯片和阻容復位
    的頭像 發表于 08-06 10:26 ?2787次閱讀

    JK觸發器的置位和復位有什么區別

    JK觸發器的置位(Set)和復位(Reset)是其在數字電路中的兩種基本狀態控制功能,它們在操作原理、輸入條件以及觸發器輸出狀態的變化上有所區別。以下是對JK觸發器置位和復位詳細分析。
    的頭像 發表于 07-27 14:50 ?3786次閱讀

    解讀MIPI A-PHY與車載Serdes芯片技術與測試

    上一期,《汽車芯片標準體系建設指南》技術解讀與功率芯片測量概覽中,我們給大家介紹了工信部印發的《汽車芯片標準體系建設指南》涉及到的重點芯片與測試領域解讀,本期繼續給大家做延展,我們解讀
    的頭像 發表于 07-24 10:14 ?4208次閱讀
    <b class='flag-5'>解讀</b>MIPI A-PHY與車載Serdes芯片技術與測試

    FPGA同步復位和異步復位

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

    速度繼電器復位轉速介紹

    新啟動電動機的轉速。本文將詳細介紹速度繼電器復位轉速的相關知識,包括其工作原理、影響因素、計算方法以及實際應用。 一、速度繼電器的工作原理 速度繼電器主要由轉子、定子、觸點、彈簧等部分組成。轉子通常采用永磁材料制
    的頭像 發表于 06-28 14:33 ?1266次閱讀
    主站蜘蛛池模板: 美女国产视频 | 亚洲色图综合网站 | 午夜免费福利在线 | 毛片的网站 | 亚洲欧美高清在线 | 天天干天天插天天 | 一级欧美一级日韩 | 你懂的在线视频观看 | avhd101天天看新片 | 激情五月综合综合久久69 | 成人网久久 | 黄色在线视频免费看 | 综合网天天操天天射 | 久久精品影院永久网址 | 色噜噜噜噜噜在线观看网站 | 亚洲日本色图 | 四虎成人影院网址 | 一区二区免费 | 福利视频入口 | 亚洲色图狠狠干 | 亚洲精品在线免费观看视频 | 欧美一级做一级做片性十三 | 热门国产xvideos中文 | 午夜久久久精品 | 伊人啪| a理论片 | 五月婷婷六月天 | 午夜久久免影院欧洲 | 99在线热播精品免费 | v片视频| 欧美aaa| 国产片翁熄系列乱在线视频 | 磁力bt种子搜索在线 | 欧美电影一区二区三区 | 国产伦精品一区二区三区高清 | 国产毛片久久国产 | 河南毛片 | 亚洲一区欧美日韩 | 手机精品在线 | 免费看曰批女人爽的视频网址 | 天天躁狠狠躁 |