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

下載本文檔

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

文檔簡介

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

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

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

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

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

§6.2.2面向綜合的VHDL設(shè)計描述的特點

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

當(dāng)temp=(1,…,1)時,Y=One例6-1中布爾算符用來在一個賦值語句中產(chǎn)生mux運(yùn)算因為類型不匹配,信號s不能用在具有信號One或Zero的布爾運(yùn)算中信號s是std_logic類型,信號One/Zero是std_logic_vector類型。一個類型為std_logic_vector的內(nèi)部信號temp被采用,注意對內(nèi)部信號沒有模式說明Temp信號用在與One/Zero信號的布爾運(yùn)算中temp的每個位設(shè)置成等于s信號值。數(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描述的半加器。半加器的真值表和電路符號如圖6-3所示圖6-3半加器的真值表和電路符號

例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òu)成一個全加器全加器的電路圖如圖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用順序語句描述組合邏輯下面討論如何用進(jìn)程和順序語句來描述組合邏輯。但不要將順序語句與時序語句相混淆。例6-5:利用WHEN,ELSE語句設(shè)計二選一多路轉(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:譯碼器已知一個16位地址描述的存儲器區(qū)映象如圖6-6所示設(shè)計一個譯碼器來選頂相應(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è)計舉例

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

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語句

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語句

(b)利用CASE語句

圖6-7(a)和(b)分別給出利用IF和CASE語句的例8(a)和例8(b)的實現(xiàn)結(jié)構(gòu)通常,“IF_THEN_ELSE”語句實現(xiàn)的速度較慢,除非要求建立優(yōu)先權(quán)的編碼器才利用它,并應(yīng)分配最高的特權(quán)到后到達(dá)的關(guān)鍵信號,嵌套的“IF_THEN_ELSE”語句可能增加面積和延時。如果可能應(yīng)該盡量用“CASE語句”來描述相同的功能“CASE”語句的所有分支必須定義CASE語句的優(yōu)點是緊湊且延時優(yōu)化,可以在單個CLB中實現(xiàn)。但是CASE語句使用時必須注意,有限的狀態(tài)都要被定義。std_logic并非只有‘0’,‘1’;當(dāng)出現(xiàn)“不考慮‘-’”時也可以采用。而邏輯化簡是選擇‘0’或‘1’,和std_logic的‘-’求素覆蓋來實現(xiàn)的。 對于“CASE”語句說明“不考慮‘-’”的條件是十分重要的,這個說明可能在綜合時消除好幾層邏輯。三態(tài)門及總線緩沖器是接口電路和總線驅(qū)動電路經(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;例:雙向總線緩沖器雙向總線緩沖器用于對數(shù)據(jù)總線的驅(qū)動和緩沖,如下圖所示。雙向緩沖器有兩個數(shù)據(jù)輸入輸出端a和b,一個方向控制端dr和一個選通端en。當(dāng)en=1時緩沖器未被選通,a和b都呈現(xiàn)高阻;en=0時,緩沖器被選通,如果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)成的,利用信號aout和bout將兩組三態(tài)門連接起來。例6-13:八級優(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論