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

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

3天內不再提示

時序約束系列之D觸發(fā)器原理和FPGA時序結構

潘文明 ? 來源:明德揚吳老師 ? 作者:明德揚吳老師 ? 2022-07-11 11:33 ? 次閱讀

明德揚有完整的時序約束課程與理論,接下來我們會一章一章以圖文結合的形式與大家分享時序約束的知識。要掌握FPGA時序約束,了解D觸發(fā)器以及FPGA運行原理是必備的前提。今天第一章,我們就從D觸發(fā)器開始講起。

一、D觸發(fā)器的基本概念

1、D觸發(fā)器結構

首先是D觸發(fā)器的結構,其硬件電路圖如下所示,可以看到D觸發(fā)器包含復位、時鐘、輸入和輸出;信號由D端輸入,clk給到上升沿的指示,Q端輸出信號。

pYYBAGLLmWyAMUelAABC-4R0Mxw405.png

D觸發(fā)器的功能很簡單。

當R等于0時,q固定輸出0;

當R等于1時,遇到CLK的上升沿時,將D的值賦給Q,D是什么Q就是什么;非CLK的上升沿,Q保持不變。

2、D觸發(fā)器代碼

D觸發(fā)器的代碼也很簡單,如下圖所示,從代碼的描述來看,依舊是

rst_n等于0時,q固定輸出0;

當rst_n等于1時,遇到clk的上升沿時,將d的值賦給q,d是什么q就是什么;非clk的上升沿,q保持不變。

poYBAGLLmXSAUYSJAAAnqkVKOxM120.png


3、D觸發(fā)器波形

D觸發(fā)器工作波形如下所示,時鐘處于上升沿的時,如果輸入信號D為1,輸出信號Q也為1;如果輸入信號D為0,那么輸出信號Q也為0。

pYYBAGLLmXyAWrBaAAAmNidVcjI115.png

4、建立時間和保持時間

前面波形圖可以看到,D觸發(fā)器在上升沿處進行信號采集,為了保證采集到的數據準確性,信號D在上升沿前后會保持狀態(tài)一段時間。在上升沿前的這段時間為setup_time,叫做建立時間;上升沿后的這段時間為hold_time部分,叫做保持時間。
1
關于建立時間和保持時間有幾個關鍵點需要注意。

首先D觸發(fā)器的數據輸入端必須在建立時間前到達,并且要保持到持續(xù)時間以后,這樣才可以保證FPGA可以采集到正確的數據。

其次建立時間和保持時間是D觸發(fā)器的固有屬性,是不可改變的。注意,這里說的不可改變,是指不能從代碼層次去改變。例如我們買了一個FPGA開發(fā)板,其FPGA芯片的D觸發(fā)器建立時間和保持時間就是固定的,沒辦法從VERILOG去修改,除非換一個芯片。

二、電路的延時

1、電路延時原理

我們知道從物理層面看電平通過每個階段都是需要一段時間的,這就是電路的延時,我們通過FPGA中最經典的結構來學習一下電路的延時。使用了兩個D觸發(fā)器,中間由組合邏輯進行相連,即通過一個組合邏輯電路將兩個D觸發(fā)器相連。電路圖如下圖所示:

pYYBAGLLmYOAYirmAABQyl_FbbE877.png

從圖中可以看出,一個有效信號經過D觸發(fā)器1之后,接著經過一段組合邏輯(可以是加法器、選擇器、乘法器這些電路,也可以僅僅是連線)然后到達另一個D觸發(fā)器2,D觸發(fā)器2對信號進行判斷后繼續(xù)進行輸出。下面逐個分析這個基本結構里面包含的時間參數。

首先Tclk1是時鐘到D觸發(fā)器1的時間。Tclk2為時鐘到達D觸發(fā)器2的時間,在真實的物理情況下,因為有線路的延時,兩個時鐘采到的上升沿其實是不同的,有一點微小的差別;但是FPGA里面,我們經常把這個時間忽略掉,因為我們FPGA時鐘時專門優(yōu)化過的,它們之間的差別會比較小,因此在這里我們先忽略不計。Tclk1和Tclk2是時鐘延時。

還有一段時間為D觸發(fā)器的傳輸延時,即上升沿之后,采集到的數據從進入到出來這段時間延時。如下圖所示,輸出信號Q在上升沿后一段時間由0變1,這段為D觸發(fā)器的傳輸延時。

pYYBAGLLmXyAWrBaAAAmNidVcjI115.png

接著D觸發(fā)器1之后信號需要通過組合邏輯賦到D觸發(fā)器2之前的位置,這段時間是組合邏輯的延時,即信號通過組合邏輯這段時間的延時為組合邏輯延時Tdata。

最后還有前面講到的建立時間和保持時間,信號在D觸發(fā)器2會有建立時間和保持時間,這就是D觸發(fā)器本身的延時。

2、時序表示電路的延時

這里我們可以用時序來表示這組結構中的信號變化。如下所示,比如我們有兩個時鐘上升沿,在最開始,所有位置的信號都為0。

poYBAGLLmZSAXakJAAAB5zq3MKU239.png

假設一個由0變1的信號需要通過前面的組合邏輯,首先D觸發(fā)器1前面一段由0變1,即圖中點a到點b變?yōu)?,這段時間在時序中如下圖中點a與點b的位置。

poYBAGLLmZqAPilfAACMT25owk4611.png

1)D觸發(fā)器傳輸延時

接著是D觸發(fā)器的傳輸延時,在時鐘上升沿處,信號1從D觸發(fā)器1后輸出,即下圖中信號從c點輸出,這段時間的延時在時序中為時鐘上升沿處到信號輸出的延時,即下面時序圖中Tco部分。

poYBAGLLmaGAPhGfAACQjlbETdE856.png

2)組合邏輯延時間

之后信號會通過組合邏輯,這段時間為組合邏輯的延時Tdata。如下圖所示,此信號由點c通過組合邏輯接著傳輸到點d,在時序圖中為Tdata部分。

poYBAGLLmaiAM5bfAACZy1Q0MRI360.png

3)建立時間

當然不要忘記我們前面講的D觸發(fā)器傳輸信號會有一段的建立時間,因此在時序中信號1會提前到達d點,即信號到達d點時,到達下一個時鐘上升沿還有一段時間,如下面時序圖中Tus部分所示。

pYYBAGLLmbGADh1HAACbj7-mILQ643.png

當然像上圖中這樣信號到達d點的時間與建立時間相等的情況是比較理想的狀態(tài),現實工程中大多數情況下信號1都會提前到達d點,等待建立時間的到來,即時間預量。實際的時序圖如下所示,可以看到信號達到d點的時間與D觸發(fā)器建立時間并不重合,中間會有一段時間預量,這才是實際工程中可以見到的情況。

poYBAGLLmbqAZ-gvAAAX5p2NcTs085.png

以上就是由0變1的信號通過兩個D觸發(fā)器和一段組合邏輯的流程。在理想狀態(tài)下整個過程的延時與時間周期是相等的,但是實際情況下會有一定的變化,這時需要我們具體問題具體分析。

三、D觸發(fā)器在FPGA中的使用

1、FPGA的電路結構

了解了兩個D觸發(fā)器的組合使用,下面學習FPGA的基本電路結構。

pYYBAGLLmb-AAv0cAABAAWSmPq0337.png

FPGA的基本電路結構如上圖所示。我們可以把電路分成兩個部分:D觸發(fā)器和組合邏輯。每兩個D觸發(fā)器之間,都會有或多或少的組合邏輯。組合邏輯可以是乘法器、加法器、RAM,甚至就是一條簡單的連線。前一個D觸發(fā)器的輸出端,經過組合邏輯運算后,給了下一個D觸發(fā)器的輸入端,等待時鐘上升沿的時候,再傳遞給D觸發(fā)器的輸出端。

上圖中,所有的D觸發(fā)器都統(tǒng)一受時鐘CLK的控制,都是在CLK的上升沿把輸入的值傳遞給輸出端。

FPGA中有4個組合邏輯A、B、C、D ,邏輯與邏輯之間,共使用了5個D觸發(fā)器傳輸數據。其中組合邏輯A持續(xù)20納秒,組合邏輯B持續(xù)40納秒,組合邏輯C持續(xù)50納秒,組合邏輯D持續(xù)35納秒。時鐘周期為100納秒,即上升沿100納秒產生一次;每個觸發(fā)器的建立時間為5納秒,保持時間為25納秒。

2、現實案例

為了便于理解,我們用一個生活中的例子類比一下D觸發(fā)器與組合邏輯的關系。如下圖所示,現在有一個生產線生產一款產品,一共需要4個步驟,分別由員工ABCD來完成,其中A做完一個工序需要2小時,B需要1小時,C需要3小時,D是0.5小時。工廠統(tǒng)一規(guī)定每隔5個小時交接一次;為了避免交接混亂,要求交接點前5分鐘交接,交接點后10分鐘才能繼續(xù)工作。

poYBAGLLmcaAcfJvAABumncdysI897.png

此生產線就像是前面我們講到的FPGA電路結構,四個員工就相當于FPGA中四個組合邏輯,大家在同一個環(huán)境下工作,被同一個時鐘所支配,相互間又有著傳輸關系。

要求每5個小時交接一次相當于100納秒產生一次時鐘上升沿;每一位員工交接給下一位員工的這個過程就相當于D觸發(fā)器將輸入的值賦給輸出。

所有員工在交接點前5分鐘都停下手中工作,進入準備交接狀態(tài),5分鐘相當于D觸發(fā)器的建立時間5納秒;交接點后10分鐘,大家依舊保持交接狀態(tài),10分鐘相當于D觸發(fā)器的保持時間25納秒。

公司的規(guī)定必須提前5分鐘,等待10分鐘進行交接,就和D觸發(fā)器的硬件特性相同,交接時間是不能因為個人改變的;不論工作什么時候完成,在交接點前5分鐘一定要準備交接,交接點后保持交接狀態(tài)10分鐘才可以繼續(xù)工作,這樣才可以保證整個生產線可以流暢進行。

我們用了一個簡單的案例比較清晰的理解了D觸發(fā)器,通俗來說就是需要傳輸的數據等待在D觸發(fā)器前,D觸發(fā)器每個時鐘都會在門口進行檢測,檢測到了有效數據后,在此時鐘上升沿進行數據輸出。

審核編輯:湯梓紅

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

    關注

    1629

    文章

    21738

    瀏覽量

    603461
  • D觸發(fā)器
    +關注

    關注

    3

    文章

    164

    瀏覽量

    47917
  • 時序約束
    +關注

    關注

    1

    文章

    115

    瀏覽量

    13425
收藏 人收藏

    評論

    相關推薦

    FPGA的IO口時序約束分析

      在高速系統(tǒng)中FPGA時序約束不止包括內部時鐘約束,還應包括完整的IO時序約束
    發(fā)表于 09-27 09:56 ?1754次閱讀

    FPGA時序約束衍生時鐘約束和時鐘分組約束

    FPGA設計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束
    發(fā)表于 06-12 17:29 ?2745次閱讀

    什么是時序分析?教你掌握FPGA時序約束

    時序分析本質上就是一種時序檢查,目的是檢查設計中所有的D觸發(fā)器是否能夠正常工作,也就是檢查D觸發(fā)器
    發(fā)表于 07-14 10:48 ?3361次閱讀
    什么是<b class='flag-5'>時序</b>分析?教你掌握<b class='flag-5'>FPGA</b><b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    FPGA I/O口時序約束講解

    前面講解了時序約束的理論知識FPGA時序約束理論篇,本章講解時序
    發(fā)表于 08-14 18:22 ?1649次閱讀
    <b class='flag-5'>FPGA</b> I/O口<b class='flag-5'>時序</b><b class='flag-5'>約束</b>講解

    時序邏輯電路的概述和觸發(fā)器

    習時把這一章分為兩節(jié),它們分別是:§5、1 時序電路的概述§5、2 觸發(fā)器 5、1 時序電路的概述 這一節(jié)我們來學習一些關于時序電路的概念,在學習時要注意同步
    發(fā)表于 08-23 10:36

    FPGA設計為什么要加時序約束?加時序約束有什么作用?

    ,因此,為了避免這種情況,必須對fpga資源布局布線進行時序約束以滿足設計要求。因為時鐘周期是預先知道的,而觸發(fā)器之間的延時是未知的(兩個觸發(fā)器
    發(fā)表于 08-29 09:34

    觸發(fā)器時序邏輯電路

    一、基本要求1、理解R-S觸發(fā)器、J-K觸發(fā)器D觸發(fā)器的邏輯功能;2、掌握觸發(fā)器構成的時序電路
    發(fā)表于 08-26 11:40 ?57次下載

    Xilinx時序約束培訓教材

    時序約束的概念 時序約束主要包括周期約束(FFS到FFS,即觸發(fā)器
    發(fā)表于 03-16 18:10 ?0次下載

    FPGA時序約束方法

    FPGA時序約束方法很好地資料,兩大主流的時序約束都講了!
    發(fā)表于 12-14 14:21 ?19次下載

    FPGA中的時序約束設計

    一個好的FPGA設計一定是包含兩個層面:良好的代碼風格和合理的約束。時序約束作為FPGA設計中不可或缺的一部分,已發(fā)揮著越來越重要的作用。毋
    發(fā)表于 11-17 07:54 ?2574次閱讀
    <b class='flag-5'>FPGA</b>中的<b class='flag-5'>時序</b><b class='flag-5'>約束</b>設計

    D觸發(fā)器結構時序介紹

    D觸發(fā)器是一個具有記憶功能的,具有兩個穩(wěn)定狀態(tài)的信息存儲器件,是構成多種時序電路的最基本邏輯單元,也是數字邏輯電路中一種重要的單元電路。
    的頭像 發(fā)表于 12-02 07:06 ?7085次閱讀
    <b class='flag-5'>D</b><b class='flag-5'>觸發(fā)器</b>:<b class='flag-5'>結構</b>及<b class='flag-5'>時序</b>介紹

    FPGA時序約束的概念和基本策略

    A 時序約束的概念和基本策略 時序約束主要包括周期約束(FFS到FFS,即觸發(fā)器
    的頭像 發(fā)表于 09-30 15:17 ?5098次閱讀

    FPGA約束、時序分析的概念詳解

    A 時序約束的概念和基本策略 時序約束主要包括周期約束(FFS到FFS,即觸發(fā)器
    的頭像 發(fā)表于 10-11 10:23 ?5557次閱讀
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>約束</b>、<b class='flag-5'>時序</b>分析的概念詳解

    FPGA設計之時序約束

    上一篇《FPGA時序約束分享01_約束四大步驟》一文中,介紹了時序約束的四大步驟。
    發(fā)表于 03-18 10:29 ?1673次閱讀
    <b class='flag-5'>FPGA</b>設計之<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    FPGA設計的D觸發(fā)器與亞穩(wěn)態(tài)

    系列整理數字系統(tǒng)設計的相關知識體系架構,為了方便后續(xù)自己查閱與求職準備。對于FPGA和ASIC設計中,D觸發(fā)器是最常用的器件,也可以說是時序
    的頭像 發(fā)表于 05-12 16:37 ?2006次閱讀
    <b class='flag-5'>FPGA</b>設計的<b class='flag-5'>D</b><b class='flag-5'>觸發(fā)器</b>與亞穩(wěn)態(tài)