組合電路設(shè)計(jì)_第1頁(yè)
組合電路設(shè)計(jì)_第2頁(yè)
組合電路設(shè)計(jì)_第3頁(yè)
組合電路設(shè)計(jì)_第4頁(yè)
組合電路設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第六章面向仿真和綜合的VHDL設(shè)計(jì)描述在可編程ASIC設(shè)計(jì)過程中仿真和綜合是兩個(gè)功效不同的過程仿真是驗(yàn)證,而綜合是生成。如果由設(shè)計(jì)要求到設(shè)計(jì)實(shí)現(xiàn)的整個(gè)過程,是靠人工完成,通常簡(jiǎn)單地稱之為設(shè)計(jì)。如果依靠EDA工具軟件自動(dòng)生成,則通常稱之為綜合。在VHDL設(shè)計(jì)中可以用行為、RTL和結(jié)構(gòu)化三種描述方式對(duì)一個(gè)硬件系統(tǒng)進(jìn)行不同風(fēng)格的描述。在當(dāng)前情況下,采用RTL、結(jié)構(gòu)化描述的VHDL語(yǔ)言程序可以進(jìn)行邏輯綜合。而采用行為描述的VHDL程序,大部分只能用于系統(tǒng)仿真,少數(shù)的也可以進(jìn)行邏輯綜合。

§6.1面向仿真的VHDL設(shè)計(jì)描述所謂仿真(即模擬:Simulation)是從電路的描述(語(yǔ)言描述或圖形描述)抽象出模型,然后將外部激勵(lì)信號(hào)或數(shù)據(jù)施加于此模型,通過觀察該模型在外部激勵(lì)信號(hào)作用下的反應(yīng)來判斷該電路系統(tǒng)是否能實(shí)現(xiàn)預(yù)期的功能。仿真方法是目前最常用的驗(yàn)證方法,根據(jù)不同的電路級(jí)別,有不同的模擬工具。通常仿真是對(duì)電路設(shè)計(jì)的一種間接的檢測(cè)方法,對(duì)電路設(shè)計(jì)的邏輯行為和運(yùn)行功能進(jìn)行模擬測(cè)試,可以獲得許多對(duì)原設(shè)計(jì)進(jìn)行排錯(cuò)、改進(jìn)的信息。對(duì)于利用VHDL設(shè)計(jì)的大型系統(tǒng),能進(jìn)行可靠、快速、全面的仿真測(cè)試尤為重要。驗(yàn)證的目的有三個(gè):電路設(shè)計(jì)都需要進(jìn)行驗(yàn)證,驗(yàn)證的目的如下:驗(yàn)證原始描述的正確性;驗(yàn)證設(shè)計(jì)結(jié)果的邏輯功能符合原始規(guī)定的邏輯功能;驗(yàn)證設(shè)計(jì)結(jié)果中不含有違反設(shè)計(jì)規(guī)則的錯(cuò)誤。對(duì)于純硬件的電路系統(tǒng)如純模擬或數(shù)字電路系統(tǒng),其仿真較簡(jiǎn)單,設(shè)計(jì)者可以對(duì)它們作直接的硬件系統(tǒng)測(cè)試。但是,如果發(fā)現(xiàn)有問題,特別是當(dāng)問題比較大或根本無(wú)法運(yùn)行時(shí),就只能全部推翻從頭開始設(shè)計(jì)。對(duì)于具有微處理器的系統(tǒng)如單片機(jī)系統(tǒng),可以在一定程度上進(jìn)行仿真測(cè)試。如果希望得到可靠的仿真結(jié)果,通常必須利用單片機(jī)仿真器進(jìn)行硬件仿真,以便了解軟件程序?qū)ν鈬涌诘牟僮髑闆r。這類仿真耗時(shí)長(zhǎng),成本高,而且獲得的仿真信息不全面。因?yàn)閱纹瑱C(jī)主要是對(duì)軟件程序的檢測(cè)和排錯(cuò),對(duì)于硬件系統(tǒng)中的設(shè)計(jì)問題和錯(cuò)誤則難以檢查,這種方法通常只適用于小系統(tǒng)的設(shè)計(jì)調(diào)試。

利用VHDL完成的系統(tǒng)設(shè)計(jì)的電路規(guī)模往往達(dá)到數(shù)萬(wàn)、數(shù)十萬(wàn)乃至上千萬(wàn)個(gè)等效邏輯門構(gòu)成的規(guī)模。顯然,必須利用先進(jìn)的仿真工具才能快速、有效地完成所必需的測(cè)試工作基于EDA工具和FPGA的關(guān)于VHDL設(shè)計(jì)的仿真有多種形式如VHDL行為仿真、時(shí)序仿真以及硬件仿真等。VHDL行為仿真:這是進(jìn)行系統(tǒng)級(jí)仿真的有效工具,它既可以在早期對(duì)系統(tǒng)的設(shè)計(jì)可行性進(jìn)行評(píng)估和測(cè)試,也可以在短時(shí)間內(nèi)以極低的代價(jià)對(duì)多種方案進(jìn)行測(cè)試比較、系統(tǒng)模擬和方案論證,以獲得最佳系統(tǒng)設(shè)計(jì)方案:時(shí)序仿真可獲得與實(shí)際目標(biāo)器件電氣性能最為接近的設(shè)計(jì)模擬結(jié)果,但由于針對(duì)具體器件的邏輯分割和布局布線的適配過程耗時(shí)過大,不適合大系統(tǒng)進(jìn)行仿真:硬件仿真在VHDL設(shè)計(jì)中也有其重要地位最后的設(shè)計(jì)必須用硬件電路實(shí)現(xiàn)硬件仿真的工具除必須依賴EDA軟件外還依賴于良好的開發(fā)模型系統(tǒng)和規(guī)模比較大的SRAM型FPGA器件。一項(xiàng)較大規(guī)模的VHDL系統(tǒng)設(shè)計(jì)的最后完成必須經(jīng)歷多層次的仿真測(cè)試過程,其中將包括:1、針對(duì)系統(tǒng)的VHDL行為仿真2、分模塊的時(shí)序仿真和硬件仿真3、直至最后系統(tǒng)級(jí)的硬件仿真。VHDL源程序可以直接用于仿真。這是VHDL的重要特性。完成VHDL仿真功能的軟件工具稱為VHDL—仿真器目前PC機(jī)上流行的VHDL仿真器有ModelTechnology公司的ModelSimAldec公司的Active—VHDL等,這些軟件都可以在Windows上運(yùn)行

VHDL仿真的一般過程如圖6-1所示工程上VHDL仿真類型可分為功能仿真(或稱:前仿真)和時(shí)序仿真(或稱:后仿真)功能仿真:是在未經(jīng)布線和適配之前,使用VHDL源程序綜合后的文件進(jìn)行仿真時(shí)序仿真則是將VHDL設(shè)計(jì)綜合之后,再由FPGA/CPLD適配器(完成芯片內(nèi)自動(dòng)布線等功能),映射于具體芯片后得到的文件進(jìn)行仿真。目前大規(guī)模IC器件供應(yīng)商提供的大多數(shù)適配器都配有一個(gè)輸出選項(xiàng)功能,可以生成VHDL網(wǎng)表文件,用戶可用VHDL仿真器針對(duì)網(wǎng)表文件進(jìn)行仿真。

VHDL網(wǎng)表文件實(shí)際上也是VHDL程序,不過程序中只使用門級(jí)元件進(jìn)行低級(jí)結(jié)構(gòu)描述。門級(jí)電路網(wǎng)絡(luò)完全根據(jù)適配器布線的結(jié)果生成,因此,VHDL網(wǎng)表文件中包含了精確的仿真延時(shí)信息,因而仿真的結(jié)果將非常接近實(shí)際。當(dāng)設(shè)計(jì)者描述或設(shè)計(jì)了一個(gè)電路時(shí)需要驗(yàn)證其正確性對(duì)大規(guī)模集成電路一般分階段自上而下地進(jìn)行每一個(gè)階段都要進(jìn)行正確性驗(yàn)證以保證設(shè)計(jì)中的錯(cuò)誤早期發(fā)現(xiàn)、早期消除否則將造成不可彌補(bǔ)的損失?!?.2面向綜合的VHDL設(shè)計(jì)描述綜合:就是針對(duì)給定的電路應(yīng)實(shí)現(xiàn)的功能和實(shí)現(xiàn)此電路的約束條件,如速度、功耗、成本及電路類型等,通過計(jì)算機(jī)的優(yōu)化處理,獲得一個(gè)滿足上述要求的電路設(shè)計(jì)方案。這就是說被綜合的文件是VHDL程序。綜合的依據(jù)是邏輯設(shè)計(jì)的描述和上述各種約束條件。綜合的結(jié)果則是一個(gè)硬件電路的實(shí)現(xiàn)方案該方案必須同時(shí)滿足,預(yù)期的功能和約束條件的要求。對(duì)于綜合來說滿足要求的方案可能有多個(gè)綜合器將產(chǎn)生一個(gè)最優(yōu)的或接近最優(yōu)的結(jié)果因此,綜合的過程同時(shí)也是設(shè)計(jì)目標(biāo)的優(yōu)化過程最后獲得的結(jié)果與綜合器的工作性能有關(guān)§6.2.1邏輯綜合在集成電路設(shè)計(jì)領(lǐng)域綜合(Synthesis)是指把一個(gè)比較概念化的設(shè)計(jì)形式轉(zhuǎn)化為比較具體、比較實(shí)在的設(shè)計(jì)形式,這通常稱作自頂向下的過程。早期的綜合全靠人的腦力勞動(dòng)完成。這里所說的綜合是指靠計(jì)算機(jī)完成的自動(dòng)綜合自動(dòng)綜合邏輯綜合的作用:是根據(jù)一個(gè)系統(tǒng)邏輯功能與性能的要求,在一個(gè)包含眾多結(jié)構(gòu)、功能、性能均已知的邏輯元件的邏輯單元庫(kù)的支持下,尋找出一個(gè)邏輯網(wǎng)絡(luò)結(jié)構(gòu)的最佳的實(shí)現(xiàn)方案。一般的邏輯綜合過程如圖6-2所示:設(shè)計(jì)實(shí)現(xiàn)即:利用給定的邏輯單元工藝庫(kù)對(duì)已生成的邏輯網(wǎng)絡(luò)進(jìn)行元件配置進(jìn)而估算性能與成本這里,性能主要指芯片的速度成本主要指芯片的面積與功耗從而允許使用者對(duì)速度與面積或速度與功耗互相矛盾的指標(biāo)進(jìn)行性能與成本的折衷

§6.2.2面向綜合的VHDL設(shè)計(jì)描述的特點(diǎn)

在EDA過程中綜合(Synthesis)是將軟件描述(VHDL就其描述方式來說,仍屬軟件描述)與硬件結(jié)構(gòu)相聯(lián)系的關(guān)鍵步驟,是文字描述與硬件實(shí)現(xiàn)的一座橋梁。綜合就是將電路的高級(jí)語(yǔ)言(如行為描述)轉(zhuǎn)換成低級(jí)的、可與FPGA/CPLD或構(gòu)成ASIC的門陣列基本結(jié)構(gòu)相映射的網(wǎng)表文件或程序。EDA的實(shí)現(xiàn)在很大程度上依賴于性能良好的綜合器。VHDL程序設(shè)計(jì)必須完全適應(yīng)VHDL綜合器的要求,使軟件設(shè)計(jì)牢固植根于可行的硬件實(shí)現(xiàn)中;另一方面,并非所有可綜合的VHDL程序都能在硬件中實(shí)現(xiàn)。這涉及到兩方面的問題1、首先要看此程序?qū)?duì)哪一系列的目標(biāo)器件進(jìn)行綜合。例如,含有內(nèi)部三態(tài)門描述的VHDL程序,原則上是可綜合的,但對(duì)于特定的目標(biāo)器件系列卻不一定支持,即無(wú)法在硬件中實(shí)現(xiàn);2、其次是資源問題這是實(shí)用VHDL面臨的最尖銳的問題例如在VHDL程序中,直接使用乘法運(yùn)算符。盡管綜合器和絕大多數(shù)目標(biāo)器件都是支持的,但即使是一個(gè)16位乘16位的組合邏輯乘法器,在普通規(guī)模的PLD器件(1萬(wàn)門左右)中也是難以實(shí)現(xiàn)的。因此,實(shí)用的VHDL程序設(shè)計(jì)中必須注意硬件資源的占用問題。對(duì)于綜合來說滿足要求的方案可能有多個(gè)綜合器將產(chǎn)生一個(gè)最優(yōu)的或接近最優(yōu)的結(jié)果。因此綜合的過程同時(shí)也是設(shè)計(jì)目標(biāo)的優(yōu)化過程最后獲得的結(jié)果與綜合器的工作性能有關(guān)VHDL綜合器將根據(jù)設(shè)定的系列目標(biāo)器件的特點(diǎn)對(duì)綜合的VHDL程序進(jìn)行面向目標(biāo)器件優(yōu)化從而生成利于映射到具體目標(biāo)芯片的元件模塊目前的綜合工具都可以設(shè)置一些優(yōu)化選項(xiàng),以滿足不同的需要。由于VHDL是高級(jí)設(shè)計(jì)語(yǔ)言它的電路描述與具體器件和綜合器都無(wú)關(guān),不同公司的綜合器也不完全兼容,而且,針對(duì)不同的目標(biāo)器件系列,綜合后的結(jié)果有所不同。因而,同一個(gè)VHDL程序,經(jīng)由不同的綜合器綜合后生成的電路,其邏輯功能雖然在總體上是相同的,但電路結(jié)構(gòu)卻不盡相同。目前流行的EDA綜合工具Synopsys公司的DesignCompiler、FPGAExpress、FPGACompilerII;Synplicity公司的Synplicity;Candence公司的Synergy;MentorGraphics公司的AutologicII等此外,DATAI/O公司的Synario、Viewlogic公司的WorkviewOfficeAltera公司的MAX+plusII等綜合工具都集成了VHDL綜合器在工程中,支持FPGA/CPLD的VHDL設(shè)計(jì)工具,綜合后最終生成EDIF網(wǎng)表文件。EDIF(電子數(shù)據(jù)交換格式的簡(jiǎn)稱)是一種網(wǎng)表文件格式標(biāo)準(zhǔn)由一些EDA廠商及PLD廠商制訂是為了解決當(dāng)前各種EDA工具生成的電路網(wǎng)表文件不兼容的問題而設(shè)的目前最常用的版本是EDIF200從VHDL設(shè)計(jì)描述到具體實(shí)現(xiàn)成為集成電路芯片,受到許多因素的影響首先是該描述能否被綜合;其次是包括有硬件、軟件及物理特性的系統(tǒng)級(jí)模型能否被綜合;再次是綜合的質(zhì)量問題,這和VHDL的書寫風(fēng)格、編碼約定、優(yōu)化選擇、工藝技術(shù)選擇等有關(guān)。兩種設(shè)計(jì)描述的比較面向綜合的VHDL設(shè)計(jì)描述和面向仿真的VHDL設(shè)計(jì)描述相比,前者受到更多的約束。例如,對(duì)于一個(gè)向計(jì)算機(jī)寫入數(shù)據(jù)的選通脈沖,在面向仿真的VHDL描述中就不必考慮該脈沖有沒有“毛刺”的問題,而面向綜合的VHDL描述就必須要保證該選通脈沖,必須適應(yīng)某特定的存儲(chǔ)器的具體要求。面向仿真的VHDL描述中一般都使用關(guān)鍵字AFTER或TRANSPORT對(duì)延時(shí)加以規(guī)定而綜合器對(duì)此不予理解因?yàn)樽鳛榫C合的結(jié)果實(shí)際電路的延時(shí)不僅取決于VHDL描述還取決于所采用的工藝技術(shù)。在仿真模型中可能出現(xiàn)無(wú)限循環(huán)或無(wú)范圍限制的整數(shù)但不可能存在與之對(duì)應(yīng)的硬件故各綜合器對(duì)此問題的處理方法也不盡相同面向仿真的VHDL描述可能用到枚舉類型用來表示一組方式的編碼例如表示符號(hào)形式的有限狀態(tài)機(jī)的狀態(tài)或者表示信號(hào)線所處的電信號(hào)狀態(tài)(高阻級(jí)、低阻級(jí)、深度級(jí))在這種情況下VHDL綜合器無(wú)法知道這些枚舉類型值的真正含義為此綜合器必須有一些約定(默認(rèn)編碼方式)為了編寫一個(gè)能被綜合器所接受的VHDL描述通??墒褂孟旅娴拿枋龇绞剑喝缬貌⑿匈x值語(yǔ)句的簡(jiǎn)單門IF控制流語(yǔ)句CASE控制流語(yǔ)句順序語(yǔ)句等等。一般來說VHDL語(yǔ)句描述的運(yùn)算的綜合結(jié)果一般對(duì)應(yīng)于組合邏輯;條件控制語(yǔ)句(IF、CASE)的綜合結(jié)果是類似于多路開關(guān)的功能塊;對(duì)時(shí)序邏輯的VHDL描述常用IF-THEN語(yǔ)句和WAIT語(yǔ)句§6.3組合邏輯電路設(shè)計(jì)從VHDL設(shè)計(jì)描述到具體實(shí)現(xiàn)成為集成電路,受到許多因素的影響首先是該描述能否被綜合,例如測(cè)試基準(zhǔn)(testbench)就是來供仿真之用,不能被綜合;其次是包含有硬件、軟件的物理特性的系統(tǒng)級(jí)模型也不能被綜合;再次,是綜合的質(zhì)量問題。這是和VHDL書寫風(fēng)格、編碼約定、優(yōu)化選擇、工藝技術(shù)選擇等因素有關(guān)按照數(shù)字系統(tǒng)的組成從組合邏輯設(shè)計(jì)開始通過不同的設(shè)計(jì)例子分別介紹VHDL設(shè)計(jì)方法、包括編寫VHDL程序的要求和格式、各個(gè)指令之間的一些特點(diǎn)和差別。所有的例子是以綜合為目的來列舉的。VHDL語(yǔ)句描述的運(yùn)算的綜合結(jié)果一般對(duì)應(yīng)于組合邏輯,而VHDL中的運(yùn)算符和常見的程序設(shè)計(jì)語(yǔ)句中的運(yùn)算符沒有多少區(qū)別。但不同的硬件實(shí)現(xiàn)所對(duì)應(yīng)的成本(硬件資源花費(fèi))和運(yùn)行速度有著很大的差異因此,我們主要研究如何用并發(fā)語(yǔ)句和順序語(yǔ)句,并結(jié)合一些簡(jiǎn)單的例子來描述組合邏輯電路。§6.3.1用并行語(yǔ)句中的布爾方程來描述組合邏輯例6-1:利用一個(gè)布爾算符設(shè)計(jì)二選一多路轉(zhuǎn)換器()LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYMUX2to1ISPORT(S:INSTD_LOGIC;Zero:INSTD_LOGIC_VECTOR(7DOWNTO0);One:INSTD_LOGIC_VECTOR(7DOWNTO0);Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDMUX2to1;例6-1ARCHITECTUREbehaviorOFMUX2to1ISsignaltemp:STD_LOGIC_VECTOR(7DOWNTO0);BEGINtemp<=(s,s,s,s,others=>s);Y<=(tempandOne)or(nottempandZero);ENDbehavior;即:當(dāng)temp=(0,…,0)時(shí),Y=Zero

當(dāng)temp=(1,…,1)時(shí),Y=One例6-1中布爾算符用來在一個(gè)賦值語(yǔ)句中產(chǎn)生mux運(yùn)算因?yàn)轭愋筒黄ヅ洌盘?hào)s不能用在具有信號(hào)One或Zero的布爾運(yùn)算中信號(hào)s是std_logic類型,信號(hào)One/Zero是std_logic_vector類型。一個(gè)類型為std_logic_vector的內(nèi)部信號(hào)temp被采用,注意對(duì)內(nèi)部信號(hào)沒有模式說明Temp信號(hào)用在與One/Zero信號(hào)的布爾運(yùn)算中temp的每個(gè)位設(shè)置成等于s信號(hào)值。數(shù)組賦值將被利用,它可以取以下幾種形式:1、temp<=(others=>s),關(guān)鍵字others給予缺省值;2、Temp<=(s,s,s,s,s,s,s,s),位置賦值7DOWNTO0;3、Temp<=(4=>s,7=>s,2=>s,5=>s,3=>s,1=>s,6=>s,0=>s,),名稱賦值或位置賦值與名稱賦值結(jié)合例6-2用VHDL描述的半加器。半加器的真值表和電路符號(hào)如圖6-3所示圖6-3半加器的真值表和電路符號(hào)

例6-2LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYhalf_adderIS PORT(a,b:INSTD_LOGIC;

c0,s:OUTSTD_LOGIC);ENDhalf_adder;例6-2ARCHITECTUREhalfOFhalf_adderISSIGNALc,d:STD_LOGIC;

BEGINc<=aORb;

d<=aNANDb;

c0<=NOTd;

s<=cANDd;ENDhalf;例6-3:描述全加器的程序基于上例中半加器的描述用兩個(gè)半加器就可以構(gòu)成一個(gè)全加器全加器的電路圖如圖6-4所示:圖6-4全加器的電路圖例6-3LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYfull_adderIS PORT(a,b,cin:

INSTD_LOGIC;

s,c0:INSTD_LOGIC);ENDfull_adder;ARCHITECTUREfullOFfull_adderISCOMPONENThalf_adderPORT(a,b:INSTD_LOGIC;

s,c0:INSTD_LOGIC);

ENDCOMPONENT;例6-3SIGNALu0_c0,u0_s,u1_s0:STD_LOGIC;BEGINu0:half_adderPORTMAP(a,b,u0_s,u0_c0);u1:half_adderPORTMAP(u0_s,cin,s,u1_c0);c0<=u0_c0ORu1_c0;ENDfull;§6.3.2用順序語(yǔ)句描述組合邏輯下面討論如何用進(jìn)程和順序語(yǔ)句來描述組合邏輯。但不要將順序語(yǔ)句與時(shí)序語(yǔ)句相混淆。例6-5:利用WHEN,ELSE語(yǔ)句設(shè)計(jì)二選一多路轉(zhuǎn)換器例6-5二選一多路轉(zhuǎn)換器LIBRARYIEEE;USEIEEE.std_logic_1164.all;

ENTITYMUX2to1ISPORT(S:INSTD_LOGIC;Zero:INSTD_LOGIC_VECTOR(7DOWNTO0);One:INSTD_LOGIC_VECTOR(7DOWNTO0);Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDMUX2to1;

ARCHITECTUREbehaviorOFMUX2to1ISBEGINY<=OneWHEN(S='1')ELSEZero;ENDbehavior;例6-6:譯碼器已知一個(gè)16位地址描述的存儲(chǔ)器區(qū)映象如圖6-6所示設(shè)計(jì)一個(gè)譯碼器來選頂相應(yīng)的地址空間圖6-6譯碼器例6-6LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecodeIS PORT(address:INSTD_LOGIC_VECTOR(15DOWNTO0);

valid,boot_up:INSTD_LOGIC;

sram,prom,eeprom,shadow,periph1,

perph2:OUTSTD_LOGIC);ENDdecode;例6-6ARCHITECTUREmem_decodeOFdecodeISBEGINmapper:

PROCESS(address,valid,boot_up)

BEGIN shadow<=’0’;

prom<=’0’;

periph1<=’0’;

periph2<=’0’;

sram<=’0’;

eeprom<=’0’;例6-6

IFvalid=’1’THEN IFaddress>=”0000”ANDaddress<x”4000”THEN IFboot_up=’1’THEN shadow<=’1’;

ELSE prom<=’1’;

ENDIF;

ELSIFaddress>=”4000”ANDaddress<x”4008”THENperiph1<=’1’;例6-6ELSIFaddress>=”4008”ANDaddress<”4010”THENperiph2<=’1’;ELSIFaddress>=”8000”ANDaddress<=”c000”THENsram<=’1’;ELSIFaddress>=”c000”THENeeprom<=’1’;ENDIF;ENDPROCESS;ENDmem_decode;§6.3.4其它組合邏輯設(shè)計(jì)舉例

例6-8:IF語(yǔ)句和CASE語(yǔ)句應(yīng)用舉例1、IF語(yǔ)句

IFsel=“00”THENp_encoder_out<=IN0;ELSIFsel=“01”THENp_encoder_out<=IN1;ELSIFsel=“10”THENp_encoder_out<=IN2;ELSEp_encoder_out<=IN3;ENDIF;2、CASE語(yǔ)句

CASESELIS WHEN“00”=>mux_out<=IN0; WHEN“01”=>mux_out<=IN1; WHEN“10”=>mux_out<=IN2; WHENothers=>mux_out<=IN3;ENDCASE;圖

6-8(a)利用IF語(yǔ)句

(b)利用CASE語(yǔ)句

圖6-7(a)和(b)分別給出利用IF和CASE語(yǔ)句的例8(a)和例8(b)的實(shí)現(xiàn)結(jié)構(gòu)通常,“IF_THEN_ELSE”語(yǔ)句實(shí)現(xiàn)的速度較慢,除非要求建立優(yōu)先權(quán)的編碼器才利用它,并應(yīng)分配最高的特權(quán)到后到達(dá)的關(guān)鍵信號(hào),嵌套的“IF_THEN_ELSE”語(yǔ)句可能增加面積和延時(shí)。如果可能應(yīng)該盡量用“CASE語(yǔ)句”來描述相同的功能“CASE”語(yǔ)句的所有分支必須定義CASE語(yǔ)句的優(yōu)點(diǎn)是緊湊且延時(shí)優(yōu)化,可以在單個(gè)CLB中實(shí)現(xiàn)。但是CASE語(yǔ)句使用時(shí)必須注意,有限的狀態(tài)都要被定義。std_logic并非只有‘0’,‘1’;當(dāng)出現(xiàn)“不考慮‘-’”時(shí)也可以采用。而邏輯化簡(jiǎn)是選擇‘0’或‘1’,和std_logic的‘-’求素覆蓋來實(shí)現(xiàn)的。 對(duì)于“CASE”語(yǔ)句說明“不考慮‘-’”的條件是十分重要的,這個(gè)說明可能在綜合時(shí)消除好幾層邏輯。三態(tài)門及總線緩沖器是接口電路和總線驅(qū)動(dòng)電路經(jīng)常用到的器件。(它們不屬于組合電路)三態(tài)門電路圖及真值表如圖6-9所示:圖6-9三態(tài)門電路圖及真值表例6-9:三態(tài)門電路

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYrei_gateIS PORT(din,en:INSTD_LOGIC;

dout:OUTSTD_LOGIC);ENDtri_gate;ARCHITECTUREtri_gateOFtri_gateISBEGINtri_gate1:PROCESS(din,en)

BEGIN IF(en=’1’)THENdout<=din;

ELSEdout<=’z’;

ENDIF;

ENDPROCESS;

ENDtri_gate;例:雙向總線緩沖器雙向總線緩沖器用于對(duì)數(shù)據(jù)總線的驅(qū)動(dòng)和緩沖,如下圖所示。雙向緩沖器有兩個(gè)數(shù)據(jù)輸入輸出端a和b,一個(gè)方向控制端dr和一個(gè)選通端en。當(dāng)en=1時(shí)緩沖器未被選通,a和b都呈現(xiàn)高阻;en=0時(shí),緩沖器被選通,如果dr=0,那么a=b;如果dr=1,那么b=a。雙向總線緩沖器

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtri_bigateISPORT(a,b:INOUTSTD_LOGIC_VECTOR(7DOWNTO0);en,dr:INSTD_LOGIC);ENDtri_bigate;ARCHITECTURErtlOFtri_bigateISSIGNALaout:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALbout:STD_LOGIC_VECTOR(7DOWNTO0);BEGIN

PROCESS(a,dr,en)BEGINIF((en=‘0’)AND(dr=‘1’))THENbout<=a;ELSEbout<=“ZZZZZZZZ”;ENDIF;b<=bout;ENDPROCESS

PROCESS(b,dr,en)BEGINIF((en=‘0’)AND(dr=‘0’))THEN

aout<=b;ELSE

aout<=“ZZZZZZZZ”;ENDIF;a<=aout;ENDPROCESS;ENDrtl;

由上面的程序可以看出,雙向緩沖器是由兩組三態(tài)門構(gòu)成的,利用信號(hào)aout和bout將兩組三態(tài)門連接起來。例6-13:八級(jí)優(yōu)先權(quán)編碼器(利用ELSIF結(jié)構(gòu))LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYpriorityISPORT(input:INSTD_LOGIC_vector(7downto0);

vec:OUTSTD_LOGIC_VECTOR(2downto0));ENDpriority;例6-13

ARCHITECTUREpriority_archOFpriorityISBEGINPROCESS(input)BEGINIF(input(7)='1')THENvec<="111";ELSIF(input(6)='1')THENvec<="110";ELSIF(input(5)='1')THENvec<="101";ELSIF(input(4)='1')THENvec<="100";ELSIF(input(3)='1')THENvec<="011";ELSIF(input(2)='1')THENvec<="010";ELSIF(input(1)='1')THENvec

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論