RM新时代网站-首页

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

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

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

FPGA入門之復(fù)位電路設(shè)計(jì)

jf_78858299 ? 來源:FPGA學(xué)習(xí)者 ? 作者:Dawn yuan ? 2023-05-25 15:55 ? 次閱讀

復(fù)位電路設(shè)計(jì)

前面在時(shí)序分析中提到過亞穩(wěn)態(tài)的概念,每天學(xué)習(xí)一點(diǎn)FPGA知識(shí)點(diǎn)(9)之時(shí)序分析并且在電路設(shè)計(jì)中如果不滿足Tsu(建立時(shí)間)和Th(保持時(shí)間),很容易就出現(xiàn)亞穩(wěn)態(tài);在跨時(shí)鐘域傳輸?shù)囊幌盗写胧┮彩菫榱私档蛠喎€(wěn)態(tài)發(fā)生的概率。

今天再說另一個(gè)可能會(huì)產(chǎn)生亞穩(wěn)態(tài)問題的電路;

復(fù)位電路;

1??recovery time和removal time

在正式開始復(fù)位電路設(shè)計(jì)之前,先說明兩個(gè)概念,恢復(fù)時(shí)間(recovery time)和移除時(shí)間(removal time)。[注,此處以低電平復(fù)位為例]

恢復(fù)時(shí)間:撤銷復(fù)位時(shí),復(fù)位信號(hào)無效到時(shí)鐘有效沿來臨之前需要維持的最小的時(shí)間,稱為恢復(fù)時(shí)間,類似于同步時(shí)鐘的建立時(shí)間setup time;

移除時(shí)間:撤銷復(fù)位時(shí),在時(shí)鐘有效沿來臨之后復(fù)位信號(hào)還需要保持復(fù)位狀態(tài)的時(shí)間為去除時(shí)間,類似于同步時(shí)鐘的保持時(shí)間hold time;

如下圖所示:

圖片

[注]:

①概念中所說的兩個(gè)時(shí)鐘沿并不是同一個(gè)時(shí)鐘沿,可以從另一個(gè)角度解釋:以復(fù)位結(jié)束的上升沿(低電平復(fù)位的情況下)為基準(zhǔn),復(fù)位結(jié)束前一個(gè)時(shí)鐘沿到復(fù)位結(jié)束之間為移除時(shí)間;復(fù)位結(jié)束后到下一個(gè)時(shí)鐘沿之間為恢復(fù)時(shí)間。

②兩個(gè)定義都是在復(fù)位結(jié)束的時(shí)候定義的,因?yàn)閺?fù)位結(jié)束,系統(tǒng)馬上處于工作狀態(tài),所以才需要考慮亞穩(wěn)態(tài)問題。

2??同步復(fù)位和異步復(fù)位

①同步復(fù)位

同步復(fù)位:指的是加到所有功能觸發(fā)器上的復(fù)位信號(hào)完全同步于時(shí)鐘信號(hào)源。復(fù)位信號(hào)只有在時(shí)鐘上升沿到來時(shí),才能有效,否則,無法完成對(duì)系統(tǒng)的復(fù)位工作。復(fù)位原理如下圖所示:

圖片

[圖源:CSDN@小汪的IC自習(xí)室]

其代碼如下:

module test(
  input        sys_clk,
  input        sys_rst_n,


  input        din,
  output  reg   dout
  );


  always@(posedge sys_clk) begin
    if(!sys_rst_n)
      dout <= 1'b0;
    else
      dout <= din;
  end
endmodule

綜合后的電路圖如下:

圖片

優(yōu)點(diǎn)

*系統(tǒng)為同步時(shí)序,有利于時(shí)序分析;

*抗干擾性能好,能有效剔除信號(hào)中短于時(shí)鐘周期的毛刺;

缺點(diǎn)

*復(fù)位信號(hào)的有效時(shí)長必須大于時(shí)鐘周期,才能真正被系統(tǒng)識(shí)別并完成復(fù)位。同時(shí)還要考慮如:時(shí)鐘偏移、組合邏輯路徑延時(shí)、復(fù)位延時(shí)等因素。

*由于大多數(shù)的廠商目標(biāo)庫內(nèi)的觸發(fā)器都只有異步復(fù)位端口,采用同步復(fù)位的話,就會(huì)耗費(fèi)較多的邏輯資源(如上圖中使用了一個(gè)2選1多路選擇器)。

②異步復(fù)位

復(fù)位信號(hào)直接接到功能觸發(fā)器的異步復(fù)位引腳,復(fù)位只與復(fù)位信號(hào)有關(guān),與時(shí)鐘無關(guān)。無論時(shí)鐘沿是否到來,只要復(fù)位信號(hào)有效,就對(duì)系統(tǒng)進(jìn)行復(fù)位。異步復(fù)位的工作原理如下圖所示:

圖片

其代碼如下:

module test(
  input        sys_clk,
  input        sys_rst_n,


  input        din,
  output  reg   dout
  );


  always@(posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n)
      dout <= 1'b0;
    else
      dout <= din;
  end
endmodule

綜合出的電路圖,如下圖所示:

圖片 通過這個(gè)圖能很明顯得看出來,比同步復(fù)位電路少用了一些資源。

優(yōu)點(diǎn)

*異步復(fù)位信號(hào)識(shí)別方便,很容易應(yīng)用到全局復(fù)位;

*可以節(jié)省邏輯資源(對(duì)比兩個(gè)復(fù)位電路即可看出);

缺點(diǎn)

*復(fù)位信號(hào)容易受到毛刺的影響,一點(diǎn)毛刺信號(hào)就有可能引發(fā)電路復(fù)位,造成系統(tǒng)運(yùn)行錯(cuò)誤。

*復(fù)位信號(hào)的釋放具有隨機(jī)性,如果復(fù)位信號(hào)釋放不滿足recovery或者removal,則會(huì)導(dǎo)致亞穩(wěn)態(tài)的產(chǎn)生。

當(dāng)然了,其實(shí)在同步復(fù)位情況下,也會(huì)有亞穩(wěn)態(tài)問題的產(chǎn)生,詳情參考文章《 FPGA中亞穩(wěn)態(tài)——讓你無處可逃 》,作者博客園:@屋檐下的龍卷風(fēng)。

3??異步復(fù)位同步釋放

對(duì)于復(fù)位情況下的亞穩(wěn)態(tài),常常是因?yàn)椴粷M足時(shí)序要求造成的(主要是recovery和removal),最常用的處理方式是異步復(fù)位,同步釋放。

通過異步復(fù)位和同步釋放,可以使復(fù)位信號(hào)到來時(shí),不受時(shí)鐘控制,可以立即復(fù)位;但是復(fù)位信號(hào)釋放時(shí),受同步時(shí)鐘控制。

電路原理圖如下:

圖片

先通過兩級(jí)觸發(fā)器進(jìn)行異步復(fù)位信號(hào)的同步,輸出的信號(hào)作為后續(xù)整個(gè)系統(tǒng)的復(fù)位信號(hào);

其對(duì)應(yīng)的代碼如下:

module test(
  input        sys_clk,        //系統(tǒng)時(shí)鐘信號(hào)
  input        async_rst_n,    //外部輸入的復(fù)位信號(hào)


  input        din,          //輸入的數(shù)據(jù)信號(hào)
  output  reg   dout          //輸出的數(shù)據(jù)信號(hào)
  );    
  reg  sync_rst_n1;            //第一級(jí)觸發(fā)器輸出
  reg  sync_rst_n2;            //第二級(jí)觸發(fā)器輸出,經(jīng)釋放同步后的復(fù)位信號(hào)


  always@(posedge sys_clk or negedge async_rst_n)begin
    if(!async_rst_n)begin
      sync_rst_n1 <= 1'b0;
      sync_rst_n2 <= 1'b0;
    end
    else begin
      sync_rst_n1 <= 1'b1;
      sync_rst_n2 <= sync_rst_n1;
    end
  end


    always@(posedge sys_clk or negedge sync_rst_n2) begin
        if(!sync_rst_n2)
      dout <= 1'b0;
    else
      dout <= din;
    end
endmodule

綜合后的電路圖如圖所示:

圖片

接下來,對(duì)該電路進(jìn)行仿真分析,看看是如何異步復(fù)位、同步釋放的。testbench文件如下:

`timescale 1ns/1ps


module test_tb;


  reg  sys_clk;        //系統(tǒng)時(shí)鐘信號(hào)
  reg  async_rst_n;    //外部輸入的復(fù)位信號(hào)

  reg  din;          //輸入的數(shù)據(jù)信號(hào)
  wire  dout;          //輸出的數(shù)據(jù)信號(hào)




test test_u1(
  .sys_clk(sys_clk),        //系統(tǒng)時(shí)鐘信號(hào)
  .async_rst_n(async_rst_n),    //外部輸入的復(fù)位信號(hào)

  .din(din),          //輸入的數(shù)據(jù)信號(hào)
  .dout(dout)          //輸出的數(shù)據(jù)信號(hào)
  );    


  always #10 sys_clk = ~sys_clk;

  initial begin
    sys_clk = 0;
    async_rst_n = 0;
    din = 1;
    #19;
    async_rst_n = 1;
    #99;
    async_rst_n = 0;
    #34;
    async_rst_n = 1;
    #97;
    async_rst_n = 0;
    #3;
    async_rst_n = 1;
    #71;
    async_rst_n = 0;
    #16;
    async_rst_n = 1;

    #200;
    $stop;
  end


endmodule

當(dāng)然了,我只是簡單的仿真一下,也許寫的testbench并不是很好,能說明問題即可,仿真圖如下圖所示:

圖片

上圖中,很明顯的可以看出,異步復(fù)位信號(hào)(低電平)到來時(shí),dout立馬變?yōu)?,但是在復(fù)位信號(hào)釋放后延遲兩個(gè)周期,到第三個(gè)周期才真正的恢復(fù)到工作狀態(tài);這跟我們一開始使用的兩級(jí)觸發(fā)器對(duì)釋放信號(hào)進(jìn)行同步有關(guān)系。

異步復(fù)位和同步釋放,其實(shí)可以分開來看,單純的理解為兩個(gè)信號(hào)來控制著整個(gè)系統(tǒng)。同步釋放信號(hào)相對(duì)于外部復(fù)位信號(hào)的釋放總是存在一定的延遲,不過延遲很小,也就兩個(gè)周期,實(shí)際中也是可以接受的。

關(guān)于復(fù)位電路的設(shè)計(jì)就暫時(shí)說到這里,不過好像沒有說完,還有關(guān)于配置PLL之后的系統(tǒng)復(fù)位電路怎么設(shè)計(jì)等等,以后再詳細(xì)討論

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

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602986
  • 亞穩(wěn)態(tài)
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    13268
  • 復(fù)位電路
    +關(guān)注

    關(guān)注

    13

    文章

    322

    瀏覽量

    44586
  • 時(shí)序分析
    +關(guān)注

    關(guān)注

    2

    文章

    127

    瀏覽量

    22565
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA和CPLD內(nèi)部自復(fù)位電路設(shè)計(jì)方案

    本文描述了復(fù)位的定義,分類及不同復(fù)位設(shè)計(jì)的影響,并討論了針對(duì)FPGA和CPLD的內(nèi)部自復(fù)位方案。
    發(fā)表于 07-11 14:33 ?6775次閱讀
    <b class='flag-5'>FPGA</b>和CPLD內(nèi)部自<b class='flag-5'>復(fù)位</b><b class='flag-5'>電路設(shè)計(jì)</b>方案

    fpga設(shè)計(jì)實(shí)戰(zhàn):復(fù)位電路仿真設(shè)計(jì)

    最近看advanced fpga 以及fpga設(shè)計(jì)實(shí)戰(zhàn)演練中有講到復(fù)位電路的設(shè)計(jì),才知道復(fù)位電路
    發(fā)表于 09-01 15:37 ?1713次閱讀
    <b class='flag-5'>fpga</b>設(shè)計(jì)實(shí)戰(zhàn):<b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>仿真設(shè)計(jì)

    Xilinx FPGA入門連載17:PWM蜂鳴器驅(qū)動(dòng)之復(fù)位FPGA重配置功能

    `Xilinx FPGA入門連載17:PWM蜂鳴器驅(qū)動(dòng)之復(fù)位FPGA重配置功能特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1jGjAh
    發(fā)表于 10-26 12:05

    復(fù)位電路設(shè)計(jì)選型指南

    復(fù)位電路設(shè)計(jì)選型指南 介紹安森美(ON)公司及EXAR公司所生產(chǎn)的各種類型復(fù)位器件,方便工程師設(shè)計(jì)選型。
    發(fā)表于 04-02 12:12 ?0次下載

    FPGA的理想的復(fù)位方法和技巧

    FPGA設(shè)計(jì)中,復(fù)位起到的是同步信號(hào)的作用,能夠?qū)⑺械拇鎯?chǔ)元件設(shè)置成已知狀態(tài)。在數(shù)字電路設(shè)計(jì)中,設(shè)計(jì)人員一般把全局復(fù)位作為一個(gè)外部引腳來實(shí)現(xiàn),在加電的時(shí)候初始化設(shè)計(jì)。全局
    發(fā)表于 11-22 17:03 ?5665次閱讀
    <b class='flag-5'>FPGA</b>的理想的<b class='flag-5'>復(fù)位</b>方法和技巧

    PIC24H系列參考手冊(cè)之復(fù)位

    本文主要介紹了PIC24H系列參考手冊(cè)之復(fù)位模塊。
    發(fā)表于 06-22 04:20 ?7次下載
    PIC24H系列參考手冊(cè)<b class='flag-5'>之復(fù)位</b>

    dsPIC30F系列參考手冊(cè)之復(fù)位

    本文主要介紹了dsPIC30F系列參考手冊(cè)之復(fù)位模塊。
    發(fā)表于 06-24 03:20 ?9次下載
    dsPIC30F系列參考手冊(cè)<b class='flag-5'>之復(fù)位</b>

    PIC24F系列參考手冊(cè)之復(fù)位模塊

    本文主要介紹了PIC24F系列參考手冊(cè)之復(fù)位模塊。
    發(fā)表于 06-06 17:28 ?2次下載

    FPGA怎么搭復(fù)位電路 fpga復(fù)位電路設(shè)計(jì)方案

    FPGA的可靠復(fù)位是保證系統(tǒng)能夠正常工作的必要條件,本文對(duì)FPGA設(shè)計(jì)中常用的復(fù)位設(shè)計(jì)方法進(jìn)行了分類、分析和比較,并針對(duì)各種復(fù)位方式的特點(diǎn),
    發(fā)表于 08-08 15:14 ?1w次閱讀

    實(shí)現(xiàn)FPGA實(shí)戰(zhàn)復(fù)位電路的設(shè)計(jì)和仿真

    最近看 advanced fpga 以及 fpga 設(shè)計(jì)實(shí)戰(zhàn)演練中有講到復(fù)位電路的設(shè)計(jì),才知道復(fù)位電路
    發(fā)表于 12-22 12:54 ?13次下載
    實(shí)現(xiàn)<b class='flag-5'>FPGA</b>實(shí)戰(zhàn)<b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>的設(shè)計(jì)和仿真

    stm32復(fù)位電路設(shè)計(jì)

    stm32復(fù)位電路設(shè)計(jì)
    發(fā)表于 06-26 09:26 ?8次下載

    FPGA內(nèi)部自復(fù)位電路設(shè)計(jì)方案

    。 下面將討論FPGA/CPLD的復(fù)位電路設(shè)計(jì)。 2、分類及不同復(fù)位設(shè)計(jì)的影響 根據(jù)電路設(shè)計(jì)復(fù)位
    的頭像 發(fā)表于 04-06 16:45 ?1443次閱讀

    復(fù)位電路設(shè)計(jì)分析

    我們?cè)跀?shù)字電路設(shè)計(jì)時(shí),為了使系統(tǒng)在上電后處于 **已知的確定狀態(tài)** ,常使用復(fù)位電路來實(shí)現(xiàn)這一目的。復(fù)位是數(shù)字邏輯電路所必須的,無論是最簡
    的頭像 發(fā)表于 05-25 14:48 ?4984次閱讀
    <b class='flag-5'>復(fù)位</b><b class='flag-5'>電路設(shè)計(jì)</b>分析

    FPGA復(fù)位電路的實(shí)現(xiàn)方式

    有人說FPGA不需要上電復(fù)位電路,因?yàn)閮?nèi)部自帶上電復(fù)位信號(hào)。也有人說FPGA最好加一個(gè)上電復(fù)位
    的頭像 發(fā)表于 05-25 15:50 ?3491次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>復(fù)位</b><b class='flag-5'>電路</b>的實(shí)現(xiàn)方式

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

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