版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章組合邏輯電路主講人:蔡劍華單位:物電學(xué)院2.2Identifiers,spacesandcomments
VHDLisnotcase-sensitive,however,thatusualsoftwareengineeringrulesaboutidentifiersshouldbeapplied.●Meaningful,non-crypticnamesshouldbeused,basedonEnglishwords.●Usemixed-casewithconsistentuseofcase.●Don’tuseexcessivelylongidentifiers(15charactersorfewer).●Don’tuseidentifiersthatmaybeconfused(e.g.twoidentifiersthatdifferbyanunderscore)●Don’tredefinepredefinedidentifiers,suchasBitorTime.●
Identifiersmayconsistofletters,numbersandunderscores(‘_’),butthefirstcharactermustbealetter,andtwounderscoresinsuccessionarenotallowed.
Extendedidentifiersmayconsistofanycharacter,providedthattheentireidentifierisenclosedinbackslashes(‘\’),e.g.\0%$#——&\.Thestringsinextendedidentifiersarecase-sensitive.Useextendedidentifierswithextremecaution.
2.2.1Identifiers2.2.2spacesWhitespace(spaces,carriagereturns)shouldbeusedtomakemodelsmorereadable.Thereisnodifferencebetweenonewhitespacecharacterandmany.2.2.3commentsCommentsmaybeincludedinaVHDLdescriptionbyputtingtwohyphensonaline(‘--’).Alltextbetweenthehyphensandtheendofthelineisignored.配置配置語句的一般格式如下:CONFIGURATION配置名OF實(shí)體名IS
配置說明
END配置名;配置可以把特定的結(jié)構(gòu)體關(guān)聯(lián)到(指定給)一個(gè)確定的實(shí)體。組合邏輯電路的概念任一時(shí)刻的輸出僅僅取決于當(dāng)時(shí)的輸入,與電路原來的狀態(tài)無關(guān),這樣的數(shù)字電路叫做組合邏輯電路。與時(shí)序電路最大的區(qū)別就是,組合邏輯電路不含有存儲(chǔ)部件。常用的組合邏輯器件包括編碼器、譯碼器、數(shù)據(jù)選擇器、數(shù)值比較器、加法器等。3.1基本邏輯門電路基本邏輯門電路
基本邏輯門電路是數(shù)字邏輯電路的基本電路。包括與門、或門、與非門、或非門、反相器、異或門等等。下面用VHDL語言來描述二輸入與非門。二輸入與非門LibraryIEEE;UseIEEE.std_logic_1164.all;Entitynand2isport(a,b:instd_logic;y:outstd_logic);Endnand2;Architecturebehavofnand2isBeginy<=anandb;Endbehav;nand是邏輯操作符與非,把nand替換為nor即可得到二輸入或非門P433.2譯碼器與編碼器
譯碼器(Decoder)
譯碼器分為幾類:變量譯碼器:把輸入的二進(jìn)制代碼的各種組合狀態(tài)翻譯成對(duì)應(yīng)的輸出信號(hào)。碼制變換譯碼器:將一種代碼變換為另一種代碼的電路。顯示譯碼器:如將數(shù)據(jù)顯示在七段數(shù)碼管上時(shí)的譯碼。地址譯碼器:將譯碼器輸入端的輸入地址信號(hào)翻譯成相應(yīng)的輸出控制信號(hào)。
譯碼器(Decoder)變量譯碼器又稱二進(jìn)制譯碼器,把輸入的二進(jìn)制代碼的各種組合狀態(tài)翻譯成對(duì)應(yīng)的輸出信號(hào)。如3-8譯碼器74LS138。下面就以3-8譯碼器為例子介紹VHDL語言描述的實(shí)現(xiàn)。3-8譯碼器如圖所示,是一個(gè)3-8譯碼器(74LS138)。3個(gè)二進(jìn)制輸入端,對(duì)輸入a,b,c的值進(jìn)行譯碼,就可以確定哪一個(gè)輸出端變?yōu)橛行Вǖ碗娖剑?。g1,g2a,g2b是選通信號(hào),只有當(dāng)g1=‘1’,
g2a=‘0’和g2b=‘0’時(shí),譯碼器才正常譯碼。P443-8譯碼器LibraryIEEE;UseIEEE.std_logic_1164.all;Entitydecoder_38isPort(a,b,c,g1,g2a,g2b:instd_logic;y:outstd_logic_vector(7downto0));Enddecoder_38;Architecturebehavofdecoder_38isSignalindata:std_logic_vector(2downto0);Begin
indata<=c&b&a;Process(indata,g1,g2a,g2b)Begin定義indata是三位的位矢量,并把c、b、a進(jìn)行位合并賦值給信號(hào)indataP443-8譯碼器If(g1=‘1’andg2a=‘0’andg2b=‘0’)then
case
indataiswhen“000”=>y<=“11111110”;when“001”=>y<=“11111101”;when“010”=>y<=“11111011”;when“011”=>y<=“11110111”;when“100”=>y<=“11101111”;when“101”=>y<=“11011111”;when“110”=>y<=“10111111”;when“111”=>y<=“01111111”;whenothers=>y<=“XXXXXXXX”;Endcase;Elsey<=“11111111”;Endif;Endprocess;Endbehav;Case語句可用If語句進(jìn)行改寫3-8譯碼器改寫后的IF語句:If(g1=‘1’andg2a=‘0’andg2b=‘0’)theny<=“11111111”;Elsif
indata=“000”theny<=“11111110”;Elsif
indata=“001”theny<=“11111101”;Elsif
indata=“010”theny<=“11111011”;Elsif
indata=“011”theny<=“11110111”;Elsif
indata=“100”theny<=“11101111”;Elsif
indata=“101”theny<=“11011111”;Elsif
indata=“110”theny<=“10111111”;Elsif
indata=“111”theny<=“01111111”;Endif;小結(jié)本例設(shè)計(jì)的是一個(gè)3—8線譯碼器,有使能端,低電平有效。這個(gè)程序的一、二句是庫和程序包的語言。接下來是實(shí)體,主要是定義了一些輸入、輸出端口。需要注意的是要幫實(shí)體命名,如“decoder_38”,并且工程名與實(shí)體名保持一致。還要有結(jié)束語,如“enddecoder_38”。最后是結(jié)構(gòu)體部分,其中“<=”是信號(hào)傳輸符號(hào),“indata<=c&b&a”表示把c、b、a進(jìn)行位合并并且賦值給信號(hào)indata。進(jìn)程語句是結(jié)構(gòu)體的一種子程序,括號(hào)內(nèi)的信號(hào)量是process的輸入信號(hào),這些信號(hào)無論哪個(gè)發(fā)生變化,都將啟動(dòng)process語句。編碼器(Encoder)
編碼器可分為兩類普通編碼器:在某一特定時(shí)刻,只能對(duì)一個(gè)輸入信號(hào)進(jìn)行編碼,并且這種編碼器的輸入端不允許同一時(shí)刻出現(xiàn)兩個(gè)以上的有效輸入信號(hào),否則編碼器輸出將會(huì)出現(xiàn)混亂;
2.優(yōu)先編碼器:是指將所有的輸入信號(hào)按優(yōu)先級(jí)順序進(jìn)行排隊(duì),當(dāng)幾個(gè)輸入信號(hào)同時(shí)出現(xiàn)(有效)時(shí),只對(duì)其中優(yōu)先級(jí)最高的一個(gè)輸入信號(hào)進(jìn)行編碼的編碼器,常用于中斷的優(yōu)先級(jí)控制。優(yōu)先級(jí)編碼器如圖,74LS148是一個(gè)8輸入,3位二進(jìn)制碼輸出的優(yōu)先級(jí)編碼器。當(dāng)某一個(gè)輸入有效時(shí)(低電平),就可以輸出一個(gè)對(duì)應(yīng)的3位二進(jìn)制編碼。當(dāng)同時(shí)有幾個(gè)輸入有效時(shí),將輸出優(yōu)先級(jí)最高的那個(gè)輸入對(duì)應(yīng)的二進(jìn)制編碼。P45優(yōu)先級(jí)編碼器LibraryIEEE;UseIEEE.std_logic_1164.all;EntitypriorityencoderisPort(input:instd_logic_vector(7downto0);y:outstd_logic_vector(2downto0));Endpriorityencoder;ArchitecturebehavofpriorityencoderisBegin
Process(input)BeginP45優(yōu)先級(jí)編碼器If(input(0)=‘0’)theny<=“111”;
elsif(input(1)=‘0’)theny<=“110”;
elsif(input(2)=‘0’)theny<=“101”;
elsif(input(3)=‘0’)theny<=“100”;
elsif(input(4)=‘0’)theny<=“011”;
elsif(input(5)=‘0’)theny<=“010”;
elsif(input(6)=‘0’)theny<=“001”;
elsif(input(7)=‘0’)theny<=“000”;elsey<=“XXX”;endif;Endprocess;Endbehav;當(dāng)input=“01011111”時(shí),編碼成?因?yàn)镮F語句是一種流程控制語句,判斷條件有前后次序,所以應(yīng)編碼為“010”。P453.3加法器半加器(HalfAdder)
LIBRARYieee;USEieee.std_logic_1164.all;ENTITYhalfadderISPORT(X,Y:instd_logic;
Sum,Carry:outstd_logic);ENDhalfadder;ARCHITECTUREaOFhalfadderISBEGINSum<=XxorY;
Carry<=XandY;ENDa;Sum<=XXORY;Carry<=XANDY;SumCarryXY全加器(FullAdder)
LIBRARYieee;USEieee.std_logic_1164.all;
ENTITYfull_addISPORT(X,Y,Z:inbit;
Sum,Carry:outbit);ENDfull_add;
ARCHITECTUREaOFfull_addISBEGIN
Sum<=XxorYxorZ;
Carry<=(XandY)or(YandZ)or(ZandX);ENDa;P48全加器(FullAdder)
當(dāng)全加器設(shè)計(jì)完成后,采用模塊化設(shè)計(jì)方法,將全加器作為一個(gè)組件(component)定義,加入名為component的程序包中,以后可以統(tǒng)一將設(shè)計(jì)的組件放在這個(gè)程序包中。
LibraryIEEE;UseIEEE.std_logic_1164.all;PACKAGEcomponentsISCOMPONENTSfaddISPort(a,b,ci:IN
std_logic;
co,sum:OUT
std_logic);ENDcomponents;Endcomponents;4位串行進(jìn)位加法器根據(jù)模塊化設(shè)計(jì)思想,將全加器作為一個(gè)基本組件,如圖所示。本例使用Component語句,與PortMap語句結(jié)合可以讓我們像堆積木一般搭建出較為復(fù)雜的電路。P494位串行進(jìn)位加法器LibraryIEEE;UseIEEE.std_logic_1164.all;Useponents.all;Entityfadd4isport(a,b:instd_logic_vector(3downto0);
ci:instd_logic;co:outstd_logic;sum:outstd_logic_vector(3downto0));Endfadd4;Architecturestruoffadd4issignalci_ns:std_logic_vector(2downto0);BeginU0:fadd
portmap(a(0),b(0),ci,ci_ns(0),sum(0));U1:fadd
portmap(a(1),b(1),ci_ns(0),ci_ns(1),sum(1));U2:fadd
portmap(a(2),b(2),ci_ns(1),ci_ns(2),sum(2));U3:fadd
portmap(a(3),b(3),ci_ns(2),co,sum(3));Endstru;Architecturebehavof
實(shí)體名稱IS……component元件Aport(……);endcomponent;component元件Bport(……);endcomponent;……P494位并行進(jìn)位加法器LibraryIEEE;UseIEEE.std_logic_1164.all;UseIEEE.std_logic_unsigned.all;Entityfadd4isport(a,b:instd_logic_vector(3downto0);
ci:instd_logic;co:outstd_logic;sum:outstd_logic_vector(3downto0));Endfadd4;P504位并行進(jìn)位加法器Architecturebehavoffadd4issignalsint:std_logic_vector(4downto0);signalaa,bb:std_logic_vector(4downto0);Begin
aa<=‘0’&a;--將4位加數(shù)矢量擴(kuò)為5位,為進(jìn)位提供空間
bb<=‘0’&b;--將4位被加數(shù)矢量擴(kuò)為5位,為進(jìn)位提供空間
sint<=aa+bb+ci;s<=sint(3dowto0);co<=sint(4);Endbehav;串行進(jìn)位與并行進(jìn)位加法器性能比較串行進(jìn)位方式是將全加器級(jí)聯(lián)構(gòu)成多位加法器。并行進(jìn)位加法器設(shè)有并行進(jìn)位產(chǎn)生邏輯,運(yùn)算速度較快。并行進(jìn)位加法器通常比串行級(jí)聯(lián)加法器占用更多的資源,隨著位數(shù)的增加,相同位數(shù)的并行加法器與串行加法器的資源占用差距快速增大。因此,在工程中使用加法器時(shí),要在速度和占用資源間尋找平衡。實(shí)踐表明,4位并行加法器和串行級(jí)聯(lián)加法器占用幾乎相同的資源,所以多位加法器(例如8位)可以由4位并行加法器級(jí)聯(lián)構(gòu)成。8位加法器LibraryIEEE;UseIEEE.std_logic_1164.all;UseIEEE.std_logic_unsigned.all;Entityfadd8isport(a,b:instd_logic_vector(7downto0);
ci:instd_logic;co:outstd_logic;sum:outstd_logic_vector(7downto0));Endfadd8;P518位加法器Architecturestruoffadd8isComponentfadd4port(a,b:instd_logic_vector(3downto0);
ci:instd_logic;co:outstd_logic;sum:outstd_logic_vector(3downto0));Endcomponent;
--也可以放在程序包中定義
Signalcarry_out:std_logic;BeginU1:fadd4
portmap(a(3downto0),b(3downto0),ci,carry_out,sun(3downto0);U2:fadd4portmap(a(7downto4),b(7downto4),carry_out,co,sun(7downto4);Endstru;3.4其它組合邏輯模塊多路選擇器
多路選擇器的邏輯功能是在地址選擇信號(hào)的控制下,從多路輸入數(shù)據(jù)中選擇一路數(shù)據(jù)作為輸出端口的輸出數(shù)據(jù).4選1多路選擇器LibraryIEEE;UseIEEE.std_logic_1164.all;Entitymux4isport(input:instd_logic_vector(3downto0);a,b:instd_logic;y:outstd_logic);Endmux4;Architecturebehavofmux4is
signalsel:std_logic_vector(1downto0);Begin
sel<=b&a;
process(input,sel)begin信號(hào)需在結(jié)構(gòu)體中說明,而變量可在進(jìn)程中說明。P484選1多路選擇器if(sel=“00”)theny<=input(0);
elsif(sel=“01”)theny<=input(1);
elsif(sel=“10”)theny<=input(2);
elsif(sel=“11”)theny<=input(3);elsey<=‘Z’;endif;Endprocess;Endbehav;P48求補(bǔ)器LibraryIEEE;UseIEEE.std_logic_1164.all;UseIEEE.std_logic_unsigned.all;Entityhosuuisport(a:instd_logic_vector(7downto0);b:outstd_logic_vector(7downto0));Endhosuu;ArchitecturertlofhosuuisBeginb<=nota+‘1’;Endrtl;P46三態(tài)門LibraryIEEE;UseIEEE.std_logic_1164.all;Entitytri_gateisport(din,en:instd_logic;
dout:outstd_logic);Endtri_gate;Architecturebehavoftri_gateisBeginprocess(din,en)beginif(en=‘1’)thendout<=din;elsedout<=‘Z’;endif;endprocess;Endbehav;采用防護(hù)式塊語句來表示三態(tài)門:Architectureblkoftri_gateisBegintri_gate2:block(en=‘1’)begin
dout<=guardeddin;endblock;Endblk;P46單向總線緩沖器LibraryIEEE;UseIEEE.std_logic_1164.all;Entitytri_buf8isport(din:instd_logic_vector(7
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版出租車投資入股及品牌拓展合同3篇
- 二零二五年建筑工程安全施工協(xié)議書范本3篇
- 2024甲乙雙方就新產(chǎn)品研發(fā)項(xiàng)目所簽訂的技術(shù)秘密保護(hù)合同
- 2024版合作社商用物業(yè)租賃協(xié)議范本版B版
- 二零二五年能源公司股份代持與能源項(xiàng)目合作協(xié)議3篇
- 2024遼寧事業(yè)單位聘用合同書
- 2024版場地租賃協(xié)議書模板
- 二零二五年道路運(yùn)輸安全生產(chǎn)責(zé)任合同3篇
- 二零二五年文化場館建設(shè)項(xiàng)目勞務(wù)分包合同3篇
- 二零二五版二手房交易傭金及稅費(fèi)代理合同3篇
- 04S206自動(dòng)噴水與水噴霧滅火設(shè)施安裝圖集
- 《小學(xué)數(shù)學(xué)課堂教學(xué)中創(chuàng)設(shè)情境的實(shí)踐研究》開題報(bào)告
- 期末 (試題) -2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊
- DB34∕T 4010-2021 水利工程外觀質(zhì)量評(píng)定規(guī)程
- 納米復(fù)合材料的增韌增能機(jī)制
- 圖書館前臺(tái)接待工作總結(jié)
- 衛(wèi)生院藥品管理制度
- 神經(jīng)外科進(jìn)修匯報(bào)課件
- 2024老年人靜脈血栓栓塞癥防治中國專家共識(shí)(完整版)
- 騰訊營銷師認(rèn)證考試題庫(附答案)
- 鄰近鐵路營業(yè)線施工安全監(jiān)測技術(shù)規(guī)程 (TB 10314-2021)
評(píng)論
0/150
提交評(píng)論