版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章存儲(chǔ)器和可編程邏輯器件數(shù)字邏輯器件分類:1)標(biāo)準(zhǔn)產(chǎn)品:包括門、觸發(fā)器、計(jì)數(shù)器、譯碼器、數(shù)據(jù)選擇器等等中小規(guī)模數(shù)字電路。標(biāo)準(zhǔn)產(chǎn)品的特點(diǎn)是:批量大,成本低,價(jià)格便宜,速度快。是數(shù)字系統(tǒng)傳統(tǒng)設(shè)計(jì)中使用的主要邏輯器件。缺點(diǎn)是:器件密度低,所構(gòu)成的數(shù)字系統(tǒng)規(guī)模大,印刷線路板走線復(fù)雜,焊點(diǎn)多,使電路的可靠性差,功耗大。2)由軟件配置的大規(guī)模集成電路:如微處理機(jī)、單片微型計(jì)算機(jī)等。這類電路的特點(diǎn):器件密度高,邏輯功能可由軟件配置,用它所構(gòu)成的數(shù)字系統(tǒng)硬件規(guī)模小,系統(tǒng)靈活性高。缺點(diǎn):工作速度不夠高,另外,這類芯片一般要用多片標(biāo)準(zhǔn)集成電路構(gòu)成外圍電路才能工作。3)專用集成電路(ASIC)ApplicationSpecificIntegratedCircuitASIC是為滿足一種或幾種特定功能而設(shè)計(jì)制造的集成電路芯片,密度高,ASIC芯片能取代由若干個(gè)中小規(guī)模電路組成的電路板,甚至一個(gè)完整的數(shù)字系統(tǒng)ASIC分類:ASIC屬用戶定制電路。(CustomDesignIC).包括全定制和半定制兩種。全定制(FullcustomdesignIC):半導(dǎo)體生產(chǎn)廠家根據(jù)用戶的特定要求專門設(shè)計(jì)并制造。特點(diǎn):生產(chǎn)周期長(zhǎng),費(fèi)用高,風(fēng)險(xiǎn)大。在大批量定型產(chǎn)品中使用。半定制(Semi-customdesignIC):半導(dǎo)體生產(chǎn)廠家設(shè)計(jì)并制造出的標(biāo)準(zhǔn)的半成品芯片。半定制電路分類:㈠門陣列(GateArray)
在硅片上預(yù)先做好大量相同的基本單元電路,并把它整齊地排成陣列,這種半成品芯片稱為母片。母片可由廠家大批量生產(chǎn)。
當(dāng)用戶需制作滿足特定要求的ASIC芯片時(shí),可根據(jù)設(shè)計(jì)要求選擇母片,由用戶或廠家設(shè)計(jì)出連線版圖,再由器件生產(chǎn)廠家經(jīng)過(guò)金屬連線等簡(jiǎn)單工藝,制成成品電路。缺點(diǎn):用戶主動(dòng)性差,使用不方便。特點(diǎn):周期較短,成本較低,風(fēng)險(xiǎn)小。㈡可編程邏輯器件(PLD)(ProgrammableLogicDevice)芯片上的電路和金屬引線由半導(dǎo)體廠家做好,其邏輯功能由用戶開(kāi)發(fā)實(shí)現(xiàn)。特點(diǎn):集成度高,速度快,靈活性好,可重復(fù)編程。電路設(shè)計(jì)方便,風(fēng)險(xiǎn)低。1.PLD器件的連接表示方法固定連接可編程連接不連接2.門電路表示法1AA1AAAA反向緩沖器ABC&FABC&F與門ABC≥1FABC≥1F或門3.陣列圖1A1B1C&&&&D=BCE=AABBCC=0F=AABBCC=0G=16.1存儲(chǔ)器存儲(chǔ)器是一種通用大規(guī)模集成電路,用來(lái)存放程序和數(shù)據(jù).存儲(chǔ)器分類:1)只讀存儲(chǔ)器(ROM)2)隨機(jī)存取存儲(chǔ)器(RAM)6.1.1ROM(Read-OnlyMemory)ROM存放固定信息,只能讀出信息,不能寫入信息.當(dāng)電源切斷時(shí),信息依然保留.1.ROM的結(jié)構(gòu)......A0A1An-1地址譯碼器存儲(chǔ)陣列
2n×mW0W1W2n-1F0F1Fm-1字線位線地址線地址譯碼器為二進(jìn)制譯碼器,即全譯碼結(jié)構(gòu).(地址線為n根,譯碼器輸出為2n根字線,說(shuō)明存儲(chǔ)陣列中有2n個(gè)存儲(chǔ)單元)2)存儲(chǔ)陣列輸出有m根位線,說(shuō)明每個(gè)存儲(chǔ)單元有m位,即一個(gè)字有m位二進(jìn)制信息組成.每一位稱為一個(gè)基本存儲(chǔ)單元.3)存儲(chǔ)器的容量定義為:字?jǐn)?shù)×位數(shù)(2n×m).一個(gè)二極管ROM的例子A1A0F0F1F2F300010001100100110110010
1A11A0&&&&W0W1W2W3F0F1F2F3位線字線①W0~W3為地址譯碼器的輸出Wi=mi
(mi為地址碼組成的最小項(xiàng))②當(dāng)A1A0=00時(shí),W0=1,F0F1F2F3=0100(一個(gè)字);當(dāng)A1A0=01時(shí),W1=1,F0F1F2F3=1001(一個(gè)字);當(dāng)A1A0=10時(shí),W2=1,F0F1F2F3=0110(一個(gè)字);當(dāng)A1A0=11時(shí),W3=1,F0F1F2F3=0010(一個(gè)字)。③將地址輸入和Fi之間的關(guān)系填入真值表得:
地址數(shù)據(jù)A1A0F0F1F2F300010001100100110110010
F0=A1A0F1=A1A0+
A1A0F2=A1A0+A1A0F3=A1A0ROM實(shí)際是一種組合電路結(jié)構(gòu)。④陣列圖與陣列:表示譯碼器?;蜿嚵校罕硎敬鎯?chǔ)陣列。存儲(chǔ)容量為:
4×4
地址數(shù)據(jù)A1A0F0F1F2F300010001100100110110010
1A11A0&&&&≥1≥1≥1≥1F0F1F2F3m0m1m2m32.可編程只讀存儲(chǔ)器用戶可根據(jù)需要自行進(jìn)行編程的存儲(chǔ)器.1)PROM(ProgrammableRead-OnlyMemory)PROM為能進(jìn)行一次編程的ROM,PROM的結(jié)構(gòu)和ROM基本相同,只是在每個(gè)存儲(chǔ)管上加一根易熔的金屬絲接到相應(yīng)的位線.位線字線當(dāng)在該位上需要存0時(shí),通過(guò)編程,燒斷熔絲;當(dāng)需存1時(shí),保留熔絲.編程為一次性的,燒斷的熔絲不能再接上.2)EPROM(ErasableProgrammableRead-OnlyMemory)EPROM為可擦除、可重新編程的只讀存儲(chǔ)器.擦除用專用的紫外線燈照射芯片上的受光窗口.EPROM器件的基本存儲(chǔ)單元采用浮柵雪崩注入MOS管(簡(jiǎn)稱FAMOS管)電路.FAMOSVDDDS字線位線原始狀態(tài)的浮柵不帶電荷,FAMOS管不導(dǎo)通,位線上為高電平.當(dāng)FAMOS管的源極S與襯底接地電位,漏極接高電位(較大)時(shí),漏極的PN結(jié)反向擊穿產(chǎn)生雪崩現(xiàn)象,使FAMOS導(dǎo)通.位線為低電位.如用紫外線或者X射線照射FAMOS管,可使柵極放電,FAMOS恢復(fù)到截止?fàn)顟B(tài).一個(gè)EPROM芯片:Intel2716VCCVPPOECEGND1121324CE是片使能端;OE是數(shù)據(jù)輸出使能端;VPP是編程寫入電源輸入端。容量:2K×8位受光窗口工作方式讀出未選中待機(jī)編程禁止編程校驗(yàn)讀出CEOEVPP數(shù)據(jù)線D7~D0的狀態(tài)00+5V讀出的數(shù)據(jù)×1+5V高阻1×+5V高阻1+25V寫入的數(shù)據(jù)01+25V高阻00+25V讀出校驗(yàn)數(shù)據(jù)2716工作方式3)E2PROM(電可擦可編程只讀存儲(chǔ)器)特點(diǎn):①編程和擦除均由電完成;②既可整片擦除,也可使某些存儲(chǔ)單元單獨(dú)擦除;③重復(fù)編程次數(shù)大大高于EPROM.3.PROM的應(yīng)用1)實(shí)現(xiàn)組合邏輯函數(shù)用PROM實(shí)現(xiàn)組合邏輯函數(shù),實(shí)際上是利用PROM中的最小項(xiàng),通過(guò)或陣列編程,達(dá)到設(shè)計(jì)目的.F1(A,B,C)=Σm(1,5,6,7)F2(A,B,C)=Σm(0,1,3,6,7)F3(A,B,C)=Σm(3,4,5,6,7)例:用PROM實(shí)現(xiàn)邏輯函數(shù):1A&&&&≥1≥1≥1F1F2F31B1C&&&&m0m1m2m3m4m5m6m72)存放數(shù)據(jù)表和函數(shù)表:例如三角函數(shù)、對(duì)數(shù)、乘法等表格。3)存放調(diào)試好的程序。*2)、3)是PROM的主要用途。6.1.2隨機(jī)存取存儲(chǔ)器(RAM)RAM可以隨時(shí)從任一指定地址讀出數(shù)據(jù),也可以隨時(shí)把數(shù)據(jù)寫入任何指定的存儲(chǔ)單元.RAM在計(jì)算機(jī)中主要用來(lái)存放程序及程序執(zhí)行過(guò)程中產(chǎn)生的中間數(shù)據(jù)、運(yùn)算結(jié)果等.RAM按工藝分類:1)雙極型;2)場(chǎng)效應(yīng)管型。場(chǎng)效應(yīng)管型分為:1)靜態(tài);2)動(dòng)態(tài)。1.RAM的結(jié)構(gòu)......A0A1An-1地址譯碼器存儲(chǔ)矩陣
W0W1W2n-1字線地址線讀寫/控制電路讀寫/控制(R/W)片選(CS)數(shù)據(jù)輸入/輸出
(I/O)ENEN11I/ODR/W當(dāng)片選信號(hào)CS無(wú)效時(shí),I/O對(duì)外呈高阻;當(dāng)片選信號(hào)CS有效時(shí),由R/W信號(hào)決定讀或?qū)?根據(jù)地址信號(hào),通過(guò)I/O輸出或輸入.(I/O為雙向三態(tài)結(jié)構(gòu))2.RAM的存儲(chǔ)單元靜態(tài)RAM的基本存儲(chǔ)單元
(以六管NMOS靜態(tài)存儲(chǔ)單元為例)XiYjI/OI/OVCCQQT6T4T3T1T2T5T7T8位線Bj位線Bj存儲(chǔ)單元11I/OI/OQQ2)動(dòng)態(tài)RAM的基本存儲(chǔ)電路動(dòng)態(tài)RAM的基本存儲(chǔ)電路由動(dòng)態(tài)MOS基本存儲(chǔ)單元組成。動(dòng)態(tài)MOS基本存儲(chǔ)單元通常利用MOS管柵極電容或其它寄生電容的電荷存儲(chǔ)效應(yīng)來(lái)存儲(chǔ)信息。電路結(jié)構(gòu)(以單管動(dòng)態(tài)存儲(chǔ)單元為例)位線數(shù)據(jù)線
(D)字選線TCSCD輸出電容寫信息:字選線為1,T導(dǎo)通,數(shù)據(jù)D經(jīng)T送入CS.讀信息:字選線為1,T導(dǎo)通,CS上的數(shù)據(jù)經(jīng)T送入位線的等效電容CD.特點(diǎn):1)當(dāng)不讀信息時(shí),電荷在電容CS上的保存時(shí)間約為數(shù)毫秒到數(shù)百毫秒;
2)當(dāng)讀出信息時(shí),由于要對(duì)CD充電,使
CS上的電荷減少。為破壞性讀出。
3)通常在CS上呈現(xiàn)的代表1和0信號(hào)的電平值相差不大,故信號(hào)較弱。結(jié)論:1)需加刷新電路;2)輸出端需加高鑒別能力的輸出放大器。3)容量較大的RAM集成電路一般采用單管電路。4)容量較小的RAM集成電路一般采用三管或四管電路。多管電路結(jié)構(gòu)復(fù)雜,但外圍電路簡(jiǎn)單。3)RAM容量的擴(kuò)展VCCA8R/WCSGND191018Intel2114A9A7A5A4A6A0A1A3A2I/O1I/O2I/O3I/O4①位擴(kuò)展I/O1I/O2I/O3I/O4A9A0A1…CSR/WI/O1I/O2I/O3I/O4A9A0A1…CSR/W…A0A1A9R/WCSI/O1I/O2I/O3I/O4I/O4I/O5I/O6I/O7將2114擴(kuò)展為1K×8位的RAM②字?jǐn)U展I/O1I/O2I/O3I/O4A9A0A1…CSR/WI/O1I/O2I/O3I/O4A9A0A1…CSR/W…A0A1A9R/WI/O1I/O2I/O3I/O411-2譯碼器A10將2114擴(kuò)展為2K×4位的RAM6.2可編程邏輯器件(PLD)PLD是ASIC的一個(gè)重要分支。PLD包括PLA、PAL、GAL和EPLD、FPGA等。PLD具有集成度高,速度快,保密性好,可重復(fù)編程等特點(diǎn)。輸入輸出輸入電路與陣列或陣列輸出電路PLD基本結(jié)構(gòu)框圖
互補(bǔ)輸入項(xiàng)與項(xiàng)或項(xiàng)反饋?lái)?xiàng)
根據(jù)與、或陣列的可編程性,PLD分為三種基本結(jié)構(gòu)。1)與陣列固定,或陣列可編程型結(jié)構(gòu)PROM屬于這種結(jié)構(gòu)。2)與、或陣列均可編程型結(jié)構(gòu)PLA(ProgrammableLogicArray)屬于這種結(jié)構(gòu)。特點(diǎn):與陣列規(guī)模大,速度較低。特點(diǎn):速度快,設(shè)計(jì)邏輯函數(shù)可采用最簡(jiǎn)結(jié)構(gòu),芯片內(nèi)部資源利用率高。但編程難度大,缺乏質(zhì)高價(jià)廉的開(kāi)發(fā)工具。3)或陣列固定,與陣列可編程型結(jié)構(gòu)PAL(ProgrammableArrayLogic)屬于這種結(jié)構(gòu)。該結(jié)構(gòu)稱為PAL結(jié)構(gòu)。特點(diǎn):速度快,費(fèi)用低,易于編程。當(dāng)前許多PLD器件都采用這種結(jié)構(gòu)。6.2.1可編程陣列邏輯(PAL)PAL的基本結(jié)構(gòu)111&&&&≥1≥1A0A1A2F1F0實(shí)際產(chǎn)品中,構(gòu)成輸出的乘積項(xiàng)可達(dá)8個(gè).1.PLA的輸出結(jié)構(gòu)PAL的與陣列結(jié)構(gòu)類同.但輸出結(jié)構(gòu)有多種:1)組合輸出型(這種結(jié)構(gòu)適用于實(shí)現(xiàn)組合邏輯電路)①專用輸出結(jié)構(gòu)O&≥11輸入項(xiàng)I……共有三種形式:高輸出有效;低輸出有效;互補(bǔ)輸出.本例為低輸出有效②可編程I/O結(jié)構(gòu)I/O&≥11輸入項(xiàng)I……EN112)寄存器輸出型寄存器輸出型結(jié)構(gòu),內(nèi)含觸發(fā)器,適應(yīng)于實(shí)現(xiàn)時(shí)序邏輯電路.①寄存器輸出結(jié)構(gòu)Q&≥11輸入項(xiàng)I……EN111DCLOCKEN②帶異或門的寄存器輸出結(jié)構(gòu)Q&≥11輸入項(xiàng)I……EN11≥11D=1CLOCKEN&③算術(shù)運(yùn)算反饋結(jié)構(gòu)A≥11輸入項(xiàng)B……EN111D=1CLOCKEN&≥1&≥1≥1≥1≥1AAA+BA+BA+BA+B輸出≥1EN111DCLKEN&≥1EN111D&111IN1IN8OUT1OUT8………PAL16R8063031PAL的結(jié)構(gòu)代碼組合型寄存器型類型代碼HLPCXPSRXRPRSV含義高有效輸出低有效輸出可編程輸出極性互補(bǔ)輸出異或門、可編程輸出極性積項(xiàng)共享寄存器型輸出帶異或門寄存器型輸出帶可編程極性寄存器型帶積項(xiàng)共享寄存器型通用型實(shí)例PAL10H8PAL10L8PAL16P8PAL16C1AmPAL22XP10PAL20S10PAL16R8PAL16X4PAL16RP8PAL20RS10AmPAL22V10用PAL實(shí)現(xiàn)2×2乘法器(輸入A1A0和B1B0分別為兩位二進(jìn)制數(shù),輸出為結(jié)果F3F2F1F0的反碼。邏輯方程為:F3=A1+A0+B1+B0F2=A1+B1+A0B0F2=A0+B0F1=A1A0+B1B0+A1B1+A0B0+A1A0B1B0設(shè)計(jì)采用PAL16L82)PAL應(yīng)用舉例≥1EN111&1A1F1PAL16L800311A01B11B0F1=A1A0+B1B0+A1B1
+A0B0+A1A0B1B0以實(shí)現(xiàn)F1為例3)PAL器件的性能特點(diǎn)㈠邏輯功能由用戶定義,用可編程方法代替常規(guī)設(shè)計(jì)方法;㈡編程容易,開(kāi)發(fā)簡(jiǎn)單,簡(jiǎn)化了系統(tǒng)設(shè)計(jì)和布線過(guò)程;㈢器件密度大,可代替多片中小規(guī)模標(biāo)準(zhǔn)數(shù)字集成電路,比用常規(guī)器件節(jié)省空間;㈣器件傳輸延遲小,工作頻率高,有利于提高系統(tǒng)的工作速度;㈤具有可編程的三態(tài)輸出,管腳配置靈活,輸入輸出管腳數(shù)量可變;㈥具有加密功能,有利于系統(tǒng)保密;㈦采用多種工藝制造,可滿足不同系統(tǒng)不同場(chǎng)合的各種需要。6.2.2通用陣列邏輯(GAL)GAL器件繼承了PAL、PROM等器件的優(yōu)點(diǎn),克服了原有PAL器件的不足,是現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)的理想器件.1.GAL基本結(jié)構(gòu)GAL基本結(jié)構(gòu)和PAL大致類似,只是在輸出結(jié)構(gòu)上作了重要改進(jìn).OLMCEN1111&1&1112919………GAL16V8063031OLMCEN112OE(12)(19)11OLMC結(jié)構(gòu)10S≥1=1PTMUX&≥13210S1S1XOR(n)AC0AC1(n)3210S1S0VccTSMUXFMUX10SOMUX1ENAC0AC1(n)C11D來(lái)自與門陣列來(lái)自鄰級(jí)輸出
(m)QCKOECKOE1反饋I/O(n)乘積項(xiàng)數(shù)據(jù)選擇器三態(tài)數(shù)據(jù)選擇器輸出數(shù)據(jù)選擇器反饋數(shù)據(jù)選擇器AC0、AC1(n)及XOR(n)均為GAL器件片內(nèi)控制字中的結(jié)構(gòu)控制位。結(jié)構(gòu)控制字共有82位,不同的控制內(nèi)容,可使OLMC被配置成不同的功能組態(tài)。控制字的內(nèi)容是在編程時(shí)由編程器根據(jù)用戶定義的管腳及實(shí)現(xiàn)的函數(shù)自動(dòng)寫入的。2.GAL的主要特點(diǎn)⑴通用性強(qiáng)⑵100%可編程’⑶速度高,功率低⑷100%可測(cè)試6.2.3PLD的開(kāi)發(fā)過(guò)程1)邏輯設(shè)計(jì)2)器件選擇3)編制JEDEC文件4)編程5)測(cè)試6)加密6.3VHDL語(yǔ)言6.3.1VHDL基本結(jié)構(gòu)與語(yǔ)法
VHDL:VHSICHardwareDescriptionLanguageVHSIC:VeryHighSpeedIntegratedCircuitVHDL由美國(guó)國(guó)防部制定,以作為各合同商之間提交復(fù)雜設(shè)計(jì)文檔的一種標(biāo)準(zhǔn)方案。1987年被采納為IEEE1076標(biāo)準(zhǔn)1993年被采納為IEEE1164標(biāo)準(zhǔn)VHDL在語(yǔ)法和風(fēng)格上類似與高級(jí)編程語(yǔ)言,如C語(yǔ)言。但包含有許多硬件特有的結(jié)構(gòu)。VHDL廣泛用于:電路的文檔記錄設(shè)計(jì)描述的邏輯綜合電路仿真VHDL的組成一個(gè)VHDL設(shè)計(jì)由若干個(gè)VHDL文件構(gòu)成,每個(gè)文件主要包含三個(gè)部分的一個(gè)或全部:1.程序包(Package)2.實(shí)體(Entity)3.結(jié)構(gòu)體(Architecture)一個(gè)完整的VHDL設(shè)計(jì)必須包含一個(gè)實(shí)體和一個(gè)與之對(duì)應(yīng)的結(jié)構(gòu)體,也可以對(duì)應(yīng)多個(gè)結(jié)構(gòu)體.程序包、實(shí)體和結(jié)構(gòu)體作用示意圖VHDL設(shè)計(jì)VHDL文件程序包(Package)
聲明在設(shè)計(jì)或?qū)嶓w中將用到的常量,數(shù)據(jù)類型,元件及子程序等實(shí)體(Entities)
聲明到其它實(shí)體及其它設(shè)計(jì)的接口,即定義本設(shè)計(jì)的輸入/輸出端口.結(jié)構(gòu)體(Architectures)
定義實(shí)體的實(shí)現(xiàn).即電路的具體描述.例:一個(gè)具有異步清零、進(jìn)位輸入/輸出的四位二進(jìn)制加法計(jì)數(shù)器的VHDL代碼。二進(jìn)制計(jì)數(shù)器nresetciclkco3210qcntlibraryieee; --庫(kù),程序包調(diào)用use
ieee.std_logic_1164.all;use
ieee.std_logic_unsigned.all;ENTITYcntm16
IS --實(shí)體
PORT (ci
:INstd_logic;
nreset
:INstd_logic;
clk
:INstd_logic;
co :outstd_logic;
qcnt:bufferstd_logic_vector(3downto0) --此處無(wú)‘;’號(hào)
);ENDcntm16;ARCHITECTURE
behave
OF
cntm16
IS
--結(jié)構(gòu)體BEGINco<=‘1’
when(qcnt=‘1111’
and
ci=‘1’)else‘0’;PROCESS(clk,nreset) --進(jìn)程(敏感表)
BEGIN IF(nreset=‘0’)
THEN qcnt<=‘0000’; ELSIF
(clk’EVENT
ANDclk=‘1’)
THEN if(ci=‘1’)
then qcnt<=qcnt+1; endif; ENDIF; --endif_reset ENDPROCESS;ENDbehave;實(shí)體(Entity)實(shí)體的格式如下:
entity<entity_name實(shí)體名>is
port <portlistforyourdesign,列出設(shè)計(jì)的輸入/輸出信號(hào)端口>
end<entity_name>;以上述的四位計(jì)數(shù)器為例,則該計(jì)數(shù)器的實(shí)體部分如下ENTITY
cntm16
IS
--實(shí)體
PORT (ci
:INstd_logic;
nreset
:INstd_logic;
clk
:INstd_logic;
co:outstd_logic;
qcnt:bufferstd_logic_vector(3downto0) --此處無(wú)‘;’號(hào)
);ENDcntm16;信號(hào)名端口類型端口模式由此看出,實(shí)體(ENTITY)類似于原理圖中的符號(hào)(Symbol),它并不描述模塊的具體功能。實(shí)體的通信點(diǎn)是端口(PORT),它與模塊的輸入/輸出或器件的引腳相關(guān)聯(lián)。上述實(shí)體對(duì)應(yīng)的原理圖符號(hào)如下:nresetciclkcoqcnt[3..0]cntm16
每個(gè)端口必須定義:信號(hào)名: 端口信號(hào)名在實(shí)體中必須是唯一的。信號(hào)名應(yīng)是合法的標(biāo)識(shí)符。
屬性:它包括(MODE):決定信號(hào)的流向類型(TYPE):端口所采用的數(shù)據(jù)類型●IN
信號(hào)進(jìn)入實(shí)體但并不輸出;●OUT
信號(hào)離開(kāi)實(shí)體但并不輸入;并且不會(huì)在內(nèi)部反饋使用;●INOUT
信號(hào)是雙向的(既可以進(jìn)入實(shí)體,也可以離開(kāi)實(shí)體);●BUFFER
信號(hào)輸出到實(shí)體外部,但同時(shí)也在實(shí)體內(nèi)部反饋。
BUFFER(緩沖)是INOUT(雙向)的子集,但不是由外部驅(qū)動(dòng)端口模式(MODE)有以下幾種類型:端口模式可用下圖說(shuō)明:(黑框代表一個(gè)設(shè)計(jì)或模塊)INOUTBUFFERINPUT●integer
可用作循環(huán)的指針或常數(shù),通常不用于 I/O信號(hào); 例如:
SIGNALcount:integerrangeoto255 count<=count+1●bit
可取值‘0’或‘1’●std_logic
工業(yè)標(biāo)準(zhǔn)的邏輯類型,取值‘0’,‘1’,‘X’
和‘Z’--由IEEEstd1164標(biāo)準(zhǔn)定義●std_logic_vector
std_logic的組合,工業(yè)標(biāo)準(zhǔn)的邏輯類型端口類型(TYPE)定義端口的數(shù)據(jù)類型,包括以下幾種:
結(jié)構(gòu)體(Architecture)
所有能被仿真的實(shí)體都有一個(gè)結(jié)構(gòu)體描述,結(jié)構(gòu)體描述實(shí)體的行為功能。即設(shè)計(jì)的功能。一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體,一種結(jié)構(gòu)體可能為行為描述,而另一種結(jié)構(gòu)體可能為設(shè)計(jì)的結(jié)構(gòu)描述或數(shù)據(jù)通道的描述。結(jié)構(gòu)體是VHDL設(shè)計(jì)中最主要的部分,它一般有一些子部分構(gòu)成,如下圖所示:結(jié)構(gòu)體(Architecture)
聲明區(qū)(Declarations)信號(hào)聲明:聲明用于該結(jié)構(gòu)體的類型,常數(shù),元 件,子程序。并發(fā)語(yǔ)句信號(hào)賦值計(jì)算結(jié)果,并賦值給信號(hào)過(guò)程調(diào)用調(diào)用一個(gè)預(yù)先定義好的算法元件例化調(diào)用另一個(gè)實(shí)體所描述的電路。即元件調(diào)用過(guò)程定義一個(gè)新算法實(shí)現(xiàn)電路功能。在過(guò)程中賦值順序語(yǔ)句。語(yǔ)句按放置的順序執(zhí)行。結(jié)構(gòu)體的一般格式如下:Architecture<architecture_name結(jié)構(gòu)體名>of<entity_name>is
--結(jié)構(gòu)體聲明區(qū)域--聲明結(jié)構(gòu)體所用的內(nèi)部信號(hào)及數(shù)據(jù)類型--如果使用元件例化,則在此聲明所用的元件begin–以下開(kāi)始結(jié)構(gòu)體,用于描述設(shè)計(jì)的功能--concurrentsignalassignments并行語(yǔ)句信號(hào)賦值--processes進(jìn)程(順序語(yǔ)句描述設(shè)計(jì))ponentinstantiations元件例化end<architecture_name>;
ARCHITECTURE
behave
OF
cntm16
ISBEGINco<=‘1’
when(qcnt=‘1111’
and
ci=‘1’)else‘0’;--并行賦值語(yǔ)句PROCESS(clk,nreset) --進(jìn)程(敏感表)
BEGIN IF(nreset=‘0’)
THEN --順序語(yǔ)句
qcnt<=‘0000’; ELSIF
(clk’EVENT
ANDclk=‘1’)
THEN if(ci=‘1’)
then qcnt<=qcnt+1; endif; ENDIF; --endif_reset ENDPROCESS;ENDbehave;上述四位計(jì)數(shù)器的結(jié)構(gòu)體如下:程序包(Package)與USE語(yǔ)句下面是一個(gè)程序包的例子:--包頭說(shuō)明PACKAGELogicISTYPEThree_level_logicIS(‘0’,‘L’,‘Z’);
CONSTANTUnknown_Value:Three_level_logic:=‘0’;
FUNCTIONInvert(input:Three_level_logic) RETURNThree_level_logic;ENDLogic;
--包體說(shuō)明PACKAGE
BODYLogicIS
--如下是函數(shù)的子程序體
FUNCTIONInvert(input:Three_level_logic) RETURNThree_level_logic;BEGIN
CASEinputIS
WHEN‘0’=>RETURN‘1’;
WHEN‘1’=>RETURN‘0’;
WHEN‘Z’=>RETURN‘Z’;
ENDCASE;ENDInvert;ENDLogic;庫(kù)(Library)
庫(kù)是專門存放預(yù)先編譯好的程序包的地方,這樣它們就可以在其它設(shè)計(jì)中被調(diào)用。例如在上述計(jì)數(shù)器設(shè)計(jì)中開(kāi)始部分有:LIBRARYieee; USE
ieee.std_logic_1164.ALL;USE
ieee.std_logic_unsigned.ALL;ieee
是ieee標(biāo)準(zhǔn)庫(kù)的標(biāo)志名,兩個(gè)USE語(yǔ)句使得以下設(shè)計(jì)可使用程序包std_logic_1164、std_logic_unsigned中預(yù)定義的全部?jī)?nèi)容。
以下是IEEE兩個(gè)標(biāo)準(zhǔn)庫(kù)“std”與“ieee”中所包含的程序包的簡(jiǎn)單解釋:庫(kù)名程序包名包中預(yù)定義內(nèi)容stdstandardVHDL類型,如bit,bit_vectorieeestd_logic1164定義std_logic,std_logic_vector等ieeenumeric_std定義了一組基于std_logic_1164中定義的類型的算術(shù)運(yùn)算符,如“+”,“-”,SHL,SHR等ieeestd_logic_arith定義有符號(hào)與無(wú)符號(hào)類型,及基于這些類型上的算術(shù)運(yùn)算。ieeestd_logic_signed定義了基于std_logic與std_logic_vector類型上的有符號(hào)的算術(shù)運(yùn)算ieeestd_logic_unsigned定義了基于std_logic與std_logic_vector類型上的無(wú)符號(hào)的算術(shù)運(yùn)算VHDL運(yùn)算符·算術(shù)運(yùn)算符(Arithmeticoperators)+ 加- 減* 乘/ 除** 乘方mod 求模rem 求余abs 求絕對(duì)值·關(guān)系運(yùn)算符= 等于/= 不等于< 小于<= 小于或等于> 大于>= 大于或等于注:其中‘<=’操作符也用于表示信號(hào)的賦值操作邏輯運(yùn)算符and 邏輯與or 邏輯或nand 與非nor 或非xor 異或xnor 同或not 邏輯非·連接運(yùn)算符& 連接,將兩個(gè)對(duì)象或矢量連接成 維數(shù)更大的矢量數(shù)據(jù)對(duì)象
在邏輯綜合中,VHDL語(yǔ)言常用的數(shù)據(jù)對(duì)象為信號(hào)、常量、變量?!ば盘?hào)(Signal)
用于聲明內(nèi)部信號(hào),而非外部信號(hào)(外部信號(hào)對(duì)應(yīng)為in,out,inout,buffer),其在元件之間起互聯(lián)作用,可以賦值給外部信號(hào)。信號(hào)也可在狀態(tài)機(jī)中表示狀態(tài)變量。信號(hào)賦值符號(hào)為“<=”?!ぷ兞俊こA?/p>
常量在設(shè)計(jì)描述中保持某一規(guī)定類型的特定值不變。如利用它可設(shè)計(jì)不同模值的計(jì)數(shù)器,模值存于常量中,不同的設(shè)計(jì),改變模值僅需改變此常量值。常量在定義時(shí)賦初值,賦值符號(hào)為“:=”。
變量只在給定的進(jìn)程中用于聲明局部值或用于子程序中。賦值符號(hào)為“:=”。下例為一位DCB碼加法計(jì)數(shù)器的例子.Entitybcdadderis
Port(op1,op2:inintegerrange0to16;result:outintegerrange0to31);Enddcdadder;Architecturebehaviorofbcdadderis
constantadjustnum:integer:=6--定義一常量:整數(shù)型,值為6
signalbinadd:integer
range0to18;--定義一個(gè)信號(hào),以保存兩數(shù)二進(jìn)制相加的和.Begin
binadd<=op1+op2;--信號(hào)賦值
process(binadd)
variabletmp:integer:=0;
--定義一個(gè)變量,并賦初值為0
begin
ifbinadd>9thentmp:=adjustnum;--變量賦值,立即起作用
elsetnmp:=0;
end
if;result<=binadd+tmp;
end
process;Endbehavior;
VHDL常用語(yǔ)句·VHDL常用語(yǔ)句分并行(Concurrent)語(yǔ)句和順序(Sequential)語(yǔ)句:并行語(yǔ)句(Concurrent):順序語(yǔ)句(Sequential):并行語(yǔ)句總是處于進(jìn)程(PROCESS)的外部。所有并行語(yǔ)句都是并行執(zhí)行的,即與它們出現(xiàn)的先后次序無(wú)關(guān)。如when..else語(yǔ)句順序語(yǔ)句總是處于進(jìn)程的內(nèi)部,并且從仿真的角度來(lái)看是順序執(zhí)行的。如if-then-else語(yǔ)句下面先看一下進(jìn)程:1.進(jìn)程Process
進(jìn)程用于描述順序事件并且包含在結(jié)構(gòu)中,一個(gè)結(jié)構(gòu)體可以包含多個(gè)進(jìn)程語(yǔ)句。以下為進(jìn)程語(yǔ)句的構(gòu)成:進(jìn)程(Process)
聲明區(qū)(Declarations)內(nèi)部變量聲明:聲明用于該進(jìn)程的類型,常數(shù),元件,子程序順序語(yǔ)句信號(hào)賦值(<=)過(guò)程調(diào)用null語(yǔ)句(空語(yǔ)句,值保持不變)wait語(yǔ)句(等待時(shí)鐘信號(hào))case語(yǔ)句loop語(yǔ)句(循環(huán))if語(yǔ)句變量賦值(:=)next語(yǔ)句(跳過(guò)剩余循環(huán))exit語(yǔ)句(退出循環(huán))以下為進(jìn)程語(yǔ)句的語(yǔ)法描述:
endprocess<optional_label>;--進(jìn)程結(jié)束<optional_label>:process<sensitivitylist敏感信號(hào)表>--此處聲明局部變量,數(shù)據(jù)類型及其他局部聲明
(用于進(jìn)程中)begin --進(jìn)程開(kāi)始--進(jìn)程中為順序語(yǔ)句,如:--signalandvariableassignments信號(hào)與變量的賦值--ifandcasestatements--if-then-else語(yǔ)句case-when語(yǔ)句--whileandforloops--functionandprocedurecalls函數(shù),過(guò)程調(diào)用如上述計(jì)數(shù)器為例:PROCESS(clk,nreset) BEGIN --順序語(yǔ)句異步清零
IF(nreset=‘0’)
THEN qcnt<=‘0000’; ELSIF
(clk’EVENT
ANDclk=‘1’)
THEN if(ci=‘1’)
then qcnt<=qcnt+1; endif;--endif_resetENDIF;
ENDPROCESS;2.并行(Concurrent)語(yǔ)句和順序(Sequential)語(yǔ)句□并行(Concurrent)語(yǔ)句
并行語(yǔ)句之間值的更新是同時(shí)進(jìn)行的,與語(yǔ)句所在的順序無(wú)關(guān)。并行語(yǔ)句包括:●布爾方程●條件賦值(如when—else—語(yǔ)句)●例化語(yǔ)句一、布爾方程
四選一的數(shù)據(jù)選擇器的庫(kù)聲明、程序包聲明及實(shí)體定義如下:libraryieee;useieee.std_logic_1164.all;entitymux4isport (s :instd_logic_vector(1downto0); a0,a1,a2,a3 :instd_logic; y :outstd_logic);endmux4;以布爾方程實(shí)現(xiàn)的結(jié)構(gòu)體如下:architecturearchmuxofmux4is
beginy<=((((a0andnot(s(0)))or(a1ands(0))))and not(s(1)))or(((a2andnots(0)))or(a3and s(0)))ands(1));endarchmux;y=a0s1s0+a1s1s0+a2s1s0+a3s1s0=(a0s0+a1s0)s1+(a2s0+a3s0)s1
二、條件賦值采用WITH-SELECT-WHEN實(shí)現(xiàn)的結(jié)構(gòu)體architecturearchmuxofmux4is
begin
withsselect y<=a0when“00”, a1when“01”, a2when“10”, a3whenothers;endarchmux;采用WHEN-ELSE實(shí)現(xiàn)的結(jié)構(gòu)體architecturearchmuxofmux4is
begin y<=a0whens=“00”else a1whens=“01”else a2whens=“10”else a3;endarchmux;□順序(Sequential)語(yǔ)句.IF-THEN-ELSE
最常用的順序語(yǔ)句是IF-THEN-ELSE語(yǔ)句和CASE-WHEN語(yǔ)句architecturearchmuxofmux4is
beginprocess(s,a0,a1,a2,a3)begin
if s=“00” then y<=a0; elseif s=“01” then y<=a1; elseif s=“10” then y<=a2; else y<=a3;
endif;
endprocess;endarchmux;.CASE-WHENarchitecturearchmuxofmux4is
beginprocess(s,a0,a1,a2,a3)begin
casesis
when“00”=>y<=a0;
when“01”=>y<=a1;
when“10”=>y<=a2;
whenothers=>y<=a3;
endcase;
endif;
endprocess;endarchmux;元件及元件例化元件聲明是對(duì)VHDL模塊的說(shuō)明,使之可在其它模塊中使用,元件聲明可放在程序包中,也可以在某個(gè)設(shè)計(jì)的結(jié)構(gòu)體中聲明。元件例化指元件的調(diào)用。元件聲明語(yǔ)法:Component<元件實(shí)體名>
port<元件端口信息,同該元件實(shí)現(xiàn)時(shí)
的實(shí)體的port部分>;Endcomponent;--元件例化:<例化名>:<實(shí)體名,即元件名>portmap(<端口列表>)例如:在一cntvh10設(shè)計(jì)中調(diào)用一個(gè)模為10的計(jì)數(shù)器
cntm10和一個(gè)七段譯碼器decode47。LibraryIEEE;UseIEEE.std_logic_1164.all;Entity
cntvh10
IS--cntvh10為所要設(shè)計(jì)的電路名.
port(Rd,ci,clk:instd_logic;co:outstd_logic;qout:outstd_logic_vector(6downto0))
end
cntvh10;ciconresetqcnt[3..0]clkcntm10ciRdclkcoadr[3..0]decodeout[6..0]qoutdecode47cntvh10ciRdclkcoqoutcntvh由cntm10和decode47組成.ARCHITECTURE
archOFcntvh10
IS--元件聲明
Componentdecode47isport
(adr:instd_logic_vector(3downto0);
decodeout:outstd_logic_vector(6downto0));EndComponent;Componentcntm10is
port
(ci,nreset,clk:instd_logic;co:outstd_logic;
qcnt:bufferstd_logic_vector(3downto0));
endcomponent;Signalqa:std_logic_vector(3downto0);--作為中間量BEGINu1:cntm10portmap(ci,Rd,clk,co,qa);u2:decode47portmap(decodeout=>qout,adr=>qa);End
arch;所實(shí)現(xiàn)的電路為:ciconresetqcnt[3..0]clkcntm10ciRdclkcoadr[3..0]decodeout[6..0]qoutdecode47順序相同順序不同為增加元件例化的靈活性,可定義參數(shù)化元件。下面定義一個(gè)位數(shù)可調(diào)的計(jì)數(shù)器。Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Entitycntnbitsis
generic(cntwidth:integer:=4);--定義了一個(gè)可調(diào)參數(shù),初始值為4
port(ci,nreset,clk:instd_logic;co:outstd_logic;qcnt:bufferstd_logic_vector(cntwidth-1downto0));Endcntnbits;ArchitecturebehaveofcntnbitsisConstantallis1:std_logic_vector(cntwidth-1downto0):=(others=>‘1’);Beginco<=‘1’when(qcnt=allis1andci=‘1’)else‘0’;
process(clk,nreset)
begin
if(nreset=‘0’)thenqcnt<=(other=>’0’);
elsif(clk’eventandclk=‘1’)then
if(ci=‘1’)thenqcnt<=qcnt+1;
endif;
endif;
endprocess;endbehave;generic(cntwidth:integer:=4);定義了一個(gè)整數(shù)cntwidth,賦初值為4,需改變長(zhǎng)度僅需改變初值。元件聲明為:Componentcntnbitsisgeneric(cntwidth:integer:=4);port(ci,nreset,clk:instd_logic;co:outstd_logic;qcnt:bufferstd_logic_vector(cntwidth-1downto0));Endcomponent;;Constantallis1:std_logic_vector(cntwidth-1downto0):=(others=>‘1’);表示定義一個(gè)常量allis1,用于進(jìn)位判斷,(others=>‘1’)例化格式為:<例化名>:<實(shí)體名,即元件名>genericmap(<實(shí)際參數(shù),如確定的總線寬度等>)portmap(<端口列表>)例如,例化為10位計(jì)數(shù)器:U1:cntnbitsgenericmap(10)portmap(ci,Rd,clk,qa);--元件例化在上述的可變位數(shù)計(jì)數(shù)器中,定義了一個(gè)常數(shù)“allis1”用于產(chǎn)生進(jìn)位輸出信號(hào)時(shí)的判斷。它的值為各位都為‘1’。此外,用了(other=>‘1’)賦值。(other=>‘1’)表示一個(gè)集合,集合中各元素用‘,’隔開(kāi)。表示各元素都為‘1’。other必須出現(xiàn)在集合的最后。例:signal:sa:std_logic_vector(7downto0);sa<=(‘1’,‘0’,other=>‘1’)其結(jié)果是給信號(hào)sa賦值“10111111”。0
配置(configuration)
一個(gè)實(shí)體可用多個(gè)結(jié)構(gòu)體描述,在具體綜合時(shí)選擇哪一個(gè)結(jié)構(gòu)體來(lái)綜合,則由配置來(lái)確定。即配置語(yǔ)句來(lái)安裝連接具體設(shè)計(jì)(元件)到一個(gè)實(shí)體—結(jié)構(gòu)體對(duì)。配置被看作是設(shè)計(jì)的零清單,它描述對(duì)每個(gè)實(shí)體用哪一種行為,它非常象一個(gè)描述設(shè)計(jì)每部分用哪一種零件的清單。配置語(yǔ)句舉例:--這是一個(gè)兩位相等比較器的例子,它用四種不同描述來(lái)實(shí)現(xiàn),既有四個(gè)結(jié)構(gòu)體。ENTITYequ2IS
PORT(a,b :IN std_logic_vector(1downto0); equ :OUTstd_logic);ENDequ2;--結(jié)構(gòu)體一:用元件例化來(lái)實(shí)現(xiàn),即網(wǎng)表形式:ARCHITECTURE
netlistOFequ2IS COMPONENTnor2 PORT(a,b :IN std_logic; C :OUT std_logic); ENDCOMPONENT; COMPONENTxor2 PORT(a,b :IN std_logic; C :OUT std_logic); ENDCOMPONENT; signalx : std_logic_vector(1downto0);BEGIN U1:xor2 PORTMAP(a(0),b(0),x(0)); U2:xor2 PORTMAP(a(1),b(1),x(1)); U3:nor2 PORTMAP(x(0),x(1),equ);END netlist;--結(jié)構(gòu)體二:用布爾方程來(lái)實(shí)現(xiàn):ARCHITECTUREequationofequ2ISBEGIN equ<=(a(0)XORb(0)NORa(1)XORb(1));END equation;--結(jié)構(gòu)體三:用行為描述來(lái)實(shí)現(xiàn),采用并行語(yǔ)句:ARCHITECTUREcon_behaveofequ2ISBEGIN equ<=‘1’whena=belse‘0’;END con_behave;ARCHITECTUREseq_behave
ofequ2ISBEGIN process(a,b) begin ifa=b then equ<=‘1’; elseequ<=‘0’; endif; endprocess;END seq_behave;--結(jié)構(gòu)體四:用行為描述來(lái)實(shí)現(xiàn),采用順序語(yǔ)句:
上述實(shí)例中,實(shí)體equ擁有四個(gè)結(jié)構(gòu)體:netlist、qeuation、con_behave、seq_behave,若用其例化一個(gè)相等比較器aequb,那么實(shí)體究竟對(duì)應(yīng)于哪個(gè)結(jié)構(gòu)體呢?配置語(yǔ)句很靈活地解決了這個(gè)問(wèn)題:如選用結(jié)構(gòu)體netlist,則用CONFIGURATIONaequbOFequ2IS
FORnetlist
ENDFOR;ENDCONFIGURATION;CONFIGURATIONaequbOFequ2IS
FORcon_behave
ENDFOR;ENDCONFIGURATION;如選用結(jié)構(gòu)體con_behave,則用以上四種結(jié)構(gòu)體代表了三種描述方法:Behavioral(行為描述)反映一個(gè)設(shè)計(jì)的功能或算法,一般使用進(jìn)程process,用順序語(yǔ)句表達(dá)。Dataflow(數(shù)據(jù)流描述)反映一個(gè)設(shè)計(jì)中數(shù)據(jù)從輸入到輸出的流向,使用并發(fā)語(yǔ)句描述。Structure(結(jié)構(gòu)描述)它最反映一個(gè)設(shè)計(jì)硬件方面特征,表達(dá)了內(nèi)部元件間連接關(guān)系。使用元件例化來(lái)描述。1
子程序子程序由函數(shù)(FUNCTION)和過(guò)程(PROCEDURE)組成。函數(shù)只能用以計(jì)算數(shù)值,而不能用以改變與函數(shù)形參相關(guān)的對(duì)象的值。函數(shù)的參量只能是方式為IN的信號(hào)與常量,而過(guò)程的參量可以為IN,OUT,INOUT方式。過(guò)程能返回多個(gè)變量,函數(shù)只能由一個(gè)返回值。過(guò)程和函數(shù)常見(jiàn)于面向邏輯綜合的設(shè)計(jì)中,主要進(jìn)行高層次的數(shù)值運(yùn)算或類型轉(zhuǎn)換、運(yùn)算符重載,也可用來(lái)元件例化。語(yǔ)法如下:函數(shù):FUNCTION<function_name>(parametertypes) RETURN<TYPES>IS
BEGIN <代碼區(qū)>
END<function_name>;過(guò)程:PROCEDURE<procedure_name實(shí)體名> (<portlistfortheprocedure,列出過(guò)程的輸入/輸出信號(hào)端 口>)IS
BEGIN <代碼區(qū)>
END<procedure_name>;函數(shù)舉例:此函數(shù)返回兩數(shù)中的較小數(shù)FUNCTIONMin(x,y:INTEGER)RETURN INTEGERISBEGIN
IFx<yTHEN
RETURNx;
ELSE
RETURNy;
ENDIF;ENDMin;過(guò)程舉例:此過(guò)程將向量轉(zhuǎn)換成整數(shù)類型USEieee.std_logic_1164.ALLPROCEDUREvector_to_int (z :INstd_logic_vector; x-flag :OUTBOOLEAN; q :INOUTINTEGER)IS BEGIN q:=0; x-flag:=false; FORIINz’RANGELOOP
q:=q*2; IFz(i)/=‘0’THEN
q:=q+1; ELSIFz(i)=‘0’THEN
x-flag:=TURE; ENDIF; ENDLOOP;ENDvector_to_int;2
其他:屬性、時(shí)鐘的表示
屬性指的是關(guān)于實(shí)體、結(jié)構(gòu)體、類型、信號(hào)的一些特征。比較有用的屬性有:值類屬性、信號(hào)類屬性、范圍類屬性。●值類屬性
值類屬性分為’left,’right,’low,’high,’length。其中用符號(hào)“’”隔開(kāi)對(duì)象名及其屬性。
left表示類型最左邊的值;right表示類型最右邊的值;low表示類型中最小的值;high表示類型中最大的值;length表示限定型數(shù)組中元素的個(gè)數(shù)。sdown :instd_logic_vector(8downto0);sup :instd_logic_vector(0to8);例:則這兩個(gè)信號(hào)的各屬性值如下:sdown’left=8;sdown’right=0;sdown’low=0;sdown’high=8;sdown’length=9;sup’left=0;sup’right=8;sup’low=0;sup’high=8;sup’length=9;●信號(hào)類屬性僅介紹一個(gè)對(duì)綜合及模擬都很有用的信號(hào)類屬性:’event’event的值為布爾型,如果剛好有事件發(fā)生在該屬性所附著的信號(hào)上(即信號(hào)有變化),則其取值為Ture,否則為False。用它可決定時(shí)鐘邊沿是否有效。例:時(shí)鐘邊沿表示若有如下定義:signal
clk:instd_logic;clk=‘1’andclk’event和clk’eventandclk=‘1’表示時(shí)鐘的上升沿。即時(shí)鐘變化了,且其值為1,因此表示上升沿。則:clk=‘0’andclk’event和clk’eventandclk=‘0’表示時(shí)鐘的下降沿。即時(shí)鐘變化了,且其值為1,因此表示下降沿。
此外,還可利用預(yù)定義好的兩個(gè)函數(shù)來(lái)表示時(shí)鐘的邊沿。rising_edge(clk) 表示時(shí)鐘的上升沿falling_edge(clk) 表示時(shí)鐘的下降沿●范圍類屬性’range
屬性,其生成一個(gè)限制性數(shù)據(jù)對(duì)象的范圍例如:signaldata_bus:std_logic_vector(15downto0);data_bus’range=15downto0;3
VHDL的模板
下面以VHDL的兩個(gè)模板回顧一下VHDL的結(jié)構(gòu),一個(gè)是基本結(jié)構(gòu),一個(gè)是詳細(xì)結(jié)構(gòu)。其中藍(lán)色字為關(guān)鍵字,<>中內(nèi)容為對(duì)用戶不同設(shè)計(jì)所需填寫的內(nèi)容。--VHDLModelTemplate(Overview)library<library_name>;
use<library_name>.<package_name>.all;entity<entity_name實(shí)體名>is <portlistforyourdesign,列出設(shè)計(jì)的輸入/輸 出信號(hào)端口>end<entity_name>;architecture<architecture_name結(jié)構(gòu)體名>of <entity_name>is--結(jié)構(gòu)體聲明區(qū)域--聲明結(jié)構(gòu)體所用的內(nèi)部信號(hào)及數(shù)據(jù)類型--如果
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建師范大學(xué)《管理學(xué)概論》2021-2022學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《地圖學(xué)實(shí)驗(yàn)》2021-2022學(xué)年第一學(xué)期期末試卷
- 四川省成都市2020年中考英語(yǔ)真題(含答案)
- 2024秋國(guó)家開(kāi)放大學(xué)《思想道德與法制》專題測(cè)驗(yàn)1-7答案
- 油田制度流程類 油田動(dòng)火作業(yè)安全管理實(shí)施細(xì)則(陸上石油天然氣開(kāi)采)
- 班級(jí)常規(guī)調(diào)研活動(dòng)分析
- 檔案行政執(zhí)法人員統(tǒng)計(jì)表
- 感恩教育課件教學(xué)課件
- 2024年四川客運(yùn)從業(yè)資格證實(shí)操考試需要準(zhǔn)備什么
- 2024年合肥客車駕駛員考試試題
- 新《固廢法》解讀(專業(yè)版)
- 領(lǐng)導(dǎo)及上下級(jí)關(guān)系處理講義
- Catia百格線生成宏
- 業(yè)務(wù)流程繪制方法IDEF和IDEFPPT課件
- 鍋爐安全基礎(chǔ)知識(shí)
- 幼兒園科學(xué)教育論文范文
- 駕校質(zhì)量信譽(yù)考核制度
- 用電檢查工作流程圖
- 電動(dòng)葫蘆的設(shè)計(jì)計(jì)算電動(dòng)起重機(jī)械畢業(yè)設(shè)計(jì)論文
- (完整版)學(xué)校安辦主任安全工作職責(zé)
- PCR儀使用手冊(cè)
評(píng)論
0/150
提交評(píng)論