VHDL數(shù)據(jù)類型(vhdl語法)PPT學(xué)習(xí)課件_第1頁
VHDL數(shù)據(jù)類型(vhdl語法)PPT學(xué)習(xí)課件_第2頁
VHDL數(shù)據(jù)類型(vhdl語法)PPT學(xué)習(xí)課件_第3頁
VHDL數(shù)據(jù)類型(vhdl語法)PPT學(xué)習(xí)課件_第4頁
VHDL數(shù)據(jù)類型(vhdl語法)PPT學(xué)習(xí)課件_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VHDL數(shù)據(jù)類型 FPGA應(yīng)用技術(shù) 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 在VHDL程序中 我們經(jīng)常會遇到這樣的語句 SignalA std logic VariableB std logic vector 7downto0 ConstantC integer 數(shù)據(jù)對象類型 數(shù)據(jù)類型 數(shù)據(jù)對象名 VHDL語言中的基本數(shù)據(jù)類型 邏輯類型 數(shù)值類型 布爾代數(shù) Boolean 位 Bit 標準邏輯 Std Logic 整數(shù) Integer 實數(shù) Real 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 邏輯數(shù)據(jù)類型 1 布爾代數(shù) Boolean 型 2 位 Bit 3 標準邏輯 Std logic typeBITis 0 1 typeBOOLEANis FALSE TRUE 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 標準邏輯類型TypeStd LogicIs U Undefined 未初始化 X ForcingUnknown 強未知 0 Forcing0 強0 1 Forcing1 強1 Z HignImpedance 高阻 W WeakUnknown 弱未知 L Weak0 弱0 H Weak1 弱1 Don tCare 忽略 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 標準邏輯類型對數(shù)字邏輯電路的邏輯特性描述更加完整 真實 因此在VHDL程序中 對邏輯信號的定義通常采用標準邏輯類型 邏輯序列 位序列 Bit Vector 標準邏輯序列 Std Logic Vector 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 Signaldata Std Logic Vector 7downto0 Signaladdr Bit Vector 0to3 序列的范圍大小聲明方式 To Downto 序列的使用 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 序列的分解與合成SignalA Std Logic Vector 3downto0 SignalB Std Logic Vector 0to3 SignalC Std Logic Vector 0to1 SignalD Std Logic Vector 1downto0 C A 2downto1 B A 3 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 數(shù)值類型 1 整數(shù)TypeIntegerIsRange 231 231 1限定整數(shù)取值范圍的方法 SignalA Integer SignalB IntegerRange0to7 SignalC IntegerRange 1to1 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 無符號數(shù)Unsigned與標準邏輯序列相似 聲明時必須指明其位數(shù) SignalA Unsigned 3downto0 SignalB Unsigned 7downto0 注意 必須使用downto形式 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 2 實數(shù)TypeRealIsRange 1 7E38to1 7E38 實數(shù)類型的表示可用科學(xué)計數(shù)形式或者帶小數(shù)點的形式 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 VHDL中的運算符 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 算術(shù)運算符 加 減 乘 除 乘方mod求模rem求余abs求絕對值 邏輯運算 and邏輯與or邏輯或nand與非nor或非xor異或xnor同或not邏輯非 關(guān)系運算符 等于 不等于大于 大于或等于注 其中 操作符也用于表示信號的賦值操作 連接符 將兩個數(shù)據(jù)對象或矢量連接成維數(shù)更大的矢量 它可給代碼書寫帶來方便 例如 vabc a b c 如果a 1 b 0 c 1 則vabc 101 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 用戶自定義數(shù)據(jù)類型 1 列舉數(shù)據(jù)類型Type列舉名稱is 元素1 元素2 例子 Typestateis S0 S1 S2 S3 SignalA state 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 2 數(shù)組類型Type數(shù)組名稱isArray 范圍 of數(shù)據(jù)類型 例子 TypeByteisArray 7downto0 ofBit Signalsdo Byte 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 數(shù)據(jù)類型的轉(zhuǎn)換在VHDL語言里 不同類型的數(shù)據(jù)信號之間不能互相賦值 當需要不同類型數(shù)據(jù)之間傳遞信息時 就需要類型轉(zhuǎn)換函數(shù)將其中的一種類型數(shù)據(jù)轉(zhuǎn)換為另一中數(shù)據(jù)類型后 再進行信號的傳遞 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 例如 SignalY Std logic vector 7downto0 SignalX Integerrange0to255 Y CONV STD LOGIC VECTOR X 8 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 CONV INTEGER將數(shù)據(jù)類型UNSIGNED SIGNED轉(zhuǎn)換為INTEGER類型 CONV UNSIGNED將數(shù)據(jù)類型INTEGER SIGNED轉(zhuǎn)換為UNSIGNED類型 CONV SIGNED將數(shù)據(jù)類型INTEGER UNSIGNED轉(zhuǎn)換為SIGNED類型 CONV STD LOGIC VECTOR將數(shù)據(jù)類型INTEGER UNSIGNED SIGNED STD LOGIC轉(zhuǎn)換為STD LOGIC VECTOR類型 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 數(shù)據(jù)對象 常量 信號 變量 DataObjects 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 1 常量定義格式 Constant常量名稱 數(shù)據(jù)類型 給定值 常量通常來來定義延遲和功耗等參數(shù) 注意 常數(shù)定義的同時進行賦初值 常數(shù)可以在實體說明 結(jié)構(gòu)體描述中使用 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 libraryieee useieee std logic 1164 all useieee std logic unsigned all 必需定義 entityexam1isport ip instd logic vector 3downto0 op outstd logic vector 3downto0 endexam1 architecturem1ofexam1isconstantnum integer 6 beginop ip num endm1 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 2 信號定義格式Signal信號名稱 數(shù)據(jù)類型 初始值 信號相當于電路內(nèi)部元件之間的物理連線 因此信號的賦值有一定的延遲時間 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 信號 數(shù)據(jù)對象 代表電路內(nèi)部信號或連接線路 其在元件之間起互連作用 注意 信號定義的時候盡管可以直接賦初值 但系統(tǒng)往往忽略 建議信號對象定義后再進行賦值 信號為全局量 在實體說明 結(jié)構(gòu)體描述和程序包說明中使用 信號賦值的語法格式為 信號名 表達式 如 SignalS1 Std logic vector 3Downto0 S1 0000 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 3 變量定義格式Variable變量名稱 數(shù)據(jù)類型 初始值 變量只能用于 進程 之中 變量的賦值是立即生效的 常用于高層次抽象的算法描述當中 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 變量 數(shù)據(jù)對象 它用于對中間數(shù)據(jù)的臨時存儲 并不一定代表電路的某一組件 注意 變量定義的時候盡管可以直接賦初值 但系統(tǒng)往往忽略 建議變量對象定義后再進行賦值 變量為局部量 僅限于進程 Process 或子程序中使用 變量賦值的語法格式為 目標變量 表達式 如 VariableS1 Std logic vector 3Downto0 S1 0000 二 VHDL數(shù)據(jù)類型與數(shù)據(jù)對象 信號和變量的比較 1 信號和變量的對應(yīng)關(guān)系不同 信號代表電路內(nèi)部信號或連接線路 而變量則不是 2 信號和變量聲明的位置不同 信號聲明在子程序 進程的外部 而變量聲明在子程序 進程的內(nèi)部 3 信號為全局量 而變量只在定義它的域中才可見 因此 變量不能在兩個進程之間傳遞信息 4 在一個進程中多次為一個信號賦值時 只有最后一個值會起作用 而變量則不同 每次賦值都會改變它的值 5 賦值不同 在進程中 信號賦值只有在進程結(jié)束時起作用 而變量賦值是立即進行的 而且賦值符號不同 信號賦值為 變量賦值為 數(shù)據(jù)對象屬性 1 數(shù)值類屬性 數(shù)組類型的數(shù)據(jù)對象 數(shù)值類屬性有 left right low high length 其中用符號 隔開對象名及其屬性 left表示數(shù)組的左邊界 right表示數(shù)組的右邊界 low表示數(shù)組的下邊界 high表示數(shù)組的上邊界 length表示數(shù)組的長度 如 SignalA std logic vector 7downto0 SignalB std logic vector 0to3 則這兩個信號的屬性值分別為 A left 7 A right 0 A low 0 A high 7 A length 8 B left 0 B right 3 B low 0 B high 3 B length 4 數(shù)據(jù)對象屬性 2 event屬性 event屬性 它的值為布爾型 如果剛好有事件發(fā)生在該屬性所附著的信號上 即信號有變化 則其取值為True 否則為False 利用此屬性可識別時鐘信號的變化情況 即時鐘是否發(fā)生 數(shù)據(jù)對象屬性 例如 時鐘邊沿表示 signalclk instd logic If clk eventandclk 1 thenQ Q 1 則clk eventandclk 1 表示時鐘的上升沿 即時鐘變化了 且其值為1 clk eventandclk 0 表示時鐘的下降沿 即時鐘變化了 且其值為0 數(shù)據(jù)對象屬性 例2 設(shè)計組合邏輯電路 設(shè)計一個1bit全加器 輸入X Y CI輸出Z CO libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entityfull bit adderisport a b ci instd logic y cout outstd logic endfull bit adder architecturebh1offull bit adderisbeginy nota and notb andci or nota and b and notci or a and notb and notci or a and b and ci cout bandci or aandci or aandb endbh1 architecturebh2offull bit adderisbeginy axorbxorci cout aandb or aandci or bandci endbh2 configurationcon1offull bit adderisforbh2endfor endcon1 1 觸發(fā)器設(shè)計 DQCP D觸發(fā)器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYdffISPORT cp d INSTD LOGIC q OUTSTD LOGIC ENDdff ARCHITECTUREaOFdffISBEGINprocess cp beginifcp eventandcp 1 thenq d endif endprocess ENDa 3 計數(shù)器設(shè)計 計數(shù)器 CLK Q LIBRARYieee USEieee std logic 1164 ALL USEieee std logic unsigned ALL USEieee std logic arith ALL ENTITYcounterISPORT clk inSTD LOGIC q bufferSTD LOGIC vec

溫馨提示

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

評論

0/150

提交評論