Verilog HDL數(shù)字集成電路設計原理與應用(第三版)課件 第4章 Verilog HDL數(shù)字邏輯電路_第1頁
Verilog HDL數(shù)字集成電路設計原理與應用(第三版)課件 第4章 Verilog HDL數(shù)字邏輯電路_第2頁
Verilog HDL數(shù)字集成電路設計原理與應用(第三版)課件 第4章 Verilog HDL數(shù)字邏輯電路_第3頁
Verilog HDL數(shù)字集成電路設計原理與應用(第三版)課件 第4章 Verilog HDL數(shù)字邏輯電路_第4頁
Verilog HDL數(shù)字集成電路設計原理與應用(第三版)課件 第4章 Verilog HDL數(shù)字邏輯電路_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

4.1VerilogHDL的設計思想和可綜合特性

4.2組合電路的設計

4.3時序電路的設計

4.4有限同步狀態(tài)機4.1VerilogHDL的設計思想和可綜合特性在數(shù)字集成電路設計過程中,設計者使用VerilogHDL進行關鍵性步驟的開發(fā)和設計。其基本過程是:先使用VerilogHDL對硬件電路進行描述性設計,再利用EDA綜合工具將其綜合成一個物理電路,然后進行功能驗證、定時驗證和故障覆蓋驗證。與計算機軟件所采用的高級程序語言(C語言)類似,VerilogHDL是一種高級程序設計語言,程序編寫較簡單,設計效率很高。然而,它們面向的對象和設計思想?yún)s完全不同。軟件高級程序語言用于對通用型處理器(如CPU)編程,主要是在固定硬件體系結構下的軟件化程序設計。處理器的體系結構和功能決定了可以用于編程的固定指令集,設計人員的工作是調(diào)用這些指令,在固化的體系結構下實現(xiàn)特定的功能。VerilogHDL和VHDL等硬件描述語言對電路的設計是將基本的最小數(shù)字電路單元(如門單元、寄存器、存儲器等)通過連接方式,構成具有特定功能的硬件電路。在數(shù)字集成電路中,這種最小的單元是工藝廠商提供的設計標準庫或定制單元;在FPGA中,這種最小的單元是芯片內(nèi)部已經(jīng)布局的基本邏輯單元。設計人員通過描述性語言調(diào)用和組合這些基本邏輯單元實現(xiàn)特定的功能,其基本的電路是靈活的。VerilogHDL給設計者提供了幾種描述電路的方式。設計者可以使用結構描述方式把邏輯單元互連在一起進行電路設計,也可以采用抽象描述方式對大規(guī)模復雜電路進行設計,如對有限狀態(tài)機、數(shù)字濾波器、總線和接口電路的描述等。由于硬件電路的設計目標是最終產(chǎn)生的電路,因此VerilogHDL程序設計的正確性需要通過對綜合后電路的正確性進行驗證來實現(xiàn)。邏輯上相同的電路在物理電路中的形式有可能完全不同。對于VerilogHDL程序設計而言,數(shù)字電路的描述性設計具有一定的設計模式,這與C語言等高級軟件程序設計是不同的。例4.1-1是對模256(8bit)計數(shù)器的兩種描述。程序(1)是通常的VerilogHDL對計數(shù)器的描述方式,通過改變計數(shù)器狀態(tài)寄存器組的位寬和進位條件,可以實現(xiàn)對不同計數(shù)器的硬件電路設計。程序(2)是初學者經(jīng)常使用的一種錯誤描述方式,剛開始編寫VerilogHDL程序時經(jīng)常會套用C語言等高級程序設計的模式,這樣往往得不到目標數(shù)字電路的功能。VerilogHDL主要用于電路設計和驗證,部分語言是為電路的測試和仿真制定的,因此其語言分為用于電路設計的可綜合性語言和用于測試仿真的不可綜合性語言。對于可綜合性語言,EDA綜合工具可以將其綜合為物理電路,而對于其中的部分語言,EDA工具的綜合性很差,設計人員往往得不到與設計思想相符合的物理電路。在VerilogHDL中,哪些語句能被綜合工具支持和具體的綜合工具有關,但是絕大多數(shù)VerilogHDL語句的可綜合性具有普遍性,表4.1-1總結了一般綜合工具所共有的支持或不支持VerilogHDL的語法結構。作為數(shù)字集成電路的基礎,基本數(shù)字邏輯電路的設計是進行復雜電路設計的前提。邏輯電路可以分成兩大類:一類是組合邏輯電路,簡稱組合電路;另一類是時序邏輯電路,簡稱時序電路。本章將分別從這兩種電路的原理和VerilogHDL程序設計方法出發(fā),對數(shù)字邏輯電路的基本功能電路進行設計,這也是復雜數(shù)字集成電路系統(tǒng)設計的基礎。4.2組合電路的設計組合電路的特點是電路中任意時刻的穩(wěn)態(tài)輸出僅僅取決于該時刻的輸入,而與電路原來的狀態(tài)無關。組合電路沒有記憶功能,只有從輸入到輸出的通路,沒有從輸出到輸入的回路。組合電路的設計需要從以下幾個方面考慮:首先,所用的邏輯器件數(shù)目最少,器件的種類最少,且器件之間的連線最簡單,這樣的電路稱為“最小化”電路。其次,為了滿足速度要求,應使級數(shù)盡量少,以減少門電路的延時;電路的功耗應盡可能地小,工作時穩(wěn)定可靠。組合電路的描述方式有四種:真值表、邏輯代數(shù)、結構描述、抽象描述。采用VerilogHDL進行組合電路設計主要采用的就是這幾種方式。下面結合具體的實例簡單介紹這四種描述方式。4.2.1數(shù)字加法器數(shù)字加法器是一種較為常用的邏輯運算器件,被廣泛用于計算機、通信和多媒體數(shù)字集成電路中。廣義的加法器包括加法器和減法器,在實際系統(tǒng)中加法器的輸入通常采用的是補碼形式,因此就電路結構而言,加法電路和減法電路是一樣的,只不過輸入信號采用的是補碼輸入。4.2.2數(shù)據(jù)比較器數(shù)據(jù)比較器用來對兩個二進制數(shù)的大小進行比較,或檢測邏輯電路是否相等。數(shù)據(jù)比較器包含兩部分功能:一是比較兩個數(shù)的大?。欢菣z測兩個數(shù)是否一致。4.2.3數(shù)據(jù)選擇器數(shù)據(jù)選擇器又稱多路選擇器(Multiplexer,簡稱MUX),它有n位地址輸入、2n位數(shù)據(jù)輸入、1位數(shù)據(jù)輸出。每次在輸入地址的控制下,從多路輸入數(shù)據(jù)中選擇一路輸出,其功能類似于一個單刀多擲開關,見圖4.2-7。在ASIC和FPGA的器件庫中,通常都有不同輸入端口的多路選擇器,可以利用這些選擇器構成功能更加復雜的數(shù)據(jù)選擇電路。4.2.4數(shù)字編碼器用文字、符號或數(shù)碼表示特定對象的過程稱為編碼。在數(shù)字電路中用二進制代碼表示有關的信號稱為二進制編碼。實現(xiàn)編碼操作的電路叫作編碼器。編碼器讀取一個多位輸入并把它編碼成一個不同的、通常會比較短的比特流。因此它可以實現(xiàn)一個輸出比輸入少的真值表。4.2.5數(shù)字譯碼器譯碼是編碼的逆過程,它將二進制代碼所表示的信息翻譯成相應的狀態(tài)信息。實現(xiàn)譯碼功能的電路稱為譯碼器。這里只介紹二進制譯碼器。N位二進制譯碼器有N個輸入端和2N個輸出端,一般稱為N線—2N線譯碼器。常見的譯碼器有2線—4線譯碼器、3線—8線譯碼器和4線—16線譯碼器。圖4.2-12為2線—4線譯碼器的邏輯電路及邏輯符號,其真值表如表4.2-8所示。圖中,A1、A0為地址輸入端,A1為高位。

為狀態(tài)信號輸出端,非號表示低電平有效。E為使能端(或稱選通控制端),低電平有效。當E?=?0時,允許譯碼器工作,

中只允許一個為有效電平輸出;當E?=?1時,禁止譯碼器工作,所有輸出

均為高電平。一般使能端有兩個用途:一是引入選通脈沖,以抑制冒險脈沖的發(fā)生;二是用來擴展輸入的變量數(shù)(功能擴展)。從表中可以看出,當E?=?0時,2線—4線譯碼器的輸出函數(shù)分別為

,如果用

表示i端的輸出,mi表示輸入地址變量A1、A0的一個最小項,則輸出函數(shù)可寫成

可見,譯碼器的每一個輸出函數(shù)對應輸入變量的一組取值,當使能端有效(E?=?0)時,它正好是輸入變量最小項的非。因此變量譯碼器也稱最小項發(fā)生器。同編碼器一樣,譯碼器的級聯(lián)擴展也可使用同樣的方法,其VerilogHDL程序代碼如下:也可以采用抽象描述方式進行設計,其VerilogHDL程序代碼如下:采用抽象描述方式的優(yōu)勢是不需要對電路化簡,根據(jù)相對固定的設計模式,可以直接得到所需要的電路。4.2.6奇偶校驗器奇偶校驗器的功能是檢測數(shù)據(jù)中所含“1”的個數(shù)是奇數(shù)還是偶數(shù)。在計算機和一些數(shù)字通信系統(tǒng)中,常用奇偶校驗器來檢查數(shù)據(jù)傳輸和數(shù)碼記錄中是否存在錯誤。奇偶校驗包含兩種方式:奇校驗和偶校驗。奇校驗保證傳輸?shù)臄?shù)據(jù)和校驗位中“1”的總數(shù)為奇數(shù)。如果數(shù)據(jù)中包含奇數(shù)個“1”,則校驗位置“0”;如果數(shù)據(jù)中包含偶數(shù)個“1”,則校驗位置“1”。例如,數(shù)據(jù)1100111中包含5個“1”,若采用奇校驗,則校驗位為“0”,于是將“11001110”傳輸給接收機。偶校驗保證傳輸?shù)臄?shù)據(jù)和校驗位中“1”的總數(shù)為偶數(shù)。如果數(shù)據(jù)中包含奇數(shù)個“1”,則校驗位置“1”;如果數(shù)據(jù)中包含偶數(shù)個“1”,則校驗位置“0”。例如:數(shù)據(jù)1100111中包含5個“1”,若采用偶校驗,則校驗位為“1”,于是將“11001111”傳輸給接收機。奇偶校驗只能檢測部分傳輸錯誤,它不能確定錯誤發(fā)生在哪位或哪幾位,所以不能進行錯誤校正。當數(shù)據(jù)發(fā)生錯誤時,只能重新發(fā)送數(shù)據(jù)。奇偶校驗一般用在能夠重新操作的計算機硬件中,例如:SCSI總線和微處理器中的高速緩存,在發(fā)生錯誤時,這些部件可以丟掉數(shù)據(jù),獲取重發(fā)數(shù)據(jù)。4.3時序電路的設計與組合邏輯電路不同,時序邏輯電路的輸出不僅與當前時刻輸入變量的取值有關,而且與電路的原狀態(tài)(即過去的輸入情況有關)。圖4.3-1是時序邏輯電路的結構框圖。與組合邏輯電路相比,時序邏輯電路有兩個特點:①

時序邏輯電路包括組合邏輯電路和存儲電路兩部分,存儲電路具有記憶功能,通常由觸發(fā)器組成;②

存儲電路的狀態(tài)反饋到組合邏輯電路輸入端,與外部輸入信號共同決定組合邏輯電路的輸出。組合邏輯電路的輸出除包括外部輸出外,還包括連接到存儲電路的內(nèi)部輸出,它將控制存儲電路狀態(tài)的轉(zhuǎn)移。圖4.3-1中,X(x1,x2,…,xn)是外部輸入信號;Q(q1,q2,…,qj)是存儲電路的狀態(tài)輸出,也是組合邏輯電路的內(nèi)部輸入;Z(z1,z2,…,zm)為外部輸出信號;Y(y1,y2,…,yk)為存儲電路的激勵信號,也是組合邏輯電路的內(nèi)部輸出。在存儲電路中,每一位輸出qi(i?=?1,2,…,j)稱為一個狀態(tài)變量,j個狀態(tài)變量可以組成2j個不同的內(nèi)部狀態(tài)。時序邏輯電路對于輸入變量歷史情況的記憶反映在狀態(tài)變量的不同取值上,即不同的內(nèi)部狀態(tài)代表不同的輸入變量的歷史情況。以上四組信號之間的邏輯關系可用以下三個方程組來描述:式(4.3-1)是輸出方程,式(4.3-2)是驅(qū)動方程(或稱為激勵方程),式(4.3-3)是狀態(tài)方程。方程中的上標n和n+1表示相鄰的兩個離散時間(或稱為相鄰的兩個節(jié)拍),如

表示存儲電路中每個觸發(fā)器的當前狀態(tài)(也稱為現(xiàn)狀態(tài)或原狀態(tài)),

表示存儲電路中每個觸發(fā)器的新狀態(tài)(也稱為下一狀態(tài)或次狀態(tài))。以上三個方程組可寫成如下形式:時序邏輯電路某時刻的輸出Zn決定于該時刻的外部輸入Xn和Qn。時序邏輯電路的工作過程實質(zhì)上就是不同輸入條件下內(nèi)部狀態(tài)不斷更新的過程。時序邏輯電路按狀態(tài)變化的特點,可分為同步時序邏輯電路和異步時序邏輯電路。在同步時序邏輯電路中,電路狀態(tài)的變化在同一時鐘脈沖作用下發(fā)生,即各觸發(fā)器狀態(tài)的轉(zhuǎn)換同步完成。在異步時序邏輯電路中,沒有統(tǒng)一的時鐘脈沖信號,即各觸發(fā)器狀態(tài)的轉(zhuǎn)換是異步完成的。目前大多數(shù)數(shù)字電路是同步時序邏輯電路,因此本書所舉例程都集中在同步時序邏輯電路上。傳統(tǒng)的時序邏輯電路的設計就是根據(jù)邏輯設計命題的要求,選擇適當?shù)钠骷O計出合理的邏輯電路。VerilogHDL對于時序邏輯電路的描述性設計與傳統(tǒng)的電路設計緊密相關。同步時序邏輯電路的一般設計過程可以按圖4.3-2所示的步驟進行。對時序邏輯電路功能的描述方式主要有三種:邏輯方程、狀態(tài)轉(zhuǎn)移表和狀態(tài)轉(zhuǎn)移圖、時序圖。與組合邏輯電路相似,采用VerilogHDL對時序邏輯電路的設計進行描述也有不同的方式,歸納起來主要有三種:狀態(tài)轉(zhuǎn)移圖描述、基于狀態(tài)化簡的結構性描述、VerilogHDL抽象描述。4.3.1觸發(fā)器觸發(fā)器是時序邏輯電路的最基本電路單元,主要有D觸發(fā)器、JK觸發(fā)器、T觸發(fā)器和RS觸發(fā)器等。根據(jù)功能要求的不同,觸發(fā)器還具有置位、復位、使能、選擇等功能。4.3.2計數(shù)器計數(shù)器是應用最廣泛的邏輯部件之一。計數(shù)器可以統(tǒng)計輸入脈沖的個數(shù),具有計時、計數(shù)、分頻、定時、產(chǎn)生節(jié)拍脈沖等功能。計數(shù)器的種類繁多,根據(jù)計數(shù)器中觸發(fā)器時鐘端的連接方式,分為同步計數(shù)器和異步計數(shù)器;根據(jù)計數(shù)方式,分為二進制計數(shù)器、十進制計數(shù)器和任意進制(也稱為M進制)計數(shù)器;根據(jù)計數(shù)器中的狀態(tài)變化規(guī)律,分為加法計數(shù)器、減法計數(shù)器和加/減計數(shù)器。4.3.3移位寄存器移位寄存器可以用來實現(xiàn)數(shù)據(jù)的串/并轉(zhuǎn)換,也可以構成移位行計數(shù)器,進行計數(shù)、分頻,還可以構成序列碼發(fā)生器、序列碼檢測器等;它也是數(shù)字系統(tǒng)中應用非常廣泛的時序邏輯部件之一。4.3.4序列信號發(fā)生器序列信號是數(shù)字電路系統(tǒng)中常用的功能單元,其種類很多,如按照序列循環(huán)長度M與觸發(fā)器數(shù)目n的關系,一般可分為三種:(1)最大循環(huán)長度序列碼,M?=?2n。(2)最長線性序列碼(M序列碼),M?=?2n?-1。(3)任意循環(huán)長度序列碼,M?<?2n。序列信號發(fā)生器是能夠產(chǎn)生一組或多組序列信號的時序電路,它可以由純時序電路構成,也可以由包含時序邏輯和組合邏輯的混合電路構成。4.4有限同步狀態(tài)機有限狀態(tài)機可以分為同步和異步兩種,在本書中只討論有限同步狀態(tài)機,后文中提到的有限狀態(tài)機均指有限同步狀態(tài)機。有限狀態(tài)機是時序電路的通用模型,任何時序電路都可以表示為有限狀態(tài)機。在由時序電路表示的有限狀態(tài)機中,各個狀態(tài)之間的轉(zhuǎn)移總是在時鐘的觸發(fā)下進行的,狀態(tài)信息存儲在寄存器中。因為狀態(tài)的個數(shù)是有限的,所以稱為有限狀態(tài)機。同其他時序電路一樣,有限狀態(tài)機也由兩部分組成:存儲電路和組合邏輯電路。存儲電路用來生成狀態(tài)機的狀態(tài),組合邏輯電路用來提供輸出以及狀

溫馨提示

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

評論

0/150

提交評論