EDA技術(shù)項目教程-基于VHDL與FPGA 課件 項目1 數(shù)據(jù)比較器的設(shè)計與實現(xiàn)_第1頁
EDA技術(shù)項目教程-基于VHDL與FPGA 課件 項目1 數(shù)據(jù)比較器的設(shè)計與實現(xiàn)_第2頁
EDA技術(shù)項目教程-基于VHDL與FPGA 課件 項目1 數(shù)據(jù)比較器的設(shè)計與實現(xiàn)_第3頁
EDA技術(shù)項目教程-基于VHDL與FPGA 課件 項目1 數(shù)據(jù)比較器的設(shè)計與實現(xiàn)_第4頁
EDA技術(shù)項目教程-基于VHDL與FPGA 課件 項目1 數(shù)據(jù)比較器的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

EDA項目教程

——基于VHDL與FPGA主編:于潤偉本章要點

VHDL的程序結(jié)構(gòu)VHDL的數(shù)據(jù)結(jié)構(gòu)VHDL的并行語句項目3數(shù)據(jù)編碼器的設(shè)計與實現(xiàn)VHDL是一種用普通文本形式設(shè)計數(shù)字系統(tǒng)的硬件描述語言,主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,可以在任何文字處理軟件環(huán)境中編輯。編寫VHDL程序時允許使用一些符號(字符串)作為標識符,標識符的命名規(guī)則如下:(1)由26個英文字母、數(shù)字0~9及下劃線“_”組成。(2)第一個字符必須以字母開頭。(3)下劃線不能連用,最后一個字符不能是下劃線。(4)對大小寫字母不敏感(英文字母不區(qū)分大小寫)。在VHDL中把具有特定意義的標識符號稱為關(guān)鍵字,只能作固定用途使用,用戶不能將關(guān)鍵字作為一般標識符來使用,如ENTITY,PORT,BEGIN,END等。3.1VHDL的程序結(jié)構(gòu)3.1.1VHDL的基本結(jié)構(gòu)--庫和程序包部分LIBRARYIEEE;--IEEE庫

USEIEEE.STD_LOGIC_1164.ALL;--調(diào)用IEEE庫中STD_LOGIC_1164程序包--實體部分ENTITYnotgateIS--實體名為notgatePORT(--端口說明

a:INSTD_LOGIC;--定義端口類型

和數(shù)據(jù)類型

y:OUTSTD_LOGIC);ENDnotgate;--實體結(jié)束--結(jié)構(gòu)體部分ARCHITECTUREinvOFnotgateIS--結(jié)構(gòu)體名為invBEGINy<=NOTa;--將a取反后賦值給輸出端口yENDinv;--結(jié)構(gòu)體結(jié)束3.1.2庫和程序包1.庫LIBRARY庫名;常用的庫有IEEE庫、STD庫和WORK庫。2.程序包調(diào)用程序包的通用模式為:USE庫名.程序包名.ALL;例如調(diào)用STD_LOGIC_1164程序包中的項目需要使用以下語句:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;3.1.3VHDL的實體實體的格式如下:ENTITY實體名IS[GENERIC(類屬說明)][PORT(端口說明)]END[ENTITY]實體名;1.類屬說明GENERIC(常數(shù)名1:數(shù)據(jù)類型1:=設(shè)定值1;

……;常數(shù)名n:數(shù)據(jù)類型n:=設(shè)定值n);2.端口說明PORT(端口信號名1:端口模式1數(shù)據(jù)類型1;

……;端口信號名n:端口模式n數(shù)據(jù)類型n);3.1.4VHDL的結(jié)構(gòu)體

一個實體中可以有一個結(jié)構(gòu)體,也可以有多個結(jié)構(gòu)體,但各個結(jié)構(gòu)體不應有重名,其格式如下:ARCHITECTURE結(jié)構(gòu)體名OF實體名IS[結(jié)構(gòu)體說明部分;]BEGIN

功能描述語句;END[ARCHITECTURE]結(jié)構(gòu)體名;3.1.5VHDL的特點1.語法規(guī)范標準、開發(fā)周期短VHDL具有嚴格的語法規(guī)范和統(tǒng)一的標準,可讀性強。用VHDL書寫的源文件既是程序,又是文檔,可以直接用于設(shè)計成果的交流。VHDL采用基于模塊庫的設(shè)計方法,這樣在設(shè)計一個大規(guī)模集成電路或數(shù)字系統(tǒng)的過程中,技術(shù)人員就不需要從門級電路開始一步步地進行設(shè)計,可以用原來設(shè)計好的模塊直接進行累加,這些模塊可以預先設(shè)計或者使用以前設(shè)計中的存檔模塊,這些模塊存放在資源庫中,就可以在以后的設(shè)計中進行復用。不難看出,復用減小了硬件電路設(shè)計的工作量,縮短了開發(fā)周期。3.1.5VHDL的特點2.與工藝無關(guān)

當設(shè)計人員用VHDL進行硬件電路設(shè)計時,并沒有涉及到與工藝有關(guān)的信息。當一個設(shè)計描述進行完編譯、模擬和綜合后,就可以采用不同的工具軟件將設(shè)計映射到不同的器件上去。映射不同的器件,只需要改變相應的工具軟件,而無需修改設(shè)計描述。3.1.5VHDL的特點3.易于ASIC(專用集成電路)移植

當產(chǎn)品的數(shù)量達到相當?shù)囊?guī)模時,采用VHDL開發(fā)的數(shù)字系統(tǒng)能夠很容易地轉(zhuǎn)成ASIC的設(shè)計。有時用于PLD的程序可以直接用于ASIC,并且由于VHDL是一種IEEE的工業(yè)標準硬件描述語言,所以使用VHDL設(shè)計可以確保ASIC廠商生產(chǎn)出高質(zhì)量的芯片產(chǎn)品。3.1.5VHDL的特點4.上市時間短、成本低VHDL和可編程邏輯器件很好地結(jié)合,可以大大提高數(shù)字產(chǎn)品芯片化設(shè)計的實現(xiàn)速度。VHDL使設(shè)計描述更加方便、快捷,可編程邏輯器件的應用可以將產(chǎn)品設(shè)計的前期風險降至最低,并使設(shè)計的快速復制簡單易行。3.2編碼器的設(shè)計

在一些場合,需要用特定的符號或數(shù)碼表示特定的對象,例如一個班級中的每個同學都有不重復的學號,每個電話用戶都有一個特定的號碼等。在數(shù)字電路中,需要將具有某種特定含義的信號變成代碼,利用代碼表示具有特定含義對象的過程,稱為編碼。能夠完成編碼功能的器件,稱為編碼器(Encoder)。編碼器分為普通編碼器和優(yōu)先級編碼器兩類。3.2.1數(shù)據(jù)對象1.常量CONSTANT常量名[,常量名…]:數(shù)據(jù)類型:=表達式;CONSTANTVCC:REAL:=3.3;--常量VCC的類型是實

數(shù),值為3.3CONSTANTGND:INTEGER:=0;--常量GND的類型是

整數(shù),值為0CONSTANTDELAY:TIME:=100ns;--常量DELAY是

時間類型,初值為100ns。數(shù)值和單位之間要留空格。3.2.1數(shù)據(jù)對象2.變量VARIABLE變量名[,變量名…]:數(shù)據(jù)類型[約束條件][:=表達式];VARIABLEs1,s2:INTEGER:=256;VARIABLEcont:INTEGERRANGE0TO10;第一條語句中變量s1和s2都為整數(shù)類型,初值都是256;第二條語句中,RANGE…TO…是約束條件,表示變量cont的數(shù)據(jù)限制在0~10的整數(shù)范圍內(nèi)。變量CONT沒有指定初值,則取默認值,默認值為該類型數(shù)據(jù)的最小值或最左端值,那么本條語句中cont初值為0(最左端值)。3.2.1數(shù)據(jù)對象3.信號SIGNAL信號名[,信號名…]:數(shù)據(jù)類型[約束條件][:=表達式];SIGNALa,b:INTEGER:RANGE0TO7:=5;SIGNALground:BIT:='0';第一條語句定義整數(shù)類型信號a、b,取值范圍限定在0~7,并賦初值5;第二條語句定義位信號ground并賦初值'0'。在VHDL程序中,信號和變量是兩個經(jīng)常使用的對象,都要求先聲明,后使用,具有一定的相似性,其主要區(qū)別如下:(1)在聲明中賦初值,都使用:=運算符;聲明后使用時,信號賦值使用<=運算符,變量賦值仍然使用:=運算符;(2)信號賦值有附加延時,變量賦值則沒有。(3)對于進程語句,進程只對信號敏感,不對變量敏感。(4)外部信號表示端口,內(nèi)部信號可看成硬件中的一根連線。變量在硬件中沒有類似的對應關(guān)系,常用于保存運算的中間結(jié)果。描述硬件邏輯時,還是應以信號為主,盡量減少變量的使用。3.2.2VHDL的運算符(1)邏輯運算符。(2)關(guān)系運算符。(3)移位運算符。(4)符號運算符。(5)連接運算符。(6)算術(shù)運算符。3.2.3賦值語句賦值語句是將一個值或者一個表達式的結(jié)果傳遞給某一個數(shù)據(jù)對象,數(shù)據(jù)在實體內(nèi)部的傳遞以及對端口外的傳遞都必須通過賦值語句來實現(xiàn)。VHDL語言提供了兩種類型的賦值語句:信號賦值語句和變量賦值語句。變量賦值語句和信號賦值語句的語法格式如下:變量:=表達式;信號<=表達式;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYvote_3ISPORT(A,B,C:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDvote_3;ARCHITECTUREdeOFvote_3ISSIGNALe:STD_LOGIC;--定義e為信號BEGINY<=(AANDB)OR(AANDC)ORe;--以下兩條并行語句與書寫順序無關(guān)e<=BANDC;ENDde;用賦值語句描述三人表決器三人表決器的波形3.2.4選擇信號賦值語句WITH選擇表達式SELECT目標信號<=信號表達式1WHEN選擇條件1,信號表達式2WHEN選擇條件2,

……,信號表達式nWHEN選擇條件n;先對選擇條件表達式進行判斷,當選擇條件表達式的值符合某一選擇條件時,就將該條件前面的信號表達式賦給目標信號。例如,當選擇條件表達式的值符合條件1時,就將信號表達式1賦給目標信號;當選擇條件表達式的值符合選擇條件n時,就將信號表達式n賦給目標信號。(1)只有當選擇條件表達式的值符合某一選擇條件時,才將該選擇條件前面的信號表達式賦給目標信號。(2)每一個信號表達式后面都含有WHEN子句。(3)由于選擇信號賦值語句是并發(fā)執(zhí)行的,所以不能夠在進程中使用。(4)對選擇條件的測試是同時進行的,語句將對所有的選擇條件進行判斷,而沒有優(yōu)先級之分。這時如果選擇條件重疊,就有可能出現(xiàn)兩個或兩個以上的信號表達式賦給同一目標信號,這樣就會引起信號沖突,因此不允許有選擇條件重疊的情況。(5)選擇條件不允許出現(xiàn)涵蓋不全的情況。如果選擇條件不能涵蓋選擇條件表達式的所有值,就有可能出現(xiàn)選擇條件表達式的值找不到與之符合的選擇條件,這時編譯將會給出錯誤信息。用選擇信號賦值語句描述“四選一”電路LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(d0,d1,d2,d3:INSTD_LOGIC;s0,s1:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTURErt1OFmux4ISSIGNALcomb:STD_LOGIC_VECTOR(1DOWNTO0);BEGINcomb<=s1&s0;WITHcombSELECTq<=d0WHEN"00",d1WHEN"01",d2WHEN"10",d3WHEN"11",'Z'WHENOTHERS;--'Z'必須大寫,表示高阻狀態(tài)ENDrt1;用選擇信號賦值語句描述“四選一”電路需要注意的是,以上程序的選擇信號賦值語句中,comb的值"00"、"01"、"10"和"11"被明確規(guī)定,而用保留字OTHERS來表示comb的所有其他可能值。因此,為了使選擇條件能夠涵蓋選擇條件表達式的所有值,這里用OTHERS來代替comb的所有其他可能值。注意:每條WHEN短句表示并列關(guān)系用逗號,最后一句用分號。選擇器的波形3.2.58-3線普通編碼器

普通編碼器在某一時刻只能對一個輸入信號進行編碼,即只能有一個輸入端有效,當信號高電平有效時,則應只有一個輸入信號為高電平,其余輸入信號均為低電平。一般來說,由于n位二進制代碼可以表示2n種不同的狀態(tài),所以,2n個輸入信號只需要n個輸出就完成編碼工作。

1.題目要求利用QuartusⅡ軟件的文本輸入方式,設(shè)計一個8-3線普通編碼器,完成編譯和波形仿真后,下載到實驗平臺驗證電路功能。2.電路設(shè)計8-3線普通編碼器電路具有8個輸入端,3個輸出端(23=8),屬于二進制編碼器。用X7~X0表示8路輸入,Y2~Y0表示3路輸出。原則上對輸入信號的編碼是任意的,常用的編碼方式是按照二進制的順序由小到大進行編碼。輸入變量輸出變量X7X6X5X4X3X2X1X0Y2Y1Y00000000100000000010001000001000100000100001100010000100001000001010100000011010000000111表3-48-3線普通編碼器真值表LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYENCODEISPORT(X:INstd_logic_VECTOR(7DOWNTO0);Y:BUFFERstd_logic_VECTOR(2DOWNTO0));ENDENCODE;編碼器程序ARCHITECTUREAOFENCODEISBEGINWITHXSELECTY<="000"WHEN"00000001","001"WHEN"00000010","010"WHEN"00000100","011"WHEN"00001000","100"WHEN"00010000","101"WHEN"00100000","110"WHEN"01000000","111"WHEN"10000000","ZZZ"WHENOTHERS;--“ZZZ”必須大寫,表示高阻狀態(tài)ENDA;仿真波形從仿真結(jié)果中可以看出,在0~100ns區(qū)間,X(編碼按鍵)=00000000,沒有按鍵按下,輸出Y(編碼)=ZZZ,表示高阻狀態(tài);在100ns~200ns區(qū)間,X(編碼按鍵)=00000001,X0按鍵按下,輸出Y(編碼)=000;在200ns~300ns區(qū)間,X(編碼按鍵)=00000010,X1按鍵按下,輸出Y(編碼)=001;在300ns~400ns區(qū)間,X(編碼按鍵)=00000011,X1和X0按鍵都被按下,多余1個按鍵,輸出Y(編碼)=ZZZ,表示高阻狀態(tài)。其他區(qū)間的波形情況符合8-3線普通編碼器。按下與X7鎖定的按鍵,輸出信號應該為111;抬起與X7鎖定的按鍵,按下與X3鎖定的按鍵,輸出信號應該為011;不抬起與X3鎖定的按鍵,再按下與X7鎖定的按鍵,由于輸入編碼信號超過1個,輸出信號為高阻狀態(tài)(觀察與低電平的區(qū)別);按下與其他信號端鎖定的按鍵,觀察輸出信號。電路測試3.3優(yōu)先編碼器的設(shè)計

普通編碼器工作時若同時出現(xiàn)兩個以上的有效輸入信號,則會造成電路工作的混亂,為此設(shè)計了優(yōu)先編碼器。

優(yōu)先編碼器允許多個有效輸入信號同時存在,但根據(jù)事先設(shè)定的優(yōu)先級別不同,編碼器只輸入信號中優(yōu)先級別最高的編碼請求,而不響應其他的輸入信號。3.3.1數(shù)據(jù)類型1.STANDARD程序包中預定義的數(shù)據(jù)類型(1)整數(shù)類型(INTEGER)

整數(shù)與數(shù)學中的整數(shù)相似,包括正整數(shù)、零、負整數(shù)。整數(shù)類型可進行關(guān)系運算和算術(shù)運算。整數(shù)類型的表示范圍是-231~231-1,這么大范圍的數(shù)值及其運算在硬件電路實現(xiàn)過程中將消耗很大的器件資源,而實際涉及的整數(shù)范圍通常很小,例如一個十進制7端數(shù)碼管只需顯示“0~9”共10個數(shù)字。因此在使用整數(shù)類型時,要求用RANGE語句為定義的整數(shù)確定一個范圍。例如:SIGNALnum:INTEGERRANGE0TO255;--定義整型信號num的范圍0~255整數(shù)包括十進制、二進制、八進制和十六進制,默認進制是十進制。其他進制在表示時用符號#區(qū)分進制與數(shù)值。例如:123表示十進制整數(shù)123、2#0110#表示二進制整數(shù)0110、8#576#表示八進制整數(shù)576、16#FA#表示十六進制整數(shù)FA。3.3.1數(shù)據(jù)類型1.STANDARD程序包中預定義的數(shù)據(jù)類型(2)自然數(shù)(NATURAL)和正整數(shù)(POSITIVE)

自然數(shù)類型是整數(shù)的子集,正整數(shù)類型又是自然數(shù)類型的子集。自然數(shù)包括零和正整數(shù),正整數(shù)只包括大于零的整數(shù)。3.3.1數(shù)據(jù)類型1.STANDARD程序包中預定義的數(shù)據(jù)類型(3)實數(shù)(REAL)類型

與數(shù)學中的實數(shù)類似,數(shù)據(jù)范圍是-1.0E38~+1.0E38。書寫時一定要有小數(shù)點(包括小數(shù)部分為0時)或采用科學計數(shù)形式。VHDL僅在仿真時可使用該類型,在綜合過程中綜合器是不支持實數(shù)類型的。實數(shù)也包括十進制、二進制、八進制和十六進制,例如:2.0表示十進制實數(shù)2.0、605.3表示十進制實數(shù)605.3、8#46.1#E+5表示八進制實數(shù)46.1E+5。注意:不能把實數(shù)賦給信號,只能賦給實數(shù)類型的變量。3.3.1數(shù)據(jù)類型1.STANDARD程序包中預定義的數(shù)據(jù)類型(4)位(BIT)類型

位數(shù)據(jù)類型是屬于可枚舉類型,信號常用位表示,位值用帶單引號括起來的'0'和'1'表示,只代表電平的高低,與整數(shù)中的0和1意義不同。位類型可以進行算術(shù)運算和邏輯運算,而整數(shù)類型只能進行關(guān)系運算和算術(shù)運算。(5)位向量(BIT_VECTOR)類型

位矢量是用雙引號括起來的一組數(shù)據(jù),是基于位數(shù)據(jù)類型的數(shù)組,可以表示二進制(符號為B,可缺?。诉M制(符號為O)、十進制(符號為D)或十六進制(符號為H)的位矢量,例如"011010"、H"00AB",分別表示二進制位矢量"011010"和十六進制位矢量"00AB"。使用位矢量通常要聲明位寬,即數(shù)組中元素的個數(shù)和排列順序。例如:SIGNALA:BIT_VECTOR(3DOWNTO0);A<="0101";表示信號A被定義為具有4位位寬的位矢量,最左位(即最高位)是A(3)=0,A(2)=1,A(1)=0,最右位(即最低位)是A(0)=1。如果寫成:SIGNALA:BIT_VECTOR(0TO3);A<="0101";同樣表示信號A被定義為具有4位位寬的位矢量,但最左位(即最低位)是A(0)=0,A(1)=1,A(2)=0,最右位(即最高位)是A(3)=1。(6)布爾(BOOLEAN)類型

布爾類型只有TURE和FALSE兩種取值,初值通常定義為FALSE。雖然布爾類型也是二值枚舉量,但與位數(shù)據(jù)類型不同,沒有數(shù)值的含義,不能進行算術(shù)運算,只能進行邏輯運算。關(guān)系表達式或邏輯表達式的運算結(jié)果就是布爾類型,當表達式成立時,表達式值為TRUE;表達式不成立,表達式值為FALSE。(7)字符(CHARACTER)類。(8)字符串(STRING)類型(9)時間(TIME)類型(10)錯誤等級(SEVERITYLEVEL)類型2.IEEE庫中預定義的數(shù)據(jù)類型(1)標準邏輯位(STD_LOGIC)數(shù)據(jù)類型。

在IEEE庫的STD_LOGIC_1164程序包中定義,是一個邏輯型的數(shù)據(jù)類型,取代STANDARD程序包中的BIT數(shù)據(jù)類型,擴展定義了9種值,符號和含義分別為'U'表示未初始化;'X'表示不定;'0'表示低電平;'1'表示高電平;'Z'表示高阻;'W'表示弱信號不定;'L'表示弱信號低電平;'H'表示弱信號高電平;'-'表示可忽略(任意)狀態(tài)。需要注意的是:表示高阻的'Z'必須大寫;'U'、'X'和'W'不能被綜合工具支持,僅用于仿真。2.IEEE庫中預定義的數(shù)據(jù)類型(2)標準邏輯位向量(STD_LOGIC_VECTOR)數(shù)據(jù)類型。

是基于STD_LOGIC數(shù)據(jù)類型的一維數(shù)組,使用時必須說明位寬和排列順序,數(shù)據(jù)要用雙引號括起來。例如:SIGNALA:STD_LOGIC_VECTOR(0TO7);A<=H"47";--定義信號A為十六進制數(shù)472.IEEE庫中預定義的數(shù)據(jù)類型(3)無符號(UNSIGNED)數(shù)據(jù)類型。在IEEE庫的STD_LOGIC_ARITH或STD_LOGIC_UNSIGNED程序包中定義,是由STD_LOGIC數(shù)據(jù)類型構(gòu)成的一維數(shù)組,表示一個自然數(shù)。當一個數(shù)據(jù)除了執(zhí)行算術(shù)運算外,還要執(zhí)行邏輯運算,就必須定義成UNSIGNED。例如:SIGNALDAT:UNSIGNED(3DOWNTO0);DAT<="0110";定義信號DAT是4位二進制數(shù)碼表示的無符號數(shù)據(jù),數(shù)值是6。2.IEEE庫中預定義的數(shù)據(jù)類型(4)有符號(SIGNED)數(shù)據(jù)類型。在IEEE庫的STD_LOGIC_ARITH或STD_LOGIC_SIGNED程序包中定義,表示一個帶符號的整數(shù),其最高位是符號位(0代表正整數(shù),1代表負整數(shù)),用補碼表示數(shù)值。SIGNALSIGNEDDAT:SIGNED(3DOWNTO0);SIGNEDDAT<="1101";定義信號SIGNEDDAT是4位二進制數(shù)碼表示的有符號數(shù)據(jù),數(shù)值是-3。信號<=表達式1WHEN賦值條件1ELSE

表達式2WHEN賦值條件2ELSE……

表達式n;執(zhí)行該語句時首先要進行條件判斷,然后再進行信號賦值操作。例如,當條件1滿足時,就將表達式1的值賦給目標信號;當條件2滿足時,就將表達式2的值賦給目標信號;當所有的條件都不滿足時,就將表達式n的值賦給目標信號。3.3.2條件信號賦值語句使用條件信號賦值語句時,應該注意以下幾點:(1)只有當條件滿足時,才能將該條件前面的表達式值賦給目標信號。(2)對條件進行判斷是有順序的,位置靠前的條件具有較高的優(yōu)級,只有不滿足本條件的時候才會去判斷下一個條件。(3)條件表達式的結(jié)果為布爾類型。(4)最后一個表達式后面不含有WHEN子句。(5)條件信號賦值語句允許條件重疊,但位置在后面的條件不會被執(zhí)行。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYselection4ISPORT(a:INSTD_LOGIC_VECTOR(3DOWNTO0);sel:INSTD_LOGIC_VECTOR(1DOWNTO0);y:OUTSTD_LOGIC);ENDselection4;ARCHITECTUREoneOFselection4ISBEGINy<=a(0)WHENsel="00"ELSE--從第一個條件開始判斷a(1)WHENsel="01"ELSEa(2)WHENsel="10"ELSEa(3);

ENDone;用條件信號賦值語句描述“四選一”電路。“4選1”數(shù)據(jù)選擇器波形8421-BCD優(yōu)先編碼器的設(shè)計1.題目要求

利用QuartusⅡ軟件的文本輸入方式,設(shè)計一個8421-BCD優(yōu)先編碼器,設(shè)大數(shù)優(yōu)先級別高,完成編譯和波形仿真后,下載到實驗平臺驗證電路功能。

2.電路設(shè)計8421-BCD優(yōu)先編碼器具有10個輸入端,分別代表十進制數(shù)9~0,用X9~X0表示;具有4個輸出端,代表對應輸入的8421碼,用Y3~Y0表示。根據(jù)題意輸入十進制數(shù)越大,其優(yōu)先級別越高。輸入變量輸出變量X9X8X7X6X5X4X3X2X1X0Y3Y2Y1Y0

00000000010000

000000001×0001

00000001××0010

0000001×××0011

000001××××0100

00001×××××0101

0001××××××0110

001×××××××0111

01××××××××1000

1×××××××××1001

8421-BCD優(yōu)先編碼器真值表LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYPENCODEISPORT(X:INstd_logic_VECTOR(9DOWNTO0);Y:OUTstd_logic_VECTOR(3DOWNTO0));ENDPENCODE;參考程序:ARCHITECTUREAOFPENCODEISBEGINY<="1001"WHENX(9)='1'ELSE"1000"WHENX(8)='1'ELSE"0111"WHENX(7)='1'ELSE"0110"WHENX(6)='1'ELSE"0101"WHENX(5)='1'ELSE"0100"WHENX(4)='1'ELSE"0011"WHENX(3)='1'ELSE"0010"WHENX(2)='1'ELSE"0001"WHENX(1)='1'ELSE"0000"WHENX(0)='1'ELSE"ZZZZ";ENDA;仿真結(jié)果

從仿真結(jié)果中可以看出,在0~100ns區(qū)間,X(編碼按鍵)=00000000,沒有按鍵按下,輸出Y(編碼)=ZZZ,表示高阻狀態(tài);

在100ns~200ns區(qū)間,X(編碼按鍵)=00000001,X0按鍵按下,輸出Y(編碼)=000;

在200ns~300ns區(qū)間,X(編碼按鍵)=00000010,X1按鍵按下,輸出Y(編碼)=001;

在300ns~400ns區(qū)間,X(編碼按鍵)=00000011,X1和X0按鍵都被按下,按照優(yōu)先級的設(shè)置,X1的優(yōu)先級更高,輸出Y(編碼)=001,表示高阻狀態(tài)。其他區(qū)間的波形情況符合8421-BCD優(yōu)先編碼器。按下與X7鎖定的按鍵,輸出信號應該為0111;按下與X3鎖定的按鍵,如果沒有抬起與X7鎖定的按鍵,輸出信號應該仍為0111,抬起與X7鎖定的按鍵后才能輸出0011;同樣操作與其他信號端鎖定的按鍵,觀察輸出信號。電路測試3.4.1塊語句

塊語句是一種并行語句的組合方式,可以使程序更加有層次、更加清晰。在物理意義上,一個塊語句對應一個子電路;在邏輯電路圖上,一個塊語句對應一個子電路圖。塊語句的格式如下:塊標號:BLOCK

說明語句;

BEGIN

并行語句;

……;ENDBLOCK塊標號;塊標號是塊的名稱,塊說明語句與結(jié)構(gòu)體的說明語句相同,用來定義塊內(nèi)局部信號、數(shù)據(jù)類型、元件和子程序,在塊內(nèi)并行語句區(qū)可以使用所有的并行語句。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadsuISPORT(a,b:INSTD_LOGIC;co,sum,bo,sub:OUTSTD_LOGIC);ENDadsu;設(shè)計一個電路,包含一個半加器和一個半減器ARCHITECTUREstrOFadsuISBEGINhalf_add:BLOCK--半加器塊開始BEGINsum<=aXORb;co<=aANDb;ENDBLOCKhalf_add;--半加器塊結(jié)束half_sub:BLOCK--半減器塊開始BEGINsub<=aXORb;bo<=(NOTa)ANDb;

ENDBLOCKhalf_sub;--半減器塊結(jié)束ENDstr;

設(shè)計一個4-2編碼器,能夠?qū)Υ?~3數(shù)碼的開關(guān)量進行編碼,同時輸出普通編碼和優(yōu)先編碼(數(shù)碼越小優(yōu)先級越高),比較2種編碼器的區(qū)別。1.題目分析

根據(jù)題意,使用塊語句設(shè)計4-2編碼器,包含普通編碼塊和優(yōu)先編碼塊(數(shù)碼越小優(yōu)先級越高),普通編碼塊使用選擇信號賦值語句實現(xiàn);優(yōu)先編碼塊使用條件賦值信號語句實現(xiàn)。2.建立項目3.編輯與編譯3.4.2編碼模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcodebl

溫馨提示

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

評論

0/150

提交評論