20.3.3VHDL語言簡介 - VHDL語言簡介-1_第1頁
20.3.3VHDL語言簡介 - VHDL語言簡介-1_第2頁
20.3.3VHDL語言簡介 - VHDL語言簡介-1_第3頁
20.3.3VHDL語言簡介 - VHDL語言簡介-1_第4頁
20.3.3VHDL語言簡介 - VHDL語言簡介-1_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

10.9VHDL語言

---1.2選一選擇器LIBRARYIEEE------------------------1USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21IS------------------------2PORT(a,b:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDENTITYmux21;ARCHITECTUREfxn_bodyOFmux21IS------------------------3BEGINy<=aWHENs='0'ELSEb;ENDARCHITECTUREfxn_body;10.9.12選一選擇器以下解釋上面5個例子中出現(xiàn)的語法現(xiàn)象:①

實體

但應(yīng)注意,不應(yīng)用中文或者數(shù)字開頭的名字,如74LS138;也不能和EDA工具庫中定義好的元件名重名,如or2、latch。

端口的輸入/輸出模式指的是端口上數(shù)據(jù)的流動方向和方式,有4種類型:IN、OUT、INOUT、BUFFER??梢允÷?,默認的端口模式是IN。③信號傳輸(賦值)符號在例4.1中,表達式“y<=a”表示信號a向信號y賦值,物理含義是輸入端口a的數(shù)據(jù)向輸出端口y傳輸。VHDL要求賦值符號兩邊的信號的數(shù)據(jù)類型必須一致。④邏輯操作符AND、OR、NOT它們是AND(與)、OR(或)、NOT(非)、NAND(與非)、NOR(或非)、XOR(異或)、XNOR(同或)。信號在這些操作符的作用下,可以形成組合電路。

⑤IF–THEN條件語句IF–THEN–ELSE表達的VHDL順序語句的方式,VHDL的順序語句同樣可以描述并行運行的組合電路。⑥文件取名和存盤最好與文件實體名相同;文件后綴擴展名必須為.vhd,如adder_f.vhd。但考慮到某些EDA軟件的限制和VHDL程序的特點,在元件(例如語句中的被調(diào)用文件)調(diào)用中,其元件名與文件名是等同的。因此,程序的文件名應(yīng)該與該程序的實體名相同,文件名不分大小寫。

⑦PROCESS進程語句由PROCESS引導(dǎo)的語句稱為進程語句,在VHDL中,所有合法的順序語句都必須放在進程語句中。例如,IF–THEN–ELSE–END。在一個結(jié)構(gòu)體中可以包含任意個進程語句,所有的進程語句都是并行語句,而由任一進程PROCESS引導(dǎo)的語句結(jié)構(gòu)屬于順序語句。2.D觸發(fā)器設(shè)計--例7ARCHITECTUREbhvOFDFF1ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=D;ENDIF;ENDPROCESS;ENDbhv;(1)上升沿檢測表示“IFCLK'EVENTANDCLK='1'”用來檢測時鐘的上升沿,當上升沿到來的時候,該表達式為“TRUE”。該句中“EVENT”為信號的屬性,VHDL用“信號'EVENT”來測定某信號的跳變邊沿。

(2)不完整條件語句這樣既浪費了邏輯資源,又降低了電路的工作速度,影響了電路的可靠性。因此,設(shè)計者應(yīng)盡量避免此類電路的出現(xiàn)。(3)用VHDL實現(xiàn)時序電路時不同的表達形式利用了一條WAIT–UNTIL語句,來實現(xiàn)時序電路的設(shè)計。它的含義是:當CLK當前值不是‘1’時,就等待并保持Q值不變;直到CLK為'1'時,才對Q進行更新。VHDL語言要求,當進程中使用WAIT語句的時候,就可以不用列出敏感信號。當CLK為'0'時,進程一直處于等待狀態(tài),直到發(fā)生一次'0'到'1'的跳變,才啟動了進程。而又滿足了IF條件語句的條件,對Q進行賦值更新,而此前Q一直保持原值不變,直到下一次上升沿的到來。利用了rising_edge()這個預(yù)定義的函數(shù)來檢測上升沿;falling_edga檢測下降沿。邊沿觸發(fā)D觸發(fā)器電平觸發(fā)D觸發(fā)器A0

A1

A2Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y70

0

01

0

0

0

0

0

0

00

0

10

1

0

0

0

0

0

00

1

00

0

1

0

0

0

0

00

1

10

0

0

1

0

0

0

01

0

00

0

0

0

1

0

0

01

0

10

0

0

0

0

1

0

01

1

00

0

0

0

0

0

1

01

1

10

0

0

0

0

0

0

13-8編碼器的真值表2.譯碼器與編碼器

3-8譯碼器的仿真結(jié)果

(3)信號的合并

SEL(0)<=EN; SEL(1)<=A(0); SEL(2)<=A(1); SEL(3)<=A(2);表示信號的合成操作,它是把輸入信號合成為一個位矢量信號。語句“SEL<=A&EN;”由A和EN組成了一個4位的位矢量SEL。并置操作符“&”表示將操作數(shù)(如'0','1')或者數(shù)組合并起來形成新的數(shù)組,如'1'&'0'&'0'的結(jié)果為"100","VH"&"DL"的結(jié)果為"VHDL"。

編碼器

例如8×3編碼器(八–三編碼器)。和譯碼器一樣,有了編碼器的外部管腳配置圖,就能夠做ENTITY的定義,再根據(jù)編碼器的真值表和譯碼器一樣使用查表法方法。

8×3編碼器框圖8

–3編碼器的真值表Y0

Y1

Y1

Y3

Y4

Y5

Y6

Y7A0

A1

A21

0

0

0

0

0

0

00

0

00

1

0

0

0

0

0

00

0

10

0

1

0

0

0

0

00

1

00

0

0

1

0

0

0

00

1

10

0

0

0

1

0

0

01

0

00

0

0

0

0

1

0

01

0

10

0

0

0

0

0

1

01

1

00

0

0

0

0

0

0

11

1

18×3編碼器仿真時序圖數(shù)碼比較器

數(shù)字比較器的設(shè)計,通常是依據(jù)兩組二進制數(shù)碼的數(shù)值大小來做比較,即a>b、a=b、a<b,這三種情況僅有一種其值為真。需要注意的是比較器的電路有三個輸出端口。

程序A使用的IF–THEN是順序執(zhí)行語法,因此當IF判別式為真時,程序就立即跳離IF語法結(jié)構(gòu),不再處理其他ELSEIF區(qū)段的程序。因此在輸出信號AGTB、AGQB

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論