【正文】
b: STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR。 END。USE 。 例:LIBRARY IEEE; 庫使用說明USE 。 程序包的一般書寫格式如下:PACKAGE 程序包名 ISEND [PACKAGE] 程序包名; 程序包首PACKAGE BODY 程序包名 IS ┇ 程序包體 END [PACKAGE BODY] [程序包名]; 例:USE ;PACKAGE math IS TYPE tw16 IS ARRAY(0 TO 15)OF T_WLOGIC; FUNCTION add (a,b:IN tw16)RETURN tw16; FUNCTION sub (a,b:IN tw16)RETURN tw16;END math;PACKAGE BODY math ISFUNCTION vect_to_int(s:tw16); RETURN INTEGER IS VARIBLE result:INTEGER :=0。 VARIBLE digit: INTEGER:=2**15。RETURN result。RETURN tw16 IS VARIBLE result: INTEGER。 配置 在用VHDL描述硬件電路時,常常采用結(jié)構(gòu)描述方式和混合描述方式。 y : OUT STD_LOGIC)。ARCHITECTURE nor2_arc OF example_v IS BEGIN y = NOT(a OR b)。CONFIGURATION cfg3 OF example_v IS FOR nand2_arc END FOR。在進(jìn)行模擬的時候,將根據(jù)所編譯的是上面的哪個配置來決定要進(jìn)行模擬的結(jié)構(gòu)體,也就是說最后一個被編譯的結(jié)構(gòu)體(異或邏輯)將被模擬,下圖就是異或邏輯的仿真波形。 y: OUT STD_LOGIC)。ENTITY or2_v IS PORT(a: IN STD_LOGIC?;蜷Tor2_v仿真波形異或門源代碼:LIBRARY IEEE。CONFIGURATION xor2_cfg OF xor2_v IS FOR xor2_arc END for。 S : OUT STD_LOGIC)。 y : OUT STD_LOGIC)。 FOR U3,U4 : and2_v USE ENTITY ( and2_arc)。 Co : OUT STD_LOGIC。 常量(CONSTANT)(常數(shù))定義一個常數(shù)主要是為了使設(shè)計實體中的某些量易于閱讀和修改。VARIABLE a: INTEGER。數(shù)據(jù)信息傳入時可以設(shè)置延時過程,這與器件的實際傳播延時十分接近。變量在硬件中沒有類似的對應(yīng)關(guān)系,他們用于硬件特性的高層次建模所需要的計算中。在VHDL語言中,整數(shù)的表示范圍為-2147483647~2147483647,即從-(231-1)到(231-1)。位數(shù)據(jù)不同于布爾數(shù)據(jù),可以用轉(zhuǎn)換函數(shù)進(jìn)行轉(zhuǎn)換。例如,它可以在if語句中被測試,測試結(jié)果產(chǎn)生一個布爾量TRUE或者FALSE。字符串常用于程序的提示和說明。在系統(tǒng)仿真時,時間數(shù)據(jù)特別有用,用它可以表示信號延時,從而使模型系統(tǒng)能更逼近實際系統(tǒng)的運行環(huán)境。 用戶自定義的數(shù)據(jù)類型可以由用戶定義的數(shù)據(jù)類型有:時間(TIME)類型(物理類型)。現(xiàn)列表如下。這里的基本元素包括對象名、文字、函數(shù)調(diào)用及用括號括起來的表達(dá)式。求和操作符:+(加)、-(減) SLL,SLA,SRL,SRA,ROL,ROR =,/=,=,= AND,OR,NAND,NOR,XOR,XNOR 最低優(yōu)先級 VHDL詞法規(guī)則與標(biāo)識符 詞法規(guī)則 為了提高VHDL源程序的可讀性,在VHDL中可以寫入注釋。允許在數(shù)字之前冠以若干個0,但不允許在數(shù)字之間存在空格。如 E-2O:八進(jìn)制基數(shù)符號,在字符串中每一個數(shù)代表一個八進(jìn)制數(shù),即代表一個3位(BIT)的二進(jìn)制數(shù)。標(biāo)識符規(guī)則是VHDL語言中符號書寫的一般規(guī)則,為EDA工具提供了標(biāo)準(zhǔn)的書寫規(guī)范。VHDL通過這四種不同的描述方式從不同的側(cè)面描述結(jié)構(gòu)體的功能。ARCHITECTURE behav OF full_adder ISBEGIN PROCESS (x, y, c_in)VARIABLE n: INTEGER。 Sum, c_out : OUT STD_LOGIC)。33\,\legal$state\ 是合法的擴(kuò)展標(biāo)識符;(3)兩個反斜杠之間的字可以和保留字相同,如 \SIGNAL\,\ENTITY\ 是合法的標(biāo)識符,與SIGNAL、ENTITY是不同的;(4)兩個反斜杠之間的標(biāo)識符可以用數(shù)字開頭,如 \15BIT\,\5ns\是合法的;(5)擴(kuò)展標(biāo)識符是區(qū)分大小寫的,如 \a\ 與 \ A\ 是不同的標(biāo)識符;(6)擴(kuò)展標(biāo)識符允許多個下劃線相鄰,如 \our_ _entity\ 是合法的擴(kuò)展標(biāo)識符(不推薦這種方式);(7)擴(kuò)展標(biāo)識符的名字中如果含有一個反斜杠,則用相鄰的兩個反斜杠來代表它,如 \te\\xe\ 表示該擴(kuò)展標(biāo)識符的名字為 te\xe (共5個字符);第三章 VHDL的描述風(fēng)格第三章 VHDL的描述風(fēng)格 行為描述方式 數(shù)據(jù)流描述方式(RTL描述方式) 結(jié)構(gòu)化描述方式 混合描述風(fēng)格 VHDL語言是通過結(jié)構(gòu)體具體描述整個設(shè)計實體的邏輯功能。上例中,a (s)為一下標(biāo)語句,s是不可計算的下標(biāo)名,只能在特定情況下進(jìn)行綜合;b (3)的下標(biāo)為3,可以進(jìn)行綜合?;鶖?shù)符有“B”、“O”、“X”,他們的含義如下。 NOT h; 元素與元素并置,形成長度為2的數(shù)組 a = c amp。必須注意,運算符的左邊和右邊,以及代入的信號的數(shù)據(jù)類型必須是相同的。下面的例子使用常數(shù)把類型為STD_LOGIC的值轉(zhuǎn)換為BIT型的值。常數(shù)轉(zhuǎn)換法。文件(FILE)類型;但大多數(shù)的CAD廠商已在包集合中對標(biāo)準(zhǔn)數(shù)據(jù)類型進(jìn)行了擴(kuò)展。在包集合STANDARD中給出了時間的預(yù)定義,其單位為fs,ps,ns,μs,ms,sec,min和hr。字符‘1’,當(dāng)要明確指出1的字符數(shù)據(jù)時,則可寫為:CHARACTER( ‘ 1’)。雖然布爾量也是二值枚舉量,但它和位不同沒有數(shù)值的含義,也不能進(jìn)行算術(shù)運算。與整數(shù)中的1和0不同,‘1’和‘0’僅僅表示一個位的兩種取值。(INTEGER) 整數(shù)與數(shù)學(xué)中整數(shù)的定義相似,可以使用預(yù)定義運算操作符,如加“+”、減“-”、乘“”、除“247。信號與變量的區(qū)別:信號和變量是VHDL中重要的客體,他們之間的主要區(qū)別有:信號定義語句的格式為:SIGNAL 信號名:數(shù)據(jù)類型:約束條件 := 表達(dá)式;定義時候使用例如:SIGNAL gnd :BIT := ‘0’;SIGNAL data :STD_LOGIC_VECTOR (7 DOWNTO 0)。與信號不同,變量的賦值是理想化數(shù)據(jù)傳輸,其賦值是立即生效的,不存在任何的延時行為。第二章 VHDL語言元素 VHDL語言的客體 VHDL語言的數(shù)據(jù)類型 VHDL數(shù)據(jù)類型轉(zhuǎn)換 VHDL詞法規(guī)則與標(biāo)識符 VHDL語言的客體VHDL語言中,可以賦予一個質(zhì)的對象就稱為客體。 B : IN STD_LOGIC。 SIGNAL tmp1,tmp2,tmp3 : STD_LOGIC。COMPONENT or2_v PORT(a : IN STD_LOGIC。 Cin : IN STD_LOGIC。ARCHITECTURE xor2_arc OF xor2_v ISBEGIN y = a XOR b。CONFIGURATION or2_cfg OF or2_v IS FOR or2_arc END for。與門and2_v仿真波形二輸入或門源代碼:LIBRARY IEEE。ENTITY and2_v IS PORT(a: IN STD_LOGIC。在上例( example_v)中,有5個不同的結(jié)構(gòu)體,分別用來完成二輸入的邏輯與、或、與非、或非和邏輯異或的運算操作。CONFIGURATION cfg2 OF example_v IS FOR or2_arc END FOR。ARCHITECTURE nand2_arc OF example_v IS BEGIN y = NOT(a AND b)。ENTITY example_v IS PORT (a : IN STD_LOGIC。程序包首定義了數(shù)據(jù)類型和函數(shù)的調(diào)用說明,程序包體中才具體描述實現(xiàn)該函數(shù)功能的語句和數(shù)據(jù)的賦值。END add。 digit := digit/2。FUNCTION int_to_tw16(s:INTEGER)。設(shè)計者使用時只要用USE子句進(jìn)行說明即可。第二個USE語句開放了程序包STD_LOGIC_1164中的STD_ULOGIC數(shù)據(jù)類型。USE語句的使用將使所說明的程序包對本設(shè)計實體部分或全部開放。 END IF。 USE 。 *: 乘, **:乘方 IF (a (i) =1) THEN q := q+1。 子程序被調(diào)用時,首先要初始化,執(zhí)行處理功能后,將處理結(jié)果傳遞給主程序。039。 b。單進(jìn)程以PROCESS開始,以END PROCESS結(jié)束。 y= s1。5元件例化語句對其他的設(shè)計實體做元件調(diào)用說明,并將此元件的端口與其他元件、信號或高層實體的界面端口進(jìn)行連接。ARCHITECTURE rtl OF muj IS rtl:結(jié)構(gòu)體名,muj實體名 SIGNAL s1:BIT 結(jié)構(gòu)體信號定義語句 SIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3)。結(jié)構(gòu)體的語句格式為: ARCHITECTURE 結(jié)構(gòu)體名 OF 實體名 IS [定義語句] BEGIN [功能描述語句] END 結(jié)構(gòu)體名; 結(jié)構(gòu)體名 結(jié)構(gòu)體名由設(shè)計者自行定義,OF后面的實體名指明了該結(jié)構(gòu)體所對應(yīng)的是哪個實體。緩沖模式用于在實體內(nèi)部建立一個可讀的輸出端口,例如計數(shù)器輸出、計數(shù)器的現(xiàn)態(tài)用來決定計數(shù)器的次態(tài)。其一般書寫格式為:PORT (端口名 :端口模式 數(shù)據(jù)類型; 端口名 :端口模式 數(shù)據(jù)類型; … …); 其中端口名是設(shè)計者為實體的每一個對外通道所取的名字,通常為英文字母加數(shù)字,名字的定義有一定的慣例,如clk 表示時鐘,D開頭的端口名表示數(shù)據(jù),A開頭的端口名表示地址。因此設(shè)計者可以從外面通過類屬參量的重新設(shè)定而容易的改變一個設(shè)計實體或一個元件的內(nèi)部電路結(jié)構(gòu)和規(guī)模。實體說明是對這個設(shè)計實體與外部電路進(jìn)行接口的描述,它規(guī)定了設(shè)計單元的輸入輸出接口信號或引腳,是設(shè)計實體對外的一個通信界面。不過,一般國內(nèi)用戶卻未必能承受得起在這些公司購買IP和定制ASIC的費用。 2. ASIC的現(xiàn)存問題與未來發(fā)展方向: (1) 簡化工藝,降低成本:如今,(, —),ASIC的集成度和制造成本都在直線上升。六、可編程器件的發(fā)展: PROM (EPROM, EEPROM) PAL/GAL芯片(幾十個門/20Pin)FPGA/CPLD(八十年代中期,Xilinx和Altera公司推出幾十—幾千個通用IC規(guī)模的FPGA芯片。 五、硬件描述語言(VHDL)的突出優(yōu)點: ,使原先的IC使用者在掌握了VHDL之后,都變成了IC設(shè)計者,都能夠隨心所欲地設(shè)計出具