FPGA基礎知識(四)鎖存器、觸發器、寄存器和緩衝器的區別

来源:http://www.cnblogs.com/yinknight/archive/2017/06/26/7079830.html
-Advertisement-
Play Games

一、鎖存器鎖存器(latch) 對脈衝電平敏感,在時鐘脈衝的電平作用下改變狀態鎖存器是電平觸發的存儲單元,數據存儲的動作取決於輸入時鐘(或者使能)信號的電平值,僅當鎖存器處於使能狀態時,輸出才會隨著數據輸入發生變化。鎖存器不同於觸發器,它不在鎖存數據時,輸出端的信號隨輸入信號變化,就像信號通過一個緩 ...


一、鎖存器
鎖存器(latch)---對脈衝電平敏感,在時鐘脈衝的電平作用下改變狀態
鎖存器是電平觸發的存儲單元,數據存儲的動作取決於輸入時鐘(或者使能)信號的電平值,僅當鎖存器處於使能狀態時,輸出才會隨著數據輸入發生變化。
鎖存器不同於觸發器,它不在鎖存數據時,輸出端的信號隨輸入信號變化,就像信號通過一個緩衝器一樣;一旦鎖存信號起鎖存作用,則數據被鎖住,輸入信號不起作用。鎖存器也稱為透明鎖存器,指的是不鎖存時輸出對於輸入是透明的。
鎖存器(latch):我聽過的最多的就是它是電平觸發的,呵呵。鎖存器是電平觸發的存儲單元,數據存儲的動作取決於輸入時鐘(或者使能)信號的電平值,當鎖存器處於使能狀態時,輸出才會隨著數據輸入發生變化。(簡單地說,它有兩個輸入,分別是一個有效信號EN,一個輸入數據信號DATA_IN,它有一個輸出Q,它的功能就是在EN有效的時候把DATA_IN的值傳給Q,也就是鎖存的過程)。應用場合:數據有效遲後於時鐘信號有效。這意味著時鐘信號先到,數據信號後到。在某些運算器電路中有時採用鎖存器作為數據暫存器。
缺點:時序分析較困難。
不要鎖存器的原因有二:1、鎖存器容易產生毛刺,2、鎖存器在ASIC設計中應該說比ff要簡單,但是在FPGA的資源中,大部分器件沒有鎖存器這個東西,所以需要用一個邏輯門和ff來組成鎖存器,這樣就浪費了資源。
優點:面積小。鎖存器比FF快,所以用在地址鎖存是很合適的,不過一定要保證所有的latch信號源的質量,鎖存器在CPU設計中很常見,正是由於它的應用使得CPU的速度比外部IO部件邏輯快許多。latch完成同一個功能所需要的門較觸發器要少,所以在asic中用的較多。

二、觸發器
觸發器(Flip-Flop,簡寫為 FF),也叫雙穩態門,又稱雙穩態觸發器。是一種可以在兩種狀態下運行的數字邏輯電路。觸發器一直保持它們的狀態,直到它們收到輸入脈衝,又稱為觸發。當收到輸入脈衝時,觸發器輸出就會根據規則改變狀態,然後保持這種狀態直到收到另一個觸發。
觸發器(flip-flops)電路相互關聯,從而為使用記憶體晶元和微處理器的數字集成電路(IC)形成邏輯門。它們可用來存儲一比特的數據。該數據可表示音序器的狀態、計數器的價值、在電腦記憶體的ASCII字元或任何其他的信息。
有幾種不同類型的觸發器(flip-flops)電路具有指示器,如T(切換)、S-R(設置/重置)J-K(也可能稱為Jack Kilby)和D(延遲)。典型的觸發器包括零個、一個或兩個輸入信號,以及時鐘信號和輸出信號。一些觸發器還包括一個重置當前輸出的明確輸入信號。第一個電子觸發器是在1919年由W.H.Eccles和F.W.Jordan發明的。
觸發器(flip-flop)---對脈衝邊沿敏感,其狀態只在時鐘脈衝的上升沿或下降沿的瞬間改變。
T觸發器(Toggle Flip-Flop,or Trigger Flip-Flop)設有一個輸入和輸出,當時鐘頻率由0轉為1時,如果T和Q不相同時,其輸出值會是1。輸入端T為1的時候,輸出端的狀態Q發生反轉;輸入端T為0的時候,輸出端的狀態Q保持不變。把JK觸發器的J和K輸入點連接在一起,即構成一個T觸發器。
應用場合:時鐘有效遲後於數據有效。這意味著數據信號先建立,時鐘信號後建立。在CP上升沿時刻打入到寄存器。

三、寄存器

寄存器(register):用來存放數據的一些小型存儲區域,用來暫時存放參與運算的數據和運算結果,它被廣泛的用於各類數字系統和電腦中。其實寄存器就是一種常用的時序邏輯電路,但這種時序邏輯電路只包含存儲電路。寄存器的存儲電路是由鎖存器或觸發器構成的,因為一個鎖存器或觸發器能存儲1位二進位數,所以由N個鎖存器或觸發器可以構成N位寄存器。 工程中的寄存器一般按電腦中位元組的位數設計,所以一般有8位寄存器、16位寄存器等。
對寄存器中的觸發器只要求它們具有置1、置0的功能即可,因而無論是用同步RS結構觸發器,還是用主從結構或邊沿觸髮結構的觸發器,都可以組成寄存器。一般由D觸發器組成,有公共輸入/輸出使能控制端和時鐘,一般把使能控制端作為寄存器電路的選擇信號,把時鐘控制端作為數據輸入控制信號。

寄存器的應用
1. 可以完成數據的並串、串並轉換;
2.可以用做顯示數據鎖存器:許多設備需要顯示計數器的記數值,以8421BCD碼記數,以七段顯示器顯示,如果記數速度較高,人眼則無法辨認迅速變化的顯示字元。在計數器和解碼器之間加入一個鎖存器,控制數據的顯示時間是常用的方法。
3.用作緩衝器;
4. 組成計數器:移位寄存器可以組成移位型計數器,如環形或扭環形計數器。

四、移位寄存器
移位寄存器:具有移位功能的寄存器稱為移位寄存器。
寄存器只有寄存數據或代碼的功能。有時為了處理數據,需要將寄存器中的各位數據在移位控制信號作用下,依次向高位或向低位移動1位。移位寄存器按數位移動方向分類有左移,右移,可控制雙向(可逆)移位寄存器;按數據輸入端、輸出方式分類有串列和並行之分。除了D邊沿觸發器構成移位寄存器外,還可以用諸如JK等觸發器構成移位寄存器。


五、匯流排收發器/緩衝器
緩衝寄存器:又稱緩衝器緩衝器(buffer):多用在匯流排上,提高驅動能力、隔離前後級,緩衝器多半有三態輸出功能。當負載不具有非選通輸出為高阻特性時,將起到隔離作用;當匯流排的驅動能力不夠驅動負載時,將起到驅動作用。由於緩衝器接在數據匯流排上,故必須具有三態輸出功能。
它分輸入緩衝器和輸出緩衝器兩種。前者的作用是將外設送來的數據暫時存放,以便處理器將它取走;後者的作用是用來暫時存放處理器送往外設的數據。有了數控緩衝器,就可以使高速工作的CPU與慢速工作的外設起協調和緩衝作用,實現數據傳送的同步。
Buffer:緩衝區,一個用於在初速度不同步的設備或者優先順序不同的設備之間傳輸數據的區域。通過緩衝區,可以使進程之間的相互等待變少,從而使從速度慢的設備讀入數據時,速度快的設備的操作進程不發生間斷。
緩衝器主要是電腦領域的稱呼。具體實現上,緩衝器有用鎖存器結構的電路來實現,也有用不帶鎖存結構的電路來實現。一般來說,當收發數據雙方的工作速度匹配時,這裡的緩衝器可以用不帶鎖存結構的電路來實現;而當收發數據雙方的工作速度不匹配時,就要用帶鎖存結構的電路來實現了(否則會出現數據丟失)。
緩衝器在數字系統中用途很多:
(1)如果器件帶負載能力有限,可加一級帶驅動器的緩衝器;
(2)前後級間邏輯電平不同,可用電平轉換器加以匹配;
(3)邏輯極性不同或需要將單性變數轉換為互補變數時,加帶反相緩衝器;

(4)需要將緩變信號變為邊沿陡峭信號時,加帶施密特電路的緩衝器
(5)數據傳輸和處理中不同裝置間溫度和時間不同時,加一級緩衝器進行彌補等等。


六、鎖存器與觸發器的區別

鎖存器和觸發器是具有記憶功能的二進位存貯器件,是組成各種時序邏輯電路的基本器件之一。區別為:latch同其所有的輸入信號相關,當輸入信號變化時latch就變化,沒有時鐘端;flip-flop受時鐘控制,只有在時鐘觸發時才採樣當前的輸入,產生輸出。當然因為latch和flip-flop二者都是時序邏輯,所以輸出不但同當前的輸入相關還同上一時間的輸出相關。
1、latch由電平觸發,非同步控制。在使能信號有效時latch相當於通路,在使能信號無效時latch保持輸出狀態。DFF由時鐘沿觸發,同步控制。
2、latch對輸入電平敏感,受佈線延遲影響較大,很難保證輸出沒有毛刺產生;DFF則不易產生毛刺。
3、如果使用門電路來搭建latch和DFF,則latch消耗的門資源比DFF要少,這是latch比DFF優越的地方。所以,在ASIC中使用 latch的集成度比DFF高,但在FPGA中正好相反,因為FPGA中沒有標準的latch單元,但有DFF單元,一個LATCH需要多個LE才能實現。latch是電平觸發,相當於有一個使能端,且在激活之後(在使能電平的時候)相當於導線了,隨輸出而變化。在非使能狀態下是保持原來的信號,這就可以看出和flip-flop的差別,其實很多時候latch是不能代替ff的。

4、latch將靜態時序分析變得極為複雜。
5、目前latch只在極高端的電路中使用,如intel 的P4等CPU。 FPGA中有latch單元,寄存器單元就可以配置成latch單元,在xilinx v2p的手冊將該單元配置成為register/latch單元,附件是xilinx半個slice的結構圖。其它型號和廠家的FPGA沒有去查證。——個人認為xilinx是能直接配的而altera或許比較麻煩,要幾個LE才行,然而也非xilinx的器件每個slice都可以這樣配置,altera的只有DDR介面中有專門的latch單元,一般也只有高速電路中會採用latch的設計。altera的LE是沒有latch的結構的,又查了sp3和sp2e,別的不查了,手冊上說支持這種配置。有關altera的表述wangdian說的對,altera的ff不能配置成latch,它使用查找表來實現latch。
一般的設計規則是:在絕大多數設計中避免產生latch。它會讓您設計的時序完蛋,並且它的隱蔽性很強,非老手不能查出。latch最大的危害在於不能過濾毛刺。這對於下一級電路是極其危險的。所以,只要能用D觸發器的地方,就不用latch。

鎖存器電平觸發會把輸入端的毛刺帶入輸出;而觸發器由於邊沿作用可以有效抑制輸入端干擾。
在 CMOS 晶元內部經常使用鎖存器, 但是在PCB板級結構上, 建議用觸發器在時鐘邊沿上鎖存數據。這是因為在鎖存器閘門開啟期間數據的變化會直接反映到輸出端, 所以要註意控制閘門信號的脈衝寬度,而對於觸發器,只考慮時鐘的邊沿。
門電路是構建組合邏輯電路的基礎,而鎖存器和觸發器是構建時序邏輯電路的基礎。門電路是由晶體管構成的,鎖存器是由門電路構成的,而觸發器是由鎖存器構成的。也就是晶體管->門電路->鎖存器->觸發器,前一級是後一級的基礎。鎖存器和觸發器它們的輸出都不僅僅取決於目前的輸入,而且和之前的輸入和輸出都有關係。
它們之間的不同在於:鎖存器沒有時鐘信號,而觸發器常常有時鐘觸發信號。
鎖存器是非同步的,就是說在輸入信號改變後,輸出信號也隨之很快做出改變非常快。而另外一方面,今天許多電腦是同步的,這就意味著所有的時序電路的輸出信號隨著全局的時鐘信號同時做出改變。觸發器是一個同步版鎖存器。

觸發器泛指一類電路結構,它可以由觸發信號 (如: 時鐘、置位、複位等) 改變輸出狀態, 並保持這個狀態直到下一個或另一個觸發信號來到時。觸發信號可以用電平或邊沿操作,鎖存器是觸發器的一種應用類型。

七、D觸發器和D鎖存器的區別
鐘控D觸發器其實就是D鎖存器,邊沿D觸發器才是真正的D觸發器,鐘控D觸發器在使能情況下輸出隨輸入變化,邊沿觸發器只有在邊沿跳變的情況下輸出才變化。
兩個鎖存器可以構成一個觸發器,歸根到底還是dff是邊沿觸發的,而latch是電平觸發的。鎖存器的輸出對輸入透明的,輸入是什麼,輸出就是什麼,這就是鎖存器不穩定的原因,而觸發器是由兩個鎖存器構成的一個主從觸發器,輸出對輸入是不透明的,必須在時鐘的上升/下降沿才會將輸入體現到輸出,所以能夠消除輸入的毛刺信號。


八、寄存器與鎖存器的區別
寄存器與鎖存器的功能是提供數據寄存和鎖存。
寄存功能是指把數據暫時保存,需要時取出。鎖存功能是指匯流排電路中,鎖定數據輸出,使輸出端不隨輸入端變化。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JavaBean:資料庫表和實體類的對應關係 1.資料庫中有一張表,就會有一個和表對應的類 資料庫:Person表 Java:Preson類 2.表中的每一列,對應Java中的一個欄位(成員變數) 3.表中的每一行,對應Java中的一個對象 張三 18 男 new Person(張三 18 男); ...
  • 用正則表達式來提取網頁中的內容是相當麻煩的,這裡介紹一個可以從HTML或XML文件中提取數據的Python庫:Beautiful Soup.它能夠通過你喜歡的轉換器實現慣用的文檔導航,查找,修改文檔的方式.Beautiful Soup會幫你節省數小時甚至數天的工作時間.Beautiful Soup ...
  • Javascript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在html(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。 在1995年時,由Nets ...
  • 在平時我們可能會碰到過php文件,可是很多用戶不知道php文件是什麼文件?也不知道怎麼打開php文件?為了滿足一些用戶的好奇心,小編現在就給大家講解php文件以及如何打開php文件的方法。 1、PHP文件是什麼? PHP(Hypertext Preprocessor)超文本預處理器,是一種在伺服器端 ...
  • 原文出處:http://developer.51cto.com/art/201003/186339.htm 關於JVM參數調優,對於很多程式員來說都是很頭痛的問題,如果設置的不好,JVM不斷執行Full GC,將導致整個系統變得很慢,網站停滯時間能達10秒以上,這種情況如果沒隔幾分鐘就來一次,自己都 ...
  • 寫在前面: 對於客戶端,服務端開發好了以後,客戶端只需要調用就可以了。這裡我們講的是,根據服務的訪問地址,來生成客戶端所需要用到的代碼(聽說有幾種調用方式,但是用到最常見的就是stub方式,貌似我說的這種方式就是的,具體沒深入研究。哈哈,先學會用再說) 1.瀏覽器輸入服務的訪問地址,如:http:/ ...
  • 在我們學習的過程中會遇到這麼樣的問題,就是在我們學習的過程中會發現需要分頁處理,這裡呢,給大家介紹書上說的分頁。 這是我從資料庫讀取的分頁的數據,那麼我們怎麼分頁呢,我們看看書上怎麼說 那麼我們需要用一個單獨頁面取保存我們分頁相關的,。 那麼我們怎麼使用呢 在我們的迴圈後加入下麵的 效果如圖 ...
  • 在左側項目視圖的空白處右鍵: Import -- Import -- General -- Existing Projets into Workspace Next,然後選擇需要導入的項目 選擇好之後,Finish圖標會被點亮。 然後點擊Finish,項目就被導入進來了。 項目出現紅叉,因為有些地方 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...