《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > FPGA重點(diǎn)知識13條,,助你構(gòu)建完整“邏輯觀”之三

FPGA重點(diǎn)知識13條,,助你構(gòu)建完整“邏輯觀”之三

2018-05-21
關(guān)鍵詞: FPGA 鎖存器 SRAM

  10,、FPGA的時(shí)序基礎(chǔ)理論

  我們的分析從下圖開始,,下圖是常用的靜態(tài)分析結(jié)構(gòu)圖,,一開始看不懂公式不要緊,,因?yàn)槲視诤竺娼o以非常簡單的解釋:

1.png

  這兩個(gè)公式是一個(gè)非常全面的,,準(zhǔn)確的關(guān)于建立時(shí)間和保持時(shí)間的公式,。其中Tperiod為時(shí)鐘周期,;Tcko為D觸發(fā)器開始采樣瞬間到D觸發(fā)器采樣的數(shù)據(jù)開始輸出的時(shí)間,;Tlogic為中間的組合邏輯的延時(shí);Tnet為走線的延時(shí),;Tsetup為D觸發(fā)器的建立時(shí)間,;Tclk_skew為時(shí)鐘偏移,偏移的原因是因?yàn)闀r(shí)鐘到達(dá)前后兩個(gè)D觸發(fā)器的路線不是一樣長,。

  這里我們來做如下轉(zhuǎn)化:

  因?yàn)閷τ谟幸饬x的時(shí)序約束,,建立時(shí)間余量Tslack,setup和保持時(shí)間余量Thold都要大于0才行,,所以對于時(shí)序約束的要求其實(shí)等價(jià)于:

  Tperiod>Tcko+Tlogic+Tnet+Tsetup-Tclk_skew             (1)

  Tcko+Tlogic+Tnet>Thold+Tclk_skew                             (2)

  之前說了,這兩個(gè)公式是最全面的,,而實(shí)際上,,大部分教材沒講這么深,他們對于一些不那么重要的延時(shí)沒有考慮,,所以就導(dǎo)致不同的教材說法不一,。這里,為了得到更加簡單的理解,,我們按照常規(guī),,忽略兩項(xiàng)Tnet和Tclk_skew。原因在于Tnet通常太小,,而Tclk_skew比較不那么初級,。簡化后如下:

  Tperiod>Tcko+Tlogic+Tsetup   (3)

  Tcko+Tlogic>Thold    (4)

  簡單多了吧!但是你能看出這兩個(gè)公式的含義嗎,?其實(shí)(3)式比較好理解,,意思是數(shù)據(jù)從第一個(gè)觸發(fā)器采樣時(shí)刻傳到第二個(gè)觸發(fā)器采樣時(shí)刻,不能超過一個(gè)時(shí)鐘周期??!假如數(shù)據(jù)傳輸超過一個(gè)時(shí)鐘周期,那么就會導(dǎo)致第二個(gè)觸發(fā)器開始采樣的時(shí)候,,想要的數(shù)據(jù)還沒有傳過來呢,!那么(4)式又如何理解呢?老實(shí)說,,一般人一眼看不出來,。

  我們對于(4)式兩邊同時(shí)加上Tsetup,得到(5):

  Tcko+Tlogic+Tsetup>Thold+Tsetup   (5)

  結(jié)合(3)式和(5)式,,我們得到如下的式子:

  Thold+Tsetup <Tcko+Tlogic+Tsetup< Tperiod     (6)

  這個(gè)式子就是那個(gè)可以讓我們看出規(guī)律的式子,。也是可以看出靜態(tài)時(shí)序分析本質(zhì)的式子。

  Tcko+Tlogic+Tsetup是指數(shù)據(jù)從第一級觸發(fā)器采樣瞬間開始,,傳輸?shù)降诙売|發(fā)器并被采樣的傳輸延時(shí),。我們簡稱為數(shù)據(jù)傳輸延時(shí)。下面講述(6)式兩端的含義,。

  Tcko+Tlogic+Tsetup< Tperiod :約定數(shù)據(jù)傳輸延時(shí)不能太大,,如果太大(超過一個(gè)時(shí)鐘周期),那么第二級觸發(fā)器就會在采樣的時(shí)刻發(fā)現(xiàn)數(shù)據(jù)還沒有到來,。

  Thold+Tsetup <Tcko+Tlogic+Tsetup:約定數(shù)據(jù)傳輸延時(shí)不能太小。這就奇怪了,,數(shù)據(jù)傳得太慢大家都知道不好,,難道傳得太快也不行嗎,?是的,不行,!Thold+Tsetup是一個(gè)觸發(fā)器的采樣窗口時(shí)間,,我們知道,D觸發(fā)器并不是絕對的瞬間采樣,,它不可能那么理想,。在D觸發(fā)器采樣的瞬間,在這瞬間之前Tsetup時(shí)間之內(nèi),,或者這瞬間之后Thold時(shí)間之內(nèi),,如果輸入端口發(fā)生變化,那么D觸發(fā)器就會處于亞穩(wěn)態(tài),。所以采樣是有窗口的,,我們把Thold+Tsetup的時(shí)間寬度叫做觸發(fā)器的采樣窗口,在窗口期內(nèi),,D觸發(fā)器是脆弱的,,對毛刺沒有免疫力的。假如數(shù)據(jù)傳輸延時(shí)特別小,,那么就會發(fā)現(xiàn),,當(dāng)?shù)诙売|發(fā)器開始采樣的時(shí)候,第一級觸發(fā)器的窗口期還沒有結(jié)束,!也就是說,,如果這個(gè)時(shí)候輸入端數(shù)據(jù)有變化,那么不僅第一級觸發(fā)器處于亞穩(wěn)態(tài),,第二級觸發(fā)器也將處于亞穩(wěn)態(tài),!

  綜上,我們就可以知道,,數(shù)據(jù)傳輸延時(shí)既不能太大以至于超過一個(gè)時(shí)鐘周期,,也不能太小以至于小于觸發(fā)器采樣窗口的寬度。這就是靜態(tài)時(shí)序分析的終極內(nèi)涵,。有了這個(gè),,就不需要再記任何公式了。

  11,、CPLD,、FPGA加載原理

  LD一般用JTAG接口進(jìn)行加載,內(nèi)部有FLASH和SRAM,,CPLD的配置文件可存在在內(nèi)置的FLASH中,,因此下電不會丟失,不需要每次上電的時(shí)候,,額外對CPLD進(jìn)行配置結(jié)構(gòu)如下:

2.png

  方式一:當(dāng)SRAM為空時(shí)(CPLD一次都未加載過或者CPLD內(nèi)部FLASH存儲的配置文件有問題,,不能加載到SRAM中),,F(xiàn)lash編程進(jìn)入直接模式,此時(shí)CPLD的IO管腳狀態(tài)由BSCAN registers(邊界掃描寄存器)決定,,BSCAN registers可以將IO設(shè)置成high, low, tristate (default), or current value四種,。

  方式2:

  方式二:當(dāng)SRAM不為空的時(shí)候,F(xiàn)lash 可進(jìn)行background編程模式.在此模式下,,在加載on-chipFlash時(shí),,允許CPLD器件仍然維持在用戶操作模式下(即CPLD可以正常工作)。

  IEEE 1532標(biāo)準(zhǔn)簡介IEEE 1532標(biāo)準(zhǔn)是一個(gè)基于IEEE 1149.1的在板編程的新標(biāo)準(zhǔn),,標(biāo)準(zhǔn)的名字為IEEE Standard for In-System Configuration of ProgrammableDevices,。 在1993年,出現(xiàn)ISP(In-System Programming)的概念和應(yīng)用,。隨之產(chǎn)生了應(yīng)用IEEE1149.1進(jìn)行ISP的需求,。各個(gè)廠商提供了類似的不相同的基于JTAG的ISP工具。1996年4月,,半導(dǎo)體廠商,、ISP工具開發(fā)者、ATE開發(fā)商正式提出了IEEE 1532標(biāo)準(zhǔn),,旨在為JTAG器件的在板編程提供一系列標(biāo)準(zhǔn)的專門的寄存器和操作指令從而使得在板編程更為容易和高效,。IEEE1532完全建立在IEEE1149.1標(biāo)準(zhǔn)之上,在IEEE 1532標(biāo)準(zhǔn)上可以開發(fā)通用的編程工具,,為測試,、編程和系統(tǒng)開發(fā)提供規(guī)范的接口和器件支持、促進(jìn)了編程革新,,開辟了邊界掃描技術(shù)新的應(yīng)用領(lǐng)域,。IEEE1532 主要應(yīng)用在CPLD、FPGA,、PROM以及任意的支持IEEE 1532的可編程器件的在板編程,。

  早期的可編程邏輯器件只有可編程只讀存貯器(PROM)、紫外線可按除只讀存貯器(EPROM)和電可擦除只讀存貯器(EEPROM)三種,。由于結(jié)構(gòu)的限制,,它們只能完成簡單的數(shù)字邏輯功能。

  其后,,出現(xiàn)了一類結(jié)構(gòu)上稍復(fù)雜的可編程芯片,,即可編程邏輯器件(PLD),它能夠完成各種數(shù)字邏輯功能,。典型的PLD由一個(gè)“與”門和一個(gè)“或”門陣列組成,,而任意一個(gè)組合邏輯都可以用“與一或”表達(dá)式來描述,所以,PLD能以乘積和的形式完成大量的組合邏輯功能,,可以實(shí)現(xiàn)速度特性較好的邏輯功能,,但其過于簡單的結(jié)構(gòu)也使它們只能實(shí)現(xiàn)規(guī)模較小的電路。

  為了彌補(bǔ)這一缺陷,,20世紀(jì)80年代中期。 Altera和Xilinx分別推出了類似于PAL(可編程陣列邏輯)結(jié)構(gòu)的擴(kuò)展型 CPLD(ComplexProgrammab1e Logic Dvice)和與標(biāo)準(zhǔn)門陣列類似的FPGA(FieldProgrammable Gate Array),,它們都具有體系結(jié)構(gòu)和邏輯單元靈活,、集成度高以及適用范圍寬等特點(diǎn)。這兩種器件兼容了PLD和通用門陣列GAL(Generic Array Logic)的優(yōu)點(diǎn),,可實(shí)現(xiàn)較大規(guī)模的電路,,編程也很靈活。與門陣列等其它ASIC(ApplicationSpecific IC)相比,,它們又具有設(shè)計(jì)開發(fā)周期短,、設(shè)計(jì)制造成本低、開發(fā)工具先進(jìn),、標(biāo)準(zhǔn)產(chǎn)品無需測試,、質(zhì)量穩(wěn)定以及可實(shí)時(shí)在線檢驗(yàn)等優(yōu)點(diǎn),因此被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計(jì)和產(chǎn)品生產(chǎn)(一般在10,000件以下)之中,。幾乎所有應(yīng)用門陣列,、PLD和中小規(guī)模通用數(shù)字集成電路的場合均可應(yīng)用FPGA和CPLD器件。

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

  一,、鎖存器

  鎖存器(latch)---對脈沖電平敏感,,在時(shí)鐘脈沖的電平作用下改變狀態(tài)

  鎖存器是電平觸發(fā)的存儲單元,數(shù)據(jù)存儲的動作取決于輸入時(shí)鐘(或者使能)信號的電平值,,僅當(dāng)鎖存器處于使能狀態(tài)時(shí),,輸出才會隨著數(shù)據(jù)輸入發(fā)生變化。

  鎖存器不同于觸發(fā)器,,它不在鎖存數(shù)據(jù)時(shí),,輸出端的信號隨輸入信號變化,就像信號通過一個(gè)緩沖器一樣,;一旦鎖存信號起鎖存作用,,則數(shù)據(jù)被鎖住,輸入信號不起作用,。鎖存器也稱為透明鎖存器,,指的是不鎖存時(shí)輸出對于輸入是透明的。

  鎖存器(latch):我聽過的最多的就是它是電平觸發(fā)的,,呵呵,。鎖存器是電平觸發(fā)的存儲單元,,數(shù)據(jù)存儲的動作取決于輸入時(shí)鐘(或者使能)信號的電平值,當(dāng)鎖存器處于使能狀態(tài)時(shí),,輸出才會隨著數(shù)據(jù)輸入發(fā)生變化,。(簡單地說,它有兩個(gè)輸入,,分別是一個(gè)有效信號EN,一個(gè)輸入數(shù)據(jù)信號DATA_IN,,它有一個(gè)輸出Q,它的功能就是在EN有效的時(shí)候把DATA_IN的值傳給Q,,也就是鎖存的過程),。

  應(yīng)用場合:數(shù)據(jù)有效遲后于時(shí)鐘信號有效。這意味著時(shí)鐘信號先到,,數(shù)據(jù)信號后到,。在某些運(yùn)算器電路中有時(shí)采用鎖存器作為數(shù)據(jù)暫存器。

  缺點(diǎn):時(shí)序分析較困難,。

  不要鎖存器的原因有二:1,、鎖存器容易產(chǎn)生毛刺,2,、鎖存器在ASIC設(shè)計(jì)中應(yīng)該說比ff要簡單,,但是在FPGA的資源中,大部分器件沒有鎖存器這個(gè)東西,,所以需要用一個(gè)邏輯門和ff來組成鎖存器,,這樣就浪費(fèi)了資源。

  優(yōu)點(diǎn):面積小,。鎖存器比FF快,,所以用在地址鎖存是很合適的,不過一定要保證所有的latch信號源的質(zhì)量,,鎖存器在CPU設(shè)計(jì)中很常見,,正是由于它的應(yīng)用使得CPU的速度比外部IO部件邏輯快許多。latch完成同一個(gè)功能所需要的門較觸發(fā)器要少,,所以在asic中用的較多,。

  二、觸發(fā)器

  觸發(fā)器(Flip-Flop,,簡寫為 FF),,也叫雙穩(wěn)態(tài)門,又稱雙穩(wěn)態(tài)觸發(fā)器,。是一種可以在兩種狀態(tài)下運(yùn)行的數(shù)字邏輯電路,。觸發(fā)器一直保持它們的狀態(tài),直到它們收到輸入脈沖,又稱為觸發(fā),。當(dāng)收到輸入脈沖時(shí),,觸發(fā)器輸出就會根據(jù)規(guī)則改變狀態(tài),然后保持這種狀態(tài)直到收到另一個(gè)觸發(fā),。

  觸發(fā)器(flip-flops)電路相互關(guān)聯(lián),,從而為使用內(nèi)存芯片和微處理器的數(shù)字集成電路(IC)形成邏輯門。它們可用來存儲一比特的數(shù)據(jù),。該數(shù)據(jù)可表示音序器的狀態(tài),、計(jì)數(shù)器的價(jià)值、在計(jì)算機(jī)內(nèi)存的ASCII字符或任何其他的信息,。

  有幾種不同類型的觸發(fā)器(flip-flops)電路具有指示器,如T(切換),、S-R(設(shè)置/重置)J-K(也可能稱為Jack Kilby)和D(延遲),。典型的觸發(fā)器包括零個(gè)、一個(gè)或兩個(gè)輸入信號,,以及時(shí)鐘信號和輸出信號,。一些觸發(fā)器還包括一個(gè)重置當(dāng)前輸出的明確輸入信號。第一個(gè)電子觸發(fā)器是在1919年由W.H.Eccles和F.W.Jordan發(fā)明的,。

  觸發(fā)器(flip-flop)---對脈沖邊沿敏感,,其狀態(tài)只在時(shí)鐘脈沖的上升沿或下降沿的瞬間改變。

  T觸發(fā)器(Toggle Flip-Flop,,or Trigger Flip-Flop)設(shè)有一個(gè)輸入和輸出,,當(dāng)時(shí)鐘頻率由0轉(zhuǎn)為1時(shí),如果T和Q不相同時(shí),,其輸出值會是1,。輸入端T為1的時(shí)候,輸出端的狀態(tài)Q發(fā)生反轉(zhuǎn),;輸入端T為0的時(shí)候,,輸出端的狀態(tài)Q保持不變。把JK觸發(fā)器的J和K輸入點(diǎn)連接在一起,,即構(gòu)成一個(gè)T觸發(fā)器,。

  應(yīng)用場合:時(shí)鐘有效遲后于數(shù)據(jù)有效。這意味著數(shù)據(jù)信號先建立,,時(shí)鐘信號后建立,。在CP上升沿時(shí)刻打入到寄存器。

  三,、寄存器

  寄存器(register):用來存放數(shù)據(jù)的一些小型存儲區(qū)域,,用來暫時(shí)存放參與運(yùn)算的數(shù)據(jù)和運(yùn)算結(jié)果,它被廣泛的用于各類數(shù)字系統(tǒng)和計(jì)算機(jī)中。其實(shí)寄存器就是一種常用的時(shí)序邏輯電路,,但這種時(shí)序邏輯電路只包含存儲電路,。寄存器的存儲電路是由鎖存器或觸發(fā)器構(gòu)成的,因?yàn)橐粋€(gè)鎖存器或觸發(fā)器能存儲1位二進(jìn)制數(shù),,所以由N個(gè)鎖存器或觸發(fā)器可以構(gòu)成N位寄存器,。 工程中的寄存器一般按計(jì)算機(jī)中字節(jié)的位數(shù)設(shè)計(jì),所以一般有8位寄存器,、16位寄存器等,。

  對寄存器中的觸發(fā)器只要求它們具有置1、置0的功能即可,,因而無論是用同步RS結(jié)構(gòu)觸發(fā)器,,還是用主從結(jié)構(gòu)或邊沿觸發(fā)結(jié)構(gòu)的觸發(fā)器,都可以組成寄存器,。一般由D觸發(fā)器組成,,有公共輸入/輸出使能控制端和時(shí)鐘,一般把使能控制端作為寄存器電路的選擇信號,,把時(shí)鐘控制端作為數(shù)據(jù)輸入控制信號,。

  寄存器的應(yīng)用

  1. 可以完成數(shù)據(jù)的并串、串并轉(zhuǎn)換,;

  2.可以用做顯示數(shù)據(jù)鎖存器:許多設(shè)備需要顯示計(jì)數(shù)器的記數(shù)值,,以8421BCD碼記數(shù),以七段顯示器顯示,,如果記數(shù)速度較高,,人眼則無法辨認(rèn)迅速變化的顯示字符。在計(jì)數(shù)器和譯碼器之間加入一個(gè)鎖存器,,控制數(shù)據(jù)的顯示時(shí)間是常用的方法,。

  3.用作緩沖器;

  4. 組成計(jì)數(shù)器:移位寄存器可以組成移位型計(jì)數(shù)器,,如環(huán)形或扭環(huán)形計(jì)數(shù)器,。

  四、移位寄存器

  移位寄存器:具有移位功能的寄存器稱為移位寄存器,。

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

  五、總線收發(fā)器/緩沖器

  緩沖寄存器:又稱緩沖器緩沖器(buffer):多用在總線上,,提高驅(qū)動能力,、隔離前后級,緩沖器多半有三態(tài)輸出功能,。當(dāng)負(fù)載不具有非選通輸出為高阻特性時(shí),,將起到隔離作用;當(dāng)總線的驅(qū)動能力不夠驅(qū)動負(fù)載時(shí),,將起到驅(qū)動作用,。由于緩沖器接在數(shù)據(jù)總線上,故必須具有三態(tài)輸出功能,。

  它分輸入緩沖器和輸出緩沖器兩種,。前者的作用是將外設(shè)送來的數(shù)據(jù)暫時(shí)存放,以便處理器將它取走,;后者的作用是用來暫時(shí)存放處理器送往外設(shè)的數(shù)據(jù)。有了數(shù)控緩沖器,,就可以使高速工作的CPU與慢速工作的外設(shè)起協(xié)調(diào)和緩沖作用,,實(shí)現(xiàn)數(shù)據(jù)傳送的同步。

  Buffer:緩沖區(qū),,一個(gè)用于在初速度不同步的設(shè)備或者優(yōu)先級不同的設(shè)備之間傳輸數(shù)據(jù)的區(qū)域,。通過緩沖區(qū),可以使進(jìn)程之間的相互等待變少,,從而使從速度慢的設(shè)備讀入數(shù)據(jù)時(shí),,速度快的設(shè)備的操作進(jìn)程不發(fā)生間斷。

  緩沖器主要是計(jì)算機(jī)領(lǐng)域的稱呼,。具體實(shí)現(xiàn)上,,緩沖器有用鎖存器結(jié)構(gòu)的電路來實(shí)現(xiàn),也有用不帶鎖存結(jié)構(gòu)的電路來實(shí)現(xiàn),。一般來說,,當(dāng)收發(fā)數(shù)據(jù)雙方的工作速度匹配時(shí),這里的緩沖器可以用不帶鎖存結(jié)構(gòu)的電路來實(shí)現(xiàn),;而當(dāng)收發(fā)數(shù)據(jù)雙方的工作速度不匹配時(shí),,就要用帶鎖存結(jié)構(gòu)的電路來實(shí)現(xiàn)了(否則會出現(xiàn)數(shù)據(jù)丟失)。

  緩沖器在數(shù)字系統(tǒng)中用途很多:

 ?。?)如果器件帶負(fù)載能力有限,,可加一級帶驅(qū)動器的緩沖器,;

  (2)前后級間邏輯電平不同,,可用電平轉(zhuǎn)換器加以匹配,;

  (3)邏輯極性不同或需要將單性變量轉(zhuǎn)換為互補(bǔ)變量時(shí),,加帶反相緩沖器,;(4)需要將緩變信號變?yōu)檫呇囟盖托盘枙r(shí),加帶施密特電路的緩沖器

 ?。?)數(shù)據(jù)傳輸和處理中不同裝置間溫度和時(shí)間不同時(shí),,加一級緩沖器進(jìn)行彌補(bǔ)等等。

  六,、鎖存器與觸發(fā)器的區(qū)別

  鎖存器和觸發(fā)器是具有記憶功能的二進(jìn)制存貯器件,,是組成各種時(shí)序邏輯電路的基本器件之一。區(qū)別為:latch同其所有的輸入信號相關(guān),,當(dāng)輸入信號變化時(shí)latch就變化,,沒有時(shí)鐘端;flip-flop受時(shí)鐘控制,,只有在時(shí)鐘觸發(fā)時(shí)才采樣當(dāng)前的輸入,,產(chǎn)生輸出。當(dāng)然因?yàn)閘atch和flip-flop二者都是時(shí)序邏輯,,所以輸出不但同當(dāng)前的輸入相關(guān)還同上一時(shí)間的輸出相關(guān),。

  1、latch由電平觸發(fā),,非同步控制,。在使能信號有效時(shí)latch相當(dāng)于通路,在使能信號無效時(shí)latch保持輸出狀態(tài),。DFF由時(shí)鐘沿觸發(fā),,同步控制。

  2,、latch對輸入電平敏感,,受布線延遲影響較大,很難保證輸出沒有毛刺產(chǎn)生,;DFF則不易產(chǎn)生毛刺,。

  3、如果使用門電路來搭建latch和DFF,,則latch消耗的門資源比DFF要少,,這是latch比DFF優(yōu)越的地方。所以,,在ASIC中使用 latch的集成度比DFF高,,但在FPGA中正好相反,,因?yàn)镕PGA中沒有標(biāo)準(zhǔn)的latch單元,但有DFF單元,,一個(gè)LATCH需要多個(gè)LE才能實(shí)現(xiàn),。latch是電平觸發(fā),相當(dāng)于有一個(gè)使能端,,且在激活之后(在使能電平的時(shí)候)相當(dāng)于導(dǎo)線了,,隨輸出而變化。在非使能狀態(tài)下是保持原來的信號,,這就可以看出和flip-flop的差別,,其實(shí)很多時(shí)候latch是不能代替ff的。

  4,、latch將靜態(tài)時(shí)序分析變得極為復(fù)雜,。

  5、目前l(fā)atch只在極高端的電路中使用,,如intel 的P4等CPU,。 FPGA中有l(wèi)atch單元,寄存器單元就可以配置成latch單元,,在xilinx v2p的手冊將該單元配置成為register/latch單元,,附件是xilinx半個(gè)slice的結(jié)構(gòu)圖。其它型號和廠家的FPGA沒有去查證,?!獋€(gè)人認(rèn)為xilinx是能直接配的而altera或許比較麻煩,要幾個(gè)LE才行,,然而也非xilinx的器件每個(gè)slice都可以這樣配置,altera的只有DDR接口中有專門的latch單元,,一般也只有高速電路中會采用latch的設(shè)計(jì),。altera的LE是沒有l(wèi)atch的結(jié)構(gòu)的,又查了sp3和sp2e,,別的不查了,,手冊上說支持這種配置。有關(guān)altera的表述wangdian說的對,,altera的ff不能配置成latch,,它使用查找表來實(shí)現(xiàn)latch。

  一般的設(shè)計(jì)規(guī)則是:在絕大多數(shù)設(shè)計(jì)中避免產(chǎn)生latch,。它會讓您設(shè)計(jì)的時(shí)序完蛋,,并且它的隱蔽性很強(qiáng),非老手不能查出,。latch最大的危害在于不能過濾毛刺,。這對于下一級電路是極其危險(xiǎn)的,。所以,只要能用D觸發(fā)器的地方,,就不用latch,。

  有些地方?jīng)]有時(shí)鐘,也只能用latch了,。比如現(xiàn)在用一個(gè)clk接到latch的使能端(假設(shè)是高電平使能),這樣需要的setup時(shí)間,,就是數(shù)據(jù)在時(shí)鐘的下降沿之前需要的時(shí)間,但是如果是一個(gè)DFF,,那么setup時(shí)間就是在時(shí)鐘的上升沿需要的時(shí)間,。這就說明如果數(shù)據(jù)晚于控制信號的情況下,只能用latch,這種情況就是,,前面所提到的latch timing borrow,。基本上相當(dāng)于借了一個(gè)高電平時(shí)間,。也就是說,,latch借的時(shí)間也是有限的。

  在if語句和case不全很容易產(chǎn)生latch,,需要注意,。VIA題目這兩個(gè)代碼哪個(gè)綜合更容易產(chǎn)生latch:

  代碼1

1.png

  答案是代碼2在綜合時(shí)更容易產(chǎn)生latch。

  對latch進(jìn)行STA的分析其實(shí)也是可以,但是要對工具相當(dāng)熟悉才行,,不過很容易出錯,。當(dāng)前PrimeTime是支持進(jìn)行l(wèi)atch分析的,現(xiàn)在一些綜合工具內(nèi)置的STA分析功能也支持,比如RTL compiler, Design Compiler,。除了ASIC里可以節(jié)省資源以外,,latch在同步設(shè)計(jì)里出現(xiàn)的可能還是挺小的,現(xiàn)在處理過程中大都放在ff里打一下,。

  鎖存器電平觸發(fā)會把輸入端的毛刺帶入輸出,;而觸發(fā)器由于邊沿作用可以有效抑制輸入端干擾。

  在 CMOS 芯片內(nèi)部經(jīng)常使用鎖存器, 但是在PCB板級結(jié)構(gòu)上, 建議用觸發(fā)器在時(shí)鐘邊沿上鎖存數(shù)據(jù),。這是因?yàn)樵阪i存器閘門開啟期間數(shù)據(jù)的變化會直接反映到輸出端, 所以要注意控制閘門信號的脈沖寬度,,而對于觸發(fā)器,只考慮時(shí)鐘的邊沿,。

  門電路是構(gòu)建組合邏輯電路的基礎(chǔ),,而鎖存器和觸發(fā)器是構(gòu)建時(shí)序邏輯電路的基礎(chǔ)。門電路是由晶體管構(gòu)成的,,鎖存器是由門電路構(gòu)成的,,而觸發(fā)器是由鎖存器構(gòu)成的。也就是晶體管->門電路->鎖存器->觸發(fā)器,前一級是后一級的基礎(chǔ),。鎖存器和觸發(fā)器它們的輸出都不僅僅取決于目前的輸入,,而且和之前的輸入和輸出都有關(guān)系,。

  它們之間的不同在于:鎖存器沒有時(shí)鐘信號,而觸發(fā)器常常有時(shí)鐘觸發(fā)信號,。

  鎖存器是異步的,,就是說在輸入信號改變后,輸出信號也隨之很快做出改變非???。而另外一方面,今天許多計(jì)算機(jī)是同步的,,這就意味著所有的時(shí)序電路的輸出信號隨著全局的時(shí)鐘信號同時(shí)做出改變,。觸發(fā)器是一個(gè)同步版鎖存器。

  觸發(fā)器泛指一類電路結(jié)構(gòu),,它可以由觸發(fā)信號 (如: 時(shí)鐘,、置位、復(fù)位等) 改變輸出狀態(tài), 并保持這個(gè)狀態(tài)直到下一個(gè)或另一個(gè)觸發(fā)信號來到時(shí),。觸發(fā)信號可以用電平或邊沿操作,,鎖存器是觸發(fā)器的一種應(yīng)用類型。

  七,、D觸發(fā)器和D鎖存器的區(qū)別

  鐘控D觸發(fā)器其實(shí)就是D鎖存器,,邊沿D觸發(fā)器才是真正的D觸發(fā)器,鐘控D觸發(fā)器在使能情況下輸出隨輸入變化,,邊沿觸發(fā)器只有在邊沿跳變的情況下輸出才變化,。

  兩個(gè)鎖存器可以構(gòu)成一個(gè)觸發(fā)器,歸根到底還是dff是邊沿觸發(fā)的,而latch是電平觸發(fā)的,。鎖存器的輸出對輸入透明的,,輸入是什么,輸出就是什么,,這就是鎖存器不穩(wěn)定的原因,,而觸發(fā)器是由兩個(gè)鎖存器構(gòu)成的一個(gè)主從觸發(fā)器,輸出對輸入是不透明的,,必須在時(shí)鐘的上升/下降沿才會將輸入體現(xiàn)到輸出,,所以能夠消除輸入的毛刺信號,。

  八,、寄存器與鎖存器的區(qū)別

  寄存器與鎖存器的功能是提供數(shù)據(jù)寄存和鎖存。

  寄存功能是指把數(shù)據(jù)暫時(shí)保存,,需要時(shí)取出,。鎖存功能是指總線電路中,鎖定數(shù)據(jù)輸出,,使輸出端不隨輸入端變化,。

  13,、流水線

  流水線設(shè)計(jì)是經(jīng)常用于提高所設(shè)計(jì)系統(tǒng)運(yùn)行速度的一種有效的方法。

  為了保障數(shù)據(jù)的快速傳輸,,必須使系統(tǒng)運(yùn)行在盡可能高的頻率上,,但如果某些復(fù)雜邏輯功能的完成需要較長的延時(shí),就會使系統(tǒng)難以運(yùn)行在高的頻率上,,在這種情況下,,可使用流水線技術(shù),即在長延時(shí)的邏輯功能塊中插入觸發(fā)器,,使復(fù)雜的邏輯操作分步完成,,減小每個(gè)部分的延時(shí),從而使系統(tǒng)的運(yùn)行頻率得以提高,。流水線設(shè)計(jì)的代價(jià)是增加了寄存器邏輯,,增加了芯片資源的耗用。

  如某個(gè)復(fù)雜邏輯功能的實(shí)現(xiàn)需較長的延時(shí),,可將其分解為幾個(gè)(如3個(gè))步驟來實(shí)現(xiàn),,每一步的延時(shí)變小,在各步間加入寄存器,,以暫存中間結(jié)果,,這樣可大大提高整個(gè)系統(tǒng)的最高工作頻率。

1.png

  設(shè)計(jì)綜合到不同器件的最高工作頻率

2.png

  流水線設(shè)計(jì)的關(guān)鍵在于整個(gè)設(shè)計(jì)時(shí)序的合理安排,,前后級接口間數(shù)據(jù)流速的匹配,。如果前后級流量相等,前級輸出直接可作為后級輸入,,前級流量大于后級時(shí),,則需要增加緩存,前級流量小于后級時(shí),,則需要通過邏輯復(fù)制,,串并轉(zhuǎn)換等方式將數(shù)據(jù)分流,或者前級存儲后輸出到后級進(jìn)行處理,。

  流水線的思想:復(fù)制了處理模塊,,用面積換速度。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。