版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 儀器與電子學(xué)院可編程邏輯器件應(yīng)用主講人:劉文怡第6講: VHDL的基本元素 n1 標(biāo)識(shí)符n2 數(shù)據(jù)對(duì)象n3 數(shù)據(jù)類型n4 操作符n5 端口模式漂亮的程序(回顧)Fengzhuang_kaishiport ( IN1:in ;IN2:in ;IN3:in ;IN4:in ;OUT4:out )Fengzhuang_jieshuGongneng_kaishisignal T1,T2;OUT4 = T1 or T2;T2 = IN3 and IN4;T1 = IN1 and IN2;Gongneng_jieshu1、為了用起來像個(gè)函數(shù)的樣子,不妨加個(gè)port關(guān)鍵詞,把輸入輸出引腳象參數(shù)一樣排列起來
2、。2、很好地表達(dá)了4個(gè)輸入引腳,1個(gè)輸出引腳。3、提供給別人調(diào)用。1、內(nèi)部功能實(shí)現(xiàn)的細(xì)節(jié)2、T1、T2似乎有點(diǎn)奇怪,哪來的?3、那我們也規(guī)定先定義,后使用! Library IEEE; Use IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT(d0,d1,sel:in bit; q:out bit);END mux;Architecture dataflow of mux issignal tmp1,tmp2,tmp3:bit;Begintmp1=d0 and sel; tmp2=d1 and (not sel); tmp3=tmp1 or tmp2;q=
3、tmp3;End dataflow;d0d1selq&1qd0d1selVHDLVHDL語言如何做的?語言如何做的?( (回顧回顧) )實(shí)體聲明(回顧)實(shí)體聲明(回顧)n實(shí)體聲明語法:實(shí)體聲明語法: ENTITY 實(shí)體名實(shí)體名 IS 類屬參數(shù)說明類屬參數(shù)說明; 端口說明端口說明; END 實(shí)體名;實(shí)體名;n舉例:舉例: nENTITY mux ISPORT(d0,d1,sel:IN BIT; q:OUT BIT );END mux;d0d1selq結(jié)構(gòu)體的一般書寫格式(回顧)結(jié)構(gòu)體的一般書寫格式(回顧) ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實(shí)體名實(shí)體名 IS 定義語句定義
4、語句內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義; BEGIN 功能描述語句功能描述語句并行處理語句并行處理語句; END 結(jié)構(gòu)體名結(jié)構(gòu)體名;實(shí)體名必須是所在設(shè)計(jì)實(shí)體的名字,結(jié)構(gòu)體名由設(shè)計(jì)者定義,但當(dāng)一個(gè)實(shí)體具有多個(gè)結(jié)構(gòu)體時(shí),結(jié)構(gòu)體的取名不可重復(fù)。PROCESS語句語句(回顧)(回顧)進(jìn)程名進(jìn)程名: PROCESS (敏感信號(hào)表敏感信號(hào)表) IS變量說明語句變量說明語句變量說明語句變量說明語句BEGIN 進(jìn)程內(nèi)邏輯語句進(jìn)程內(nèi)邏輯語句 END PROCESS 進(jìn)程名進(jìn)程名;process語句使用的類型、常量、變量、子程序聲明、子程序體、屬性聲明等,但不能有信號(hào)聲
5、明*可有可無,區(qū)分不同進(jìn)程1 1 標(biāo)識(shí)符標(biāo)識(shí)符n標(biāo)識(shí)符規(guī)則是VHDL語言中符號(hào)書寫的一般規(guī)則。不僅對(duì)電子系統(tǒng)設(shè)計(jì)工程師是一個(gè)約束,同時(shí)也為各種各樣的EDA工具提供了標(biāo)準(zhǔn)的書寫規(guī)范。nVHDL語言有兩個(gè)標(biāo)準(zhǔn)版:VHDL87版和VHDL93版。VHDL87版的標(biāo)識(shí)符語法規(guī)則經(jīng)過擴(kuò)展后,形成了VHDL93版的標(biāo)識(shí)符語法規(guī)則。n前一部分稱為短標(biāo)識(shí)符,擴(kuò)展部分稱為擴(kuò)展標(biāo)識(shí)符。VHDL93版含有短標(biāo)識(shí)符和擴(kuò)展標(biāo)識(shí)符兩部分。短標(biāo)識(shí)符短標(biāo)識(shí)符(1)(1)n 短標(biāo)識(shí)符短標(biāo)識(shí)符n在VHDL語言中使用的名字,如信號(hào)名、實(shí)體名、結(jié)構(gòu)體名、變量名、各種進(jìn)程標(biāo)記、塊標(biāo)記等命名時(shí),采用短標(biāo)識(shí)符要遵守以下規(guī)則:n(1) 必須
6、以英文字母打頭。n(2) 字符可以是大小寫的字符、數(shù)字(09)和下劃線(_)。n(3) 下劃線前后都必須有英文字母或數(shù)字。n(4) 短標(biāo)識(shí)符不區(qū)分大小寫。n一般地,對(duì)VHDL的保留字:ENTITY,ARCHITECTURE,END,BUS,USE,WHEN,WAIT,IS在程序書寫時(shí),一般要求大寫或黑體,使得程序易于閱讀,易于檢查錯(cuò)誤。短標(biāo)識(shí)符短標(biāo)識(shí)符(2)(2)n下面是合法的標(biāo)識(shí)符:nmulti_screens、 Multi_screensnMulti_Screens、 MULTI_SCREENSn下面的書寫是不合法的:nillegal%name illegal-name illegal-n
7、amen命名規(guī)則舉例:nSIGNAL sel: INTEGER;nSIGNAL PCI_BUS: STD_LOGIC_VECTOR(31 DOWNTO O);nSIGNAL 8_BUS:. -數(shù)字開頭,是錯(cuò)誤的名字nSIGNAL PCI_BUS:. -是非法符號(hào)nSIGNAL PCI_BUS_:. - 結(jié)尾不能用連字符擴(kuò)展標(biāo)識(shí)符擴(kuò)展標(biāo)識(shí)符n擴(kuò)展標(biāo)識(shí)符是VHDL93版增加的標(biāo)識(shí)符書寫規(guī)則:n(1) 擴(kuò)展標(biāo)識(shí)符用反斜杠來定界。nmulti_screens, eda_centrol等都是合法的擴(kuò)展標(biāo)識(shí)符。n(2) 允許包含圖形符號(hào)、空格符。例如: mode A, $100, p%name等。n(3)
8、 反斜杠之間的字符可以用保留字。例如: buffer, entity, end等。n(4) 擴(kuò)展標(biāo)識(shí)符的界定符兩個(gè)斜杠之間可以用數(shù)字打頭。如: 100$, 2chip, 4screens等。n(5) 擴(kuò)展標(biāo)識(shí)符中允許多個(gè)下劃線相連。例如:n Four_screens, TWO_Computer_sharptor等。n(6) 擴(kuò)展標(biāo)識(shí)符區(qū)分大小寫。例如: EDA 與eda不同。n(7) 擴(kuò)展標(biāo)識(shí)符與短標(biāo)識(shí)符不同。例如:COMPUTER 與Computer不同。 2 2 數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象n在VHDL語言中,凡是可以賦予一個(gè)值的客體叫對(duì)象。nVHDL對(duì)象包含有專門數(shù)據(jù)類型,主要有4個(gè)基本類型:常量(
9、CONSTANT)、信號(hào)(SIGNAL)、變量(VARIABLE)和文件(FILES)。其中文件類型是VHDL93標(biāo)準(zhǔn)中新通過的。 n信號(hào)和變量可以連續(xù)的賦予不同的值。n常量只在它被說明時(shí)賦值,在整個(gè)器件工作期間值不變化。試圖對(duì)常量多次賦值是錯(cuò)誤的。n文件可以用參數(shù)向子程序傳遞數(shù)據(jù),通過子程序?qū)ξ募M(jìn)行讀和寫操作。文件不可以通過賦值來更新文件的內(nèi)容,文件參數(shù)沒有模式。 數(shù)據(jù)對(duì)象聲明舉例數(shù)據(jù)對(duì)象聲明舉例n對(duì)象說明的一般書寫格式為:n對(duì)象類別 標(biāo)識(shí)符表 : 子類型標(biāo)識(shí):=初值;n對(duì)象說明舉例:nCONSTANT T1,T2:time := 30ns;-常量說明nVARIABLE SUM:read;
10、 -變量說明nSIGNAL CLOCK:bit; -信號(hào)說明常量常量n常量(constant)是設(shè)計(jì)者給實(shí)體中某一常量名賦予的固定值。一般地,常量賦值在程序開始前進(jìn)行說明,數(shù)據(jù)類型在實(shí)體說明語句中指明。常量說明的一般格式如下:nCONSTANT CONSTANT 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型: :表達(dá)式;表達(dá)式;n根據(jù)上面的格式,舉例如下:n8位寄存器寬度指定:nCONSTANTCONSTANT regw:integer:8;n設(shè)計(jì)實(shí)體的電源供電電壓指定:nCONSTANTCONSTANT Vcc:real:5.0;n某一模塊信號(hào)輸入/輸出的延遲時(shí)間:nCONSTANTCONSTANT D
11、ALY:time:100ns;常量常量n常量標(biāo)識(shí)符、WIDTH,VCC,DALY,PBUS等在VHDL程序中多處有用,其值在運(yùn)行中不變。若要改變常量值,必須要改變?cè)O(shè)計(jì),改變實(shí)體中的常量說明,然后重新編譯。n常數(shù)所賦的值應(yīng)和定義的數(shù)據(jù)類型一致;n常量必須在程序包、實(shí)體、結(jié)構(gòu)體或進(jìn)程的說明區(qū)域中對(duì)常量的標(biāo)識(shí)符、類型、常量值進(jìn)行指定。n定義在程序包中的常量由所在的實(shí)體或結(jié)構(gòu)體調(diào)用。n定義在實(shí)體內(nèi)的常量僅在實(shí)體內(nèi)使用,定義在進(jìn)程內(nèi)的常量僅在進(jìn)程內(nèi)使用。變量變量n變量(variables)僅用在進(jìn)程語句、函數(shù)語句、過程語句中的結(jié)構(gòu)中使用,變量是一個(gè)局部量,變量的賦值立即生效,不產(chǎn)生賦值延時(shí)。變量書寫的一
12、般格式為:nVARIABLES VARIABLES 變量名:數(shù)據(jù)類型變量名:數(shù)據(jù)類型 約束條件約束條件: :表達(dá)式;表達(dá)式;n根據(jù)上述格式,舉例如下:nVARIABLESVARIABLES result: std_logic:0;變量賦初值nVARIABLESVARIABLES x,y,z : integer;nVARIABLESVARIABLES count: integer range 0 TO 255 :10;n變量不能加附加延時(shí),如”after 10 ns”。變量變量n在VHDL語言中,變量的使用規(guī)則和限制范圍說明如下:n變量賦值是直接非預(yù)設(shè)的。在某一時(shí)刻僅包含了一個(gè)值。n變量賦值和初
13、始化賦值符號(hào)用“:”表示。n變量不能用于硬件連線和存儲(chǔ)元件。n在仿真模型中,變量用于高層次建模。n在系統(tǒng)綜合時(shí),變量用于計(jì)算,作為索引載體和數(shù)據(jù)暫存。n在進(jìn)程中,變量的使用范圍在進(jìn)程之內(nèi)。若將變量用于進(jìn)程之外,必須將該值賦給一個(gè)相同類型的信號(hào),即進(jìn)程之間傳遞數(shù)據(jù)靠的是信號(hào)。信號(hào)信號(hào)n信號(hào)(signal)是電子電路內(nèi)部硬件實(shí)體相互連接的抽象表示。信號(hào)通常在構(gòu)造體、包集合和實(shí)體說明中使用,其一般書寫格式為:nSIGNAL SIGNAL 信號(hào)名:數(shù)據(jù)類型、約束條件信號(hào)名:數(shù)據(jù)類型、約束條件: :表達(dá)式;表達(dá)式;使用上述格式舉例如下:nSIGNAL sys_clk : BIT :=SIGNAL sys
14、_clk : BIT :=0 0; -系統(tǒng)時(shí)鐘信號(hào)nSIGNAL count : bit_vector(7 downto 0);-計(jì)數(shù)器寬度 信號(hào)信號(hào)n有關(guān)信號(hào)的使用規(guī)則說明如下:n“:=:=”表示對(duì)信號(hào)直接賦值,表示信號(hào)初始值不產(chǎn)生延時(shí)。n“=”表示代入賦值,是變量之間信號(hào)的傳遞,代入賦值法允許產(chǎn)生延時(shí)。例如:T1 = T2; n在仿真中,初始化能保證信號(hào)設(shè)定在指定值上。對(duì)于存儲(chǔ)元件的加電初始狀態(tài),應(yīng)該設(shè)計(jì)復(fù)位或予置位機(jī)構(gòu),而不是通過信號(hào)指定初始化值來實(shí)現(xiàn)。n在EDA工具綜合時(shí),信號(hào)應(yīng)在結(jié)構(gòu)體中描述清楚。n在進(jìn)程中,變量的使用范圍在進(jìn)程之內(nèi)。若將變量用于進(jìn)程之外,必須將該值賦給一個(gè)相同類型的
15、信號(hào),即進(jìn)程之間傳遞數(shù)據(jù)靠的是信號(hào)。信號(hào)和變量代入的區(qū)別信號(hào)和變量代入的區(qū)別n聲明的形式與位置不同:信號(hào)在結(jié)構(gòu)體中聲明;變量在進(jìn)程中聲明。n賦值符號(hào)不同:count=“00000000”;n data:=“00000000”;n進(jìn)程對(duì)信號(hào)敏感,對(duì)變量不敏感n作用域不同:信號(hào)可以是多個(gè)進(jìn)程的全局信號(hào);變量只在定義后的順序域可見。信號(hào)和變量代入的區(qū)別信號(hào)和變量代入的區(qū)別客體客體信號(hào)信號(hào)變量變量代入符代入符=: :操作操作過程過程由于信號(hào)代入語句是并行處理的,下一條語句執(zhí)行時(shí),仍使用原來的信號(hào)值。變量的賦值語句不是并行的,在執(zhí)行下一條語句時(shí),變量的值就為上一句新賦的值。舉舉例例PROCESS(A,B
16、,C)BEGIN D=A; X=B+D; D=C; Y=B+D;END PROCESS;結(jié)果:結(jié)果:X=B+C;Y=B+C;PROCESS(A,B C)VARIABLE D:STD_LOGIC; BEGIN D:=A; X=B+D; D:=C; Y=B+D;END PROCESS;結(jié)果:結(jié)果:X=B+A;Y=B+C;數(shù)據(jù)對(duì)象賦值的補(bǔ)充說明數(shù)據(jù)對(duì)象賦值的補(bǔ)充說明n可用函數(shù)調(diào)用的方法給對(duì)象賦初值。 CONSTANT Bus_number:Integer :My_function(True,6);n如果在同一個(gè)對(duì)象說明語句中,對(duì)多個(gè)同一類型的對(duì)象指定初始值,則多個(gè)對(duì)象同時(shí)取得了這一指定值。n信號(hào)和變
17、量的默認(rèn)值。當(dāng)信號(hào)和變量沒有指定初始值或沒有給信號(hào)變量賦值時(shí),即信號(hào)和變量的值在對(duì)象說明語句中默認(rèn)時(shí),信號(hào)變量的取值稱為默認(rèn)值。一般地,若變量、信號(hào)為數(shù)值型變量,則取初始值,默認(rèn)值為0. 3 3 數(shù)據(jù)類型數(shù)據(jù)類型nVHDL語言標(biāo)準(zhǔn)定義了10種標(biāo)準(zhǔn)的數(shù)據(jù)類型。為了方便設(shè)計(jì),允許用戶自定義數(shù)據(jù)類型。nVHDL語言程序是系統(tǒng)行為的描述、功能的說明和結(jié)構(gòu)的組織,使用規(guī)范化語言,有著很強(qiáng)的約束性。不同的數(shù)據(jù)類型不能直接代入,相同的類型,位長不同也不能代入。EDA工具在編譯、綜合時(shí)會(huì)報(bào)告類型錯(cuò)。數(shù)據(jù)類型(數(shù)據(jù)類型(2 2)nVHDL語言標(biāo)準(zhǔn)所定義的標(biāo)準(zhǔn)數(shù)據(jù)類型n(1) 整數(shù)類型(INTEGER TYPE)
18、 p36n(2) 實(shí)數(shù)類型或浮點(diǎn)類型(REAL TYPE FLOATING TYPE)n(3) 位類型(BIT TYPE) std_logicstd_logicn(4) 位矢量類型(BIT_VECTOR TYPE) std_logic_vectorstd_logic_vectorn(5) 布爾類型(BOOLEAN TYPE)n(6) 字符類型(CHARACTER TYPE)n(7) 時(shí)間類型或物理類型(Time type physical type)n(8) 錯(cuò)誤類型(NOTE,WARNIING,ERROR,F(xiàn)AILURE TYPE)n(9) 自然數(shù)、整數(shù)類型(NATURAL TYPE)n(1
19、0) 字符串類型(TRING TYPE)數(shù)據(jù)類型數(shù)據(jù)類型字符型字符型n字符(CHARACTER)n字符在VHDL語言中編程時(shí)用單引號(hào)括起來。A,a,B,b,都認(rèn)為是不同的字符。nVHDL語言對(duì)大小寫英文字母不敏感,但區(qū)分字符量中的大小寫。字符1,2僅是符號(hào)。n字符包括AZ,az,09,空格及一些特殊字符。 數(shù)據(jù)類型數(shù)據(jù)類型字符串型字符串型n字符串(STRING)n字符串是由雙引號(hào)括起來的一個(gè)字符序列。例如“VHDL”,“STRING”,“MULTI_SCREEN COMPUTER”等。n字符串一般用于給位向量賦值、程序的提示、結(jié)果的說明等場(chǎng)合。n字符為單引號(hào)括起來的ASCII字符:n 例如1,
20、A,F(xiàn)。n WR = 1;n字符串為雙引號(hào)括起來的圖形字符序列。n例如:“PCI BUS interface”,n “This string constain an information”。 n Bus = “01011100”; 數(shù)據(jù)類型數(shù)據(jù)類型-整型整型n整數(shù)(INTEGER)n在VHDL語言中,整數(shù)范圍從(2311)到(2311),例如: 128,5,12,。n在電子系統(tǒng)中,整數(shù)可以用進(jìn)制來表示。n整數(shù)不能看作矢量,不能單獨(dú)對(duì)某一位操作。n整數(shù)不能用于邏輯運(yùn)算,只能用于算術(shù)運(yùn)算。n對(duì)象的數(shù)據(jù)類型定義為整數(shù)時(shí),范圍應(yīng)有約束。例如:nVARIABLE A: INTEGER RANGE 12
21、8 TO 128;n在電子系統(tǒng)設(shè)計(jì)過程中,整數(shù)可以用來抽象地表達(dá)總線的狀態(tài)。n常用的整數(shù)常量的書寫方式如下:n 2,10E3;-十進(jìn)制整數(shù)n 16#D2#;-十六進(jìn)制整數(shù)n 2#10101010#; -二進(jìn)制整數(shù)數(shù)據(jù)類型數(shù)據(jù)類型布爾型布爾型n布爾量(BOOLEAN)n布爾量是二值枚舉量,每一個(gè)布爾量具有兩個(gè)可能的值:“真”或者“假”。n布爾量沒有數(shù)量多少的概念,不能進(jìn)行算術(shù)運(yùn)算,只能進(jìn)行邏輯運(yùn)算。n布爾量常用來表達(dá)信號(hào)的狀態(tài),或者總線上的控制權(quán),仲裁情況,忙、閑狀態(tài)等。n若某個(gè)客體被定義為布爾量,則EDA工具對(duì)設(shè)計(jì)進(jìn)行仿真時(shí),自動(dòng)地對(duì)其賦值情況進(jìn)行核查。 數(shù)據(jù)類型數(shù)據(jù)類型比特型比特型n位( (
22、BIT) )n位通常用來表示一個(gè)信號(hào)的值。n位通常用單引號(hào)來括號(hào)引其位的值。 如: TYPE BIT IS (0,1);n位的值0,1可以表示信號(hào)的狀態(tài);n位數(shù)據(jù)類型取值0和1;整數(shù)中的1和0表示數(shù)值,布爾量的值TRUE和FLASE沒有數(shù)值含義,三者的意義不一樣n位數(shù)據(jù)類型可以參與邏輯運(yùn)算,結(jié)果任然為BIT。數(shù)據(jù)類型數(shù)據(jù)類型位向量型位向量型n位向量( (BIT_VECTOR) )n位矢量只是基于位矢量只是基于BIT數(shù)據(jù)類型的數(shù)組數(shù)據(jù)類型的數(shù)組n位矢量可以進(jìn)行算術(shù)運(yùn)算。位矢量可以進(jìn)行算術(shù)運(yùn)算。n位矢量通常用來表示總線狀態(tài)。位矢量通常用來表示總線狀態(tài)。n聲明:聲明:n SIGNAL b:BIT_V
23、ECTOR (3 DOWNTO 0);n位矢量常量是用位矢量常量是用雙引號(hào)雙引號(hào)括起來的一組位數(shù)據(jù)。括起來的一組位數(shù)據(jù)。 如:如: B”001100” -B表示二進(jìn)制表示二進(jìn)制 X”00BB” -X表示十六進(jìn)制表示十六進(jìn)制 O”3705” -O表示八進(jìn)制表示八進(jìn)制n在在VHDL語言中,實(shí)數(shù)范圍為語言中,實(shí)數(shù)范圍為1.0E38到到1.0E38。n實(shí)數(shù)有正負(fù)數(shù),書寫時(shí)一定要有小數(shù)點(diǎn)。實(shí)數(shù)有正負(fù)數(shù),書寫時(shí)一定要有小數(shù)點(diǎn)。n在有關(guān)文獻(xiàn)中,實(shí)數(shù)類型也稱為在有關(guān)文獻(xiàn)中,實(shí)數(shù)類型也稱為浮點(diǎn)類型浮點(diǎn)類型。但大多。但大多數(shù)數(shù)EDA工具不支持浮點(diǎn)運(yùn)算,僅用于仿真,因?yàn)樘ぞ卟恢С指↑c(diǎn)運(yùn)算,僅用于仿真,因?yàn)樘珡?fù)雜,
24、電路規(guī)模難以承受。復(fù)雜,電路規(guī)模難以承受。n書寫方式舉例:書寫方式舉例:2.22, 44.5E-4; -十進(jìn)制浮點(diǎn)數(shù)十進(jìn)制浮點(diǎn)數(shù)8#44.5E-4; -八進(jìn)制浮點(diǎn)數(shù)八進(jìn)制浮點(diǎn)數(shù)數(shù)據(jù)類型數(shù)據(jù)類型-實(shí)數(shù)型(實(shí)數(shù)型(REALREAL)類型轉(zhuǎn)換類型轉(zhuǎn)換 (1)(1)n在VHDL程序設(shè)計(jì)中,不同類型的對(duì)象不能代入。對(duì)于某一數(shù)據(jù)類型的變量、信號(hào)、常量、文件賦值時(shí),類型一定要一致,否則EDA工具進(jìn)行綜合、仿真等過程中不能通過。n為了進(jìn)行不同類型的數(shù)據(jù)變換,可以有3種方法:n類型標(biāo)記法n函數(shù)轉(zhuǎn)換法n常數(shù)轉(zhuǎn)換法。 類型轉(zhuǎn)換類型轉(zhuǎn)換 (2)(2)n用用類型標(biāo)記類型標(biāo)記法實(shí)現(xiàn)類型轉(zhuǎn)換法實(shí)現(xiàn)類型轉(zhuǎn)換n類型標(biāo)記就是類型
25、的名稱。類型標(biāo)記法僅適用于關(guān)系密切的標(biāo)量類型之間的類型轉(zhuǎn)換,即整數(shù)和實(shí)數(shù)的類型轉(zhuǎn)換。若:nvariable i :integer;nvariable r :real;n則有:ni:integer(r);nr:real(i); 類型轉(zhuǎn)換類型轉(zhuǎn)換 (3)(3)n用函數(shù)法進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,VHDL語言標(biāo)準(zhǔn)中的程序包提供的變換函數(shù)來完成這個(gè)工作。這些程序包有3種:nSTD_LOGIC_1164程序包定義的轉(zhuǎn)換函數(shù):n函數(shù) TO_STDLOGICVECTORTO_STDLOGICVECTOR(A) -由位矢量 BIT_VECTOR 轉(zhuǎn)換為 STD_LOGIC_VECTORn函數(shù) TO_BITVECTOR
26、TO_BITVECTOR(A); -由標(biāo)準(zhǔn)邏輯矢量STD_LOGIC_VECTOR轉(zhuǎn)換為BIT_VECTORn函數(shù) TO_STDLOGICTO_STDLOGIC (A); -由BIT轉(zhuǎn)換為STD_LOGICn函數(shù) TO_BITTO_BIT(A); -由標(biāo)準(zhǔn)邏輯STD_LOGIC轉(zhuǎn)換BIT類型轉(zhuǎn)換類型轉(zhuǎn)換 (3)(3)nSTD_LOGIC_ARITH包集合定義的轉(zhuǎn)換函數(shù):n函數(shù): CONV_STD_LOGIC_VECTOR(A,位長);-由INTEGER,SINGED,UNSIGNED轉(zhuǎn)換成STD_LOGIC_VECTORn函數(shù): CONV_INTEGER(A);-由SIGNED,UNSIGNE
27、D轉(zhuǎn)換成INTEGERn STD_LOGIC_UNSIGNED包集合定義的轉(zhuǎn)換函數(shù):n USE IEEE.STD_LOGIC_UNSIGNED.ALL; -USE IEEE.STD_LOGIC_UNSIGNED.ALL; -增加聲明增加聲明n函數(shù):CONV_INTEGER(A);-由STD_LOGIC_VECTOR轉(zhuǎn)換成INTEGER 邏輯標(biāo)準(zhǔn)值邏輯標(biāo)準(zhǔn)值n與BIT類型不同,VHDL93標(biāo)準(zhǔn)定義了STD_LOGIC 9種不同的值,增加了不定狀態(tài)“X”、高阻狀態(tài)“Z”。不定狀態(tài)方便了系統(tǒng)仿真,高阻狀態(tài)方便了雙向總線的描述。nU -初始值nX X -不定,未知;不定,未知;nO O -0-0n1
28、1 -1-1nZ Z -高阻高阻nW -弱信號(hào)不定,未知nL -弱信號(hào)0nH -弱信號(hào)1n-不可能情況n使用時(shí)需要寫出庫說明語句和使用的包集合說明語句nUSE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL常用的類型包常用的類型包n建議庫資源同時(shí)聲明三個(gè),會(huì)省很多事:nlibrary ieee;library ieee;nuse ieee.std_logic_1164.all;use ieee.std_logic_1164.all;nuse ieee.std_logic_arith.all;use ieee.std_logic_arith.
29、all;nuse ieee.std_logic_unsigned.all;use ieee.std_logic_unsigned.all;nieee是庫,std_logic_XXXX是程序包,all是項(xiàng)目名nstd_logic_arith程序包,它預(yù)先編譯在ieee庫中,是在std_logic_1164程序包的基礎(chǔ)上擴(kuò)展了三個(gè)數(shù)據(jù)類型unsigned、signed和small_int,并且定義了相關(guān)的算術(shù)運(yùn)算符和數(shù)據(jù)類型轉(zhuǎn)換函數(shù)。程序注釋程序注釋n為了提高VHDL語言設(shè)計(jì)程序的可讀性,像其他高級(jí)語言那樣,在每一程序行后可以增加注釋。n注釋從“-”符號(hào)開始,到該行末尾結(jié)束。n注釋文字不產(chǎn)生硬件電
30、路結(jié)構(gòu),不描述電路行為,在綜合、仿真、驗(yàn)證過程中,EDA工具對(duì)注釋行不進(jìn)行處理。n舉例:Trant = Frame & idle & irdy & devsel; -XXX -PCI總線數(shù)據(jù)傳輸譯碼邏輯之一。 第6講: VHDL的基本元素 n1 標(biāo)識(shí)符n2 數(shù)據(jù)對(duì)象n3 數(shù)據(jù)類型n4 操作符n5 端口模式4 4 運(yùn)算操作符運(yùn)算操作符nVHDL語言的操作符有4種:n(1) 邏輯運(yùn)算符(LOGICAL)n(2) 關(guān)系運(yùn)算符(RELATIONAL)n(3) 算術(shù)運(yùn)算符(ARITHMETIC)n(4) 并置運(yùn)算(CONCATENATION) 邏輯運(yùn)算符邏輯運(yùn)算符n在VHDL中,
31、邏輯運(yùn)算符有6種,列表如下:n(1) NOT取反n(2) AND與n(3) OR或n(4) NAND與非n(5) NOR或非n(6) XOR異或;n邏輯運(yùn)算符左右無優(yōu)先級(jí),下面語句的括號(hào)去掉后不同;nX=(a and b) or (not c and d);n邏輯運(yùn)算符用于bit類型的邏輯操作以及條件組合。n關(guān)于邏輯運(yùn)算符,在關(guān)于邏輯運(yùn)算符,在VHDL程序設(shè)計(jì)中有如下程序設(shè)計(jì)中有如下規(guī)則:規(guī)則:(1)適用變量類型:)適用變量類型:STD_LOGIC、BIT等邏輯型數(shù)據(jù)、等邏輯型數(shù)據(jù)、 STD_LOGIC_VECTOR及布爾型數(shù)據(jù);及布爾型數(shù)據(jù);(2)運(yùn)算符的左邊和右邊,以及代入的信號(hào)的數(shù)據(jù)類型
32、必運(yùn)算符的左邊和右邊,以及代入的信號(hào)的數(shù)據(jù)類型必須是相同的須是相同的;(3)一個(gè)邏輯式中,先做括號(hào)里的運(yùn)算,再做括號(hào)外運(yùn)算;)一個(gè)邏輯式中,先做括號(hào)里的運(yùn)算,再做括號(hào)外運(yùn)算;(4)表達(dá)式中只有)表達(dá)式中只有“AND”、“OR”、“XOR”中的一種中的一種運(yùn)算符,則改變順序不影響結(jié)果,括號(hào)可省略。運(yùn)算符,則改變順序不影響結(jié)果,括號(hào)可省略。邏輯運(yùn)算符說明邏輯運(yùn)算符說明SIGNAL A,B,C : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL D,E,F,G : STD_LOGIC_VECTOR (1 DOWNTO 0);SIGNAL H,I,J,K : STD_LOGI
33、C;SIGNAL L,M,O,P :BOOLEAN;A=B AND C; -B、C相與向相與向A賦值,同屬賦值,同屬4位長的位矢量位長的位矢量D=E OR F OR G;-兩個(gè)操作符相同,不需要括號(hào)兩個(gè)操作符相同,不需要括號(hào)H=(I NAND J) NAND K;-不屬于與、或、異或,所以需要括號(hào)不屬于與、或、異或,所以需要括號(hào)L=(M XOR N)AND(O XOR P); -操作符不同,所以需括號(hào)操作符不同,所以需括號(hào)H=I AND J AND K;-都是與,可以不用括號(hào)都是與,可以不用括號(hào)H=I AND J OR K;-錯(cuò)誤錯(cuò)誤,操作符不同需要括號(hào),操作符不同需要括號(hào)A=B AND E;
34、-錯(cuò)誤錯(cuò)誤,位長度不同,位長度不同H=I OR L;-錯(cuò)誤錯(cuò)誤,數(shù)據(jù)類型不同,數(shù)據(jù)類型不同邏輯運(yùn)算符舉例邏輯運(yùn)算符舉例n在在VHDL93版中,增加了版中,增加了6種新的邏輯運(yùn)算符:種新的邏輯運(yùn)算符:nSLL邏輯左移邏輯左移nSRL邏輯右移邏輯右移nSLA算術(shù)左移算術(shù)左移nSRA算術(shù)右移算術(shù)右移nROL邏輯循環(huán)左移邏輯循環(huán)左移nROR邏輯循環(huán)右移邏輯循環(huán)右移移空的位補(bǔ)零移空的位由最初首位補(bǔ)移出的位依次填補(bǔ)移空的位移位運(yùn)算符移位運(yùn)算符( (新增邏輯運(yùn)算符新增邏輯運(yùn)算符) )n“1001001” SLL 1 “0010010”n“1001001” SRL 1 “0100100”n“1001001”
35、SLA 1 “0010011”n“1001001” SRA 1 “1100100”n“1001001” ROL 1 “0010011”n“1001001” ROR 1 “1100100”45移位運(yùn)算符舉例移位運(yùn)算符舉例關(guān)系運(yùn)算符(關(guān)系運(yùn)算符(1 1)n關(guān)系運(yùn)算符是兩個(gè)對(duì)象在比較運(yùn)算時(shí),將兩個(gè)操作數(shù)比較的結(jié)果表示出來所使用的符號(hào),列表如下:n -等于n/ -不等于n -小于n -小于等于n -大于n -大于等于關(guān)系運(yùn)算符(關(guān)系運(yùn)算符(2 2)n兩個(gè)對(duì)象進(jìn)行比較時(shí),數(shù)據(jù)類型一定要相同。n(等于)和/(不等于)適用于所有數(shù)據(jù)類型的對(duì)象之間的比較。n大于、小于、大于等于、小于等于適用于整數(shù)、實(shí)數(shù)位、位
36、矢量、數(shù)組類型的比較。n=符號(hào)有兩種含義:代入符和小于等于符,要根據(jù)上下文判斷。n兩個(gè)位矢量類型的對(duì)象比較時(shí),自左至右,按位比較。算術(shù)運(yùn)算符算術(shù)運(yùn)算符nVHDL算術(shù)運(yùn)算符的例表如下:n(1) -加運(yùn)算n(2) -減運(yùn)算n(3) * -乘運(yùn)算n(4) / -除運(yùn)算n(5) MOD -求模運(yùn)算n(6) REM -取余運(yùn)算n(7) -正n(8) -負(fù)n(9) * -指數(shù)運(yùn)算n(10)ABS -取絕對(duì)值算術(shù)運(yùn)算符的使用規(guī)則算術(shù)運(yùn)算符的使用規(guī)則n+,-(正負(fù))操作,即一元運(yùn)算,可以是整數(shù),實(shí)數(shù),物理量;n+,-(加減)運(yùn)算符的適用范圍可以是整數(shù)、實(shí)數(shù)。而且對(duì)于加、減運(yùn)算的兩個(gè)操作數(shù)必須類型相同;n*,/
37、(乘除)法的操作數(shù)可以同為整數(shù)和實(shí)數(shù),物理量乘或除以整數(shù)仍為物理量,物理量除以相同的物理量,商為整數(shù)或?qū)崝?shù);nMOD,REM(求模、取余)運(yùn)算的操作數(shù)必須是同一整數(shù)類型的數(shù)據(jù);n加、減、乘能綜合為電路,其余運(yùn)算綜合成電路很困難,或者是完全不可能的。算術(shù)運(yùn)算符舉例算術(shù)運(yùn)算符舉例1) 加減運(yùn)算VARIABLE a,b,c,d,e,f:INTEGER RANGE 0 TO 255;a:=b+c;d:=e-f;2)混合運(yùn)算SIGNAL a,b: INTEGER RANGE -8 TO 7;SIGNAL c: INTEGER RANGE 0 TO 15;SIGNAL d: INTEGER RANGE 0 TO 3;a=ABS(b);c=2*d;并置運(yùn)算符(并置
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026新疆烏魯木齊市翰林高級(jí)中學(xué)招聘15人備考題庫及參考答案詳解一套
- 2025中國信達(dá)深圳分公司招聘1人備考題庫及答案詳解(奪冠系列)
- 2025福建廈門市集美區(qū)馬鑾小學(xué)招聘頂崗教師1人備考題庫及參考答案詳解一套
- 2025甘肅甘南州碌曲縣選調(diào)工作人員和項(xiàng)目人員擇優(yōu)入編考試26人備考題庫帶答案詳解
- 2026上海師范大學(xué)附屬官渡實(shí)驗(yàn)學(xué)校招聘8人備考題庫有答案詳解
- 2026四川遂寧市船山區(qū)第一批鄉(xiāng)村公益性崗位安置崗位信息100人備考題庫附答案詳解
- 2025廣東佛山市順德區(qū)沙滘初級(jí)中學(xué)第一學(xué)期生活老師招聘?jìng)淇碱}庫附答案詳解
- 2025重慶長江輪船有限公司招聘新技術(shù)應(yīng)用與開發(fā)、電商運(yùn)營、客服等崗位4人備考題庫及答案詳解(易錯(cuò)題)
- 2025福建廈門市集美區(qū)幸福幼兒園招聘2人備考題庫含答案詳解
- 2026年甘肅省隴南市徽縣恒輝學(xué)校招聘?jìng)淇碱}庫參考答案詳解
- YY/T 1778.1-2021醫(yī)療應(yīng)用中呼吸氣體通路生物相容性評(píng)價(jià)第1部分:風(fēng)險(xiǎn)管理過程中的評(píng)價(jià)與試驗(yàn)
- GB/T 17213.4-2015工業(yè)過程控制閥第4部分:檢驗(yàn)和例行試驗(yàn)
- FZ/T 73009-2021山羊絨針織品
- JJF 1069-2012 法定計(jì)量檢定機(jī)構(gòu)考核規(guī)范(培訓(xùn)講稿)
- GB∕T 5900.2-2022 機(jī)床 主軸端部與卡盤連接尺寸 第2部分:凸輪鎖緊型
- 2011-2015廣汽豐田凱美瑞維修手冊(cè)wdl
- DFMEA編制作業(yè)指導(dǎo)書新版
- DB35∕T 1844-2019 高速公路邊坡工程監(jiān)測(cè)技術(shù)規(guī)程
- 城市管理綜合執(zhí)法局城管執(zhí)法與執(zhí)法程序PPT模板
- 閥門基礎(chǔ)知識(shí)上
- 第二章注射成型工藝與模具結(jié)構(gòu)
評(píng)論
0/150
提交評(píng)論