日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

詳細(xì)解讀FPGA復(fù)位的重點(diǎn)

454398 ? 來源: 科學(xué)計(jì)算technomania ? 作者:貓叔 ? 2020-11-18 17:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

但如果認(rèn)真看了Xilinx的White Paper,就會(huì)對(duì)復(fù)位有了新的認(rèn)識(shí)。

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

1. 需不需要復(fù)位?

看到這個(gè)問題,可能很多同學(xué)會(huì)有點(diǎn)懵,怎么可能不需要復(fù)位?其實(shí)Xilinx FPGA在系統(tǒng)上電配置時(shí),會(huì)有一個(gè)GSR(Global Set/Reset)的信號(hào),這個(gè)信號(hào)有以下幾個(gè)特點(diǎn):
? 預(yù)布線
? 高扇出
? 可靠的

這個(gè)信號(hào)可初始化所有的cell,包括所有的Flip-Flop和BRAM。


如果我們?cè)诔绦蚶镉米约荷傻膹?fù)位信號(hào),也只能復(fù)位Flip-Flop。

這個(gè)GSR信號(hào)我們可以在程序中通過實(shí)例化STARTUP直接調(diào)用,但Xilinx并不推薦這么使用。


主要原因是FPGA會(huì)把像系統(tǒng)復(fù)位這種高扇出的信號(hào)放到高速布線資源上,這比使用GSR要快,而且更容易進(jìn)行時(shí)序分析。

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

? 帶有反饋的模塊,比如IIR這種濾波器和狀態(tài)機(jī),當(dāng)狀態(tài)跑飛了,就需要復(fù)位一下


? 應(yīng)用過程中需要復(fù)位的寄存器

這個(gè)就具體看是什么應(yīng)用了,我們公司的很多寄存器都需要在調(diào)試過程中需要經(jīng)常復(fù)位,像這種復(fù)位就是必須的了。

所以,需不需要復(fù)位完全看設(shè)計(jì)。這里多提一點(diǎn),時(shí)序收斂也是一樣,主要看設(shè)計(jì),而不是約束。

2. 同步復(fù)位 or 異步復(fù)位?

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

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

如果敏感列表中包含rst,則會(huì)被綜合成異步復(fù)位:

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

同步復(fù)位的好處,不言而喻,有利于時(shí)序分析,降低亞穩(wěn)態(tài)的幾率,避免毛刺。

同步信號(hào)的缺點(diǎn):
? 復(fù)位信號(hào)有效電平持續(xù)時(shí)間必須大于時(shí)鐘周期,不然時(shí)鐘可能采不到復(fù)位
? 在沒有時(shí)鐘的時(shí)候無法復(fù)位

也有很多同學(xué)會(huì)說同步復(fù)位會(huì)需要額外的資源,但對(duì)于Xilinx的FPGA,是沒有這個(gè)問題的,具體原因后面講。

對(duì)于異步復(fù)位,好處就是同步復(fù)位的反方面:脈沖寬度沒有限制,沒有時(shí)鐘也可以復(fù)位。

缺點(diǎn)就是異步電路,容易引起亞穩(wěn)態(tài),產(chǎn)生毛刺,不利于時(shí)序分析,而且不同觸發(fā)器的復(fù)位時(shí)間可能不同。下面這個(gè)圖中,在A時(shí)刻接收到復(fù)位信號(hào)拉低的FF可以在下一個(gè)時(shí)鐘上升沿時(shí)就釋放復(fù)位狀態(tài),但C時(shí)刻接收到復(fù)位信號(hào)拉低的FF則在下下個(gè)時(shí)鐘上升沿時(shí)才能釋放復(fù)位狀態(tài)。


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

下面我們來舉一個(gè)例子來說明同步復(fù)位和異步復(fù)位,F(xiàn)PGA為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如下圖:


可以看出來,同步復(fù)位和異步復(fù)位都是占用一個(gè)Storage Element,我們?cè)谥暗囊黄恼轮兄v過Storage Element可以配置為Latch,同樣的,也可以配置為FDRE和FDCE,而且在7Series手冊(cè)中也并未提到配置成FDRE或FDCE時(shí)是否會(huì)占用更多資源(比如,7Series的FPGA中,一個(gè)Slice中有8個(gè)Storage Element,如果其中一個(gè)被配置成了Latch,那有4個(gè)Storage Element是不能用的),因此在Xilinx的FPGA中,同步復(fù)位和異步復(fù)位在資源占用上,并沒有區(qū)別。

3. 高復(fù)位 or 低復(fù)位?

很多處理器上的復(fù)位都是低復(fù)位,這也導(dǎo)致了很多同學(xué)在使用復(fù)位信號(hào)時(shí)也習(xí)慣使用低復(fù)位了。但從我們上一節(jié)所講中可以看出,無論是同步復(fù)位還是異步復(fù)位,復(fù)位信號(hào)都是高有效,如果采用低復(fù)位,還需要增加一個(gè)反相器。

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

這里多補(bǔ)充一點(diǎn),如果使用Zynq和Microblaze,則Reset模塊默認(rèn)是低復(fù)位,我們可以手動(dòng)設(shè)置為高復(fù)位。

4. 全局復(fù)位 or 局部復(fù)位?怎么用?

我們對(duì)復(fù)位常用的做法是將系統(tǒng)中的每個(gè)FF都連接到某個(gè)復(fù)位信號(hào),但這樣就造成了復(fù)位信號(hào)的高扇出,高扇出就容易導(dǎo)致時(shí)序的違規(guī)。而且全局復(fù)位占用的資源比我們想象中要高的多:

? 布線資源占用
? 其他網(wǎng)絡(luò)的布線空間就相應(yīng)減少
? 可能會(huì)降低系統(tǒng)性能
? 增加布線時(shí)間
? 邏輯資源占用
? 占用FF作為專門的復(fù)位電路
? 如果該復(fù)位信號(hào)還受其他信號(hào)控制,會(huì)導(dǎo)致FF的輸入前增加門電路
? 會(huì)增加整個(gè)設(shè)計(jì)的size
? 增加的邏輯資源會(huì)影響系統(tǒng)性能
? 增加布局布線時(shí)間
? 全局復(fù)位不會(huì)使用像SRL16E這種高效結(jié)構(gòu)
? 在LUT中SRL16E可當(dāng)作16個(gè)FF
? 這些Virtual FF不支持復(fù)位
? 增加設(shè)計(jì)的size,并降低系統(tǒng)性能
? 增加布局布線時(shí)間

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


圖中的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如下圖:


異步復(fù)位模塊輸出的sys_rst通過n個(gè)D觸發(fā)器后輸出給n個(gè)模塊,當(dāng)做模塊的復(fù)位信號(hào)。

總結(jié)

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

編輯:hfy


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

    關(guān)注

    1664

    文章

    22509

    瀏覽量

    639526
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5620

    瀏覽量

    130454
  • Xilinx
    +關(guān)注

    關(guān)注

    73

    文章

    2208

    瀏覽量

    131976
  • 復(fù)位信號(hào)
    +關(guān)注

    關(guān)注

    0

    文章

    71

    瀏覽量

    6833
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    同步復(fù)位和異步復(fù)位到底該用哪個(gè)

    FPGA/數(shù)字IC設(shè)計(jì)的,平時(shí)寫得最多的可能就是復(fù)位邏輯了。但你有沒有這種感覺:看別人代碼,有的用同步復(fù)位,有的用異步復(fù)位,有的又搞什么"異步復(fù)位
    的頭像 發(fā)表于 04-22 09:42 ?413次閱讀
    同步<b class='flag-5'>復(fù)位</b>和異步<b class='flag-5'>復(fù)位</b>到底該用哪個(gè)

    SGM823A:集復(fù)位、看門狗和手動(dòng)復(fù)位功能于一體的微處理器監(jiān)控電路

    、看門狗和手動(dòng)復(fù)位功能,為系統(tǒng)的可靠性提供了有力保障。下面我們就來詳細(xì)了解一下這款產(chǎn)品。 文件下載: SGM823A.pdf 一、產(chǎn)品概述 SGM823A是一款完整的微處理器監(jiān)控設(shè)備,它將復(fù)位、看門狗和手動(dòng)
    的頭像 發(fā)表于 03-23 17:20 ?626次閱讀

    SGM823:集成復(fù)位、看門狗和手動(dòng)復(fù)位功能的微處理器監(jiān)控電路

    就來詳細(xì)了解一下這款產(chǎn)品。 文件下載: SGM823.pdf 一、產(chǎn)品概述 SGM823是一款集成了復(fù)位、看門狗和手動(dòng)復(fù)位功能的微處理器監(jiān)控設(shè)備,采用SOT - 23 - 5封裝。與使用單個(gè)集成電路或分立元件的設(shè)計(jì)相比,這種集成
    的頭像 發(fā)表于 03-23 17:20 ?645次閱讀

    深入剖析SGM800:低功耗微處理器復(fù)位電路的卓越之選

    深入剖析SGM800:低功耗微處理器復(fù)位電路的卓越之選 在電子設(shè)備的設(shè)計(jì)中,微處理器復(fù)位電路起著至關(guān)重要的作用,它能確保系統(tǒng)在各種情況下都能穩(wěn)定、可靠地運(yùn)行。今天,我們就來詳細(xì)探討一下SGMICRO
    的頭像 發(fā)表于 03-23 16:45 ?653次閱讀

    SGM802:低功耗微處理器復(fù)位電路的理想之選

    SGM802:低功耗微處理器復(fù)位電路的理想之選 在電子設(shè)備的設(shè)計(jì)中,微處理器復(fù)位電路起著至關(guān)重要的作用,它能確保系統(tǒng)在各種情況下都能穩(wěn)定、可靠地運(yùn)行。今天,我們就來詳細(xì)了解一下SGMICRO公司推出
    的頭像 發(fā)表于 03-23 16:45 ?859次閱讀

    MAX6443–MAX6452:具備長手動(dòng)復(fù)位設(shè)置周期的微處理器復(fù)位電路

    MAX6443–MAX6452:具備長手動(dòng)復(fù)位設(shè)置周期的微處理器復(fù)位電路 在電子設(shè)備的設(shè)計(jì)中,微處理器復(fù)位電路起著至關(guān)重要的作用,它能確保設(shè)備在各種情況下穩(wěn)定運(yùn)行。今天我們就來詳細(xì)了解
    的頭像 發(fā)表于 02-27 14:45 ?360次閱讀

    使用Aurora 6466b協(xié)議實(shí)現(xiàn)AMD UltraScale+ FPGA與AMD Versal自適應(yīng)SoC的對(duì)接

    在本博客中,我們將介紹使用 Aurora 6466b 協(xié)議實(shí)現(xiàn) AMD UltraScale+ FPGA 與 AMD Versal 自適應(yīng) SoC 的對(duì)接。我們還將涵蓋有關(guān) IP 配置、FPGA 之間的連接、時(shí)鐘設(shè)置以及復(fù)位拓?fù)?/div>
    的頭像 發(fā)表于 01-13 14:04 ?3839次閱讀
    使用Aurora 6466b協(xié)議實(shí)現(xiàn)AMD UltraScale+ <b class='flag-5'>FPGA</b>與AMD Versal自適應(yīng)SoC的對(duì)接

    天合儲(chǔ)能Elementa系列產(chǎn)品的防爆安全設(shè)計(jì)解讀

    在最新一期 BESS 系列視頻中,天合儲(chǔ)能聚焦 NFPA 69 標(biāo)準(zhǔn),對(duì) Elementa 儲(chǔ)能系統(tǒng)防爆安全設(shè)計(jì)進(jìn)行了詳細(xì)解讀
    的頭像 發(fā)表于 12-22 15:16 ?870次閱讀

    如何使用FPGA實(shí)現(xiàn)SRIO通信協(xié)議

    本例程詳細(xì)介紹了如何在FPGA上實(shí)現(xiàn)Serial RapidIO(SRIO)通信協(xié)議,并通過Verilog語言進(jìn)行編程設(shè)計(jì)。SRIO作為一種高速、低延遲的串行互連技術(shù),在高性能計(jì)算和嵌入式系統(tǒng)中廣
    的頭像 發(fā)表于 11-12 14:38 ?6109次閱讀
    如何使用<b class='flag-5'>FPGA</b>實(shí)現(xiàn)SRIO通信協(xié)議

    HarmonyOSAI編程智能代碼解讀

    CodeGenie > Explain Code,開始解讀當(dāng)前代碼內(nèi)容。 說明 最多支持解讀20000字符以內(nèi)的代碼片段。 使用該功能需先完成CodeGenie登錄授權(quán)。 本文主要從參考引用自HarmonyOS官方文檔
    發(fā)表于 09-02 16:29

    GraniStudio:軸復(fù)位例程

    1.文件運(yùn)行 導(dǎo)入工程 雙擊運(yùn)行桌面GraniStudio.exe。 通過引導(dǎo)界面導(dǎo)入軸復(fù)位例程,點(diǎn)擊導(dǎo)入按鈕。 打開軸復(fù)位運(yùn)動(dòng)例程所在路徑,選中軸復(fù)位運(yùn)動(dòng).gsp文件,點(diǎn)擊打開,完成導(dǎo)入。 2.
    的頭像 發(fā)表于 08-22 16:05 ?806次閱讀
    GraniStudio:軸<b class='flag-5'>復(fù)位</b>例程

    開源的e203rtl 可以在FPGA板子(DDRt)跑50M主頻嗎?

    開源的e203rtl 可以在FPGA板子(DDRt)跑50M主頻嗎? 跑25M時(shí),可以通過spi打印出來數(shù)數(shù)據(jù),但是跑50M主頻時(shí)候,看似下載進(jìn)去了,什么也沒打印出來,有遇到這個(gè)問題的同學(xué)嗎?老師或者大佬可以解讀一下嗎?用的芯來的全套東西,
    發(fā)表于 07-11 07:58

    GraniStudio零代碼平臺(tái)軸復(fù)位算子支持多少個(gè)軸同時(shí)復(fù)位,有哪些回零模式?

    GraniStudio平臺(tái)在軸復(fù)位的功能上未對(duì)同時(shí)復(fù)位的軸數(shù)進(jìn)行硬性限制,理論上支持任意數(shù)量軸同步復(fù)位,需要考慮的是在做多軸同步復(fù)位時(shí)要評(píng)估機(jī)械安全風(fēng)險(xiǎn),建議提前確認(rèn)機(jī)械在多軸同時(shí)
    的頭像 發(fā)表于 07-07 18:02 ?799次閱讀
    GraniStudio零代碼平臺(tái)軸<b class='flag-5'>復(fù)位</b>算子支持多少個(gè)軸同時(shí)<b class='flag-5'>復(fù)位</b>,有哪些回零模式?

    【經(jīng)驗(yàn)分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到代碼解析

    FPGA開發(fā),思路先行!玩FPGA板子,讀代碼是基本功!尤其對(duì)從C語言轉(zhuǎn)戰(zhàn)FPGA的“寶貝們”來說,適應(yīng)流水線(pipeline)編程可能需要點(diǎn)時(shí)間。上篇點(diǎn)燈代碼解讀了基礎(chǔ),而如果能親
    的頭像 發(fā)表于 06-05 08:05 ?1261次閱讀
    【經(jīng)驗(yàn)分享】玩轉(zhuǎn)<b class='flag-5'>FPGA</b>串口通信:從“幻覺調(diào)試”到代碼解析

    【高云GW5AT-LV60 開發(fā)套件試用體驗(yàn)】代碼解讀-點(diǎn)燈實(shí)驗(yàn)

    這篇文章解讀一下開發(fā)板的第一個(gè)demo,這個(gè)demo是個(gè)點(diǎn)燈demo,通過這個(gè)demo可以讓小白了解高云開發(fā)的基本過程,所以也是非常重要的,如果之前完全沒用過高云的產(chǎn)品,通過學(xué)習(xí)這篇文章可以快速
    發(fā)表于 05-17 20:23
    广元市| 平陆县| 宜州市| 龙门县| 安福县| 彭山县| 永丰县| 南皮县| 景洪市| 卢氏县| 红河县| 通榆县| 天全县| 平定县| 大冶市| 阿坝县| 岑巩县| 合水县| 寻甸| 柞水县| 长武县| 壤塘县| 都昌县| 锡林郭勒盟| 桓仁| 安阳县| 西城区| 白沙| 海门市| 岗巴县| 军事| 黄浦区| 玉林市| 福州市| 灌阳县| 安吉县| 长武县| 湖南省| 花莲县| 崇州市| 辽阳市|