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

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

3天內不再提示

latch和寄存器有什么區(qū)別 鎖存器的危害分析

西西 ? 來源:博客園 ? 作者:lianjiehere ? 2020-10-05 14:28 ? 次閱讀

一直都知道fpga中有l(wèi)atch這么一回事,但是一直都不太清楚到底什么是鎖存器,它是怎么產生的,它到底和寄存器有多少區(qū)別,它怎么消除。為什么說他不好?

一,是什么

鎖存器是一種在異步時序電路系統(tǒng)中,對輸入信號電平敏感的單元,用來存儲信息。一個鎖存器可以存儲1bit的信息,通常,鎖存器會多個一起出現(xiàn),如4位鎖存器,8位鎖存器。

鎖存器在數(shù)據未鎖存時,輸出端的信號隨輸入信號變化,就像信號通過一個緩沖器,一旦鎖存信號有效,則數(shù)據被鎖存,輸入信號不起作用。因此,鎖存器也被稱為透明鎖存器,指的是不鎖存時輸出對于輸入是透明的。

二 鎖存器與寄存器的區(qū)別:

兩者都是基本存儲單元,單鎖存器是電平觸發(fā)的存儲器,觸發(fā)器是邊沿觸發(fā)的存儲器。本質是,兩者的基本功能是一樣的,都可以存儲數(shù)據。意思是說一個是組合邏輯的,一個是在時序電路中用的,時鐘出發(fā)的。

三,鎖存器的危害:

對毛刺敏感,不能異步復位,所以上電以后處于不確定的狀態(tài);

Latch會使靜態(tài)時序分析變得非常復雜;

在PLD芯片中,基本的單元是由查找表和觸發(fā)器組成的,若生成鎖存器反而需要更多的資源。

第三條也是最基本的原因。

四,產生的原因 ********ps重重之重

上面說了那沒多只是覺得網上的沒把鎖存器說明白。下面的才是重點。

1,case

2,if-------else if

3,always@(敏感信號表)

五 解決

1.case——————加default:

關于defalut的情況:一是可以 default:data=1‘bx;這個x表示未知,在綜合時可以避免產生鎖存器。在仿真時是紅線表示。

二是 default:data=0;這樣產生一個默認的情況。

2.if-----------------------一定要有else語句。

3.always---------如是說道:在賦值表達式右邊參與賦值的信號都必須在always@(敏感電平列表)中列出。

如果在賦值表達式右端引用了敏感電平列表中沒有列出的信號,那么在綜合時,將會為該沒有列出的信號隱含地產生一個透明鎖存器。

4. 付初值。好用的

,我們討論一下到底鎖存器是不是就是沒用的

1. Latch的本質

Latch作為一種電路單元,必然有其存在的理由及應用場景,在實際應用中,有些設計不可避免的要使用Latch,特別是總線應用上,例如,地址鎖存器,數(shù)據鎖存器,復位信號鎖存器等。但是在更多的情況下,很容易產生未預料到的鎖存器,使邏輯功能不滿足要求,浪費大量時間。比較好的應用規(guī)則是:要學會分析是否需要Latch以及代碼是否會產生意外的Latch。

通過Verilog HDL實現(xiàn)序列最大值搜索程序,并保持檢測到的最大值

  • [plain] view plaincopymodule two_max(
  • a,rst_n,abmax
  • );
  • input [7:0] a;
  • input rst_n;
  • output [7:0] abmax;
  • reg [7:0] abmax_tmp;
  • always @ (a or rst_n) begin
  • if (!rst_n)
  • abmax_tmp = 8‘h00;
  • else
  • if (a》abmax_tmp)
  • abmax_tmp = a;
  • end
  • endmodule

上述代碼在ISE中的綜合結果會給出設計中包含Latch的警告。但實際上,abmax_tmp鎖存器正是我們需要的,所以,雖然有警告,但是代碼設計是沒有問題的。將上述代碼的if語句補全:

  • [plain] view plaincopyif (a 》 abmax_tmp)
  • abmax_tmp = a;
  • else
  • abmax_tmp = abmax_tmp;

經過綜合后,仍然有Latch的警告。無論Latch是否是用戶需要的,ISE都會給出警告,主要原因就是Latch對整個設計的時序性能影響較大。所以,在設計中要盡量避免Latch,但是確實需要使用的情況,也可以使用。

2. “不期望”latch

指的是與設計意圖不符,產生的Latch。主要問題在于設計人員沒有合理使用Verilog HDL語言,常見的原因是對條件語句(if、casse)的分支描述不完整。典型例子:用Verilog HDL實現(xiàn)一個鎖存器,當輸入數(shù)據大于127時,將輸入數(shù)據輸出,否則輸出0

  • [plain] view plaincopymodule latch_demo(
  • din,dout
  • );
  • input [7:0] din;
  • output [7:0] dout;
  • reg [7:0] dout;
  • always @ (din) begin
  • if (din》127)
  • dout 《= din;
  • end
  • endmodule

綜合后的結果,在比較器后面級聯(lián)了鎖存器,這是因為if語句缺少else分支造成的。查看仿真結果,當輸入小于127時,輸出保持了上次的127,不是0,沒有達到設計要求。修改方法很簡單,就是講if-else補全。

  • [plain] view plaincopyif (din 》 127 )
  • dout = din;
  • else
  • dout = 0;

在ISE中綜合后的結果中,可以看到補全if-else后,在比較器后面級聯(lián)了與門,代替原來的鎖存器,仿真結果也正確。

至此,可以得到一個結論:Latch作為一種基本電路單元,會影響到電路的時序性能,應該盡量避免使用,但出現(xiàn)Latch造成設計與意圖不符的情況,是由于設計人員代碼不正確造成的。

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

    關注

    31

    文章

    5268

    瀏覽量

    119640
  • 鎖存器
    +關注

    關注

    8

    文章

    904

    瀏覽量

    41386
  • 異步時序
    +關注

    關注

    0

    文章

    6

    瀏覽量

    8632
  • Latch
    +關注

    關注

    1

    文章

    48

    瀏覽量

    16187
  • 單鎖存器
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1613
收藏 人收藏

    評論

    相關推薦

    FPGA的設計中為什么避免使用

    文章都對個誤解,我們后面會詳細說明。 這篇文章,我們包含如下內容: ①
    的頭像 發(fā)表于 11-16 11:42 ?8293次閱讀
    FPGA的設計中為什么避免使用<b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>

    、觸發(fā)寄存器和緩沖區(qū)別

    位二進制數(shù),所以由N個或觸發(fā)可以構成N位寄存器。工程中的寄存器一般按計算機中字節(jié)的位數(shù)設
    發(fā)表于 10-09 16:19

    寄存器、和觸發(fā)區(qū)別

    寄存器:registerlatch觸發(fā):flipflop 一、
    發(fā)表于 07-03 11:50

    觸發(fā)、寄存器三者的區(qū)別

    的角度來年,寄存器的功能是相同的,它們的區(qū)別在于寄存器是同步時鐘控制,而
    發(fā)表于 09-11 08:14

    Verilog基本功--flipflop和latch以及register的區(qū)別

    觸發(fā):flipfloplatch寄存器:register
    發(fā)表于 08-27 08:30

    寄存器的作用哪些?

    寄存器的作用哪些? 寄存器用途  1.可將寄存器內的數(shù)據執(zhí)行算術及邏輯運算;  2.寄存器
    發(fā)表于 03-08 14:35 ?1.6w次閱讀

    累加寄存器嗎_寄存器、累加、暫存什么區(qū)別

    本文首先對寄存器、累加、暫存做個哥介紹,其次解答了累加是不是寄存器,最后闡述了寄存器、累加
    發(fā)表于 04-11 16:31 ?9435次閱讀

    Latch和觸發(fā)Flip-flop區(qū)別

    本文首先介紹了Latch結構和
    的頭像 發(fā)表于 04-18 14:10 ?13.1w次閱讀
    <b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b><b class='flag-5'>Latch</b>和觸發(fā)<b class='flag-5'>器</b>Flip-flop<b class='flag-5'>有</b>何<b class='flag-5'>區(qū)別</b>

    寄存器哪些區(qū)別

    首先應該明確和觸發(fā)也是由與非門之類的東西構成。尤其是
    的頭像 發(fā)表于 08-12 10:26 ?4571次閱讀

    如何使用的Time Borrowing技術來替代關鍵路徑中的寄存器

    在ASIC中用到的地方很多,Time Borrowing是使用的典型應用之一,在深度
    的頭像 發(fā)表于 06-14 16:56 ?1704次閱讀

    、觸發(fā)、寄存器的關聯(lián)與區(qū)別及其相應的verilog描述

    1:、觸發(fā)寄存器的關聯(lián)與區(qū)別 首先應該明確
    的頭像 發(fā)表于 12-19 12:25 ?1.1w次閱讀

    Verilog中 /觸發(fā)/寄存器區(qū)別

    latch):是電平觸發(fā)的存儲單元,數(shù)據存儲的動作(狀態(tài)轉換)取決于輸入時鐘(或者使能)信號的電平值,盡當
    發(fā)表于 01-31 14:57 ?1920次閱讀

    什么是寄存器區(qū)別

    Latch)是一種基本的數(shù)字電路元件,用于存儲二進制數(shù)字的狀態(tài)信息,并能夠在需要時通過加電或控制信號的作用保持狀態(tài)。它通常由幾個邏輯門組成,可以實現(xiàn)簡單的存儲、移位、計數(shù)等功能
    的頭像 發(fā)表于 04-09 18:45 ?9394次閱讀

    帶輸入的8位移位寄存器數(shù)據表

    電子發(fā)燒友網站提供《帶輸入的8位移位寄存器數(shù)據表.pdf》資料免費下載
    發(fā)表于 05-13 11:15 ?0次下載
    帶輸入<b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>的8位移位<b class='flag-5'>寄存器</b>數(shù)據表

    、觸發(fā)寄存器區(qū)別

    在數(shù)字電路和計算機系統(tǒng)中,、觸發(fā)寄存器都是關鍵的存儲元件,它們在功能、結構和使用場景上存在一定的差異。本文將對這三者進行詳細的介紹
    的頭像 發(fā)表于 05-23 15:28 ?1729次閱讀