版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、一、VHDLVHDL的主要構(gòu)件的主要構(gòu)件VHDL 語(yǔ)言參數(shù)部分參數(shù)部分程序包程序包接口部分接口部分設(shè)計(jì)實(shí)體設(shè)計(jì)實(shí)體描述部分描述部分結(jié)構(gòu)體結(jié)構(gòu)體VHDL語(yǔ)言基礎(chǔ)語(yǔ)言基礎(chǔ) EDA技術(shù)的基礎(chǔ)知識(shí)技術(shù)的基礎(chǔ)知識(shí)Exampleentity and_2 is port (a, b: in std_logic; Y : out std_logic); end and_2;The Entity describesthe inputs and outputsarchitecture dataflow of and_2 isbegin Y=a and b;end dataflow;The Architectu
2、re describes the boxentity nameVHDL 大小寫(xiě)不敏感Library IEEE;use IEEE.std_logic_1164.all;LibraryPackageAND_2abY1.實(shí)體(實(shí)體(Entity)n描述此設(shè)計(jì)功能輸入輸出端口(描述此設(shè)計(jì)功能輸入輸出端口(Port)n在層次化設(shè)計(jì)時(shí),在層次化設(shè)計(jì)時(shí),Port為模塊之間的接口為模塊之間的接口n在芯片級(jí),則代表具體芯片的管腳在芯片級(jí),則代表具體芯片的管腳A3.0B3.0equalEntity eqcomp4 isport(a, b: in std_logic_vector(3 downto 0); equa
3、l:out std_logic );end eqcomp4;端口的模式端口的模式n輸入(輸入(Input)n輸出(輸出(Output)n雙向(雙向(Inout):可代替所有其他模式,):可代替所有其他模式,但降低了程序的可讀性,一般用于與但降低了程序的可讀性,一般用于與CPU的數(shù)據(jù)總線接口的數(shù)據(jù)總線接口n緩沖(緩沖(Buffer):與):與Output類(lèi)似,但允類(lèi)似,但允許該管腳名作為一些邏輯的輸入信號(hào),許該管腳名作為一些邏輯的輸入信號(hào),可以返回到實(shí)體內(nèi)部??梢苑祷氐綄?shí)體內(nèi)部。 端口說(shuō)明端口說(shuō)明PORT ( 端口名端口名,端口名端口名 : 方向方向 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型;:端口名端口名,端口名端口
4、名 : 方向方向 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 );端口方向端口方向 實(shí)實(shí)體體INOUTINOUTBUFFERLINKAGE2.結(jié)構(gòu)體(結(jié)構(gòu)體(Architecture)n描述實(shí)體硬件的互連關(guān)系、數(shù)據(jù)的傳輸描述實(shí)體硬件的互連關(guān)系、數(shù)據(jù)的傳輸和變換以及動(dòng)態(tài)行為。和變換以及動(dòng)態(tài)行為。n語(yǔ)法結(jié)構(gòu):語(yǔ)法結(jié)構(gòu): ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實(shí)體名實(shí)體名 IS 結(jié)構(gòu)體說(shuō)明語(yǔ)句結(jié)構(gòu)體說(shuō)明語(yǔ)句 BEGIN 功能描述語(yǔ)句功能描述語(yǔ)句 END 結(jié)構(gòu)體名結(jié)構(gòu)體名 n結(jié)構(gòu)體有三種描述方式結(jié)構(gòu)體有三種描述方式n行為描述行為描述(behavioral)n數(shù)據(jù)流描述數(shù)據(jù)流描述(dataflow)n結(jié)構(gòu)化描述結(jié)構(gòu)化
5、描述(structural)行為描述行為描述Architecture behavioral of eqcomp4 is begincomp: process (a,b) beginif a=b then equal = 1; else equal =0;end if; end process comp;end behavioral ;高層次的功能描述,高層次的功能描述,不必考慮在電路中不必考慮在電路中到底是怎樣實(shí)現(xiàn)的。到底是怎樣實(shí)現(xiàn)的。數(shù)據(jù)流描述數(shù)據(jù)流描述描述輸入信號(hào)經(jīng)過(guò)怎樣的變換得到輸出信號(hào)描述輸入信號(hào)經(jīng)過(guò)怎樣的變換得到輸出信號(hào)Architecture dataflow1 of eqcomp
6、4 is begin equal = 1 when a=b else 0;end dataflow1;Architecture dataflow2 of eqcomp4 is beginequal = not(a(0) xor b(0) and not(a(1) xor b(1) and not(a(2) xor b(2) and not(a(3) xor b(3);end dataflow2;當(dāng)當(dāng)a和和b的寬度發(fā)生的寬度發(fā)生變化時(shí),需要修改變化時(shí),需要修改設(shè)計(jì),當(dāng)寬度過(guò)大設(shè)計(jì),當(dāng)寬度過(guò)大時(shí),設(shè)計(jì)非常繁瑣時(shí),設(shè)計(jì)非常繁瑣結(jié)構(gòu)描述結(jié)構(gòu)描述architecture struct of eqcomp
7、4 isbegin U0:xnor2 port map(a(0),b(0),x(0); U1:xnor2 port map(a(1),b(1),x(1); U2:xnor2 port map(a(2),b(2),x(2); U3:xnor2 port map(a(3),b(3),x(3); U4:and4 port map(x(0),x(1),x(2),x(3),equal);end struct;類(lèi)似于電路的網(wǎng)絡(luò)表,將各個(gè)器類(lèi)似于電路的網(wǎng)絡(luò)表,將各個(gè)器件通過(guò)語(yǔ)言的形式進(jìn)行連接,與件通過(guò)語(yǔ)言的形式進(jìn)行連接,與電路有一一對(duì)應(yīng)的關(guān)系。電路有一一對(duì)應(yīng)的關(guān)系。一般用于大規(guī)模電路的層次化設(shè)一般用于大規(guī)模
8、電路的層次化設(shè)計(jì)時(shí)。計(jì)時(shí)。三種描述方式的比較三種描述方式的比較描述方式描述方式優(yōu)點(diǎn)優(yōu)點(diǎn)缺點(diǎn)缺點(diǎn)適用場(chǎng)合適用場(chǎng)合結(jié)構(gòu)化描結(jié)構(gòu)化描述述連接關(guān)系清連接關(guān)系清晰,電路模晰,電路模塊化清晰塊化清晰電路不易理解、電路不易理解、繁瑣、復(fù)雜繁瑣、復(fù)雜電路層次化設(shè)電路層次化設(shè)計(jì)計(jì)數(shù)據(jù)流描數(shù)據(jù)流描述述布爾函數(shù)定布爾函數(shù)定義明白義明白不易描述復(fù)雜不易描述復(fù)雜電路,修改不電路,修改不易易小門(mén)數(shù)設(shè)計(jì)小門(mén)數(shù)設(shè)計(jì)行為描述行為描述電路特性清電路特性清楚明了楚明了進(jìn)行綜合效率進(jìn)行綜合效率相對(duì)較低相對(duì)較低大型復(fù)雜的電大型復(fù)雜的電路模塊設(shè)計(jì)路模塊設(shè)計(jì)3. 庫(kù)、程序包和配置庫(kù)、程序包和配置 設(shè)設(shè)計(jì)計(jì)庫(kù)庫(kù)IEEE庫(kù)庫(kù)預(yù)定義庫(kù)預(yù)定義庫(kù)(
9、 (隱含打開(kāi)隱含打開(kāi)) )STD庫(kù)庫(kù)STANDARD(隱含說(shuō)明隱含說(shuō)明)TEXTIO(用用USE說(shuō)明說(shuō)明)WORK庫(kù)庫(kù)資資 源源 庫(kù)庫(kù)(用用LIBRARY)其它庫(kù)其它庫(kù)STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_UNSIGNEDNUMERIC_STDNUMERIC_BITMATH_REALMATH_COMPLEXVITAL_TIMINGVITAL_PRIMITIVE(1)庫(kù)、程序包庫(kù)、程序包程序包放在庫(kù)中,使用時(shí)用程序包放在庫(kù)中,使用時(shí)用USE語(yǔ)句說(shuō)明語(yǔ)句說(shuō)明庫(kù)、程序包說(shuō)明語(yǔ)句:庫(kù)、程序包說(shuō)明語(yǔ)句:Library 庫(kù)名庫(kù)名;use 庫(kù)名庫(kù)名.程序包名程序包名.
10、項(xiàng)目名項(xiàng)目名;(2)配置配置 一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體描述,但是在進(jìn)一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體描述,但是在進(jìn)行仿真和綜合時(shí),只能一個(gè)實(shí)體對(duì)應(yīng)一個(gè)確定的行仿真和綜合時(shí),只能一個(gè)實(shí)體對(duì)應(yīng)一個(gè)確定的結(jié)構(gòu)體。配置語(yǔ)句用來(lái)確定結(jié)構(gòu)體。結(jié)構(gòu)體。配置語(yǔ)句用來(lái)確定結(jié)構(gòu)體。語(yǔ)句格式:語(yǔ)句格式:CONFIGURATION 配置名配置名 OF 實(shí)體名實(shí)體名ISFOR 被選結(jié)構(gòu)體名被選結(jié)構(gòu)體名END FOR ;END 配置名;配置名;ENTITY描述電路的描述電路的I/O介面介面PackageARCHITECTURE描述電路的特性和運(yùn)作描述電路的特性和運(yùn)作StructuralData FlowBehavioral不同的
11、描述風(fēng)格不同的描述風(fēng)格二、二、VHDLVHDL的數(shù)據(jù)對(duì)象和數(shù)據(jù)類(lèi)型的數(shù)據(jù)對(duì)象和數(shù)據(jù)類(lèi)型1.VHDL的數(shù)據(jù)對(duì)象的數(shù)據(jù)對(duì)象 類(lèi)似于一種容器,接受不同數(shù)據(jù)類(lèi)似于一種容器,接受不同數(shù)據(jù)類(lèi)型的賦值類(lèi)型的賦值 -常數(shù)常數(shù) 信號(hào)信號(hào) 變量變量數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象常數(shù)(常數(shù)(Constant)n 固定值,不能在程序中被改變固定值,不能在程序中被改變n增強(qiáng)程序的可讀性,便于修改程序增強(qiáng)程序的可讀性,便于修改程序n在綜合后,連接到電源和地在綜合后,連接到電源和地n可在可在Library、Entity、Architecture、Process中進(jìn)行定義,其有效范圍也相應(yīng)中進(jìn)行定義,其有效范圍也相應(yīng)限定限定n常數(shù)說(shuō)明:常
12、數(shù)說(shuō)明:Constant 常數(shù)名:常數(shù)名: 數(shù)據(jù)類(lèi)數(shù)據(jù)類(lèi)型型:=表達(dá)式表達(dá)式Constant data_bus_width: integer := 8;Constant ROM_Size: Integer := 16#FFFF#;數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象變量(變量(Variable)n臨時(shí)數(shù)據(jù),沒(méi)有物理意義臨時(shí)數(shù)據(jù),沒(méi)有物理意義n只能在只能在Process和和Function中定義,中定義,并只在其并只在其內(nèi)部有效內(nèi)部有效n要使其全局有效,先轉(zhuǎn)換為要使其全局有效,先轉(zhuǎn)換為Signal。n用用 進(jìn)行賦值進(jìn)行賦值n變量說(shuō)明:變量說(shuō)明: 變量名:變量名: 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型變量賦值變量賦值賦值標(biāo)志賦值標(biāo)志數(shù)據(jù)
13、對(duì)象數(shù)據(jù)對(duì)象信號(hào)(信號(hào)(Signals)n 代表連線,代表連線,Port也是一種信號(hào)也是一種信號(hào)n在在Entity中和中和Architecture中定義中定義n用用 = 進(jìn)行賦值進(jìn)行賦值n信號(hào)說(shuō)明:信號(hào)說(shuō)明: signal 信號(hào)名:信號(hào)名: 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型;signal count:bit_vector(3 downto 0):=“0011”; nsignal Enable: Bit;nsignal CLK, CLEAR: Bit:=1;信號(hào)舉例信號(hào)舉例nLIBRARY ieee;nUSE ieee.std_logic_1164.all;nENTITY simp ISnPORT (a, b,
14、 c, d : IN Std_Logic;ng : OUT Std_Logic);nEND simp;nARCHITECTURE logic OF simp ISnSIGNAL e,f : Std_Logic;nBEGINne = a or b;nf=not(c or d);ng =e and f;nEND logic;信號(hào)賦值信號(hào)賦值信號(hào)和變量的作用范圍信號(hào)和變量的作用范圍信號(hào)和變量的區(qū)別信號(hào)和變量的區(qū)別2. VHDL的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型(1) 標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型(編程者可直接使用編程者可直接使用) 預(yù)定義類(lèi)型在預(yù)定義類(lèi)型在VHDL標(biāo)準(zhǔn)程序包標(biāo)準(zhǔn)程序包STANDARD中定義,在應(yīng)用中自
15、動(dòng)包含進(jìn)中定義,在應(yīng)用中自動(dòng)包含進(jìn)VHDL的源文件,的源文件,不需要不需要USE語(yǔ)句顯示調(diào)用語(yǔ)句顯示調(diào)用。數(shù)據(jù)類(lèi)型如下:數(shù)據(jù)類(lèi)型如下: 1)整數(shù)()整數(shù)(INTEGER)在在VHDL語(yǔ)言中,整數(shù)的表示范圍為語(yǔ)言中,整數(shù)的表示范圍為21474836472147483647,即從,即從(2311)到到(2311)。2)實(shí)數(shù)()實(shí)數(shù)(REAL)實(shí)數(shù)的定義值范圍為實(shí)數(shù)的定義值范圍為1.0E+381.0E+38。實(shí)數(shù)有正負(fù)數(shù),書(shū)寫(xiě)時(shí)一定要有小數(shù)點(diǎn)。例實(shí)數(shù)有正負(fù)數(shù),書(shū)寫(xiě)時(shí)一定要有小數(shù)點(diǎn)。例如:如:1.0,+2.5,1.0E+383)位位(BIT)用來(lái)表示數(shù)字系統(tǒng)中的信號(hào)值。位值用字符用來(lái)表示數(shù)字系統(tǒng)中的信
16、號(hào)值。位值用字符0或者或者1(將值放在引號(hào)中)表示。與整數(shù)中的(將值放在引號(hào)中)表示。與整數(shù)中的1和和0不同,不同,1和和0僅僅表示一個(gè)位的兩種取值。僅僅表示一個(gè)位的兩種取值。4)位矢量位矢量(BIT_VECTOR)位矢量是用雙引號(hào)括起來(lái)的一組數(shù)據(jù)。例如:位矢量是用雙引號(hào)括起來(lái)的一組數(shù)據(jù)。例如:“001100”,X“00bb”。在這里位矢量前面的。在這里位矢量前面的X表示是十六進(jìn)制表示是十六進(jìn)制。使用位使用位矢量時(shí)必須注明位寬,矢量時(shí)必須注明位寬,即數(shù)組中元素個(gè)數(shù)和排列,例如:即數(shù)組中元素個(gè)數(shù)和排列,例如:SIGNAL s1:BIT_VECTOR(15 DOWNTO 0);); 5)布爾量布爾
17、量(BOOLEAN)一個(gè)布爾量具有兩種狀態(tài),一個(gè)布爾量具有兩種狀態(tài),“真真”或者或者“假假”。沒(méi)有數(shù)值的含沒(méi)有數(shù)值的含義,也義,也不能進(jìn)行算術(shù)運(yùn)算不能進(jìn)行算術(shù)運(yùn)算。它。它能進(jìn)行關(guān)系運(yùn)算能進(jìn)行關(guān)系運(yùn)算。例如,它可以。例如,它可以在在if語(yǔ)句中被測(cè)試,測(cè)試結(jié)果產(chǎn)生一個(gè)布爾量語(yǔ)句中被測(cè)試,測(cè)試結(jié)果產(chǎn)生一個(gè)布爾量TRUE或者或者FALSE。 6)字符字符(CHARACTER)用用單引號(hào)單引號(hào)括起來(lái),括起來(lái),如如a。區(qū)分大小寫(xiě)。字符包括從。區(qū)分大小寫(xiě)。字符包括從a到到z中的中的任一個(gè)字母,從任一個(gè)字母,從0到到9中的任一個(gè)數(shù)以及空格或者特殊字符,如中的任一個(gè)數(shù)以及空格或者特殊字符,如$,%等等。包集合等
18、等。包集合standard中給出了預(yù)定義的中給出了預(yù)定義的128個(gè)個(gè)ASC碼字符。碼字符。7)字符串字符串(STRING)由雙引號(hào)括起來(lái)的一個(gè)字符序列,也稱字符矢量或字符串組。由雙引號(hào)括起來(lái)的一個(gè)字符序列,也稱字符矢量或字符串組。字符串常用于程序的提示和說(shuō)明。字符串舉例如下:字符串常用于程序的提示和說(shuō)明。字符串舉例如下:VATIABLE string_1 : STRING (0TO 3);string_1:= “a b c d”;8)時(shí)間時(shí)間(TIME)是一個(gè)物理量數(shù)據(jù)。包含整數(shù)和單位兩部分,而且整數(shù)和單位是一個(gè)物理量數(shù)據(jù)。包含整數(shù)和單位兩部分,而且整數(shù)和單位之間至少應(yīng)留一個(gè)空格的位置。例如之
19、間至少應(yīng)留一個(gè)空格的位置。例如55 sec,2 min等。在包集等。在包集合合STANDARD中給出了時(shí)間的預(yù)定義,其單位為中給出了時(shí)間的預(yù)定義,其單位為fs,ps,ns,s,ms,sec,min和和hr。例如:。例如:20 s,100 ns,3 sec。在系統(tǒng)仿真時(shí),時(shí)間數(shù)據(jù)特別有用,用它可以表示信號(hào)延時(shí),在系統(tǒng)仿真時(shí),時(shí)間數(shù)據(jù)特別有用,用它可以表示信號(hào)延時(shí),從而使模型系統(tǒng)能更逼近實(shí)際系統(tǒng)的運(yùn)行環(huán)境。從而使模型系統(tǒng)能更逼近實(shí)際系統(tǒng)的運(yùn)行環(huán)境。9)錯(cuò)誤等級(jí)錯(cuò)誤等級(jí)(SEVERITY LEVEL)用來(lái)表征系統(tǒng)的狀態(tài),共有用來(lái)表征系統(tǒng)的狀態(tài),共有4種:種:note(注意),(注意),warning
20、(警告),(警告),error(出錯(cuò)),(出錯(cuò)),failure(失?。?。在系統(tǒng)仿真過(guò)(失?。T谙到y(tǒng)仿真過(guò)程中可以用這程中可以用這4種狀態(tài)來(lái)提示系統(tǒng)當(dāng)前的工作情況,從而使設(shè)種狀態(tài)來(lái)提示系統(tǒng)當(dāng)前的工作情況,從而使設(shè)計(jì)人員隨時(shí)了解當(dāng)前系統(tǒng)工作的情況,并根據(jù)系統(tǒng)的不同狀計(jì)人員隨時(shí)了解當(dāng)前系統(tǒng)工作的情況,并根據(jù)系統(tǒng)的不同狀態(tài)采取相應(yīng)的對(duì)策。態(tài)采取相應(yīng)的對(duì)策。1 0 ) 大 于 等 于 零 的 整 數(shù) ( 自 然 數(shù) )大 于 等 于 零 的 整 數(shù) ( 自 然 數(shù) )(NATURAL),),正整數(shù)正整數(shù)(POSITIVE)這兩種數(shù)據(jù)是整數(shù)的子類(lèi),這兩種數(shù)據(jù)是整數(shù)的子類(lèi),NATURAL類(lèi)數(shù)據(jù)為取類(lèi)數(shù)據(jù)
21、為取0和和0以上以上的正整數(shù);而的正整數(shù);而POSITIVE 則只能為正整數(shù)。則只能為正整數(shù)。(2) 用戶自定義數(shù)據(jù)類(lèi)型用戶自定義數(shù)據(jù)類(lèi)型 格式:格式:type 數(shù)據(jù)類(lèi)型名數(shù)據(jù)類(lèi)型名 is 數(shù)據(jù)類(lèi)型定義;數(shù)據(jù)類(lèi)型定義;可以由用戶定義的數(shù)據(jù)類(lèi)型有:可以由用戶定義的數(shù)據(jù)類(lèi)型有:枚舉枚舉(ENUMERATED)類(lèi)型;)類(lèi)型;整數(shù)整數(shù)(INTEGER)類(lèi)型;)類(lèi)型;實(shí)數(shù)實(shí)數(shù)(REAL)、)、浮點(diǎn)數(shù)浮點(diǎn)數(shù)(FLOATING)類(lèi)型;)類(lèi)型;數(shù)組數(shù)組(ARRAY)類(lèi)型;)類(lèi)型;。枚舉類(lèi)型:把數(shù)據(jù)類(lèi)型中的各個(gè)元素都列舉出來(lái),方便、枚舉類(lèi)型:把數(shù)據(jù)類(lèi)型中的各個(gè)元素都列舉出來(lái),方便、直觀,提高了程序可閱讀性。書(shū)寫(xiě)
22、格式為:直觀,提高了程序可閱讀性。書(shū)寫(xiě)格式為:Type 數(shù)據(jù)類(lèi)型名稱數(shù)據(jù)類(lèi)型名稱 is (元素(元素1,元素,元素2,););其中,數(shù)據(jù)類(lèi)型名稱和元素都是一個(gè)標(biāo)識(shí)符,例如:其中,數(shù)據(jù)類(lèi)型名稱和元素都是一個(gè)標(biāo)識(shí)符,例如:Type color is(blue,green,yellow,red););數(shù)據(jù)類(lèi)型名稱是數(shù)據(jù)類(lèi)型名稱是color,(元素,(元素1,元素,元素2,)是)是(blue,green,yellow,red)。)。枚舉類(lèi)型中所列舉的元素在程序編譯過(guò)程中通常是自動(dòng)編枚舉類(lèi)型中所列舉的元素在程序編譯過(guò)程中通常是自動(dòng)編碼,編碼順序是默認(rèn)的,左邊第一個(gè)元素編碼為碼,編碼順序是默認(rèn)的,左邊第一
23、個(gè)元素編碼為0,以后,以后的依次加的依次加1。編碼過(guò)程中自動(dòng)將每一個(gè)元素轉(zhuǎn)變成位矢量,。編碼過(guò)程中自動(dòng)將每一個(gè)元素轉(zhuǎn)變成位矢量,位矢量的長(zhǎng)度由所列舉元素個(gè)數(shù)決定。如上例四個(gè)元素,位矢量的長(zhǎng)度由所列舉元素個(gè)數(shù)決定。如上例四個(gè)元素,位矢量的長(zhǎng)度為位矢量的長(zhǎng)度為2,編碼默認(rèn)值為:,編碼默認(rèn)值為:blue=“00”,green=“01”;Yellow=“10”;red=“11”。初始值默認(rèn)為第一個(gè)值。初始值默認(rèn)為第一個(gè)值。枚舉類(lèi)型應(yīng)用舉例:交通燈控制器枚舉類(lèi)型應(yīng)用舉例:交通燈控制器任務(wù)和要求:在十字路口的兩個(gè)方向上各設(shè)一組紅燈、任務(wù)和要求:在十字路口的兩個(gè)方向上各設(shè)一組紅燈、綠燈和黃燈,顯示順序?yàn)椋浩?/p>
24、中一個(gè)方向綠燈、黃燈、綠燈和黃燈,顯示順序?yàn)椋浩渲幸粋€(gè)方向綠燈、黃燈、紅燈,另一個(gè)方向是紅燈、黃燈、綠燈。其中綠燈、黃紅燈,另一個(gè)方向是紅燈、黃燈、綠燈。其中綠燈、黃燈、紅燈的持續(xù)時(shí)間分別是燈、紅燈的持續(xù)時(shí)間分別是20S、5S、25S。程序如下:。程序如下:“IEEE.STD_LOGIC”九態(tài)數(shù)值模型如下:九態(tài)數(shù)值模型如下:U初始值;初始值; X 不定態(tài);不定態(tài); 1 邏輯邏輯1; 0 邏輯邏輯0; Z 高阻態(tài);高阻態(tài); W 弱信號(hào)不定;弱信號(hào)不定; L 弱信號(hào)弱信號(hào)0 H 弱信號(hào)弱信號(hào)1; 不可能情況不可能情況 。 (3) IEEE 標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型 “std-logic”和和“st
25、d-logic-vector”三、三、VHDLVHDL語(yǔ)言的操作符和表達(dá)式語(yǔ)言的操作符和表達(dá)式VHDL運(yùn)算符運(yùn)算符n邏輯運(yùn)算符邏輯運(yùn)算符AND、OR、NAND、NOR、XOR、NOTn關(guān)系運(yùn)算符關(guān)系運(yùn)算符=、/=、=n算術(shù)運(yùn)算符算術(shù)運(yùn)算符+、-、*、/n并置并置(連接連接)運(yùn)算符運(yùn)算符&1.邏輯運(yùn)算符邏輯運(yùn)算符在在VHDL語(yǔ)言中,共有語(yǔ)言中,共有6種邏輯運(yùn)算符,他們分別是:種邏輯運(yùn)算符,他們分別是: NOT 取反;取反; AND 與;與; OR 或;或; NAND 與非;與非; NOR 或非;或非; XOR 異或。異或。 這這6種邏輯運(yùn)算符可以對(duì)種邏輯運(yùn)算符可以對(duì)“STD_LOGIC
26、”和和“BIT”等邏等邏輯型數(shù)據(jù)、輯型數(shù)據(jù)、“STD_LOGIC _VECTOR”邏輯型數(shù)組及邏輯型數(shù)組及布布爾數(shù)據(jù)爾數(shù)據(jù)進(jìn)行邏輯運(yùn)算。進(jìn)行邏輯運(yùn)算。必須注意,運(yùn)算符的左邊和右邊,必須注意,運(yùn)算符的左邊和右邊,以及代入的信號(hào)的數(shù)據(jù)類(lèi)型必須是相同的以及代入的信號(hào)的數(shù)據(jù)類(lèi)型必須是相同的。 2.算術(shù)運(yùn)算符算術(shù)運(yùn)算符VHDL語(yǔ)言中有語(yǔ)言中有5類(lèi)算術(shù)運(yùn)算符,他們分別是:類(lèi)算術(shù)運(yùn)算符,他們分別是:求和操作符:求和操作符: (加)、(減)(加)、(減)求積操作符求積操作符:*(乘)、(乘)、/(除)、(除)、MOD(求模)、(求模)、REM(取余)(取余)符號(hào)操作符:符號(hào)操作符: (正)、(負(fù))(正)、(負(fù)
27、)混合操作符:混合操作符: *(指數(shù))、(指數(shù))、ABS(取絕對(duì)值)(取絕對(duì)值)移位操作符:移位操作符:SLL(邏輯左移)、(邏輯左移)、SRL(邏輯右移)、(邏輯右移)、SLA(算術(shù)左移)、(算術(shù)左移)、SRA(算術(shù)右移)、(算術(shù)右移)、ROL(邏輯循環(huán)左移)、(邏輯循環(huán)左移)、ROR邏輯循環(huán)右移)邏輯循環(huán)右移) 3.關(guān)系運(yùn)算符關(guān)系運(yùn)算符VHDL語(yǔ)言中有語(yǔ)言中有6種關(guān)系運(yùn)算符,他們分別是:種關(guān)系運(yùn)算符,他們分別是: = 等于;等于; /= 不等于;不等于; 小于;小于; 大于;大于; = 大于等于;大于等于;4.并置運(yùn)算符并置運(yùn)算符& 連接連接 SIGNAL g,h,i:STD_LO
28、GIC;SIGNAL c,d,e:STD_LOGIC _VECTOR(1 TO 0);); d = i & NOT h;- -元素與元素并置,形成長(zhǎng)度為元素與元素并置,形成長(zhǎng)度為2的數(shù)組的數(shù)組 a = c & d; - -數(shù)組與數(shù)組并置,形成長(zhǎng)度為數(shù)組與數(shù)組并置,形成長(zhǎng)度為4的數(shù)組的數(shù)組 5.VHDL操作符的優(yōu)先順序操作符的優(yōu)先順序 運(yùn)算符運(yùn)算符 優(yōu)先級(jí)優(yōu)先級(jí)NOT,ABS,* 最高優(yōu)先級(jí)最高優(yōu)先級(jí) *,/,MOD,REM +(正號(hào)),(負(fù)號(hào))(正號(hào)),(負(fù)號(hào))+,& SLL,SLA,SRL,SRA,ROL,ROR =,/=,= AND,OR,NAND,NOR,XOR,
29、XNOR 最低優(yōu)先級(jí)最低優(yōu)先級(jí) 四、四、VHDLVHDL基本語(yǔ)句基本語(yǔ)句1.順序描述語(yǔ)句順序描述語(yǔ)句(1)信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句)信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句目標(biāo)信號(hào)目標(biāo)信號(hào)=表達(dá)式表達(dá)式目標(biāo)變量:表達(dá)式目標(biāo)變量:表達(dá)式(2) If 語(yǔ)句語(yǔ)句語(yǔ)句格式:語(yǔ)句格式:if 條件條件 1 then 第第1組順序語(yǔ)句;組順序語(yǔ)句;elseif 條件條件 2 then 第第2組順序語(yǔ)句;組順序語(yǔ)句; elseif 條件條件 n then 第第n組順序語(yǔ)句;組順序語(yǔ)句; else 第第n+1組順序語(yǔ)句;組順序語(yǔ)句;end if;IF語(yǔ)句的應(yīng)用語(yǔ)句的應(yīng)用n 八八-三優(yōu)先級(jí)編碼器真值表三優(yōu)先級(jí)編碼器真值表 輸
30、輸 入入 輸出輸出 d7 d6 d5 d4 d3 d2 d1 d0 q2 q1 q0 0 x x x x x x x 1 1 1 1 0 x x x x x x 1 1 0 1 1 0 x x x x x 1 0 1 1 1 1 0 x x x x 1 0 0 1 1 1 1 0 x x x 0 1 1 1 1 1 1 1 0 x x 0 1 0 1 1 1 1 1 1 0 x 0 0 1 1 1 1 1 1 1 1 0 0 0 0n nLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY priority_encoder IS PORT ( d
31、: IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) ; q : OUT STD_LOGIC_VECTOR ( 2 DOWNTO 0 ) ) ; END priority_encoder ; ARCHITECTURE example_if OF priority_encoder IS BEGIN PROCESS ( d ) BEGIN IF ( d (7)=0 ) THEN q= ”111”; ELSIF ( d (6) = 0 ) THEN q= ”110”; ELSIF ( d (5) = 0 ) THEN q= ”101”; ELSIF ( d (4) = 0 ) T
32、HEN q= ”100”; ELSIF ( d (3) = 0 ) THEN q順序處理順序處理語(yǔ)句;語(yǔ)句;n : WHEN 條件表達(dá)式的值條件表達(dá)式的值=順序處理順序處理語(yǔ)句;語(yǔ)句; END CASE;nWHEN 中的條件有下述四種方式:中的條件有下述四種方式: WHEN 值值=順序處理語(yǔ)句;順序處理語(yǔ)句; WHEN 值值值值值值=順序處理順序處理語(yǔ)句;語(yǔ)句;-若干可列的值。若干可列的值。 WHEN 值值TO 值值=順序處理語(yǔ)句;順序處理語(yǔ)句;某個(gè)區(qū)間的值。某個(gè)區(qū)間的值。 WHEN OTHERS=順序處理語(yǔ)句;順序處理語(yǔ)句; LIBRARY IEEE; USE IEEE.STD_LOGIC_
33、1164.ALL; ENTITY mux4 IS PORT ( a,b,d0,d1,d2,d3 : IN STD_LOGIC ; q : OUT STD_LOGIC ) ; END mux4;例:用例:用CASE語(yǔ)句設(shè)計(jì)四選一電路語(yǔ)句設(shè)計(jì)四選一電路 ARCHITECTURE example_case OF mux4 IS SIGNAL sel : INTEGER RANGE 0 TO 3 ; BEGIN PROCESS ( a,b,d0,d1,d2,d3 ) BEGIN sel=0; IF ( a=1 ) THEN sel=sel+1 ; END IF ; IF ( b=1 ) THEN se
34、l q q q q=d3; END CASE; END PROCESS; END example_case;CASE語(yǔ)句設(shè)計(jì)的四選一電路實(shí)現(xiàn)語(yǔ)句設(shè)計(jì)的四選一電路實(shí)現(xiàn)n上述程序所描述的是一個(gè)平衡結(jié)構(gòu)的四選一電路上述程序所描述的是一個(gè)平衡結(jié)構(gòu)的四選一電路.FGHOBUFabd0d1d2d3q用用IF語(yǔ)句設(shè)計(jì)四選一電路語(yǔ)句設(shè)計(jì)四選一電路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (a, b, d0, d1-, d2, d3: IN STD_LOGIC; q: OUT STD_LOGIC); END mux4; ARC
35、HITECTURE example_if OF mux4 IS BEGIN PROCESS (a, b, d0,d1,d2,d3) BEGIN IF (a = 0 AND b = 0) THEN q = d0; ELSIF (a = 1 AND b = 0) THE q = d1; ELSIF (a = 0 AND b = 1) THEN q = d2; ELSIF (a = 1 AND b = 1) THEN q = d3; END IF; END PROCESS; END example_if; 用用IF語(yǔ)句設(shè)計(jì)四選一電路是權(quán)電路語(yǔ)句設(shè)計(jì)四選一電路是權(quán)電路GFd0abd1d2d3yF2.并
36、行描述語(yǔ)句并行描述語(yǔ)句n1進(jìn)程內(nèi)部所有的語(yǔ)句都是順序執(zhí)行的,進(jìn)程內(nèi)部所有的語(yǔ)句都是順序執(zhí)行的,n 2. 進(jìn)程和進(jìn)程之間是并行執(zhí)行的,進(jìn)程和進(jìn)程之間是并行執(zhí)行的,n 3進(jìn)程的啟動(dòng)由進(jìn)程的啟動(dòng)由PROCESS語(yǔ)句的敏感信號(hào)量表中的信語(yǔ)句的敏感信號(hào)量表中的信號(hào)量觸發(fā),也可以由號(hào)量觸發(fā),也可以由WAIT語(yǔ)句觸發(fā)。語(yǔ)句觸發(fā)。 (1) 進(jìn)程語(yǔ)句進(jìn)程語(yǔ)句 (進(jìn)程名:進(jìn)程名:)process(敏感信號(hào)表)敏感信號(hào)表) 變量說(shuō)明語(yǔ)句;變量說(shuō)明語(yǔ)句;begin 一組順序語(yǔ)句;一組順序語(yǔ)句;end process (進(jìn)程名進(jìn)程名);當(dāng)進(jìn)程中沒(méi)有敏感信號(hào)表時(shí),進(jìn)程語(yǔ)句中必須當(dāng)進(jìn)程中沒(méi)有敏感信號(hào)表時(shí),進(jìn)程語(yǔ)句中必須有其
37、他形式的敏感信號(hào)激勵(lì);而當(dāng)進(jìn)程中有敏有其他形式的敏感信號(hào)激勵(lì);而當(dāng)進(jìn)程中有敏感信號(hào)表時(shí),進(jìn)程語(yǔ)句中不允許再出現(xiàn)感信號(hào)表時(shí),進(jìn)程語(yǔ)句中不允許再出現(xiàn)wait、wait for、wait until和和wait on 中的任何一種敏感中的任何一種敏感信號(hào)激勵(lì)語(yǔ)句,否則出錯(cuò)。信號(hào)激勵(lì)語(yǔ)句,否則出錯(cuò)。用進(jìn)程設(shè)計(jì)用進(jìn)程設(shè)計(jì)D觸發(fā)器觸發(fā)器n LIBRARY IEEE USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff4 IS PORT (clk, d, clr, pset:IN STD_LOGIC; q:OUT STD_LOGIC ); END dff4; ARCHITECTUR
38、E rtl OF dff4 IS BEGIN clrpsetD QclknPROCESS (clk, pset, clr) BEGIN IF (clr = 0 ) THEN q = 0; ELSIF (pset = 0) THEN q = 1; ELSIF (clk EVENT AND clk = 1) THEN q = d; END IF; END PROCESS; END rtl; n利用進(jìn)程語(yǔ)句設(shè)計(jì)一位加法器利用進(jìn)程語(yǔ)句設(shè)計(jì)一位加法器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY half_adder IS PORT(a, b: IN
39、 STD_LOGIC; sum, carry: OUT STD_LOGIC); END half_adder; nARCHITECTURE behav OF half-adder IS BEGIN PROCESS (a, b) BEGIN sum= a XOR b AFTER 5nS; carry= a AND b AFTER 5nS; END PROCESS; END behav; 進(jìn)程語(yǔ)句的啟動(dòng)進(jìn)程語(yǔ)句的啟動(dòng)進(jìn)程語(yǔ)句有兩種工作狀態(tài):進(jìn)程語(yǔ)句有兩種工作狀態(tài):等待狀態(tài)等待狀態(tài)和和執(zhí)行執(zhí)行狀態(tài)狀態(tài)。當(dāng)敏感信號(hào)表中的信號(hào)沒(méi)有變化時(shí),。當(dāng)敏感信號(hào)表中的信號(hào)沒(méi)有變化時(shí),進(jìn)程處于等待狀態(tài);當(dāng)敏感信號(hào)表中
40、的信號(hào)進(jìn)程處于等待狀態(tài);當(dāng)敏感信號(hào)表中的信號(hào)有變化時(shí),進(jìn)程處于執(zhí)行狀態(tài),將順序執(zhí)行有變化時(shí),進(jìn)程處于執(zhí)行狀態(tài),將順序執(zhí)行進(jìn)程中的語(yǔ)句。當(dāng)最后一個(gè)語(yǔ)句執(zhí)行完后,進(jìn)程中的語(yǔ)句。當(dāng)最后一個(gè)語(yǔ)句執(zhí)行完后,就返回進(jìn)程語(yǔ)句的開(kāi)始,等待下一次敏感信就返回進(jìn)程語(yǔ)句的開(kāi)始,等待下一次敏感信號(hào)表中的信號(hào)變化。號(hào)表中的信號(hào)變化。n(4) 時(shí)間等待時(shí)間等待 WAIT FOR 時(shí)間表達(dá)式;時(shí)間表達(dá)式; 例如例如 :WAIT FOR 20nS;-同步點(diǎn)在延時(shí)同步點(diǎn)在延時(shí)20nS后,后, WAIT ON clk, interrupt FOR 5nS;-當(dāng)信號(hào)當(dāng)信號(hào)clk或或 interrupt變化變化5nS后啟動(dòng)后啟動(dòng) 進(jìn)
41、程。進(jìn)程。 (2)并發(fā)信號(hào)賦值語(yǔ)句)并發(fā)信號(hào)賦值語(yǔ)句 信號(hào)賦值語(yǔ)句在進(jìn)程內(nèi)部出現(xiàn)時(shí),是順序描述語(yǔ)句,信號(hào)賦值語(yǔ)句在進(jìn)程內(nèi)部出現(xiàn)時(shí),是順序描述語(yǔ)句,在進(jìn)程之外出現(xiàn)時(shí),以并發(fā)語(yǔ)句的形式出現(xiàn)。是并在進(jìn)程之外出現(xiàn)時(shí),以并發(fā)語(yǔ)句的形式出現(xiàn)。是并行執(zhí)行的,執(zhí)行順序與書(shū)寫(xiě)順序無(wú)關(guān)。行執(zhí)行的,執(zhí)行順序與書(shū)寫(xiě)順序無(wú)關(guān)。LIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY gate IS PORT(a,b : IN STD_LOGIC); x,y,z :OUT STD_LOGIC);END gate;ARCHITECTURE behave OF gate ISBEGIN x
42、=a AND b; y=a OR b; z=a XOR b;END behave;ABXYZGATE例:產(chǎn)生右圖電路符號(hào)的例:產(chǎn)生右圖電路符號(hào)的VHDL程序程序(3) 條件信號(hào)賦值語(yǔ)句條件信號(hào)賦值語(yǔ)句 目標(biāo)信號(hào)目標(biāo)信號(hào)=表達(dá)式表達(dá)式1 when 條件條件1 else 表達(dá)式表達(dá)式2 when 條件條件2 else 表達(dá)式表達(dá)式3 when 條件條件3 else 表達(dá)式表達(dá)式 n-1 when 條件條件n-1 else 表達(dá)式表達(dá)式n; ABXAND_GATELIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY and_gate IS PORT(a,b :
43、 IN STD_LOGIC); x:OUT STD_LOGIC);END and_gate;ARCHITECTURE rtl OF and_gate ISBEGIN x=0 when a=0 and b=0 else x=0 when a=0 and b=1 else x=0 when a=1 and b=0 else 1;END rtl;(4) 選擇信號(hào)賦值語(yǔ)句選擇信號(hào)賦值語(yǔ)句 with 表達(dá)式表達(dá)式 select 目標(biāo)信號(hào)目標(biāo)信號(hào)=表達(dá)式表達(dá)式1 when 條件條件1, 表達(dá)式表達(dá)式2 when 條件條件2, 表達(dá)式表達(dá)式3 when 條件條件3, 表達(dá)式表達(dá)式 n when 條件條件n,
44、 QMMUX40D1D2D3DSEL1.0LIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY mmux4 IS PORT(d0,d1,d2,d3: IN STD_LOGIC; sel:in std_logic_vector(1 downto 0); q:OUT STD_LOGIC);END mmux4;ARCHITECTURE rtl OF mmux4 ISBEGIN with sel select qa(0), c= x(0), b=b(0) ); 在端口元在端口元素中定義素中定義輸入輸入在端口元在端口元素中定義素中定義輸出輸出IC 器件器件AIC 器件器件BIC 器件器件C連接導(dǎo)線連接導(dǎo)線連接導(dǎo)線連接導(dǎo)線用固定邏輯的用固定邏輯的IC硬件實(shí)現(xiàn)硬件實(shí)現(xiàn)VHDL組件組件VHDL組件組件VHDL組件組件信號(hào)信號(hào)信號(hào)信號(hào)用用VHDL結(jié)構(gòu)實(shí)現(xiàn)結(jié)構(gòu)實(shí)現(xiàn)1G2G3GIN1IN2IN3IN4OUT1OUT2OUT31G2G3GIN1IN2IN3IN4OUT1OUT2OUT3ABXABXABXVHDL組件示例組件示例2輸入與門(mén)輸入與門(mén)XAB的的VHDL程序程序ENTITY and_gate IS PORT(A,B:IN BI
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色能源項(xiàng)目樹(shù)木種植與能源轉(zhuǎn)換合同4篇
- 二零二五版燃?xì)馄髽I(yè)安全生產(chǎn)責(zé)任保險(xiǎn)合同4篇
- 二零二五年度知識(shí)產(chǎn)權(quán)許可合同法要覽4篇
- 二零二五版建筑工程勞務(wù)承包與施工環(huán)保驗(yàn)收合同6篇
- 2025年度影視制作臨時(shí)演員聘用合同范本4篇
- 二零二五年度學(xué)生助學(xué)貸款合同違約責(zé)任承擔(dān)與追償協(xié)議4篇
- 二零二五版能源工程轉(zhuǎn)包合同:節(jié)能減排合作協(xié)議2篇
- 2025年度祠堂綠化與生態(tài)環(huán)境保護(hù)合同4篇
- 二零二五版露營(yíng)裝備租賃與用戶培訓(xùn)合同4篇
- 2025版米廠水稻種植與冷鏈物流運(yùn)輸服務(wù)合同4篇
- 醫(yī)院三基考核試題(康復(fù)理療科)
- 2024-2030年中國(guó)招標(biāo)代理行業(yè)深度分析及發(fā)展前景與發(fā)展戰(zhàn)略研究報(bào)告
- 醫(yī)師定期考核 (公共衛(wèi)生)試題庫(kù)500題(含答案)
- 基因突變和基因重組(第1課時(shí))高一下學(xué)期生物人教版(2019)必修2
- 內(nèi)科學(xué)(醫(yī)學(xué)高級(jí)):風(fēng)濕性疾病試題及答案(強(qiáng)化練習(xí))
- 音樂(lè)劇好看智慧樹(shù)知到期末考試答案2024年
- 辦公設(shè)備(電腦、一體機(jī)、投影機(jī)等)采購(gòu) 投標(biāo)方案(技術(shù)方案)
- 案卷評(píng)查培訓(xùn)課件模板
- 2024年江蘇省樣卷五年級(jí)數(shù)學(xué)上冊(cè)期末試卷及答案
- 人教版初中英語(yǔ)七八九全部單詞(打印版)
- 波浪理論要點(diǎn)圖解完美版
評(píng)論
0/150
提交評(píng)論