FPGA重點(diǎn)知識13條,助你構建完整“邏輯觀(guān)”之三
我們的分析從下圖開(kāi)始,下圖是常用的靜態(tài)分析結構圖,一開(kāi)始看不懂公式不要緊,因為我會(huì )在后面給以非常簡(jiǎn)單的解釋?zhuān)?/p>

這兩個(gè)公式是一個(gè)非常全面的,準確的關(guān)于建立時(shí)間和保持時(shí)間的公式。其中Tperiod為時(shí)鐘周期;Tcko為D觸發(fā)器開(kāi)始采樣瞬間到D觸發(fā)器采樣的數據開(kāi)始輸出的時(shí)間;Tlogic為中間的組合邏輯的延時(shí);Tnet為走線(xiàn)的延時(shí);Tsetup為D觸發(fā)器的建立時(shí)間;Tclk_skew為時(shí)鐘偏移,偏移的原因是因為時(shí)鐘到達前后兩個(gè)D觸發(fā)器的路線(xiàn)不是一樣長(cháng)。
這里我們來(lái)做如下轉化:
因為對于有意義的時(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)
之前說(shuō)了,這兩個(gè)公式是最全面的,而實(shí)際上,大部分教材沒(méi)講這么深,他們對于一些不那么重要的延時(shí)沒(méi)有考慮,所以就導致不同的教材說(shuō)法不一。這里,為了得到更加簡(jiǎn)單的理解,我們按照常規,忽略?xún)身桾net和Tclk_skew。原因在于Tnet通常太小,而Tclk_skew比較不那么初級。簡(jiǎn)化后如下:
Tperiod>Tcko+Tlogic+Tsetup (3)
Tcko+Tlogic>Thold (4)
簡(jiǎn)單多了吧!但是你能看出這兩個(gè)公式的含義嗎?其實(shí)(3)式比較好理解,意思是數據從第一個(gè)觸發(fā)器采樣時(shí)刻傳到第二個(gè)觸發(fā)器采樣時(shí)刻,不能超過(guò)一個(gè)時(shí)鐘周期啊!假如數據傳輸超過(guò)一個(gè)時(shí)鐘周期,那么就會(huì )導致第二個(gè)觸發(fā)器開(kāi)始采樣的時(shí)候,想要的數據還沒(méi)有傳過(guò)來(lái)呢!那么(4)式又如何理解呢?老實(shí)說(shuō),一般人一眼看不出來(lái)。
我們對于(4)式兩邊同時(shí)加上Tsetup,得到(5):
Tcko+Tlogic+Tsetup>Thold+Tsetup (5)
結合(3)式和(5)式,我們得到如下的式子:
Thold+Tsetup <tcko+tlogic+tsetup< p="" (6)
這個(gè)式子就是那個(gè)可以讓我們看出規律的式子。也是可以看出靜態(tài)時(shí)序分析本質(zhì)的式子。
Tcko+Tlogic+Tsetup是指數據從第一級觸發(fā)器采樣瞬間開(kāi)始,傳輸到第二級觸發(fā)器并被采樣的傳輸延時(shí)。我們簡(jiǎn)稱(chēng)為數據傳輸延時(shí)。下面講述(6)式兩端的含義。
Tcko+Tlogic+Tsetup< Tperiod :約定數據傳輸延時(shí)不能太大,如果太大(超過(guò)一個(gè)時(shí)鐘周期),那么第二級觸發(fā)器就會(huì )在采樣的時(shí)刻發(fā)現數據還沒(méi)有到來(lái)。
Thold+Tsetup
綜上,我們就可以知道,數據傳輸延時(shí)既不能太大以至于超過(guò)一個(gè)時(shí)鐘周期,也不能太小以至于小于觸發(fā)器采樣窗口的寬度。這就是靜態(tài)時(shí)序分析的終極內涵。有了這個(gè),就不需要再記任何公式了。
11、CPLD、FPGA加載原理
LD一般用JTAG接口進(jìn)行加載,內部有FLASH和SRAM,CPLD的配置文件可存在在內置的FLASH中,因此下電不會(huì )丟失,不需要每次上電的時(shí)候,額外對CPLD進(jìn)行配置結構如下:
方式一:當SRAM為空時(shí)(CPLD一次都未加載過(guò)或者CPLD內部FLASH存儲的配置文件有問(wèn)題,不能加載到SRAM中),Flash編程進(jìn)入直接模式,此時(shí)CPLD的IO管腳狀態(tài)由BSCAN registers(邊界掃描寄存器)決定,BSCAN registers可以將IO設置成high, low, tristate (default), or current value四種。
方式2:
方式二:當SRAM不為空的時(shí)候,Flash 可進(jìn)行background編程模式.在此模式下,在加載on-chipFlash時(shí),允許CPLD器件仍然維持在用戶(hù)操作模式下(即CPLD可以正常工作)。


IEEE 1532標準簡(jiǎn)介IEEE 1532標準是一個(gè)基于IEEE 1149.1的在板編程的新標準,標準的名字為IEEE Standard for In-System Configuration of ProgrammableDevices。 在1993年,出現ISP(In-System Programming)的概念和應用。隨之產(chǎn)生了應用IEEE1149.1進(jìn)行ISP的需求。各個(gè)廠(chǎng)商提供了類(lèi)似的不相同的基于JTAG的ISP工具。1996年4月,半導體廠(chǎng)商、ISP工具開(kāi)發(fā)者、ATE開(kāi)發(fā)商正式提出了IEEE 1532標準,旨在為JTAG器件的在板編程提供一系列標準的專(zhuān)門(mén)的寄存器和操作指令從而使得在板編程更為容易和高效。IEEE1532完全建立在IEEE1149.1標準之上,在IEEE 1532標準上可以開(kāi)發(fā)通用的編程工具,為測試、編程和系統開(kāi)發(fā)提供規范的接口和器件支持、促進(jìn)了編程革新,開(kāi)辟了邊界掃描技術(shù)新的應用領(lǐng)域。IEEE1532 主要應用在CPLD、FPGA、PROM以及任意的支持IEEE 1532的可編程器件的在板編程。
早期的可編程邏輯器件只有可編程只讀存貯器(PROM)、紫外線(xiàn)可按除只讀存貯器(EPROM)和電可擦除只讀存貯器(EEPROM)三種。由于結構的限制,它們只能完成簡(jiǎn)單的數字邏輯功能。
其后,出現了一類(lèi)結構上稍復雜的可編程芯片,即可編程邏輯器件(PLD),它能夠完成各種數字邏輯功能。典型的PLD由一個(gè)“與”門(mén)和一個(gè)“或”門(mén)陣列組成,而任意一個(gè)組合邏輯都可以用“與一或”表達式來(lái)描述,所以,PLD能以乘積和的形式完成大量的組合邏輯功能,可以實(shí)現速度特性較好的邏輯功能,但其過(guò)于簡(jiǎn)單的結構也使它們只能實(shí)現規模較小的電路。
為了彌補這一缺陷,20世紀80年代中期。 Altera和Xilinx分別推出了類(lèi)似于PAL(可編程陣列邏輯)結構的擴展型 CPLD(ComplexProgrammab1e Logic Dvice)和與標準門(mén)陣列類(lèi)似的FPGA(FieldProgrammable Gate Array),它們都具有體系結構和邏輯單元靈活、集成度高以及適用范圍寬等特點(diǎn)。這兩種器件兼容了PLD和通用門(mén)陣列GAL(Generic Array Logic)的優(yōu)點(diǎn),可實(shí)現較大規模的電路,編程也很靈活。與門(mén)陣列等其它ASIC(ApplicationSpecific IC)相比,它們又具有設計開(kāi)發(fā)周期短、設計制造成本低、開(kāi)發(fā)工具先進(jìn)、標準產(chǎn)品無(wú)需測試、質(zhì)量穩定以及可實(shí)時(shí)在線(xiàn)檢驗等優(yōu)點(diǎn),因此被廣泛應用于產(chǎn)品的原型設計和產(chǎn)品生產(chǎn)(一般在10,000件以下)之中。幾乎所有應用門(mén)陣列、PLD和中小規模通用數字集成電路的場(chǎng)合均可應用FPGA和CPLD器件。
12、鎖存器、觸發(fā)器、寄存器和緩沖器的區別
一、鎖存器
鎖存器(latch)---對脈沖電平敏感,在時(shí)鐘脈沖的電平作用下改變狀態(tài)
鎖存器是電平觸發(fā)的存儲單元,數據存儲的動(dòng)作取決于輸入時(shí)鐘(或者使能)信號的電平值,僅當鎖存器處于使能狀態(tài)時(shí),輸出才會(huì )隨著(zhù)數據輸入發(fā)生變化。
鎖存器不同于觸發(fā)器,它不在鎖存數據時(shí),輸出端的信號隨輸入信號變化,就像信號通過(guò)一個(gè)緩沖器一樣;一旦鎖存信號起鎖存作用,則數據被鎖住,輸入信號不起作用。鎖存器也稱(chēng)為透明鎖存器,指的是不鎖存時(shí)輸出對于輸入是透明的。
鎖存器(latch):我聽(tīng)過(guò)的最多的就是它是電平觸發(fā)的,呵呵。鎖存器是電平觸發(fā)的存儲單元,數據存儲的動(dòng)作取決于輸入時(shí)鐘(或者使能)信號的電平值,當鎖存器處于使能狀態(tài)時(shí),輸出才會(huì )隨著(zhù)數據輸入發(fā)生變化。(簡(jiǎn)單地說(shuō),它有兩個(gè)輸入,分別是一個(gè)有效信號EN,一個(gè)輸入數據信號DATA_IN,它有一個(gè)輸出Q,它的功能就是在EN有效的時(shí)候把DATA_IN的值傳給Q,也就是鎖存的過(guò)程)。
應用場(chǎng)合:數據有效遲后于時(shí)鐘信號有效。這意味著(zhù)時(shí)鐘信號先到,數據信號后到。在某些運算器電路中有時(shí)采用鎖存器作為數據暫存器。
缺點(diǎn):時(shí)序分析較困難。
不要鎖存器的原因有二:1、鎖存器容易產(chǎn)生毛刺,2、鎖存器在A(yíng)SIC設計中應該說(shuō)比f(wàn)f要簡(jiǎn)單,但是在FPGA的資源中,大部分器件沒(méi)有鎖存器這個(gè)東西,所以需要用一個(gè)邏輯門(mén)和ff來(lái)組成鎖存器,這樣就浪費了資源。
優(yōu)點(diǎn):面積小。鎖存器比FF快,所以用在地址鎖存是很合適的,不過(guò)一定要保證所有的latch信號源的質(zhì)量,鎖存器在CPU設計中很常見(jiàn),正是由于它的應用使得CPU的速度比外部IO部件邏輯快許多。latch完成同一個(gè)功能所需要的門(mén)較觸發(fā)器要少,所以在asic中用的較多。
二、觸發(fā)器
觸發(fā)器(Flip-Flop,簡(jiǎn)寫(xiě)為 FF),也叫雙穩態(tài)門(mén),又稱(chēng)雙穩態(tài)觸發(fā)器。是一種可以在兩種狀態(tài)下運行的數字邏輯電路。觸發(fā)器一直保持它們的狀態(tài),直到它們收到輸入脈沖,又稱(chēng)為觸發(fā)。當收到輸入脈沖時(shí),觸發(fā)器輸出就會(huì )根據規則改變狀態(tài),然后保持這種狀態(tài)直到收到另一個(gè)觸發(fā)。
觸發(fā)器(flip-flops)電路相互關(guān)聯(lián),從而為使用內存芯片和微處理器的數字集成電路(IC)形成邏輯門(mén)。它們可用來(lái)存儲一比特的數據。該數據可表示音序器的狀態(tài)、計數器的價(jià)值、在計算機內存的ASCII字符或任何其他的信息。
有幾種不同類(lèi)型的觸發(fā)器(flip-flops)電路具有指示器,如T(切換)、S-R(設置/重置)J-K(也可能稱(chēng)為Jack Kilby)和D(延遲)。典型的觸發(fā)器包括零個(gè)、一個(gè)或兩個(gè)輸入信號,以及時(shí)鐘信號和輸出信號。一些觸發(fā)器還包括一個(gè)重置當前輸出的明確輸入信號。第一個(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)設有一個(gè)輸入和輸出,當時(shí)鐘頻率由0轉為1時(shí),如果T和Q不相同時(shí),其輸出值會(huì )是1。輸入端T為1的時(shí)候,輸出端的狀態(tài)Q發(fā)生反轉;輸入端T為0的時(shí)候,輸出端的狀態(tài)Q保持不變。把JK觸發(fā)器的J和K輸入點(diǎn)連接在一起,即構成一個(gè)T觸發(fā)器。
應用場(chǎng)合:時(shí)鐘有效遲后于數據有效。這意味著(zhù)數據信號先建立,時(shí)鐘信號后建立。在CP上升沿時(shí)刻打入到寄存器。
三、寄存器
寄存器(register):用來(lái)存放數據的一些小型存儲區域,用來(lái)暫時(shí)存放參與運算的數據和運算結果,它被廣泛的用于各類(lèi)數字系統和計算機中。其實(shí)寄存器就是一種常用的時(shí)序邏輯電路,但這種時(shí)序邏輯電路只包含存儲電路。寄存器的存儲電路是由鎖存器或觸發(fā)器構成的,因為一個(gè)鎖存器或觸發(fā)器能存儲1位二進(jìn)制數,所以由N個(gè)鎖存器或觸發(fā)器可以構成N位寄存器。 工程中的寄存器一般按計算機中字節的位數設計,所以一般有8位寄存器、16位寄存器等。
對寄存器中的觸發(fā)器只要求它們具有置1、置0的功能即可,因而無(wú)論是用同步RS結構觸發(fā)器,還是用主從結構或邊沿觸發(fā)結構的觸發(fā)器,都可以組成寄存器。一般由D觸發(fā)器組成,有公共輸入/輸出使能控制端和時(shí)鐘,一般把使能控制端作為寄存器電路的選擇信號,把時(shí)鐘控制端作為數據輸入控制信號。
寄存器的應用
1. 可以完成數據的并串、串并轉換;
2.可以用做顯示數據鎖存器:許多設備需要顯示計數器的記數值,以8421BCD碼記數,以七段顯示器顯示,如果記數速度較高,人眼則無(wú)法辨認迅速變化的顯示字符。在計數器和譯碼器之間加入一個(gè)鎖存器,控制數據的顯示時(shí)間是常用的方法。
3.用作緩沖器;
4. 組成計數器:移位寄存器可以組成移位型計數器,如環(huán)形或扭環(huán)形計數器。
四、移位寄存器
移位寄存器:具有移位功能的寄存器稱(chēng)為移位寄存器。
寄存器只有寄存數據或代碼的功能。有時(shí)為了處理數據,需要將寄存器中的各位數據在移位控制信號作用下,依次向高位或向低位移動(dòng)1位。移位寄存器按數碼移動(dòng)方向分類(lèi)有左移,右移,可控制雙向(可逆)移位寄存器;按數據輸入端、輸出方式分類(lèi)有串行和并行之分。除了D邊沿觸發(fā)器構成移位寄存器外,還可以用諸如JK等觸發(fā)器構成移位寄存器。
五、總線(xiàn)收發(fā)器/緩沖器
緩沖寄存器:又稱(chēng)緩沖器緩沖器(buffer):多用在總線(xiàn)上,提高驅動(dòng)能力、隔離前后級,緩沖器多半有三態(tài)輸出功能。當負載不具有非選通輸出為高阻特性時(shí),將起到隔離作用;當總線(xiàn)的驅動(dòng)能力不夠驅動(dòng)負載時(shí),將起到驅動(dòng)作用。由于緩沖器接在數據總線(xiàn)上,故必須具有三態(tài)輸出功能。
它分輸入緩沖器和輸出緩沖器兩種。前者的作用是將外設送來(lái)的數據暫時(shí)存放,以便處理器將它取走;后者的作用是用來(lái)暫時(shí)存放處理器送往外設的數據。有了數控緩沖器,就可以使高速工作的CPU與慢速工作的外設起協(xié)調和緩沖作用,實(shí)現數據傳送的同步。
Buffer:緩沖區,一個(gè)用于在初速度不同步的設備或者優(yōu)先級不同的設備之間傳輸數據的區域。通過(guò)緩沖區,可以使進(jìn)程之間的相互等待變少,從而使從速度慢的設備讀入數據時(shí),速度快的設備的操作進(jìn)程不發(fā)生間斷。
緩沖器主要是計算機領(lǐng)域的稱(chēng)呼。具體實(shí)現上,緩沖器有用鎖存器結構的電路來(lái)實(shí)現,也有用不帶鎖存結構的電路來(lái)實(shí)現。一般來(lái)說(shuō),當收發(fā)數據雙方的工作速度匹配時(shí),這里的緩沖器可以用不帶鎖存結構的電路來(lái)實(shí)現;而當收發(fā)數據雙方的工作速度不匹配時(shí),就要用帶鎖存結構的電路來(lái)實(shí)現了(否則會(huì )出現數據丟失)。
緩沖器在數字系統中用途很多:
(1)如果器件帶負載能力有限,可加一級帶驅動(dòng)器的緩沖器;
(2)前后級間邏輯電平不同,可用電平轉換器加以匹配;
(3)邏輯極性不同或需要將單性變量轉換為互補變量時(shí),加帶反相緩沖器;(4)需要將緩變信號變?yōu)檫呇囟盖托盘枙r(shí),加帶施密特電路的緩沖器
(5)數據傳輸和處理中不同裝置間溫度和時(shí)間不同時(shí),加一級緩沖器進(jìn)行彌補等等。
評論