資源描述:
《AHDL課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第五章AHDL語言及其應(yīng)用1AHDL語言概述AHDL(AlteraHardwareDescriptionLanguage)語言是一種支持Altera公司器件的硬件描述語言,它是一種模塊化的高級語言,集成于MAX+PLUSII系統(tǒng)中,適合描述復(fù)雜的組合邏輯、狀態(tài)機(jī)和真值表。用戶可以使用AHDL語言建立一個完整的層次結(jié)構(gòu),也可以在一個層次結(jié)構(gòu)的設(shè)計中混合使用AHDL文本設(shè)計和其他類型的設(shè)計文件,但在存儲、編譯等環(huán)節(jié)其文件的擴(kuò)展名一定是TDF(*.tdf)。25.1AHDL設(shè)計的基本結(jié)構(gòu)一個簡單的示例:3AHDL語言的規(guī)則及結(jié)構(gòu)特點(diǎn):1)在ADHL語言中字符不區(qū)分大小寫,
2、即大小寫的含義相同。2)同一類型多個輸入、輸出或變量之間可以用逗號(“,”)分隔,每一個完整的語句都以分號(“;”)結(jié)束。3)AHDL語言中的語句不依賴描述的前后順序。4)AHDL設(shè)計文件通常是由段和一些語句組成。5)AHDL程序段中,有兩個段是每個AHDL文件所必須包含的,它們是子設(shè)計段和邏輯設(shè)計段。6)關(guān)鍵字SUBDESIGN之后的TAND2是子設(shè)計段的名稱,也是AHDL語言文本文件的文件名,在MAX+PLUSII系統(tǒng)中使用時,要求其擴(kuò)展名為TDF(*.TDF)。45.2節(jié)點(diǎn)和數(shù)組節(jié)點(diǎn)和數(shù)組的定義:(1)節(jié)點(diǎn)節(jié)點(diǎn)就是電路的連接點(diǎn),是在AHDL語言中使用最廣泛的一
3、種類型。輸入、輸出端口、VCC、GND等內(nèi)部沒有記憶功能的變量都可以看成節(jié)點(diǎn)。(2)數(shù)組數(shù)組是節(jié)點(diǎn)或觸發(fā)器等類型的組合。按照結(jié)構(gòu)特點(diǎn)可分為十進(jìn)制數(shù)組和序列數(shù)組兩種。5十進(jìn)制數(shù)組與序列數(shù)組1)十進(jìn)制數(shù)組。其名稱為一個符號(或端口名)跟一個方括號(定義數(shù)組的長度)組成,例如a[3..0],在這類數(shù)組名后跟一個域,符號名或端口名加上[]引導(dǎo)的域,域中最長的數(shù)字的總長度不能超過32個字符。2)序列數(shù)組。其名稱由一組符號名、端口名或數(shù)組組成,它們之間以逗號分隔,并被括在圓括號中如(a,b,c);十進(jìn)制數(shù)組名也可以放在這個括號中,例如(a,b,c[5..1])。6關(guān)于數(shù)組的注意
4、事項1)如果要表示一個數(shù)組中的部分單元,只需寫出起止單元序列號如A[2..1]。2)如果一個數(shù)組等于VCC或GND,數(shù)組中的每一個成員都將被置成VCC或GND。3)如果一個數(shù)組等于一個常數(shù),則將常數(shù)擴(kuò)展成與數(shù)組同等長度的二進(jìn)制數(shù)后再賦值。4)如果一個數(shù)組被連接到一個單節(jié)點(diǎn),則該數(shù)組所有的節(jié)點(diǎn)都與單節(jié)點(diǎn)b相連。5)一個數(shù)組最多包括256個變量。7AHDL中的數(shù)字在AHDL中可以單獨(dú)或組合方式使用十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制,其中十進(jìn)制是AHDL語言中的默認(rèn)方式。85.3布爾等式布爾等式在邏輯段中用來代表節(jié)點(diǎn)之間的連接以及輸入及輸出的邏輯關(guān)系。在布爾等式右邊可以是數(shù)
5、組、數(shù)據(jù)、節(jié)點(diǎn)之間邏輯運(yùn)算或算術(shù)運(yùn)算。下面請看一個具體的示例:用AHDL語言描述下面的組合邏輯電路:9可用下面程序描述:SUBDESIGNboole1--SUBDESIGN段,boole1標(biāo)識程序名。(a0,a1,b:INPUT;--在()內(nèi)定義輸入、輸出的引腳。out1,out2:OUTPUT;)BEGIN--描述開始。out1=a1&!a0;--out1為輸入信號a0取反后與a1相與的結(jié)果out2=out1#b;--out2為out1與輸入信號b相或后的結(jié)果。END;--用END表示程序結(jié)束。10邏輯運(yùn)算符邏輯運(yùn)算符基本規(guī)則是按位操作如:!a[5..1]被解釋為
6、(!a4,!a3,!a2,!a1);!B“1001”的結(jié)果是對每一位求反后為B“0110”;a[3..1]&a[5..2]被解釋為(a3&a4,a2&a3,a1&a2)。如果兩個操作數(shù)的長度不同,擴(kuò)展規(guī)則如下:1)單個節(jié)點(diǎn)(包括VCC與GND)與數(shù)組進(jìn)行邏輯運(yùn)算,則該節(jié)點(diǎn)與數(shù)組逐位進(jìn)行運(yùn)算。2)一個數(shù)組與一個常數(shù)進(jìn)行邏輯運(yùn)算,則將常數(shù)擴(kuò)展成與數(shù)組同等長度的二進(jìn)制數(shù)后再與數(shù)組逐位運(yùn)算。11算術(shù)運(yùn)算符1.一元運(yùn)算符的使用一元加號(+)運(yùn)算符對操作數(shù)沒有影響,只是明確表示一個正數(shù)。一元減號(-)運(yùn)算符對后面的操作數(shù)進(jìn)行求補(bǔ)運(yùn)算。2.二元運(yùn)算符的使用二元運(yùn)算符算術(shù)運(yùn)算規(guī)則有
7、如下要求:1)如果兩個操作數(shù)都是組節(jié)點(diǎn),兩組的長度必須相同。2)如果操作數(shù)都是數(shù)值,短的數(shù)值將擴(kuò)展至位數(shù)最長的操作數(shù)長度。3)如果一個操作數(shù)是數(shù)值而另一個是節(jié)點(diǎn)數(shù)組,那么這個數(shù)值將被截至或擴(kuò)展至節(jié)點(diǎn)數(shù)組的長度。賦值語句的兩側(cè)節(jié)點(diǎn)數(shù)組長度不同,遵循如下規(guī)則進(jìn)行擴(kuò)展:①數(shù)組前面加0可以多位補(bǔ)0擴(kuò)展②數(shù)組的后面加一個0僅實(shí)現(xiàn)一位補(bǔ)0擴(kuò)展12關(guān)系運(yùn)算符關(guān)系運(yùn)算符可以被用于對單獨(dú)節(jié)點(diǎn)、數(shù)組進(jìn)行比較。雙等號(==)為布爾表達(dá)式中的使用最多的比較符。表示符號兩邊的變量是否相等,而(=)表示將比較后的結(jié)果賦給等號左邊的變量。比較符只能用來對節(jié)點(diǎn)數(shù)組與節(jié)點(diǎn)數(shù)組之間或節(jié)點(diǎn)數(shù)組與數(shù)值