EDA技術(shù)基礎(chǔ)知識課件_第1頁
EDA技術(shù)基礎(chǔ)知識課件_第2頁
EDA技術(shù)基礎(chǔ)知識課件_第3頁
EDA技術(shù)基礎(chǔ)知識課件_第4頁
EDA技術(shù)基礎(chǔ)知識課件_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、一、VHDLVHDL的主要構(gòu)件的主要構(gòu)件VHDL 語言參數(shù)部分參數(shù)部分程序包程序包接口部分接口部分設(shè)計實(shí)體設(shè)計實(shí)體描述部分描述部分結(jié)構(gòu)體結(jié)構(gòu)體VHDL語言基礎(chǔ)語言基礎(chǔ) EDA技術(shù)的基礎(chǔ)知識技術(shù)的基礎(chǔ)知識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 大小寫不敏感Library IEEE;use IEEE.std_logic_1164.all;LibraryPackageAND_2abY1.實(shí)體(實(shí)體(Entity)n描述此設(shè)計功能輸入輸出端口(描述此設(shè)計功能輸入輸出端口(Port)n在層次化設(shè)計時,在層次化設(shè)計時,Port為模塊之間的接口為模塊之間的接口n在芯片級,則代表具體芯片的管腳在芯片級,則代表具體芯片的管腳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類似,但允類似,但允許該管腳名作為一些邏輯的輸入信號,許該管腳名作為一些邏輯的輸入信號,可以返回到實(shí)體內(nèi)部??梢苑祷氐綄?shí)體內(nèi)部。 端口說明端口說明PORT ( 端口名端口名,端口名端口名 : 方向方向 數(shù)據(jù)類型數(shù)據(jù)類型;:端口名端口名,端口名端口

4、名 : 方向方向 數(shù)據(jù)類型數(shù)據(jù)類型 );端口方向端口方向 實(shí)實(shí)體體INOUTINOUTBUFFERLINKAGE2.結(jié)構(gòu)體(結(jié)構(gòu)體(Architecture)n描述實(shí)體硬件的互連關(guān)系、數(shù)據(jù)的傳輸描述實(shí)體硬件的互連關(guān)系、數(shù)據(jù)的傳輸和變換以及動態(tài)行為。和變換以及動態(tài)行為。n語法結(jié)構(gòu):語法結(jié)構(gòu): ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實(shí)體名實(shí)體名 IS 結(jié)構(gòu)體說明語句結(jié)構(gòu)體說明語句 BEGIN 功能描述語句功能描述語句 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ù)流描述描述輸入信號經(jīng)過怎樣的變換得到輸出信號描述輸入信號經(jīng)過怎樣的變換得到輸出信號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è)計,當(dāng)寬度過大設(shè)計,當(dāng)寬度過大時,設(shè)計非常繁瑣時,設(shè)計非常繁瑣結(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;類似于電路的網(wǎng)絡(luò)表,將各個器類似于電路的網(wǎng)絡(luò)表,將各個器件通過語言的形式進(jìn)行連接,與件通過語言的形式進(jìn)行連接,與電路有一一對應(yīng)的關(guān)系。電路有一一對應(yīng)的關(guān)系。一般用于大規(guī)模電路的層次化設(shè)一般用于大規(guī)模

8、電路的層次化設(shè)計時。計時。三種描述方式的比較三種描述方式的比較描述方式描述方式優(yōu)點(diǎn)優(yōu)點(diǎn)缺點(diǎn)缺點(diǎn)適用場合適用場合結(jié)構(gòu)化描結(jié)構(gòu)化描述述連接關(guān)系清連接關(guān)系清晰,電路模晰,電路模塊化清晰塊化清晰電路不易理解、電路不易理解、繁瑣、復(fù)雜繁瑣、復(fù)雜電路層次化設(shè)電路層次化設(shè)計計數(shù)據(jù)流描數(shù)據(jù)流描述述布爾函數(shù)定布爾函數(shù)定義明白義明白不易描述復(fù)雜不易描述復(fù)雜電路,修改不電路,修改不易易小門數(shù)設(shè)計小門數(shù)設(shè)計行為描述行為描述電路特性清電路特性清楚明了楚明了進(jìn)行綜合效率進(jìn)行綜合效率相對較低相對較低大型復(fù)雜的電大型復(fù)雜的電路模塊設(shè)計路模塊設(shè)計3. 庫、程序包和配置庫、程序包和配置 設(shè)設(shè)計計庫庫IEEE庫庫預(yù)定義庫預(yù)定義庫(

9、 (隱含打開隱含打開) )STD庫庫STANDARD(隱含說明隱含說明)TEXTIO(用用USE說明說明)WORK庫庫資資 源源 庫庫(用用LIBRARY)其它庫其它庫STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_UNSIGNEDNUMERIC_STDNUMERIC_BITMATH_REALMATH_COMPLEXVITAL_TIMINGVITAL_PRIMITIVE(1)庫、程序包庫、程序包程序包放在庫中,使用時用程序包放在庫中,使用時用USE語句說明語句說明庫、程序包說明語句:庫、程序包說明語句:Library 庫名庫名;use 庫名庫名.程序包名程序包名.

10、項(xiàng)目名項(xiàng)目名;(2)配置配置 一個實(shí)體可以有多個結(jié)構(gòu)體描述,但是在進(jìn)一個實(shí)體可以有多個結(jié)構(gòu)體描述,但是在進(jìn)行仿真和綜合時,只能一個實(shí)體對應(yīng)一個確定的行仿真和綜合時,只能一個實(shí)體對應(yīng)一個確定的結(jié)構(gòu)體。配置語句用來確定結(jié)構(gòu)體。結(jié)構(gòu)體。配置語句用來確定結(jié)構(gòu)體。語句格式:語句格式: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ù)對象和數(shù)據(jù)類型的數(shù)據(jù)對象和數(shù)據(jù)類型1.VHDL的數(shù)據(jù)對象的數(shù)據(jù)對象 類似于一種容器,接受不同數(shù)據(jù)類似于一種容器,接受不同數(shù)據(jù)類型的賦值類型的賦值 -常數(shù)常數(shù) 信號信號 變量變量數(shù)據(jù)對象數(shù)據(jù)對象常數(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ù)說明:常

12、數(shù)說明:Constant 常數(shù)名:常數(shù)名: 數(shù)據(jù)類數(shù)據(jù)類型型:=表達(dá)式表達(dá)式Constant data_bus_width: integer := 8;Constant ROM_Size: Integer := 16#FFFF#;數(shù)據(jù)對象數(shù)據(jù)對象變量(變量(Variable)n臨時數(shù)據(jù),沒有物理意義臨時數(shù)據(jù),沒有物理意義n只能在只能在Process和和Function中定義,中定義,并只在其并只在其內(nèi)部有效內(nèi)部有效n要使其全局有效,先轉(zhuǎn)換為要使其全局有效,先轉(zhuǎn)換為Signal。n用用 進(jìn)行賦值進(jìn)行賦值n變量說明:變量說明: 變量名:變量名: 數(shù)據(jù)類型數(shù)據(jù)類型變量賦值變量賦值賦值標(biāo)志賦值標(biāo)志數(shù)據(jù)

13、對象數(shù)據(jù)對象信號(信號(Signals)n 代表連線,代表連線,Port也是一種信號也是一種信號n在在Entity中和中和Architecture中定義中定義n用用 = 進(jìn)行賦值進(jìn)行賦值n信號說明:信號說明: signal 信號名:信號名: 數(shù)據(jù)類型數(shù)據(jù)類型;signal count:bit_vector(3 downto 0):=“0011”; nsignal Enable: Bit;nsignal CLK, CLEAR: Bit:=1;信號舉例信號舉例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;信號賦值信號賦值信號和變量的作用范圍信號和變量的作用范圍信號和變量的區(qū)別信號和變量的區(qū)別2. VHDL的數(shù)據(jù)類型的數(shù)據(jù)類型(1) 標(biāo)準(zhǔn)數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型(編程者可直接使用編程者可直接使用) 預(yù)定義類型在預(yù)定義類型在VHDL標(biāo)準(zhǔn)程序包標(biāo)準(zhǔn)程序包STANDARD中定義,在應(yīng)用中自

15、動包含進(jìn)中定義,在應(yīng)用中自動包含進(jìn)VHDL的源文件,的源文件,不需要不需要USE語句顯示調(diào)用語句顯示調(diào)用。數(shù)據(jù)類型如下:數(shù)據(jù)類型如下: 1)整數(shù)()整數(shù)(INTEGER)在在VHDL語言中,整數(shù)的表示范圍為語言中,整數(shù)的表示范圍為21474836472147483647,即從,即從(2311)到到(2311)。2)實(shí)數(shù)()實(shí)數(shù)(REAL)實(shí)數(shù)的定義值范圍為實(shí)數(shù)的定義值范圍為1.0E+381.0E+38。實(shí)數(shù)有正負(fù)數(shù),書寫時一定要有小數(shù)點(diǎn)。例實(shí)數(shù)有正負(fù)數(shù),書寫時一定要有小數(shù)點(diǎn)。例如:如:1.0,+2.5,1.0E+383)位位(BIT)用來表示數(shù)字系統(tǒng)中的信號值。位值用字符用來表示數(shù)字系統(tǒng)中的信

16、號值。位值用字符0或者或者1(將值放在引號中)表示。與整數(shù)中的(將值放在引號中)表示。與整數(shù)中的1和和0不同,不同,1和和0僅僅表示一個位的兩種取值。僅僅表示一個位的兩種取值。4)位矢量位矢量(BIT_VECTOR)位矢量是用雙引號括起來的一組數(shù)據(jù)。例如:位矢量是用雙引號括起來的一組數(shù)據(jù)。例如:“001100”,X“00bb”。在這里位矢量前面的。在這里位矢量前面的X表示是十六進(jìn)制表示是十六進(jìn)制。使用位使用位矢量時必須注明位寬,矢量時必須注明位寬,即數(shù)組中元素個數(shù)和排列,例如:即數(shù)組中元素個數(shù)和排列,例如:SIGNAL s1:BIT_VECTOR(15 DOWNTO 0);); 5)布爾量布爾

17、量(BOOLEAN)一個布爾量具有兩種狀態(tài),一個布爾量具有兩種狀態(tài),“真真”或者或者“假假”。沒有數(shù)值的含沒有數(shù)值的含義,也義,也不能進(jìn)行算術(shù)運(yùn)算不能進(jìn)行算術(shù)運(yùn)算。它。它能進(jìn)行關(guān)系運(yùn)算能進(jìn)行關(guān)系運(yùn)算。例如,它可以。例如,它可以在在if語句中被測試,測試結(jié)果產(chǎn)生一個布爾量語句中被測試,測試結(jié)果產(chǎn)生一個布爾量TRUE或者或者FALSE。 6)字符字符(CHARACTER)用用單引號單引號括起來,括起來,如如a。區(qū)分大小寫。字符包括從。區(qū)分大小寫。字符包括從a到到z中的中的任一個字母,從任一個字母,從0到到9中的任一個數(shù)以及空格或者特殊字符,如中的任一個數(shù)以及空格或者特殊字符,如$,%等等。包集合等

18、等。包集合standard中給出了預(yù)定義的中給出了預(yù)定義的128個個ASC碼字符。碼字符。7)字符串字符串(STRING)由雙引號括起來的一個字符序列,也稱字符矢量或字符串組。由雙引號括起來的一個字符序列,也稱字符矢量或字符串組。字符串常用于程序的提示和說明。字符串舉例如下:字符串常用于程序的提示和說明。字符串舉例如下:VATIABLE string_1 : STRING (0TO 3);string_1:= “a b c d”;8)時間時間(TIME)是一個物理量數(shù)據(jù)。包含整數(shù)和單位兩部分,而且整數(shù)和單位是一個物理量數(shù)據(jù)。包含整數(shù)和單位兩部分,而且整數(shù)和單位之間至少應(yīng)留一個空格的位置。例如之

19、間至少應(yīng)留一個空格的位置。例如55 sec,2 min等。在包集等。在包集合合STANDARD中給出了時間的預(yù)定義,其單位為中給出了時間的預(yù)定義,其單位為fs,ps,ns,s,ms,sec,min和和hr。例如:。例如:20 s,100 ns,3 sec。在系統(tǒng)仿真時,時間數(shù)據(jù)特別有用,用它可以表示信號延時,在系統(tǒng)仿真時,時間數(shù)據(jù)特別有用,用它可以表示信號延時,從而使模型系統(tǒng)能更逼近實(shí)際系統(tǒng)的運(yùn)行環(huán)境。從而使模型系統(tǒng)能更逼近實(shí)際系統(tǒng)的運(yùn)行環(huán)境。9)錯誤等級錯誤等級(SEVERITY LEVEL)用來表征系統(tǒng)的狀態(tài),共有用來表征系統(tǒng)的狀態(tài),共有4種:種:note(注意),(注意),warning

20、(警告),(警告),error(出錯),(出錯),failure(失敗)。在系統(tǒng)仿真過(失?。T谙到y(tǒng)仿真過程中可以用這程中可以用這4種狀態(tài)來提示系統(tǒng)當(dāng)前的工作情況,從而使設(shè)種狀態(tài)來提示系統(tǒng)當(dāng)前的工作情況,從而使設(shè)計人員隨時了解當(dāng)前系統(tǒng)工作的情況,并根據(jù)系統(tǒng)的不同狀計人員隨時了解當(dāng)前系統(tǒng)工作的情況,并根據(jù)系統(tǒng)的不同狀態(tài)采取相應(yīng)的對策。態(tài)采取相應(yīng)的對策。1 0 ) 大 于 等 于 零 的 整 數(shù) ( 自 然 數(shù) )大 于 等 于 零 的 整 數(shù) ( 自 然 數(shù) )(NATURAL),),正整數(shù)正整數(shù)(POSITIVE)這兩種數(shù)據(jù)是整數(shù)的子類,這兩種數(shù)據(jù)是整數(shù)的子類,NATURAL類數(shù)據(jù)為取類數(shù)據(jù)

21、為取0和和0以上以上的正整數(shù);而的正整數(shù);而POSITIVE 則只能為正整數(shù)。則只能為正整數(shù)。(2) 用戶自定義數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型 格式:格式:type 數(shù)據(jù)類型名數(shù)據(jù)類型名 is 數(shù)據(jù)類型定義;數(shù)據(jù)類型定義;可以由用戶定義的數(shù)據(jù)類型有:可以由用戶定義的數(shù)據(jù)類型有:枚舉枚舉(ENUMERATED)類型;)類型;整數(shù)整數(shù)(INTEGER)類型;)類型;實(shí)數(shù)實(shí)數(shù)(REAL)、)、浮點(diǎn)數(shù)浮點(diǎn)數(shù)(FLOATING)類型;)類型;數(shù)組數(shù)組(ARRAY)類型;)類型;。枚舉類型:把數(shù)據(jù)類型中的各個元素都列舉出來,方便、枚舉類型:把數(shù)據(jù)類型中的各個元素都列舉出來,方便、直觀,提高了程序可閱讀性。書寫

22、格式為:直觀,提高了程序可閱讀性。書寫格式為:Type 數(shù)據(jù)類型名稱數(shù)據(jù)類型名稱 is (元素(元素1,元素,元素2,););其中,數(shù)據(jù)類型名稱和元素都是一個標(biāo)識符,例如:其中,數(shù)據(jù)類型名稱和元素都是一個標(biāo)識符,例如:Type color is(blue,green,yellow,red););數(shù)據(jù)類型名稱是數(shù)據(jù)類型名稱是color,(元素,(元素1,元素,元素2,)是)是(blue,green,yellow,red)。)。枚舉類型中所列舉的元素在程序編譯過程中通常是自動編枚舉類型中所列舉的元素在程序編譯過程中通常是自動編碼,編碼順序是默認(rèn)的,左邊第一個元素編碼為碼,編碼順序是默認(rèn)的,左邊第一

23、個元素編碼為0,以后,以后的依次加的依次加1。編碼過程中自動將每一個元素轉(zhuǎn)變成位矢量,。編碼過程中自動將每一個元素轉(zhuǎn)變成位矢量,位矢量的長度由所列舉元素個數(shù)決定。如上例四個元素,位矢量的長度由所列舉元素個數(shù)決定。如上例四個元素,位矢量的長度為位矢量的長度為2,編碼默認(rèn)值為:,編碼默認(rèn)值為:blue=“00”,green=“01”;Yellow=“10”;red=“11”。初始值默認(rèn)為第一個值。初始值默認(rèn)為第一個值。枚舉類型應(yīng)用舉例:交通燈控制器枚舉類型應(yīng)用舉例:交通燈控制器任務(wù)和要求:在十字路口的兩個方向上各設(shè)一組紅燈、任務(wù)和要求:在十字路口的兩個方向上各設(shè)一組紅燈、綠燈和黃燈,顯示順序?yàn)椋浩?/p>

24、中一個方向綠燈、黃燈、綠燈和黃燈,顯示順序?yàn)椋浩渲幸粋€方向綠燈、黃燈、紅燈,另一個方向是紅燈、黃燈、綠燈。其中綠燈、黃紅燈,另一個方向是紅燈、黃燈、綠燈。其中綠燈、黃燈、紅燈的持續(xù)時間分別是燈、紅燈的持續(xù)時間分別是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 弱信號不定;弱信號不定; L 弱信號弱信號0 H 弱信號弱信號1; 不可能情況不可能情況 。 (3) IEEE 標(biāo)準(zhǔn)數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型 “std-logic”和和“st

25、d-logic-vector”三、三、VHDLVHDL語言的操作符和表達(dá)式語言的操作符和表達(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語言中,共有語言中,共有6種邏輯運(yùn)算符,他們分別是:種邏輯運(yùn)算符,他們分別是: NOT 取反;取反; AND 與;與; OR 或;或; NAND 與非;與非; NOR 或非;或非; XOR 異或。異或。 這這6種邏輯運(yùn)算符可以對種邏輯運(yùn)算符可以對“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)算符的左邊和右邊,以及代入的信號的數(shù)據(jù)類型必須是相同的以及代入的信號的數(shù)據(jù)類型必須是相同的。 2.算術(shù)運(yùn)算符算術(shù)運(yùn)算符VHDL語言中有語言中有5類算術(shù)運(yùn)算符,他們分別是:類算術(shù)運(yùn)算符,他們分別是:求和操作符:求和操作符: (加)、(減)(加)、(減)求積操作符求積操作符:*(乘)、(乘)、/(除)、(除)、MOD(求模)、(求模)、REM(取余)(取余)符號操作符:符號操作符: (正)、(負(fù))(正)、(負(fù)

27、)混合操作符:混合操作符: *(指數(shù))、(指數(shù))、ABS(取絕對值)(取絕對值)移位操作符:移位操作符: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語言中有語言中有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;- -元素與元素并置,形成長度為元素與元素并置,形成長度為2的數(shù)組的數(shù)組 a = c & d; - -數(shù)組與數(shù)組并置,形成長度為數(shù)組與數(shù)組并置,形成長度為4的數(shù)組的數(shù)組 5.VHDL操作符的優(yōu)先順序操作符的優(yōu)先順序 運(yùn)算符運(yùn)算符 優(yōu)先級優(yōu)先級NOT,ABS,* 最高優(yōu)先級最高優(yōu)先級 *,/,MOD,REM +(正號),(負(fù)號)(正號),(負(fù)號)+,& SLL,SLA,SRL,SRA,ROL,ROR =,/=,= AND,OR,NAND,NOR,XOR,

29、XNOR 最低優(yōu)先級最低優(yōu)先級 四、四、VHDLVHDL基本語句基本語句1.順序描述語句順序描述語句(1)信號賦值語句和變量賦值語句)信號賦值語句和變量賦值語句目標(biāo)信號目標(biāo)信號=表達(dá)式表達(dá)式目標(biāo)變量:表達(dá)式目標(biāo)變量:表達(dá)式(2) If 語句語句語句格式:語句格式:if 條件條件 1 then 第第1組順序語句;組順序語句;elseif 條件條件 2 then 第第2組順序語句;組順序語句; elseif 條件條件 n then 第第n組順序語句;組順序語句; else 第第n+1組順序語句;組順序語句;end if;IF語句的應(yīng)用語句的應(yīng)用n 八八-三優(yōu)先級編碼器真值表三優(yōu)先級編碼器真值表 輸

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順序處理順序處理語句;語句;n : WHEN 條件表達(dá)式的值條件表達(dá)式的值=順序處理順序處理語句;語句; END CASE;nWHEN 中的條件有下述四種方式:中的條件有下述四種方式: WHEN 值值=順序處理語句;順序處理語句; WHEN 值值值值值值=順序處理順序處理語句;語句;-若干可列的值。若干可列的值。 WHEN 值值TO 值值=順序處理語句;順序處理語句;某個區(qū)間的值。某個區(qū)間的值。 WHEN OTHERS=順序處理語句;順序處理語句; 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語句設(shè)計四選一電路語句設(shè)計四選一電路 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語句設(shè)計的四選一電路實(shí)現(xiàn)語句設(shè)計的四選一電路實(shí)現(xiàn)n上述程序所描述的是一個平衡結(jié)構(gòu)的四選一電路上述程序所描述的是一個平衡結(jié)構(gòu)的四選一電路.FGHOBUFabd0d1d2d3q用用IF語句設(shè)計四選一電路語句設(shè)計四選一電路 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語句設(shè)計四選一電路是權(quán)電路語句設(shè)計四選一電路是權(quán)電路GFd0abd1d2d3yF2.并

36、行描述語句并行描述語句n1進(jìn)程內(nèi)部所有的語句都是順序執(zhí)行的,進(jìn)程內(nèi)部所有的語句都是順序執(zhí)行的,n 2. 進(jìn)程和進(jìn)程之間是并行執(zhí)行的,進(jìn)程和進(jìn)程之間是并行執(zhí)行的,n 3進(jìn)程的啟動由進(jìn)程的啟動由PROCESS語句的敏感信號量表中的信語句的敏感信號量表中的信號量觸發(fā),也可以由號量觸發(fā),也可以由WAIT語句觸發(fā)。語句觸發(fā)。 (1) 進(jìn)程語句進(jìn)程語句 (進(jìn)程名:進(jìn)程名:)process(敏感信號表)敏感信號表) 變量說明語句;變量說明語句;begin 一組順序語句;一組順序語句;end process (進(jìn)程名進(jìn)程名);當(dāng)進(jìn)程中沒有敏感信號表時,進(jìn)程語句中必須當(dāng)進(jìn)程中沒有敏感信號表時,進(jìn)程語句中必須有其

37、他形式的敏感信號激勵;而當(dāng)進(jìn)程中有敏有其他形式的敏感信號激勵;而當(dāng)進(jìn)程中有敏感信號表時,進(jìn)程語句中不允許再出現(xiàn)感信號表時,進(jìn)程語句中不允許再出現(xiàn)wait、wait for、wait until和和wait on 中的任何一種敏感中的任何一種敏感信號激勵語句,否則出錯。信號激勵語句,否則出錯。用進(jìn)程設(shè)計用進(jìn)程設(shè)計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)程語句設(shè)計一位加法器利用進(jìn)程語句設(shè)計一位加法器 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)程語句的啟動進(jìn)程語句的啟動進(jìn)程語句有兩種工作狀態(tài):進(jìn)程語句有兩種工作狀態(tài):等待狀態(tài)等待狀態(tài)和和執(zhí)行執(zhí)行狀態(tài)狀態(tài)。當(dāng)敏感信號表中的信號沒有變化時,。當(dāng)敏感信號表中的信號沒有變化時,進(jìn)程處于等待狀態(tài);當(dāng)敏感信號表中

40、的信號進(jìn)程處于等待狀態(tài);當(dāng)敏感信號表中的信號有變化時,進(jìn)程處于執(zhí)行狀態(tài),將順序執(zhí)行有變化時,進(jìn)程處于執(zhí)行狀態(tài),將順序執(zhí)行進(jìn)程中的語句。當(dāng)最后一個語句執(zhí)行完后,進(jìn)程中的語句。當(dāng)最后一個語句執(zhí)行完后,就返回進(jìn)程語句的開始,等待下一次敏感信就返回進(jìn)程語句的開始,等待下一次敏感信號表中的信號變化。號表中的信號變化。n(4) 時間等待時間等待 WAIT FOR 時間表達(dá)式;時間表達(dá)式; 例如例如 :WAIT FOR 20nS;-同步點(diǎn)在延時同步點(diǎn)在延時20nS后,后, WAIT ON clk, interrupt FOR 5nS;-當(dāng)信號當(dāng)信號clk或或 interrupt變化變化5nS后啟動后啟動 進(jìn)

41、程。進(jìn)程。 (2)并發(fā)信號賦值語句)并發(fā)信號賦值語句 信號賦值語句在進(jìn)程內(nèi)部出現(xiàn)時,是順序描述語句,信號賦值語句在進(jìn)程內(nèi)部出現(xiàn)時,是順序描述語句,在進(jìn)程之外出現(xiàn)時,以并發(fā)語句的形式出現(xiàn)。是并在進(jìn)程之外出現(xiàn)時,以并發(fā)語句的形式出現(xiàn)。是并行執(zhí)行的,執(zhí)行順序與書寫順序無關(guān)。行執(zhí)行的,執(zhí)行順序與書寫順序無關(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)生右圖電路符號的例:產(chǎn)生右圖電路符號的VHDL程序程序(3) 條件信號賦值語句條件信號賦值語句 目標(biāo)信號目標(biā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) 選擇信號賦值語句選擇信號賦值語句 with 表達(dá)式表達(dá)式 select 目標(biāo)信號目標(biā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組件組件信號信號信號信號用用VHDL結(jié)構(gòu)實(shí)現(xiàn)結(jié)構(gòu)實(shí)現(xiàn)1G2G3GIN1IN2IN3IN4OUT1OUT2OUT31G2G3GIN1IN2IN3IN4OUT1OUT2OUT3ABXABXABXVHDL組件示例組件示例2輸入與門輸入與門XAB的的VHDL程序程序ENTITY and_gate IS PORT(A,B:IN BI

溫馨提示

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

評論

0/150

提交評論