一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

什么時候什么地方使用復(fù)位?

倩倩 ? 來源:IP與SoC設(shè)計 ? 作者:IP與SoC設(shè)計 ? 2022-09-05 14:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

復(fù)位概述

復(fù)位作為電子系統(tǒng)中最常見的信號同時也是最重要的信號,它對工程師整體的設(shè)計表現(xiàn)有著極大的影響。復(fù)位信號可能深刻影響設(shè)計的性能表現(xiàn),功耗,面積等等。對于一個優(yōu)秀的系統(tǒng)設(shè)計,很難不把復(fù)位信號當(dāng)成一個關(guān)鍵信號來設(shè)計。

同步的代碼可能會綜合出LUTs,Registers,SRLs,Block or LUT memory,DSP48 registers。對復(fù)位方式的不同選擇以及對復(fù)位的使用不同會影響基本元件的選擇??赡軙敫嗷蛘吒俚馁Y源,影響整體設(shè)計的表現(xiàn),功耗,甚至?xí)?dǎo)致系統(tǒng)運(yùn)行異常。

什么時候什么地方使用復(fù)位?

對于很多新入門工程師來講,很少會評估是否需要復(fù)位信號,絕大所數(shù)都是使用提供的模板,對所有的信號進(jìn)行復(fù)位,盡管可能不是那么必要,如果是這樣會增加資源,對復(fù)位時序也會產(chǎn)生影響,所以評估是否需要復(fù)位是很有必要的。

賽靈思器件而言,廠家對FPGA提供了專用的全局復(fù)位(GSR)。這個信號在配置結(jié)束會把所有的時序元件都設(shè)置為一個初始的值。如果這個初始值沒有被指定,大多數(shù)情況下都會被設(shè)置為0。每個器件都會在配置結(jié)束設(shè)置為一個定值,因此,有些上電時單一目的復(fù)位必要性不是很大。下面代碼初始化registers和latches的指定初始值。

// Verilog代碼
reg register1 = 1’b0; // specifying regsiter1 to start as a zero
reg register2 = 1’b1; // specifying register2 to start as a one
reg [3:0] register3 = 4’b1011; //specifying INIT value for 4-bit register
-- VHDL代碼
signal reg1 : std_logic := '0'; -- specifying register1 to start as a zero
signal reg2 : std_logic := ‘1’; -- specifying register2 to start as a one
signal reg3 : std_logic_vector(3 downto 0):="1011"; -- specifying INIT value for 4-bit register

所以像之前所訴述,工程師應(yīng)該仔細(xì)考慮和評估什么時候,什么地方需要復(fù)位。因為不必要的復(fù)位可能會導(dǎo)致諸多的問題。限制復(fù)位的使用可能具備的優(yōu)勢:

  • 限制全局復(fù)位網(wǎng)絡(luò)的扇出

  • 減少復(fù)位路徑的互聯(lián)

  • 簡化復(fù)位路徑的時序分析

  • 提升整體設(shè)計的性能表現(xiàn),面積,功耗等

功能性的仿真是可以容易區(qū)分復(fù)位是否需要,所以建議去評估每一個同步模塊是否需要復(fù)位,盡量減少在未評估真實需要復(fù)位的情況下就引入復(fù)位。

同步復(fù)位異步復(fù)位

同步復(fù)位就是復(fù)位信號在時鐘觸發(fā)邊沿才有效,簡單講敏感列表中沒有復(fù)位信號,異步復(fù)位在復(fù)位信號被置位后即有效,簡單說敏感列表中存在復(fù)位信號。如下面兩段Verilog代碼:

// 同步復(fù)位
module sync_resetFFstyle (
 output reg q,
 input d, clk, rst_n);
always @(posedge clk)
 if (!rst_n)
     q <= 1'b0;
 else 
     q <= d;
endmodule
// 異步復(fù)位
module async_resetFFstyle (
 output reg q,
 input d, clk, rst_n);
 always @(posedge clk or negedge rst_n)
 if (!rst_n)
     q <= 1'b0;
 else 
     q <= d;
endmodule

同步復(fù)位相比較異步復(fù)位有以下的特點(diǎn):

  • 同步復(fù)位可以映射更多種類的資源單元

  • 全局的異步復(fù)位會增加設(shè)計元件的布線復(fù)雜度(每個register都要連接復(fù)位信號)

  • 如果需要提高電路的集成密度或者對電路進(jìn)行調(diào)優(yōu)布局,同步復(fù)位更加靈活

  • 有些資源僅提供提供同步復(fù)位,如DSP48和RAM模塊,如果使用異步復(fù)位,很難在不影響模塊功能的前提下將異步信號正確施加在這些模塊。(Xilinx)

同步復(fù)位特點(diǎn):

  • 電路是百分之百同步化的

  • 時鐘可以充當(dāng)同步復(fù)位信號的一個毛刺濾波,但如果毛刺發(fā)生在時鐘觸發(fā)邊沿,flip-flop仍然可能出現(xiàn)亞穩(wěn)態(tài)。

  • 同步復(fù)位可能需要一個計數(shù)器來保障復(fù)位信號的寬度足夠?qū)拋韺崿F(xiàn)有效的復(fù)位。

  • 因為同步復(fù)位需要時鐘來復(fù)位,有些極少數(shù)的情況下,如某些低功耗設(shè)計,時鐘可能在復(fù)位前就被無效,那么同步復(fù)位也無效,這里可能只有異步復(fù)位有效。

異步復(fù)位優(yōu)點(diǎn)

只要具有可復(fù)位的觸發(fā)器,那么異步復(fù)位就可以生效

異步復(fù)位不會在數(shù)據(jù)路徑引入其他邏輯

異步復(fù)位缺點(diǎn)

反斷言階段,即復(fù)位移除階段,復(fù)位信號沿如果距離時鐘觸發(fā)沿很近,則可能發(fā)生亞穩(wěn)態(tài),那么復(fù)位狀態(tài)可能會丟失,也就是常說的符合Recovery Time以及Removal Time(類似Setup TimeHold Time

板子的毛刺和噪聲可能引起虛假復(fù)位。

其他的一些缺點(diǎn)已經(jīng)在(同步復(fù)位相比較異步復(fù)位有以下特點(diǎn))上面小節(jié)闡述。

注意:異步復(fù)位都應(yīng)該同步釋放,以處理可能出現(xiàn)的亞穩(wěn)態(tài)和異常情況,如下面所示代碼:

// 異步復(fù)位同步釋放
module sync_reset #
(
    // depth of synchronizer
    parameter N = 2
)
(
    input  wire clk,
    input  wire rst,
    output wire out
);

(* srl_style = "register" *)
reg [N-1:0] sync_reg = {N{1'b1}};

assign out = sync_reg[N-1];

always @(posedge clk or posedge rst) begin
    if (rst) begin
        sync_reg <= {N{1'b1}};
    end else begin
        sync_reg <= {sync_reg[N-2:0], 1'b0};
    end
end

endmodule
// 代碼來自開源項目AlexForencich

如何去除不必要復(fù)位信號?

當(dāng)需要去除一些復(fù)位信號時,直接注釋掉相關(guān)的代碼是不合適并且會引入非預(yù)期的結(jié)構(gòu)以及會導(dǎo)致異常問題。如下面的代碼,注釋掉復(fù)位代碼塊里的din_dly1din_dly2會讓復(fù)位信號成為寄存器的使能信號,顯然屬于引入無關(guān)邏輯,可能會引起設(shè)計的問題。如圖一為未注釋代碼前綜合出的異步復(fù)位電路,圖二為直接注釋掉復(fù)位區(qū)域信號的代碼。產(chǎn)生這種問題也很容易理解,代碼邏輯就是非復(fù)位狀態(tài)din_dly1din_dly2才能工作。

always@(posedge sysclk or posedge rst)
begin
    if(rst)
    begin
//         din_dly1 <= 8'b0;
//         din_dly2 <= 8'b0;
         da_out <= 8'b0;
    end
    else
    begin
        din_dly1 <= da_in;
        din_dly2 <= din_dly1;
        da_out <= din_dly2;
    end
end

64fc8082-2cd0-11ed-ba43-dac502259ad0.png

圖一:未注釋掉復(fù)位信號的代碼

65265a1a-2cd0-11ed-ba43-dac502259ad0.png

圖二:注釋掉復(fù)位信號的代碼(引入非期望的電路)

當(dāng)遇到需要去除一些寄存器的復(fù)位信號時,記住一個基本原則:一個時序模塊不可以混合不同復(fù)位類型的寄存器,簡單講就是不能出現(xiàn)不復(fù)位的寄存器和復(fù)位的寄存器,只要使用復(fù)位信號,那么時序模塊的寄存器都應(yīng)該復(fù)位。那么需要去除一些寄存器的復(fù)位信號應(yīng)該怎么辦?同樣功能的代碼如下,將復(fù)位的寄存器放入一個always塊中,不需要復(fù)位的寄存器放入另一個always塊中。圖三是實際綜合出的電路也是實際期望的電路,沒有引入其他邏輯。

always @(posedge sysclk) begin
    din_dly1 <= da_in;
    din_dly2 <= din_dly1;
end

always @(posedge sysclk or posedge rst) begin
    if(rst)
        da_out <= 8'b0;
    else
        da_out <= din_dly2;
    
end

65471a3e-2cd0-11ed-ba43-dac502259ad0.png

圖三:不同復(fù)位類型區(qū)分綜合出的電路

總結(jié):本篇文章主要總結(jié)復(fù)位類型和其優(yōu)缺點(diǎn),在不同的情形下對復(fù)位類型選擇進(jìn)行權(quán)衡,尤其要評估一些不需要復(fù)位的情況,以實現(xiàn)設(shè)計的更優(yōu)性能表現(xiàn)。具體的內(nèi)容還可以查閱參考文獻(xiàn)所列內(nèi)容。


審核編輯 :李倩


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

    關(guān)注

    1646

    文章

    22053

    瀏覽量

    618769
  • 復(fù)位
    +關(guān)注

    關(guān)注

    0

    文章

    179

    瀏覽量

    24680
  • 異步復(fù)位
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    13516

原文標(biāo)題:FPGA復(fù)位信號設(shè)計討論

文章出處:【微信號:IP與SoC設(shè)計,微信公眾號:IP與SoC設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    為什么adc芯片不寫輸入時鐘范圍,實際使用中應(yīng)該怎么給?什么時候與處理器同源?

    為什么adc芯片不寫輸入時鐘范圍,實際使用中應(yīng)該怎么給?什么時候與處理器同源?
    發(fā)表于 04-15 06:10

    DLPC6401什么時候可以只用Nand Flash或者EEPROM單獨(dú)對DLP進(jìn)行配置?

    DLPC6401什么時候可以只用Nand Flash或者EEPROM單獨(dú)對DLP進(jìn)行配置?
    發(fā)表于 02-28 07:47

    ADS1204 CLKSEL置1時,如何采集數(shù)據(jù)?怎么知道什么時候是最高位?什么時候是最低位?

    當(dāng)CLKSEL置1時,如何采集數(shù)據(jù)?意思是怎么知道什么時候是最高位?什么時候是最低位?
    發(fā)表于 02-06 06:51

    ADS1115的Config Register在什么時候配置比較好?

    請問一下大家: 1、ADS1115的Config Register 在什么時候配置比較好,因為我需要采集雙通道AD 2、寫入的時候是不是要先寫ADDR,然后Pointer Reg指向Config
    發(fā)表于 01-10 10:30

    請問AFE4400讀取的數(shù)據(jù)什么時候才會出現(xiàn)0?

    我目前用的是AFE4400,讀取的是紅光、紅外光和去環(huán)境紅光,我想知道讀取的數(shù)據(jù)什么時候才會出現(xiàn)0?隨著光照增強(qiáng),是不是接受到的數(shù)據(jù)會變得更大?我讀取數(shù)據(jù)的時候,完全屏蔽掉接收端能夠讀到0,但是在沒有完全屏蔽掉的時候也會出現(xiàn)一
    發(fā)表于 12-20 10:03

    ads1259EVM-PDK在第幾位電壓不跳的?輸入信號接在什么地方?

    就想知道1259在第幾位電壓不跳的輸入信號接在什么地方
    發(fā)表于 12-12 07:45

    FPGA復(fù)位的8種技巧

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

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

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

    請問TLV320AIC3254EVM-U 開發(fā)板程序丟失,怎么通過USB重新寫入,程序從什么地方可以得到?

    請問TLV320AIC3254EVM-U 開發(fā)板程序丟失,怎么通過USB重新寫入,程序從什么地方可以得到,謝謝?
    發(fā)表于 11-06 06:55

    振動傳感器用在什么地方

    振動傳感器作為一種普遍應(yīng)用的檢測工具,因其成本低、靈敏度高、工作穩(wěn)定可靠、振動檢測可調(diào)節(jié)范圍大等優(yōu)點(diǎn),在多個領(lǐng)域得到了廣泛的應(yīng)用。 一、工業(yè)領(lǐng)域 在工業(yè)領(lǐng)域,振動傳感器主要用于機(jī)械中的振動和位移監(jiān)測。具體來說,它們可以用于以下方面: 轉(zhuǎn)子與機(jī)殼的熱膨脹量長期監(jiān)測 :通過監(jiān)測轉(zhuǎn)子與機(jī)殼之間的振動情況,可以及時發(fā)現(xiàn)設(shè)備在運(yùn)行過程中可能出現(xiàn)的熱膨脹問題,從而采取相應(yīng)的維護(hù)措施,避免設(shè)備損壞或生產(chǎn)事故。 生產(chǎn)線的
    的頭像 發(fā)表于 10-22 17:19 ?910次閱讀

    TPA3116D2EVM電感位置,第二和第三種情況是什么時候使用的?

    1、請問電感位置,第二和第三種情況是什么時候使用的? 2、電感電流選擇怎么選的?如果是BTL,4歐姆負(fù)載。按極限電流算純電阻做功,每通道都是130W左右了。標(biāo)的是50W。余量大概是多少?
    發(fā)表于 10-22 06:55

    復(fù)位電路介紹 復(fù)位電路的原理及作用

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

    一般運(yùn)算放大器什么時候是數(shù)字電壓供電什么時候是模擬電壓供電?

    您好,我發(fā)現(xiàn)在有的電路中,運(yùn)算放大器是數(shù)字電源,有時候又是模擬電源供電,請問一般運(yùn)算放大器什么時候是數(shù)字電壓供電什么時候是模擬電壓供電?
    發(fā)表于 09-11 06:03

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

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

    什么時候需要用到no phase reversal運(yùn)放呢?

    什么時候需要用到no phase reversal運(yùn)放呢? 此時不用的話會造成什么影響呢?
    發(fā)表于 08-02 14:09