基于FPGA的數(shù)字電路設(shè)計(jì)綜述_第1頁
基于FPGA的數(shù)字電路設(shè)計(jì)綜述_第2頁
基于FPGA的數(shù)字電路設(shè)計(jì)綜述_第3頁
基于FPGA的數(shù)字電路設(shè)計(jì)綜述_第4頁
基于FPGA的數(shù)字電路設(shè)計(jì)綜述_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1 數(shù)字電子基礎(chǔ)31.1 導(dǎo)讀31.2 數(shù)字電路概述31.2.1 數(shù)字信號(hào)與數(shù)字電路31.2邏輯函數(shù)及其表示方法41.2.1邏輯代數(shù)41.2.2邏輯函數(shù)的表示方法及相互轉(zhuǎn)換41.3邏輯函數(shù)的公式化簡法61.3.1邏輯函數(shù)的不同表達(dá)方式61.3.2邏輯函數(shù)的公式化簡法61.4邏輯函數(shù)的卡諾圖化簡法61.4.1邏輯函數(shù)的最小項(xiàng)及其表達(dá)式61.4.2邏輯函數(shù)的卡諾圖表示法71.4.3用卡諾圖化簡邏輯函數(shù)82邏輯門電路102.1 導(dǎo)讀102.1邏輯門電路102.1.1三種基本門電路102.1.2 DTL與非門122.2 TTL邏輯門電路132.2.1 TTL與非門的電路結(jié)構(gòu)132.2.2 TTL與非門

2、的工作原理132.3 其他類型的TTL門電路142.3.1集電極開路與非門(OC門)142.3.2三態(tài)門(TSL門)152.4多余輸入端的處理173組合邏輯193.1 導(dǎo)讀193.2組合邏輯電路基礎(chǔ)193.2.1組合邏輯電路的基本概念193.2.2組合邏輯電路的分析方法203.2.3組合邏輯電路的設(shè)計(jì)方法203.3常用組合邏輯建模213.3.1編碼器213.3.2 譯碼器和數(shù)據(jù)分配器243.3.3數(shù)據(jù)選擇器293.3.4數(shù)值比較器303.3.5加法器(減法器)323.3.6乘法器343.3.7除法器364觸發(fā)器384.1導(dǎo)讀384.2觸發(fā)器的電路結(jié)構(gòu)及工作原理384.2.1基本RS觸發(fā)器(異步

3、)384.2.2同步RS觸發(fā)器394.2.3主從觸發(fā)器和邊沿觸發(fā)器424.3觸發(fā)器的功能分類及相互轉(zhuǎn)換444.3.1觸發(fā)器的功能分類444.3.2不同類型時(shí)鐘觸發(fā)器的相互轉(zhuǎn)換455時(shí)序邏輯電路475.1導(dǎo)讀475.2時(shí)序邏輯電路的基本概念475.2.1時(shí)序邏輯電路的結(jié)構(gòu)及特點(diǎn)475.3 時(shí)序邏輯的設(shè)計(jì)485.3.1同步時(shí)序邏輯電路的設(shè)計(jì)步驟485.3.2時(shí)序電路通用設(shè)計(jì)方法485.3時(shí)序邏輯建模495.3.1數(shù)碼寄存器495.3.2移位寄存器505.3.3鎖存器505.3.4寄存器集成電路介紹515.3.5計(jì)數(shù)器536總結(jié)601 數(shù)字電子基礎(chǔ)1.1 導(dǎo)讀個(gè)人認(rèn)為,現(xiàn)代信息技術(shù)就是,把現(xiàn)實(shí)世界,

4、利用強(qiáng)大的計(jì)算機(jī)技術(shù)處理和變換。而數(shù)字電路技術(shù)是整個(gè)信息技術(shù)的一個(gè)橋梁。現(xiàn)代計(jì)算機(jī)是基于是微電體系的,至少現(xiàn)階段計(jì)算機(jī)只能做“電計(jì)算”。所以我們需要一門技術(shù)把豐富多彩的現(xiàn)實(shí)世界,用電信號(hào)表示出來讓計(jì)算機(jī)也能理解,數(shù)字電路就是起這個(gè)作用。他能夠把現(xiàn)實(shí)世界中的各種信息,轉(zhuǎn)換到計(jì)算機(jī)的物理的電世界。本章介紹了把現(xiàn)實(shí)世界用物理的電信號(hào)表示出來的基本技術(shù)。本章主要討論數(shù)字電子技術(shù)的基礎(chǔ)理論知識(shí)。同時(shí),還給出了邏輯函數(shù)的概念、表示方法及相互轉(zhuǎn)換。1.2 數(shù)字電路概述1.2.1 數(shù)字信號(hào)與數(shù)字電路電子電路中的信號(hào)可分為兩類,一類在時(shí)間和幅度上都是連續(xù)的,稱為模擬信號(hào),如圖1.1所示,例如電壓、電流、溫度、聲

5、音等信號(hào)。傳送和處理模擬信號(hào)的電路稱為模擬電路; 圖1.1 模擬信號(hào)另一類在時(shí)間和幅度上都是離散的,稱為數(shù)字信號(hào),如圖1.2所示,例如計(jì)時(shí)裝置的時(shí)基信號(hào)、燈光閃爍等信號(hào)都屬于數(shù)字信號(hào)。傳送和處理數(shù)字信號(hào)的電路稱為數(shù)字電路。圖1.2 數(shù)字信號(hào)數(shù)字電路的特點(diǎn)l 信號(hào)是離散的數(shù)字信號(hào)。數(shù)字信號(hào)常用0、1二元數(shù)值表示。l 半導(dǎo)體器件均工作在開關(guān)狀態(tài),即工作在截止區(qū)和飽和區(qū)。l 研究的主要問題是輸入、輸出之間的邏輯關(guān)系。l 主要分析工具是邏輯代數(shù)。1.2邏輯函數(shù)及其表示方法1.2.1邏輯代數(shù)邏輯代數(shù)又叫布爾代數(shù)或開關(guān)代數(shù),是由英國數(shù)學(xué)家喬治布爾于1847年創(chuàng)立的。邏輯代數(shù)與普通代數(shù)都由字母來代替變量,但

6、邏輯代數(shù)與普通代數(shù)的概念不同,它不表示數(shù)量大小之間的關(guān)系,而是描述客觀事物一般邏輯關(guān)系的一種數(shù)學(xué)方法。 邏輯變量的取值只有兩種,即邏輯0和邏輯1,它們并不表示數(shù)量的大小,而是表示兩種對(duì)立的邏輯狀態(tài),如開關(guān)的通與斷、電位的高與低、燈的亮與滅等。0和1稱為邏輯常量。例如,在圖1.3所示的指示燈控制電路中,我們用字母Y表示指示燈,用A、B表示兩個(gè)開關(guān)。指示燈Y的亮與滅兩種狀態(tài)取決于開關(guān)A、B的通斷狀態(tài)。我們將A、B稱為輸入邏輯變量,將Y稱為輸出邏輯變量。圖1.3 指示燈控制電路邏輯代數(shù)有兩種邏輯體制,其中,正邏輯體制規(guī)定,高電平為邏輯1,低電平為邏輯0;負(fù)邏輯體制規(guī)定,低電平為邏輯1,高電平為邏輯0

7、。1.2.2邏輯函數(shù)的表示方法及相互轉(zhuǎn)換邏輯函數(shù)常用的表示方法有5種:邏輯真值表,邏輯函數(shù)表達(dá)式,邏輯圖,波形圖和卡諾圖。1. 邏輯真值表邏輯真值表是將輸入變量的各種可能取值和相應(yīng)的函數(shù)值排列在一起組成的表格,一個(gè)確定的邏輯函數(shù)只有一個(gè)邏輯真值表,具有惟一性。邏輯真值表能夠直觀明了地反映變量取值和函數(shù)值的對(duì)應(yīng)關(guān)系,但輸入變量較多時(shí),列寫起來比較繁瑣,它是將實(shí)際問題抽象為邏輯問題的首選描述方法。2. 邏輯函數(shù)表達(dá)式實(shí)際在FPGA設(shè)計(jì)中此方法較常用。函數(shù)表達(dá)式是面向人類的,易于人類理解,實(shí)際設(shè)計(jì)時(shí)我們主要工作就是把邏輯函數(shù)轉(zhuǎn)換為RTL代碼。而邏輯函數(shù)表達(dá)式的獲得就是算法設(shè)計(jì)。邏輯函數(shù)的表達(dá)式不是惟

8、一的,可以有多種形式,并且能互相轉(zhuǎn)換。邏輯函數(shù)的特點(diǎn)是:簡潔、抽象,便于化簡和轉(zhuǎn)換。 3. 邏輯圖與、或、非等運(yùn)算關(guān)系用相應(yīng)的邏輯符號(hào)表示出來,就是函數(shù)的邏輯圖。例如,異或邏輯關(guān)系也可用如圖1.14所示的邏輯圖來表示。優(yōu)點(diǎn)是:邏輯圖與數(shù)字電路的器件有明顯的對(duì)應(yīng)關(guān)系,便于制作實(shí)際電路。缺點(diǎn)是不能直接進(jìn)行邏輯推演和變換。 圖1.14 異或邏輯關(guān)系的邏輯圖4. 波形圖實(shí)際在FPGA分析中此方法最常用。當(dāng)然如果要做時(shí)序分析(提高系統(tǒng)性能,達(dá)到使用標(biāo)準(zhǔn)的必然分析)波形不會(huì)是如此陡峭,必須把上升沿和下降沿也表現(xiàn)出來,這樣才能精確地分析電路的最高頻率。反映輸入和輸出波形變化規(guī)律的圖形,稱為波形圖,也稱為時(shí)序

9、圖。異或邏輯關(guān)系中,當(dāng)給定A、B的輸入波形后,可畫出函數(shù)Y的波形,如圖1.15所示。圖1.15 異或邏輯關(guān)系的波形圖波形圖的優(yōu)點(diǎn)是,能直觀反映變量與時(shí)間的關(guān)系和函數(shù)值變化的規(guī)律,它與實(shí)際電路中的電壓波形相對(duì)應(yīng)。5. 各種表示方法之間的相互轉(zhuǎn)換同一邏輯函數(shù)可以用幾種不同的方式來表示,這幾種表示方法之間必然可以相互轉(zhuǎn)換 。由真值表寫出邏輯函數(shù)的一般步驟如下。(1) 找出真值表中使輸出Y=1的那些輸入變量的組合。(2)每組輸入變量的取值組合對(duì)應(yīng)一個(gè)乘積項(xiàng),其中變量取值為1的用原變量表示,取值為0的用反變量表示。(3)將這些乘積項(xiàng)相加,得到的即為真值表對(duì)應(yīng)的邏輯函數(shù)表達(dá)式。1.3邏輯函數(shù)的公式化簡法現(xiàn)

10、代EDA工具基本可以優(yōu)化邏輯函數(shù),所以化簡不是必需的。但是現(xiàn)在的EDA并不是非常的成熟,有些情況下,化簡是減少電路的競爭和冒險(xiǎn)的唯一手段,具體情況見兩本數(shù)電教材。1.3.1邏輯函數(shù)的不同表達(dá)方式同一邏輯函數(shù)可以有多種不同的表達(dá)方式,它們之間能互相轉(zhuǎn)換。1.3.2邏輯函數(shù)的公式化簡法在邏輯電路設(shè)計(jì)中,對(duì)邏輯函數(shù)化簡具有十分重要的意義。邏輯函數(shù)表達(dá)式越簡單,實(shí)現(xiàn)該函數(shù)所用的邏輯元件就越少,電路的可靠性就越高。一般情況下,都將邏輯函數(shù)化為最簡與或表達(dá)式。最簡與或表達(dá)式應(yīng)遵循乘積項(xiàng)最少,且每個(gè)乘積項(xiàng)的變量數(shù)最少的原則。 1.4邏輯函數(shù)的卡諾圖化簡法在應(yīng)用公式法對(duì)邏輯函數(shù)進(jìn)行化簡時(shí),不僅要求對(duì)公式能熟練

11、應(yīng)用,而且對(duì)最后結(jié)果是不是最簡要進(jìn)行判斷,遇到較復(fù)雜的邏輯函數(shù)時(shí),此方法有一定難度。下面介紹的卡諾圖化簡法,只要掌握了其要領(lǐng),化簡邏輯函數(shù)非常方便。1.4.1邏輯函數(shù)的最小項(xiàng)及其表達(dá)式1. 最小項(xiàng)的定義與性質(zhì)在n變量的邏輯函數(shù)中,若其與或表達(dá)式的每個(gè)乘積項(xiàng)都包含有n個(gè)因子,而且每個(gè)因子僅以原變量或反變量的形式在該乘積項(xiàng)中出現(xiàn)一次,這樣的乘積項(xiàng)稱為n變量邏輯函數(shù)的最小項(xiàng)。每個(gè)乘積項(xiàng)都是最小項(xiàng)形式的表達(dá)式稱為邏輯函數(shù)的最小項(xiàng)表達(dá)式。最小項(xiàng)的性質(zhì):(1) 對(duì)于輸入變量的任何一組取值,有且只有一個(gè)最小項(xiàng)的值為1。(2) 對(duì)于變量的任一組取值,任意兩個(gè)最小項(xiàng)的乘積為0。(3) 全體最小項(xiàng)之和為1。注意:

12、不說明變量數(shù)目的最小項(xiàng)是沒有意義的 。2. 邏輯函數(shù)的最小項(xiàng)表達(dá)式任何一個(gè)邏輯函數(shù)表達(dá)式都可以轉(zhuǎn)化為最小項(xiàng)之和的形式。方法是,先將邏輯函數(shù)寫成與或表達(dá)式,然后在不是最小項(xiàng)的乘積項(xiàng)中乘以(X+X)補(bǔ)齊所缺變量因子即可。 1.4.2邏輯函數(shù)的卡諾圖表示法1. 最小項(xiàng)的卡諾圖圖1.20 三變量的卡諾圖圖1.21 四變量的卡諾圖注意:為了確??ㄖZ圖中小方格所表示的最小項(xiàng)在幾何上相鄰時(shí),在邏輯上也有相鄰性,兩側(cè)標(biāo)注的數(shù)碼不能從小到大依次排列。除幾何相鄰的最小項(xiàng)有邏輯相鄰的性質(zhì)外,圖中每一行或每一列兩端的最小項(xiàng)也具有邏輯相鄰性,因此,卡諾圖可看成是一個(gè)上下左右閉合的圖形。卡諾圖形象、直觀地反映了最小項(xiàng)之間

13、的邏輯相鄰關(guān)系,但變量增多時(shí),卡諾圖會(huì)變得更為復(fù)雜。當(dāng)變量的個(gè)數(shù)在5個(gè)或5個(gè)以上時(shí),就不能僅用二維空間的幾何相鄰來代表其邏輯相鄰,故一般較少使用。2. 邏輯函數(shù)的卡諾圖表示既然任何邏輯函數(shù)式都可以表達(dá)成最小項(xiàng)形式,而最小項(xiàng)又可以表示在卡諾圖中,故邏輯函數(shù)可用卡諾圖表示。方法是:把邏輯函數(shù)式轉(zhuǎn)換成最小項(xiàng)表達(dá)式,然后在卡諾圖上與這些最小項(xiàng)對(duì)應(yīng)的方格內(nèi)填1,其余填0(也可以不填),就得到了表示這個(gè)邏輯函數(shù)的卡諾圖。任一邏輯函數(shù)的卡諾圖是惟一的。1.4.3用卡諾圖化簡邏輯函數(shù)1. 化簡依據(jù)相鄰最小項(xiàng)的合并規(guī)律是:兩個(gè)相鄰的最小項(xiàng)可合并為一項(xiàng),消去一個(gè)變量;4個(gè)相鄰的最小項(xiàng)可合并為一項(xiàng),消去兩個(gè)變量;8

14、個(gè)相鄰的最小項(xiàng)可合并為一項(xiàng),并消去3個(gè)變量。消去的是包圍圈中發(fā)生過變化的變量,而保留下的是包圍圈內(nèi)保持不變的變量,如圖1.23所示。圖1.23 最小項(xiàng)的合并規(guī)律2. 化簡步驟用卡諾圖化簡邏輯函數(shù)的步驟如下。(1) 將邏輯函數(shù)化成最小項(xiàng)之和的形式(有時(shí)可以跳過)。(2)用卡諾圖表示邏輯函數(shù)。(3) 對(duì)可以合并的相鄰最小項(xiàng)(填1的方格)畫出包圍圈。(4) 消去互補(bǔ)因子,保留公共因子,寫出每個(gè)包圍圈合并后所得的乘積項(xiàng)。用卡諾圖化簡時(shí),為了保證結(jié)果的最簡化和正確性,在選取可合并的最小項(xiàng)即畫包圍圈時(shí),應(yīng)遵循以下幾個(gè)原則。(1)每個(gè)包圍圈只能包含2n個(gè)填1的小方格,而且必須是矩形或正方形。(2) 包圍圈能

15、大勿小。包圍圈越大,消去的變量就越多,對(duì)應(yīng)乘積項(xiàng)的因子就越少,化簡的結(jié)果越簡單。(3) 包圍圈個(gè)數(shù)越少越好。因個(gè)數(shù)越少,乘積項(xiàng)就越少,化簡后的結(jié)果就越簡單。(4) 畫包圍圈時(shí),最小項(xiàng)可以被重復(fù)包圍,但每個(gè)包圍圈中至少應(yīng)有一個(gè)最小項(xiàng)是單獨(dú)屬于自己的,以保證該化簡項(xiàng)的獨(dú)立性。(5) 包圍圈應(yīng)把函數(shù)的所有最小項(xiàng)都圈完。2邏輯門電路 2.1 導(dǎo)讀如果是做基于FPGA的設(shè)計(jì)應(yīng)該是不用考慮到三極管、二極管這么低層的電路結(jié)構(gòu)吧?開始我也是這么認(rèn)為的,但是做了一個(gè)項(xiàng)目之后,隨著學(xué)習(xí)的升入發(fā)現(xiàn),邏輯門電路內(nèi)部的結(jié)構(gòu)必須要十分清楚。至少我們要有重視它的意識(shí),因?yàn)?,我們?cè)O(shè)計(jì)的系統(tǒng)式在硬件上運(yùn)行,限制硬件運(yùn)行頻率的就

16、是二極管、三極管的組裝結(jié)構(gòu),雖然隨著工藝的發(fā)展,工作速度可以越來越快,但是電路始終還是有頻率的上限的,只要上限存在我們就必須做時(shí)序分析。在設(shè)計(jì)達(dá)不到設(shè)計(jì)要求時(shí),做靜態(tài)時(shí)序分,依據(jù)分析結(jié)果添加相關(guān)約束或修改電路的關(guān)鍵路徑,改善電路時(shí)序是通用的做法。而如果在RTL級(jí)設(shè)計(jì)時(shí)我們就可以預(yù)估電路的延時(shí),然后精確地加入延時(shí)參數(shù),這時(shí)多么美妙的事情啊!能夠做到這一點(diǎn)我們的布局布線后仿真就是“走走形式”,功能仿真通過的電路就可以下載運(yùn)行,免去了無數(shù)的排錯(cuò),約束設(shè)計(jì)等等。但是,冰凍三尺,非一日之寒。達(dá)到這種境界是需要時(shí)間的。所以,還猶豫什么?開始好好學(xué)習(xí)這個(gè)咋看咋像模電的東西吧。2.1邏輯門電路在數(shù)字系統(tǒng)中,大

17、量地運(yùn)用著執(zhí)行基本邏輯操作的電路,這些電路稱為基本邏輯電路或門電路。早期的門電路主要由繼電器的觸點(diǎn)構(gòu)成,后來采用二極管、三極管,目前則廣泛應(yīng)用集成電路。2.1.1三種基本門電路1. 二極管與門電路實(shí)現(xiàn)“與”邏輯關(guān)系的電路叫做與門電路。由二極管組成的與門電路如圖2.1(a)所示,圖2.1所示(b)為其邏輯符號(hào)。圖中A、B為信號(hào)的輸入端,Y為信號(hào)的輸出端。圖2.1 二極管與門對(duì)二極管組成的與門電路分析如下。(1) A、B都是低電平UY0V(2) A是低電平,B是高電平UY0V(3) A是高電平,B是低電平UY0V(4) A、B都是高電平UY5V從上述分析可知,該電路實(shí)現(xiàn)的是與邏輯關(guān)系,即“輸入有低

18、,輸出為低;輸入全高,輸出為高”,所以,它是一種與門。2. 二極管或門電路實(shí)現(xiàn)或邏輯關(guān)系的電路叫做或門電路。由二極管組成的或門電路如圖2.2所示,其功能分析如下。圖2.2 二極管或門(1) A、B都是低電平UY=0V(2) A是低電平,B是高電平UY5V(3) A是高電平,B是低電平UY5V(4) A、B都是高電平UY5V通過上述分析,該電路實(shí)現(xiàn)的是或邏輯關(guān)系,即“輸入有高,輸出為高;輸入全低,輸出為低”,所以,它是一種或門。3. 三極管非門實(shí)現(xiàn)非邏輯關(guān)系的電路叫做非門電路。因?yàn)樗妮斎肱c輸出之間是反相關(guān)系,故又稱為反相器,其電路如圖2.3所示。圖2.3 三極管反相器2.1.2 DTL與非門采

19、用二極管門電路和三極管反相器,可組成與非門和或非門擴(kuò)大邏輯功能,這種電路應(yīng)用非常廣泛。 DTL與非門電路是由二極管與門和三極管反相器串聯(lián)而成的,其電路圖及邏輯符號(hào)分別如圖2.4(a)和圖2.4(b)所示。圖2.4 DTL與非門當(dāng)輸入端A、B都是高電平時(shí),VD1、VD2均截止,而VD3、VD4和三極管導(dǎo)通,注入三極管的基極電流足夠大,三極管飽和導(dǎo)通,輸出低電平,UY=0V,在兩個(gè)輸入端A、B中有一個(gè)為低電平時(shí),VD3、VD4和三極管均截止,輸出高電平,UY=VCC??梢姶诉壿嬮T能實(shí)現(xiàn)與非邏輯關(guān)系。2.2 TTL邏輯門電路TTL門電路是晶體管-晶體管邏輯(Transistor-Transistor

20、 Logic)門電路的簡稱,這種電路由于其輸入級(jí)和輸出級(jí)均采用晶體三極管而得名。按照國際通用標(biāo)準(zhǔn),根據(jù)工作溫度不同,TTL電路分為54系列(-55125)和74系列(070);根據(jù)工作速度和功耗不同,TTL電路又分為標(biāo)準(zhǔn)系列、高速(H)系列、肖特基(S)系列和低功耗肖特基(LS)系列。2.2.1 TTL與非門的電路結(jié)構(gòu)TTL與非門的基本電路如圖2.5(a)所示,它由輸入級(jí)、中間級(jí)和輸出級(jí)三部分組成。 圖2.5 基本TTL與非門電路及V1管的等效電路2.2.2 TTL與非門的工作原理(1) 當(dāng)A、B兩端有一個(gè)輸入為低電平0.3V時(shí),V1的發(fā)射結(jié)導(dǎo)通,其基極電壓等于輸入低電壓加上發(fā)射結(jié)正向壓降 。

21、V2、V5都截止V3和V4導(dǎo)通UY3.6V實(shí)現(xiàn)了“輸入有低,輸出為高”的邏輯關(guān)系。2) 當(dāng)A、B兩端均輸入高電平3.6V時(shí),V2、V5飽和導(dǎo)通,V3和V4均截止。輸出為低電平,即UY0.3V 此時(shí),電路實(shí)現(xiàn)了“輸入全高,輸出為低”的邏輯關(guān)系。2.3 其他類型的TTL門電路將兩個(gè)門的輸出端并聯(lián)以實(shí)現(xiàn)與邏輯的功能,把這種連接方式稱為“線與”。如果將兩個(gè)門電路的輸出端連接在一起,如圖2.6所示。當(dāng)一個(gè)門的輸出處于高電平,而另一個(gè)門的輸出為低電平時(shí),將會(huì)產(chǎn)生很大的電流,有可能導(dǎo)致器件損壞,無法形成有用的線與邏輯關(guān)系。圖2.6 推拉式輸出級(jí)并聯(lián)的情況2.3.1集電極開路與非門(OC門)集電極開路與非門是

22、將推拉式輸出級(jí)改為集電極開路的三極管結(jié)構(gòu),做成集電極開路輸出的門電路(Open Collector Gate),簡稱為OC門,其電路如圖2.7(a)所示。圖2.7 OC與非門的電路和圖形符號(hào)將OC門輸出連在一起時(shí),再通過一個(gè)電阻接外電源,這樣可以實(shí)現(xiàn)“線與”邏輯關(guān)系。只要電阻的阻值和外電源電壓的數(shù)值選擇得當(dāng),就能做到既保證輸出的高、低電平符合要求,而且輸出三極管的負(fù)載電流又不至于過大。 而且輸出三極管的負(fù)載電流又不至于過大。兩個(gè)OC門并聯(lián)時(shí)的連接方式如圖2.8所示。圖2.8 OC門輸出并聯(lián)的接法及邏輯圖在圖2.9中表示出“線與”電路中OC門輸出高電平的情況,假定n個(gè)OC門連接成“線與”邏輯,帶

23、m個(gè)與非門負(fù)載。當(dāng)所有OC門都處于截止?fàn)顟B(tài)時(shí),“線與”后輸出為高電平。 圖2.9“線與”電路中OC門輸出高電平的情況OC門除了可以實(shí)現(xiàn)多門的線與邏輯關(guān)系外,還可用于直接驅(qū)動(dòng)較大電流的負(fù)載,如繼電器、脈沖變壓器、指示燈等,也可以用來改變TTL電路輸出的邏輯電平,以便與邏輯電平不同的其他邏輯電路相連接。OC門可以“線與”,但需要上拉電阻。2.3.2三態(tài)門(TSL門)三態(tài)門應(yīng)用廣泛,在FPGA的設(shè)計(jì)中可以直接用代碼寫出三態(tài)門,比較方便。關(guān)于Verilog建模技巧的資料中有建模方法,有興趣自己查。為保持推拉式輸出級(jí)的優(yōu)點(diǎn),還能作線與連接,人們又開發(fā)了一種三態(tài)與非門,它的輸出除了具有一般與非門的兩種狀態(tài)

24、外,還可以呈現(xiàn)高阻狀態(tài),或稱開路狀態(tài)、禁止?fàn)顟B(tài)。一個(gè)簡單的三態(tài)門的電路如圖2.10(a)所示,圖2.11(b)所示為它的邏輯符號(hào),它是由一個(gè)與非門和一個(gè)二極管構(gòu)成的,EN為控制端,A、B為數(shù)據(jù)輸入端。圖2.10 三態(tài)與非門電路圖2.10所示電路中,當(dāng)EN=1時(shí)電路為工作狀態(tài),所以稱為控制端高電平有效。三態(tài)門的控制端也可以是低電平有效,即EN為低電平時(shí),三態(tài)門為工作狀態(tài);EN為高電平時(shí),三態(tài)門為高阻狀態(tài)。其電路圖及邏輯符號(hào)如圖2.11所示。圖2.11 控制端為低電平有效的三態(tài)門三態(tài)門的應(yīng)用比較廣泛,下面舉例說明三態(tài)門的3種應(yīng)用:l 作多路開關(guān)l 信號(hào)雙向傳輸l 構(gòu)成數(shù)據(jù)總線電路圖如圖2.12所示

25、。圖2.12 三態(tài)門三種應(yīng)用的連接方式2.4多余輸入端的處理FPGA多余角的處理沒有看到相關(guān)介紹,個(gè)人估計(jì)會(huì)出現(xiàn)在FPGA 的PCB設(shè)計(jì)資料上,如果哪位查到,謝謝分享。在使用集成門電路時(shí),如果輸入信號(hào)數(shù)小于門的輸入端數(shù),就有多余輸入端。一般不讓多余的輸入端懸空,以防止干擾信號(hào)引入。對(duì)多余輸入端的處理,以不改變電路工作狀態(tài)及穩(wěn)定可靠為原則。對(duì)于TTL與非門,通常將多余輸入端通過1k的電阻R與電源+VCC相連;也可以將多余輸入端與另一接有輸入信號(hào)的輸入端連接。這兩種方法如圖2.34所示。TTL與門多余輸入端的處理方法和與非門完全相同。圖2.13 TTL與非門多余輸入端的處理方法對(duì)于TTL或非門,則

26、應(yīng)該把多余輸入端接地,或把多余輸入端與另一個(gè)接有輸入信號(hào)的輸入端相接。這兩種方法如圖2.14所示。TTL或門多余輸入端的處理方法和或非門完全相同。 圖2.14 TTL或非門多余輸入端的處理方法對(duì)于CMOS電路,多余的輸入端必須依據(jù)相應(yīng)電路的邏輯功能決定是接在正電源VDD上(與門、與非門)或是與地相接(或門、或非門)。一般不宜與使用的輸入端并聯(lián)使用,因?yàn)檩斎攵瞬⒙?lián)時(shí)將使前級(jí)的負(fù)載電容增加,工作速度下降,動(dòng)態(tài)功耗增加。這里對(duì)基本門電路的介紹很簡單,我認(rèn)為這是不太夠用的,有興趣大家可以查閱模電教材。另外,如果要設(shè)計(jì)除具有實(shí)用價(jià)值的電路,必須學(xué)習(xí)時(shí)序分析和約束設(shè)計(jì)。本章內(nèi)容重在一個(gè)概念的建立,不要過多

27、的糾纏細(xì)節(jié)。3組合邏輯3.1 導(dǎo)讀筆者認(rèn)為,組合邏輯是數(shù)電路中的兩大核心部分之一(另一部分是時(shí)序邏輯)。組合邏輯的任務(wù)就是完成從輸入到輸出的變換,它是一種處理型的器件。各種處理任務(wù)都是他完成的。數(shù)電教材上說,沒有組合邏輯,就算電路規(guī)模再大(例如RAM)也稱不上是電路系統(tǒng)。我認(rèn)為還是說得很貼切的。在FPGA的設(shè)計(jì)中,組合邏輯是一部信號(hào)產(chǎn)生的根源之一。組合邏輯的競爭冒險(xiǎn)也加劇了電路的不穩(wěn)定性,在進(jìn)行FPGA的數(shù)字系統(tǒng)設(shè)計(jì)時(shí)應(yīng)該注意。本章后面有一部分是ALU設(shè)計(jì),ALU有些設(shè)計(jì)方法設(shè)計(jì)出的電路不是純組合邏輯,在這里對(duì)此做一個(gè)說明。本章后一部分主要分類介紹了組合邏輯的建模,其中主要注重建模方式的介紹,

28、由于所有的數(shù)點(diǎn)資料基本都是基于傳統(tǒng)的電路圖設(shè)計(jì)方式分析的。這里借鑒了分析方法,列出了許多引腳圖,這在我們自己建模時(shí)是由參考意義的。借鑒千人的引腳圖,模塊化設(shè)計(jì)時(shí)我們可以直接寫出端口,然后再做詳細(xì)的RTL級(jí)設(shè)計(jì)。本章后一部分給出的ALU建模方法并不限于介紹的幾種(尤其是除法器),筆者盡量把ALU的建模寫全,但是由于水平、精力、時(shí)間都有限并未寫完整。其中的乘法器和除法器更是復(fù)雜,每一個(gè)ALU器件的設(shè)計(jì)方法都可以寫本書,內(nèi)容非常之多。ALU是現(xiàn)代CPU的一個(gè)核心電路,發(fā)展已經(jīng)很成熟了,如果有興趣,各位可以繼續(xù)升入學(xué)習(xí)。3.2組合邏輯電路基礎(chǔ)3.2.1組合邏輯電路的基本概念1. 組合邏輯電路的定義組合

29、邏輯電路是指在任一時(shí)刻,電路的輸出狀態(tài)僅取決于該時(shí)刻各輸入狀態(tài)的組合,而與電路的原狀態(tài)無關(guān)的邏輯電路。其特點(diǎn)是輸出狀態(tài)與輸入狀態(tài)呈即時(shí)性,電路無記憶功能。2. 組合邏輯電路的描述方法組合邏輯電路模型如圖3.1所示。 圖3.1 組合邏輯電路的一般框圖3、競爭冒險(xiǎn)參考數(shù)電教材。3.2.2組合邏輯電路的分析方法組合邏輯電路的分析一般是根據(jù)已知邏輯電路圖求出其邏輯功能的過程,實(shí)際上就是根據(jù)邏輯圖寫出其邏輯表達(dá)式、真值表,并歸納出其邏輯功能。1. 組合邏輯電路的分析步驟(1) 寫出邏輯函數(shù)表達(dá)式(2) 化簡邏輯函數(shù)式(3) 列真值表(4) 說明功能3.2.3組合邏輯電路的設(shè)計(jì)方法組合邏輯電路設(shè)計(jì)主要是將

30、客戶的具體設(shè)計(jì)要求用邏輯函數(shù)加以描述,再用具體的電路加以實(shí)現(xiàn)的過程。組合邏輯電路的設(shè)計(jì)可分為小規(guī)模集成電路、中規(guī)模集成電路、定制或半定制集成電路的設(shè)計(jì),這里主要講解用小規(guī)模集成電路(即用邏輯門電路)來實(shí)現(xiàn)組合邏輯電路的功能。1. 組合邏輯電路設(shè)計(jì)步驟(1) 列真值表。根據(jù)電路功能的文字描述,將其輸入與輸出的邏輯關(guān)系用真值表的形式列出。(2) 寫表達(dá)式,并化簡。通過邏輯化簡,根據(jù)真值表寫出最簡的邏輯函數(shù)表達(dá)式。(3) 選擇合適的門器件,把最簡的表達(dá)式轉(zhuǎn)換為相應(yīng)的表達(dá)式。(4) 根據(jù)表達(dá)式畫出該電路的邏輯電路圖。(5) 根據(jù)邏輯函數(shù)寫出RTL級(jí)代碼。3.3常用組合邏輯建模3.3.1編碼器l 編碼器

31、的定義把若干位二進(jìn)制數(shù)碼0和1,按一定的規(guī)律進(jìn)行編排,組成不同的代碼,并且賦予每組代碼以特定的含義,叫做編碼。實(shí)現(xiàn)編碼操作的電路稱為編碼器。二進(jìn)制編碼器實(shí)現(xiàn)用n位二進(jìn)制數(shù)碼對(duì)N(N=2n)個(gè)輸入信號(hào)進(jìn)行編碼的電路叫做二進(jìn)制編碼電路。其特點(diǎn)是,任一時(shí)刻只能對(duì)一個(gè)輸入信號(hào)進(jìn)行編碼,即只允許一個(gè)輸入信號(hào)為有效電平,而其余信號(hào)均為無效電平。圖3.1所示電路是實(shí)現(xiàn)由3位二進(jìn)制代碼對(duì)8個(gè)輸入信號(hào)進(jìn)行編碼的二進(jìn)制編碼器,這種編碼器有8根輸入線,3根輸出線,常稱為8/3線編碼器。 圖3.2 3位二進(jìn)制編碼器邏輯圖二-十進(jìn)制編碼器實(shí)現(xiàn)用四位二進(jìn)制代碼對(duì)一位十進(jìn)制數(shù)碼進(jìn)行編碼的數(shù)字電路叫做二-十進(jìn)制編碼器,簡稱為

32、BCD碼編碼器。最常見的BCD碼編碼器是8421BCD碼編碼器,它有10根輸入線,4根輸出線,常稱為10/4線編碼器。其特點(diǎn)也是任一時(shí)刻只允許對(duì)一個(gè)輸入信號(hào)進(jìn)行編碼。優(yōu)先編碼器優(yōu)先編碼器在多個(gè)信息同時(shí)輸入時(shí)只對(duì)輸入中優(yōu)先級(jí)別最高的信號(hào)進(jìn)行編碼,編碼具有惟一性。優(yōu)先級(jí)別是由編碼者事先規(guī)定好的。顯然,優(yōu)先編碼器改變了上述兩種編碼器任一時(shí)刻只允許一個(gè)輸入有效的輸入方式,而采用了允許多個(gè)輸入同時(shí)有效的輸入方式,這正是優(yōu)先編碼器的特點(diǎn),也是它的優(yōu)點(diǎn)所在。圖3.8為3位二進(jìn)制優(yōu)先編碼器的邏輯圖。圖3.3 3位二進(jìn)制優(yōu)先編碼器的邏輯圖集成編碼器集成3位二進(jìn)制優(yōu)先編碼器(8/3線)148148主要包括TTL系

33、列中的54/74148、54/74LS148、54/74F148和CMOS系列中的54/74HC148、40H148等。其外引腳排列圖如圖3.4所示。圖3.4 74LS148引腳S為使能輸入端,低電平有效,即只有當(dāng)S=0時(shí),編碼器才工作。YS為使能輸出端,當(dāng)S=0允許工作時(shí),如果YS=0則表示無輸入信號(hào),YS=1表示有輸入信號(hào),有編碼輸出。YEX為擴(kuò)展輸出端,當(dāng)S=0時(shí),只要有編碼信號(hào),則YEX=0,說明有編碼信號(hào)輸入,輸出信號(hào)是編碼輸出;YEX=1表示不是編碼輸出。YS和S配合可以實(shí)現(xiàn)多級(jí)編碼器之間優(yōu)先級(jí)別的控制。圖3.5是利用2片集成3位二進(jìn)制優(yōu)先編碼器74LS148實(shí)現(xiàn)一個(gè)16/4線優(yōu)先

34、編碼器的接線圖。圖3.5 有限編碼器應(yīng)用集成二-十進(jìn)制優(yōu)先編碼器(10/4線)147147主要包括TTL系列中的54/74147、54/74LS147和CMOS系列中的54/74HC147、54/74HCT147和40H147等。其外引腳排列圖如圖3.6所示。 圖3.6 74LS147引腳圖其他編碼器個(gè)人認(rèn)為編碼方式分類還可分為,其他兩種編碼器以下兩種,常用與工控系統(tǒng),我們微電系統(tǒng)也可以借鑒其設(shè)計(jì)思想增量式編碼器:根據(jù)前一時(shí)刻的編碼值,計(jì)算出當(dāng)前編碼相對(duì)值。1、 百度百科2、 通信原理(5版) 樊昌信 P215差分編碼。絕對(duì)式編碼器:計(jì)算當(dāng)前編碼絕對(duì)值,與前一時(shí)刻碼值無關(guān)。1、 百度百科2、

35、通信原理(5版) 樊昌信 P206脈沖編碼調(diào)制。最后,我們還可以把比較大型的編碼器歸為一類。例如Turbo碼 編碼器、JPEG2000編碼器、mp3編碼器等等。這類編碼器一般都有專門的IP核供應(yīng)商。3.3.2 譯碼器和數(shù)據(jù)分配器將每一組輸入的二進(jìn)制代碼“翻譯”成為一個(gè)特定的輸出信號(hào),用來表示該組代碼原來所代表的信息的過程(編碼的逆過程)稱為譯碼。實(shí)現(xiàn)譯碼功能的數(shù)字電路稱為譯碼器。二進(jìn)制譯碼器將輸入的二進(jìn)制代碼翻譯成為原來對(duì)應(yīng)信息的組合邏輯電路,稱為二進(jìn)制譯碼器。它具有n個(gè)輸入端,2n個(gè)輸出端,故稱之為n/2n線譯碼器。 圖3.7為3/8線譯碼器的邏輯電路圖圖3.7 3/8線譯碼器的電路圖二-十

36、進(jìn)制譯碼器二-十進(jìn)制譯碼器(又稱為BCD碼譯碼器)是將輸入的每一組4位二進(jìn)制碼翻譯成對(duì)應(yīng)的1位十進(jìn)制數(shù)。因編碼過程不同,即編碼時(shí)采用的BCD碼不同,所以相應(yīng)的譯碼過程也不同,故BCD碼譯碼器有多種。但此種譯碼器都有4個(gè)輸入端,10個(gè)輸出端,常稱之為4/10線譯碼器。8421BCD碼譯碼器是最常用的BCD碼譯碼器,圖3.8所示是其邏輯圖。圖3.8 8421BCD碼譯碼器應(yīng)當(dāng)注意的是,BCD碼譯碼器的輸入狀態(tài)組合中總有6個(gè)偽碼狀態(tài)存在。所用BCD碼不同,則相應(yīng)的6個(gè)偽碼狀態(tài)也不同,8421BCD碼譯碼器的6個(gè)偽碼狀態(tài)組合為10101111。在設(shè)計(jì)BCD碼譯碼器時(shí),應(yīng)使電路具有拒絕偽碼的功能,即當(dāng)輸

37、入端出現(xiàn)不應(yīng)被翻譯的偽碼狀態(tài)時(shí),輸出均呈無效電平。上面的8421BCD碼譯碼器便具有拒絕偽碼的功能。數(shù)字顯示譯碼器用來驅(qū)動(dòng)各種顯示器件,從而將用二進(jìn)制代碼表示的數(shù)字、文字、符號(hào)翻譯成人們習(xí)慣的形式直觀的顯示出來的電路,稱為顯示譯碼器。(1)顯示器件 數(shù)字顯示器件的種類很多,按發(fā)光物質(zhì)的不同分為半導(dǎo)體(發(fā)光二極管)顯示器、液晶顯示器、熒光顯示器和輝光顯示器等;按組成數(shù)字的方式不同,又可分為分段式顯示器、點(diǎn)陣式顯示器和字型重疊式顯示器等。點(diǎn)陣式顯示器主要用于大屏幕顯示器,通常要有計(jì)算機(jī)控制其顯示過程。目前使用較多的是分段式顯示器,其顯示方式是通過七段顯示器完成09字符的顯示過程。七段顯示器主要有輝

38、光數(shù)碼管和半導(dǎo)體顯示器。半導(dǎo)體顯示器使用最多,它有共陰極和共陽極兩種接法,如圖3.9所示。 圖3.9 七段顯示器(2)七段顯示譯碼器字型重疊式顯示器適用于BCD碼譯碼器;而分段式顯示器顯然不適合于前面所述任何一種譯碼器,需要另外設(shè)計(jì)合適的譯碼電路來與分段顯示器配合使用。七段顯示譯碼器的輸入信號(hào)為8421BCD碼,輸出信號(hào)應(yīng)該能夠驅(qū)動(dòng)半導(dǎo)體七段顯示器相應(yīng)段發(fā)光。對(duì)于共陰極七段顯示器,待點(diǎn)亮的段應(yīng)給予高電平驅(qū)動(dòng)信號(hào),對(duì)于共陽極七段顯示器,待點(diǎn)亮的段應(yīng)給予低電平驅(qū)動(dòng)信號(hào)。 集成譯碼器(1) 3位二進(jìn)制譯碼器(3/8線)138138包括TTL系列中的54/74LS138、54/74S138、54/74

39、ALS138、54/74F138和54/74AS138,CMOS系列中的54/74HC138、54/74HCT138和40H138等。138為3位二進(jìn)制譯碼器,其外引腳排列如圖3.10所示。 圖3.10 74LS138應(yīng)注意的是,138的輸入采用原碼的形式;而輸出采用的卻是反碼形式。 (2) 8421BCD碼譯碼器(4/10線)42此種譯碼器包含有TTL系列的54/7442、54/74LS42和CMOS中的54/74HC42、54/74HCT42及40HC42等。其外引腳排列圖如圖3.11示。 圖3.11 74LS42(3) 七段顯示譯碼器4848主要有TTL系列中的74LS48等。其引腳排列

40、圖如圖3.18所示。邏輯功能表如表3.15所示。圖3.12 七段顯示譯碼器七段顯示譯碼器48與共陰極七段數(shù)碼管顯示器BS201A的連接方法如圖3.13所示。圖3.13七段顯示譯碼器應(yīng)用數(shù)據(jù)分配器(1) 數(shù)據(jù)分配器的原理數(shù)據(jù)分配器的邏輯功能是,將1個(gè)輸入數(shù)據(jù)傳送到多個(gè)輸出端中的1個(gè)輸出端,具體傳送到哪一個(gè)輸出端,也是由一組選擇控制信號(hào)確定。數(shù)據(jù)分配器的邏輯框圖及等效電路如圖3.14所示。圖3.14 數(shù)據(jù)分配器的邏輯框圖及等效電路通道地址選擇碼的位數(shù)n與數(shù)據(jù)輸出端的數(shù)目m有如下關(guān)系m=2n(2)數(shù)據(jù)分配器的實(shí)現(xiàn)電路數(shù)據(jù)分配器實(shí)際上是譯碼器(分段顯示譯碼器除外)的一種特殊應(yīng)用。譯碼器必須具有“使能端

41、”,且“使能端”要作為數(shù)據(jù)輸入端使用,而譯碼器的輸入端要作為通道選擇地址碼輸入端,譯碼器的輸出端就是分配器的輸出端。作為數(shù)據(jù)分配器使用的譯碼器通常是二進(jìn)制譯碼器。圖3.15是將2/4線譯碼器作為數(shù)據(jù)分配器使用的邏輯圖。圖3.15 2/4線譯碼器作為數(shù)據(jù)分配器其他譯碼器與編碼器對(duì)應(yīng),我們可以把比較大型的譯碼器歸為一類。例如Turbo碼譯碼器、JPEG2000譯碼器、mp3譯碼器等等3.3.3數(shù)據(jù)選擇器數(shù)據(jù)選擇器1. 數(shù)據(jù)選擇器的邏輯功能數(shù)據(jù)選擇器的邏輯功能恰好與數(shù)據(jù)分配器的邏輯功能相反,即能從多個(gè)輸入數(shù)據(jù)中選出一個(gè)送到輸出端。數(shù)據(jù)選擇器的邏輯框圖及等效電路如圖3.16所示。圖3.16 數(shù)據(jù)選擇器

42、的邏輯框圖及等效電路2. 數(shù)據(jù)選擇器的實(shí)現(xiàn)電路數(shù)據(jù)選擇器的主體電路一定是與或門陣列。數(shù)據(jù)選擇器還有一個(gè)十分重要的用途,即可以用來作為函數(shù)發(fā)生器實(shí)現(xiàn)任意組合的邏輯函數(shù)。圖3.17 數(shù)據(jù)選擇器 用來實(shí)現(xiàn)同一邏輯函數(shù)的選擇器不同,會(huì)使電路的輸入部分不同。在可能的情況下,應(yīng)盡量選用通道地址碼變量個(gè)數(shù)與所要實(shí)現(xiàn)的邏輯函數(shù)輸入變量的個(gè)數(shù)相等或減少一個(gè),從而使實(shí)現(xiàn)函數(shù)的電路簡化。3.集成數(shù)據(jù)選擇器(1) 集成雙4選1數(shù)據(jù)選擇器153集成雙4選1數(shù)據(jù)選擇器包含有TTL系列的54/74153、54/74LS153、54/74S153、54/74153和CMOS中的54/74HC153、54/74HCT153及4

43、0H153等。其外引腳排列圖如圖3.18所示。圖3.18集成數(shù)據(jù)選擇器153(2) 集成8選1數(shù)據(jù)選擇器151集成8選1數(shù)據(jù)選擇器包含有TTL系列的54/74151、54/74LS151、54/74S151、54/74151和CMOS中的54/74HC151、54/74HCT151及40H151等。其外引腳排列圖如圖3.27所示。圖3.19 74LS151再利用FPGA實(shí)現(xiàn)數(shù)據(jù)選擇器是常用的是ifelse語句和case語句,兩者分別對(duì)應(yīng)優(yōu)先數(shù)據(jù)選擇器和普通數(shù)據(jù)選擇器3.3.4數(shù)值比較器數(shù)值比較器定義具有實(shí)現(xiàn)兩個(gè)二進(jìn)制數(shù)大小的比較,并把比較結(jié)果作為輸出的數(shù)字電路稱為數(shù)值比較器。1位數(shù)值比較器數(shù)值

44、比較器的真值表:A BL1(AB) L2(AB、AB、AB接低電平、A=B接高電平。若需擴(kuò)大比較器的位數(shù)時(shí),可用多片連接。圖3.20 用3片85組成12位數(shù)值比較器的邏輯電路3.3.5加法器(減法器)注意:在硬件設(shè)計(jì)中減法器是用加法器實(shí)現(xiàn)的具體分析參見康華光教材4.4.5節(jié)P167。半加器能對(duì)兩個(gè)1位二進(jìn)制數(shù)進(jìn)行相加而求得和及進(jìn)位的邏輯電路稱為半加器。 全加器能對(duì)兩個(gè)1位二進(jìn)制數(shù)進(jìn)行相加并考慮低位來的進(jìn)位,即相當(dāng)于對(duì)3個(gè)1位二進(jìn)制數(shù)相加,求得和及進(jìn)位的邏輯電路稱為全加器。 如果要進(jìn)行多位的加法需要多個(gè)全加器構(gòu)成多為全加器,構(gòu)成多為全加器的方法很多,現(xiàn)在介紹如下級(jí)連加法器級(jí)連加法器又叫行波進(jìn)位加

45、法器,由1位全加器串聯(lián)構(gòu)成,本級(jí)的進(jìn)位輸出作為下一級(jí)的進(jìn)位輸入。這種加法器結(jié)構(gòu)簡單,但速度慢,字長為N的加法運(yùn)算需要N一1級(jí)門延時(shí),延時(shí)主要是進(jìn)位信號(hào)級(jí)連造成的。所以在需要高性能的設(shè)計(jì)中,一般不用這種結(jié)構(gòu)的加法器。但是在用可編程邏輯器件實(shí)現(xiàn)這種加法器時(shí),Xillnx和Altera的器件都為這種進(jìn)位邏輯設(shè)置了專門的進(jìn)位鏈。如果能充分利用這些專有資源,這種加法器在可編程邏輯器件中也能達(dá)到比較高的性能。并行加法器又稱查找表型加法器,可采用硬件描述語言的運(yùn)算符直接描述。這種結(jié)構(gòu)預(yù)先將N位加法表放在一個(gè)查找表中,使用操作數(shù)作為地址去訪問查找表,得到的輸出數(shù)據(jù)就是加法值。例如,一個(gè)4位+4位的加法器可以放

46、到一個(gè)的查找表中。查找表一般由RAM或ROM構(gòu)成,也可由邏輯結(jié)構(gòu)實(shí)現(xiàn)。雖然這種結(jié)構(gòu)的加法器實(shí)現(xiàn)起來很容易,并且運(yùn)算速度快,但耗用資源多,尤其是當(dāng)加法運(yùn)算的位數(shù)較寬時(shí),其耗用的資源將會(huì)非常大。超前進(jìn)位加法器級(jí)連加法器的延時(shí)主要是由進(jìn)位的延時(shí)造成的,因此要加快加法器的運(yùn)算速度,就必須減小進(jìn)位延遲,超前進(jìn)位鏈能有效減小進(jìn)位的延遲。超前進(jìn)位加法器的特點(diǎn)是各級(jí)進(jìn)位信號(hào)同時(shí)產(chǎn)生,大大減少了進(jìn)位產(chǎn)生的時(shí)間。下面以4位超前進(jìn)位鏈的推導(dǎo)為例,簡要介紹超前進(jìn)位的概念。首先對(duì)1位全加器其本位值和與進(jìn)位輸出表示如下:在這里,我們令G=ab,P =a+b,則有:由此,可用G和P來寫出4位超前進(jìn)位鏈如下(設(shè)定4位被加數(shù)和

47、加數(shù)為A和B,進(jìn)位輸入為,進(jìn)位輸出為,進(jìn)位產(chǎn)生,進(jìn)位傳輸為):由上面的超前進(jìn)位鏈可以看出:各個(gè)進(jìn)位彼此獨(dú)立產(chǎn)生,將進(jìn)位級(jí)連傳播給去掉了,因此,減小了進(jìn)位產(chǎn)生的延遲時(shí)間。但是,隨著加法器位數(shù)的增加,進(jìn)位的表達(dá)式會(huì)越來越長,這樣電路結(jié)構(gòu)就會(huì)變得越來越復(fù)雜。而且受到器件扇入系數(shù)的限制,電路的性能就會(huì)下降,所以完全采用并行進(jìn)位是不可能的。為此,通常可以采用分組的方法來解決該問題,即把N位字長的加法器分成若干小組(例如4hit一組,充分利用FPGA四輸入LUT結(jié)構(gòu))。在組內(nèi)實(shí)現(xiàn)超前進(jìn)位,組間既可以用行波進(jìn)位,也可以采用超前進(jìn)位。一般情況下,把組內(nèi)采用超前進(jìn)位,組間采用行波進(jìn)位的加法器稱為單級(jí)超前進(jìn)位加法

48、器,把組內(nèi)組間都采用超前進(jìn)位的加法器稱為多級(jí)超前進(jìn)位加法器。跳躍進(jìn)位加法器參考:1、 二級(jí)進(jìn)位跳躍加法器的優(yōu)化方塊分配.pdf2、 快速靜態(tài)進(jìn)位跳躍加法器.pdf3、 基于方塊超前進(jìn)位的快速進(jìn)位跳躍加法器.pdf4、 精通Verilog HDL語言編程15.3 P438流水線加法器并行加法器速度快,只有一級(jí)門延時(shí),對(duì)于實(shí)現(xiàn)4位以下的加法器比較合適。但隨著加法器位數(shù)的增加,在CPLD中受到邏輯宏單元輸入信號(hào)數(shù)和乘積項(xiàng)資源的限制,在FPGA中也受到查找表容量的限制(呈指數(shù)級(jí)增長),所以我們可以采用流水線結(jié)構(gòu)來設(shè)計(jì)加法器。因?yàn)镕PGA器件的觸發(fā)器非常豐富,所以充分利用觸發(fā)器資源可大大提高加法器的工作

49、速度。下面將以一個(gè)八位加法器為例,討論如何進(jìn)行流水線設(shè)計(jì)。設(shè)S=A+B。其中,A=(AI,AII),其中AI和AII分別代表A的高四位和低四位,同樣的方式B和S也可被表示為B=(BI,BII),S=(SI,SII),所以加法可分解為:按上述式子,8位+8位加法可以分為下列步驟進(jìn)行:1)分別求出部分SI和SII2)高位部分和SI加上低位進(jìn)位。經(jīng)過改進(jìn),實(shí)現(xiàn)8位+8位加法運(yùn)算只需2個(gè)4位加法器。用FPGA實(shí)現(xiàn)時(shí),查找表的規(guī)模減少到。在FPGA中由于查找表輸入線少,往往需要將運(yùn)算分解為更小的規(guī)模進(jìn)行。在CPLD中實(shí)現(xiàn)4位+4位加法器比較容易。圖3.21 8位+8位2級(jí)流水線加法器實(shí)現(xiàn)加法運(yùn)算的方法有

50、很多。從資源耗費(fèi)和速度性能等多方面綜合考慮,查找表加法器比較適合于實(shí)現(xiàn)規(guī)模較小的加法器,而規(guī)模較大的加法器可以使用流水線加法器來實(shí)現(xiàn)。從速度的角度來講,流水線結(jié)構(gòu)加法器最優(yōu),從資源占用的角度來講,級(jí)連加法器(又稱串行進(jìn)位加法器)占用資源最少??梢钥闯?,速度(性能)和資源消耗(開銷)始終是一對(duì)矛盾體。對(duì)于流水線加法器,流水深度同運(yùn)算速度在一定程度上是成正比的,然而隨著流水深度的增加,連線延遲在總的延遲中所占的比重越來越大,邏輯延遲所占比重逐漸變小,總的延遲不一定減小,而資源耗費(fèi)卻直線上升。所以具體要分成幾級(jí)流水結(jié)構(gòu)來實(shí)現(xiàn),要根據(jù)實(shí)際項(xiàng)目的需要進(jìn)行綜合分析。3.3.6乘法器乘法器是運(yùn)算處理運(yùn)算中最

51、基本的設(shè)計(jì)單元之一。實(shí)現(xiàn)硬件乘法運(yùn)算主要可以采用以下幾種方法:移位相加、查找表與邏輯樹、加法器樹和混合乘法器等。下面以一個(gè)8位乘法器為例,討論幾種乘法器的優(yōu)缺點(diǎn)。(1)基本乘法器(移位相加)移位相加乘法器實(shí)現(xiàn)起來相對(duì)較簡單,大多數(shù)的單片機(jī)和微處理器的乘法運(yùn)算都采用這種方法。8位的乘法器只需一個(gè)16位移位寄存器和一個(gè)16位加法器即可實(shí)現(xiàn)。移位相加乘法器的最大缺點(diǎn)是速度慢,8位乘法需要8個(gè)時(shí)鐘周期才能得到結(jié)果。(2)查找表與邏輯樹乘法器把乘積放在存儲(chǔ)器中,使用操作數(shù)作為地址訪問存儲(chǔ)器,得到的輸出數(shù)據(jù)就是乘法運(yùn)算的結(jié)果。查找表方式的乘法器的速度只局限于所使用的存儲(chǔ)器的速度,小型乘法器使用這種技術(shù)則非

52、常合適。但是隨著操作數(shù)精度的提高,查詢表變得非常龐大,因此不宜用于位數(shù)高的乘法操作。例如,一個(gè)4位x4位的乘法運(yùn)算就需要一個(gè)的查找表來實(shí)現(xiàn)。但查找表的規(guī)模隨著操作數(shù)的精度提高而迅速擴(kuò)大,例如一個(gè)8位x8位的乘法就需要一個(gè)位的查找表來實(shí)現(xiàn),可見這是個(gè)比較龐大的數(shù)據(jù)。邏輯樹的輸出數(shù)據(jù)的每一位都可以寫成所有操作數(shù)的邏輯函數(shù)。這種方法的速度和查找表一樣快,但實(shí)現(xiàn)起來比較困難,因?yàn)槌朔ㄆ餍枰芏噍斎刖€和乘積項(xiàng)資源,而邏輯器件的資源不一定能滿足乘法器運(yùn)算的需要。為此,有些研究者設(shè)計(jì)了許多種非常復(fù)雜的使用乘積項(xiàng)共享的邏輯樹來實(shí)現(xiàn)乘法器。邏輯樹也可視為一種精簡的查詢表,8位乘法器設(shè)計(jì)需要16個(gè)輸入。(3)加法

53、器樹乘法器加法器樹乘法器(Adder-tree)實(shí)際上是由移位相加器和查詢表組成,如圖3.22所示。圖3.22 加法器樹乘法器圖中的8位xl位乘法器可以用8個(gè)與門實(shí)現(xiàn),最終的移位相加是通過一個(gè)并行的加法器來實(shí)現(xiàn)的。加法器樹需要的加法器數(shù)目等于操作數(shù)位數(shù)減1,加法器精度為操作數(shù)位數(shù)的2倍,需要的與門數(shù)等于操作數(shù)的平方。8位乘法器需要7個(gè)16位加法器和64個(gè)與門。如果采用流水線技術(shù),加法器樹乘法運(yùn)算需要的時(shí)間僅為1個(gè)時(shí)鐘周期。不過,通過仔細(xì)觀察上面的結(jié)構(gòu)可以發(fā)現(xiàn),其實(shí)在進(jìn)行累加結(jié)果時(shí),后面的幾個(gè)16位加法器還可以進(jìn)一步減小規(guī)模,由此可以得到如圖3的改進(jìn)結(jié)構(gòu)。圖3.23改進(jìn)后的加法器樹乘法器我們可以

54、用FPGA內(nèi)部閑置的片內(nèi)RAM實(shí)現(xiàn)高速的乘法器,但對(duì)于大型乘法器來說,直接進(jìn)行并不現(xiàn)實(shí)。因此,我們需要對(duì)它進(jìn)行變形,以滿足我們的要求,混合乘法器就是一種比較好的方法。(4)混合型乘法器混合乘法器就是利用查找表做小型乘法器,然后再利用權(quán)值相加做大型乘法器,結(jié)合了“查找表”和“移位相加”兩者的優(yōu)點(diǎn)。例如,8位乘法器Y=a*b可以分解成兩個(gè)半字節(jié)。其中,。因此,乘式可以寫成:這樣就把一個(gè)8x8乘法運(yùn)算轉(zhuǎn)化成4個(gè)4x4乘法運(yùn)算,相對(duì)而言,減小了查找表的尺寸。需要注意的是,這種乘法器最后進(jìn)行相加運(yùn)算時(shí),必須對(duì)高位乘積進(jìn)行加權(quán),對(duì)低位乘積高位補(bǔ)0。另外,可以根據(jù)運(yùn)算精度的要求,舍去最無效的部分,以節(jié)省硬件資源的消耗。從速度的角度來講,采用流水線技術(shù)的加法器樹乘法器最優(yōu),從資源占用的角度來講,移位累加乘法器占用資源最少。綜合考慮,實(shí)現(xiàn)規(guī)模較小的乘法運(yùn)算可以使用查找表乘法器,規(guī)模較大的乘法運(yùn)算可以使用采用了流水線技術(shù)的加法器樹結(jié)構(gòu)乘法器來實(shí)現(xiàn)。但要注意,雖然流水深度同運(yùn)算速度在一定程度上是成正比的,但是隨著流水深度的增加,布線延遲在總的延遲中所占的比重越來越大,邏輯延遲所占比重逐漸變小,總的延遲不一定減小,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論