VHDL語言-整套-課件-合一_第1頁
VHDL語言-整套-課件-合一_第2頁
VHDL語言-整套-課件-合一_第3頁
VHDL語言-整套-課件-合一_第4頁
VHDL語言-整套-課件-合一_第5頁
已閱讀5頁,還剩93頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2022/7/18電子教案 Page 1 of 97VHDL AND ITS APPLICATIONS付永慶哈爾濱工程大學信息與通信工程學院信號與信息處理專業通信與信息系統專業VHDL語言及其應用2022/7/18電子教案 Page 2 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(1) 36 學時 開課專業 課程性質 指選課/選修課 教材與參考書 VHDL語言及其應用 , 付永慶, 高等教育出版社,2005 The Designers Guide to VHDL, Peter J. Arshenden, Morgan Kaufmann Publishers,2001 實驗設備

2、 PLD-1型可編程器件教學實驗箱/Altera UP-1實驗板2022/7/18電子教案 Page 3 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(2) 教學目的 教授學生掌握VHDL語言工具和軟硬件聯合設計方法 培養學生獨立組織基于PLD器件的硬件實驗的能力 教學內容 第一部分 VHDL綜述 (2學時) 第二部分 VHDL語言的學習基礎 (4學時) 第三部分 VHDL順序語句 (2學時) 第四部分 VHDL的模型結構 (2學時) 第五部分 深入理解VHDL (2學時) 第六部分 VHDL設計舉例 (2學時) 第七部分 第八部分 上機練習和課程設計 (20學時,含2學時的考

3、核) 以VHDL93為主,當遇到VHDL語句、語義與研發工具 沖突時,以器件商的工具所支持的范圍為準 2022/7/18電子教案 Page 4 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(3) 考核與評分方法 提交書面設計報告及設計程序 演示硬件設計結果 評分起點50分+理論推導、建模、原理說明(10分)+演示 正確性(15分)+創新性(15分)+設計合理性與人機界面 (10分),總分難度系數 指定設計題目 漢字滾動顯示 4個以上漢字, 具有上、下、左、右滾動控制的能力,難度系數0.8 直流數字電流表 測量范圍 0100 mA, 誤差1%,難度系數 0.85 2022/7/1

4、8電子教案 Page 5 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(4) 指定設計題目 自動量程頻率計 測量范圍 1Hz1MHz, 相對誤差1,難度系數0.95 任意波形發生器 至少三種波形, 頻率范圍101000Hz,步進量10Hz,難度系數 0.9 FIR帶通濾波器 中心頻率200Hz,3dB帶寬20Hz,帶外衰減10dB,難度系數1.1 FIR低通濾波器 截至頻率200Hz,帶外衰減20dB,難度系數0.9 基帶FSK電路 f1=1250Hz, f2=2500Hz, 波特率=625bps, 難度系數1.0 基帶BPSK電路 fC=1250Hz, 波特率=625bps,

5、 難度系數1.12022/7/18電子教案 Page 6 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(5) 指定設計題目 黑白字符顯示控制芯片 VGA模式, 字符點陣3232, 字模32個,全屏10 行每行10個字符, 連續顯示輸入字符至少8個,難度系數1.0 PS/2鍵盤控制器 接收鍵盤掃描碼,用LED顯示, 難度系數 0.75 多譜信號源 產生含50、100、200、300、400、500、600、700、800Hz等高譜線的 的信號源,輸出電壓2.5V、可調整,難度系數1.0 計算器 能對0100范圍內的整數完成加、減、乘、除運算,難度系數1.0 邏輯分析儀 用示波器X

6、-Y輸入設計一個8線邏輯信號分析儀,輸入頻率1KHz,每 屏顯示至少含4個周波,難度系數1.22022/7/18電子教案 Page 7 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(6) 指定設計題目 相位測量儀表 可測雙路同頻信號50Hz1KHz,相位差 -45+ 45,測量誤差1,難 度系數1.1 圖形顯示終端 用示波器屏幕顯示10個漢字, 難度系數 1.2 多用途信號源 為AD9854配置智能控制單元,產生ASK、FSK、PSK、FM、AM調制 信號源,頻率范圍110MHz,增量0.1MHz,難度系數1.1 設計USB接口 具有讀寫優盤的能力,可顯示讀出數據,難度系數1.

7、1 測溫儀表 測溫范圍2040,誤差1 ,難度系數1.02022/7/18電子教案 Page 8 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(7) 指定設計題目 超聲波測距 范圍15米,測量誤差 0.01米,難度系數1.0 交流電壓表 測量范圍 5伏,精度1%,難度系數 1.1 選題與要求 每題不超過10人,原則上僅允許同一導師的1名學生進入 報告必須有詳盡的原理分析和硬核實現結構介紹,否則不給分 實驗涉及的少量外部元件由學生負責,否則請選無花費的題目 允許自選題目,但須獲得批準 接受提前考核2022/7/18電子教案 Page 9 of 97哈爾濱工程大學 付永慶VHDL語

8、言及其應用課程說明(8) 設計報告格式 2022/7/18電子教案 Page 10 of 97哈爾濱工程大學 付永慶VHDL語言及其應用課程說明(9) 設計報告格式 2022/7/18電子教案 Page 11 of 97哈爾濱工程大學 付永慶第一部分 VHDL綜述(1) 什么是VHDL語言? HDL語言是一種支持用形式化方法來描述數字邏輯電路和系統的語言 VHDL語言源于美國國防部發起的VHSIC(Very High Speed Integrated Circuits)計劃 1987年12月IEEE批準VHDL為標準HDL語言(IEEE-1076), 稱為VHDL87 1993年修訂為VHDL

9、93 ,2001年修訂為VHDL 2001 IEEE-1076.1 VHDL-AMS, IEEE-1076.2 Mathematical Packages, IEEE-1076.3 Synthesis Packages, IEEE-1076.4 VITAL, IEEE Standard 1164 Multi-value Logic System VHDL語言的優點? 人機可讀性好 比圖形和布爾方程更簡潔 方便設計重用 容易實現設計仿真與驗證 便于映射為IC芯片的制造工藝 2022/7/18電子教案 Page 12 of 97哈爾濱工程大學 付永慶第一部分 VHDL綜述(2) 自頂向下設計 VH

10、DL語言支持自頂向下的系統劃分,直至劃分后的最底層單元能用圖元 (primitive element)來實現為止 圖元就是基本邏輯單元、宏模型或IP_core VHDL的基本模型 行為模型:用于描述數字器件或系統的功能,統指數學方程表示的模型 時序模型:用于描述數字器件或系統的激勵與響應間的關系,統指布爾方程 表示的模型 結構模型:用于描述自頂向下劃分系統形成的各個基本單元間的互連關系, 統指用元件互連生成的電路模型 2022/7/18電子教案 Page 13 of 97哈爾濱工程大學 付永慶第一部分 VHDL綜述(3) VHDL的基本設計流程 2022/7/18電子教案 Page 14 of

11、 97哈爾濱工程大學 付永慶第一部分 VHDL綜述(4) VHDL的主要應用領域 智能模塊(IP)的研發 IP: 用VHDL語言編寫,經邏輯優化和功能驗證的可生成VLSI中各種 功能單元的軟件群,例如,無線通信產品、網上設備、中央處理 器(通用CPU)、DSP、PCI、USB、嵌入式CPU 單芯片全功能集成系統設計:SoPC系統、嵌入式計算、ASIC驗證 功能可重置系統的設計:遠程系統升級、可重配置設計 FPGA的發展方向 多用途:CAM,RAM、PLL 高密度、低功耗、低成本:MAX II系列、Cyclone II系列 嵌入硬核、超高速:Stratix系列、Stratix II系列、Stra

12、tix GX系列 超低成本:結構化的ASICs, 例如,HardCopy系列 嵌入CPU軟核:Nios、Nios II2022/7/18電子教案 Page 15 of 97哈爾濱工程大學 付永慶第一部分 VHDL綜述(5)Altera公司的最新FPGA芯片2022/7/18電子教案 Page 16 of 97哈爾濱工程大學 付永慶第一部分 VHDL綜述(6)Altera公司的SoC研發板2022/7/18電子教案 Page 17 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (1)書寫規定與基本句法單元 書寫規定保留字 用黑體小寫字母表示類型字 用小寫字母表示庫 用大寫字母

13、表示標識符 用小寫字母表示簡化書寫 用 表示任選項 用 表示重復項 用 表示,有時也用之界定一段語句二選一 用 表示定義為 用 := 表示語句分隔 用分號 “;” 表示特殊要強調的內容用黑體表示注釋 用 “-” 前綴2022/7/18電子教案 Page 18 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (2)書寫規定與基本句法單元 標識符基本標識符 由VHDL87支持, 長度不能超過32 個有效字符序列, 字符集:09,az, AZ和下劃線“_” 擴展標識符 由VHDL93,VHDL2001支持,首尾用反斜杠“”定界, 區分大小寫,總與基本標識符不同,字符集:ASCII碼

14、, 反斜杠字符要雙寫,允許任意字符,包括保留字、類型字 保留字 類型字 專用字保留字 預留用于專門用途的標識符,VHDL87,VHDL93和VHDL2001有差別類型字 用于表示數據類型的標識符專用字 用于表示特別信息和常量的標識符2022/7/18電子教案 Page 19 of 97第二部分 VHDL語言的學習基礎 (3)書寫規定與基本句法單元 數及表示法數制: 二進制、十進制、十六進制 書寫格式:被表示的數 := # 為216之間的十進制正整數, #號為定界符,為10時可省略 定界符和基。 := E+ | E ; := 下劃線; := | 用字符AF表示1015的數字,不分大小寫。 舉例:

15、2#0001_0111_0010# 8#562# 16#172# 370 3.7E+2 -整數370的表示2#0.100# 8#0.4# 16#0.8# -實數0.5的表示注意:在相鄰數字之間插入下劃線只為增加可讀性,對數值無影響。2022/7/18電子教案 Page 20 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (4)書寫規定與基本句法單元 字符、串、位串字符: 用單引號括起來,例如,A、a、%串:用雙引號括起來。串內包含雙引號字符時,用雙寫雙引號來表示。串長 度超過一行, 用運算符“&”把兩個子串連接起來, 例如, “A string” “This string

16、contains anembedded stringin it” “00001111zzzz” “” 位串:僅由0和1字符組成的串, 用雙引號括起來,前綴符號 B 代表二進制 O 代表八進制 X 代表十六進制 例如, B“10” B“1111_0010_0001” -二進制位串 O“072” O“13” o“372” -八進制位串 X“FA” X“0d” x“FFE0” -十六進制位串2022/7/18電子教案 Page 21 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (5)目標與分類信號、變量、常量和文件 從硬件的角度看,信號代表著實際電路中的某一連接線,而常量代表著

17、實際電路中的電源或地。變量和文件沒有與硬件直接的對應關系,通常它們只作為暫存和交換信息的載體使用 信號 抽象描述電路的導線,起保持改變的數值和連接子元件的作用。信號總是在元件的端口連接元件,元件間交換的信息僅通過信號傳送 信號賦值不意味著立即更新其保持的原有內容,因為任何對信號的賦值操作只能作為預定數值存儲在信號的驅動器中,僅當模擬時間經過起同步作用的語句或再一次啟動了進程時才會發生更新動作。 允許利用屬性存取過去和當前的數值,可以接受來自變量的賦值2022/7/18電子教案 Page 22 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (6)目標與分類 信號、變量、常量和

18、文件 信號信號說明語句的書寫格式為:signal ,: 約束范圍 := ;例如: signal temp_sum:std_logic_vector (3 downto 0) := “0011”; signal a, b:std_logic;信號a和b取系統默認值,即:該類型的最左值或最小值 0。信號代入符為“=”,例如: output = a xor b after 3 ns;2022/7/18電子教案 Page 23 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (7)目標與分類 信號、變量、常量和文件變量 用于描述硬件的高層次特性,在綜合過程中可能推斷為存儲器件。 存在

19、兩種變量:規則變量和共享變量。 規則變量只能在子程序和進程語句中被說明和使用,是一個局部量。 共享變量的作用范圍是全局的,即:跨越同級和向下的設計層次可見。 VHDL87標準只支持規則變量,VHDL93和VHDL2001標準既支持規則 變量也支持共享變量。 不允許在進程和子程序中說明共享變量。 變量說明語句的書寫格式如下: variable ,:約束范圍:=; 全局變量說明需加入保留字shared2022/7/18電子教案 Page 24 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (8) 目標與分類 信號、變量、常量和文件變量變量只在進程首次執行時初始化,并在進程被掛起

20、和重新激活時保持原有數值不變。共享變量除賦值機制與信號不同外,其他類同于信號。變量賦值語句的書寫格式為:語句標號: := ;例子: m := 1; counter := counter+1;VHDL中對變量賦值是立即生效的。變量在賦值時不能用after引入附加延時 例如,下列賦值語句是錯誤的。 op1: counter := counter+1 after 2 ns; VHDL87標準不支持語句標號的使用 2022/7/18電子教案 Page 25 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (9)目標與分類 信號、變量、常量和文件 常量 代表具有語義的常數值。說明時賦值

21、,一旦被賦值,就在整個程序執行中保持不變。書寫格式: constant ,: := ;例子: constant number_of_bytes : integer := 8; constant number_of_bits : integer := 8*number_of_bytes; constant m : integer := user_function(a,b); - user_function為函數 constant n : integer := a+b; 子程序中說明的常量,僅在子程序調用時有效,調用結束后它的值將被釋放,常量說明語句中缺少賦值時稱之為緩定常量。 2022/7/18

22、電子教案 Page 26 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (10)目標與分類 信號、變量、常量和文件 文件 僅支持讀寫操作,不支持綜合。不可以通過賦值來更新內容,只能通過子程序對文件進行讀寫操作。STD庫textio包提供對文件的全部支持內容。 特殊目標 端口、類屬(generic)、參量(parameter)及循環語句和生成語句的標號等。 端口所包含的目標為信號,作用是為實體內部數據與外部數據交換創建通道 類屬的作用是為外部信息送入實體內部提供通道,類屬傳送的信息均為靜態信息,即:常量。 參量的作用類似于C語言中的形式參數,參量在子程序中可以被說明為信號、變

23、量或常量,而在函數中只能被說明為常量。2022/7/18電子教案 Page 27 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (11)數據類型 標量類型、復合類型、尋址類型、文件類型 標量類型 目標的數據值由單個元素構成 復合類型 目標的數據值由多個元素結組構成 尋址類型 指針類型,值指向存儲空間,用于建立目標間的聯系或控制存儲空間 文件類型 外部文件存放的數據值序列的鏡像,用于數據讀入和寫出 預定義類型、用戶自定義類型2022/7/18電子教案 Page 28 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (12)數據類型 整數類型(integer)

24、 位寬32位:值范圍- 231+1231-1,有符號數、無符號數、不能按bit操作 子類型:自然數natural, 正整數positive 浮點類型(real) : 值范圍1.0e+38、用于行為仿真 布爾類型(boolean) : 值范圍 true、false 字符類型(character) ASCII碼: 0、1、A、 字符串類型(string): “0101”、“ABCDabcd” 位值類型 bit類型:1、0 std_logic類型: U、X 、0、1 、Z、W、 L、H 、- 位組類型 bit_vector類型:“1000_1010”/std_logic_vector類型:“zzzz

25、_1001” 預定義類型: STD庫提供、可直接引用2022/7/18電子教案 Page 29 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (13)數據類型 預定義類型 時間類型(time) 單位:fs、ps、ns、s、ms、sec、min、hr 錯誤等級類型(severity) 值狀態:note(注意) 、warning(警告) 、error(出錯) 、failure(失敗) 尋址類型(line): 指針類型,值指向存儲空間 文件類型(text): 用于定義代表外部文件的目標 用戶自定義類型:非隱含定義, 需要type語句 整數類型(integer)、實數類型(real

26、)、物理類型 枚舉類型(enumerated):離散值由左至右分配數值 組類型(array): 限定性組、非限定性組(元素規模暫不定) 記錄類型(record): 不同類型數據集合,不能直接產生硬件對應 尋址類型(access)和文件類型(file)2022/7/18電子教案 Page 30 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (14)數據類型 自定義語句格式 標量類型定義 type , is 約束范圍; 枚舉類型定義 type , is (, ) ; 限定性組類型定義 type , is array ( , ) of ; := todownto 或者 range

27、 todownto 非限定性組類型定義 type , is array ( range , ) of ; 2022/7/18電子教案 Page 31 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (15)數據類型 自定義語句格式 物理類型定義 type , is units ; = ; end units ; 記錄類型定義 type , is record , :; end record ; 子類型定義 subtype , is 約束范圍; 組集合體 (= , ) 命名結合、位置結合2022/7/18電子教案 Page 32 of 97哈爾濱工程大學 付永慶第二部分 VHD

28、L語言的學習基礎 (16)數據類型 VHDL數據類型匯總 2022/7/18電子教案 Page 33 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (17)數據類型 標量類型屬性 數值類、函數類、信號類、數據類型類、數據范圍類,用于簡化 書寫和獲取標量類型的信息 數值類屬性 Tleft - 能給出T的取值范圍的左端值; Tright - 能給出T的取值范圍的右端值; Tlow - 能給出T的取值范圍的低端值; Thigh - 能給出T的取值范圍的高端值; Tascending - 如果T的取值范圍按升序排列則為真,否則為假; Timage(x) - 能給出一個表達x的值的串

29、; Tvalue(s) - 能給出由串s表達的T的值。2022/7/18電子教案 Page 34 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (18)數據類型 標量類型屬性 函數類屬性 Tpos(x) - 能給出x在T中的位置號; Tval(n) - 能給出在位置n處T的取值; Tsucc(x) - 能給出x值所在位置的下一個位置處的值; Tpred(x) -能給出x值所在位置的前一個位置處的值; Tleftof(x) -能給出x值所在位置的左邊位置處的值; Trightof(x) -能給出x值所在位置的右邊位置處的值; 例如,type day is (sun,mon,t

30、ue,wed,thu,fri,sat); Daypos(sun) = 0 Dayval(3) = wed Daysucc(thu) = fri Daypred(thu) = wed Dayleftof(mon) = sun Dayright(mon) = tue2022/7/18電子教案 Page 35 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (19)數據類型 組類型屬性 Aleft(N) 能給出A的第N維下標界的左邊界值; Aright(N) 能給出A的第N維下標界的右邊界值; Alow(N) 能給出A的第N維下標界的下邊界值; Ahigh(N) 能給出A的第N維下

31、標界的上邊界值; Arange(N) 能給出A的第N維下標的取值范圍; Areverse_range(N) 能給出A的第N維下標取值范圍的相反值; Alength(N) 能給出A的第N維下標界的長度; Aascending(N) 如果A的第N維下標取值按升序排列則為真, 否則為假;2022/7/18電子教案 Page 36 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (20)表達式與運算符 表達式 由運算符和操作數組成 運算符 特殊運算符: *、abs、not 乘法運算符: *、/、mod、rem 正、負運算符: 、 加減運算符: 、& 移位運算符: sll、srl、sl

32、a、sra、rol、ror 關系運算符: =、/=、= 邏輯運算符: and、or、nand、nor、xor、xnor 類型限定與類型轉換 類型限定:顯性表示數據的類型 語句格式: (數據) 2022/7/18電子教案 Page 37 of 97哈爾濱工程大學 付永慶第二部分 VHDL語言的學習基礎 (21)表達式與運算符 類型轉換2022/7/18電子教案 Page 38 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(1)順序語句 建模進程、過程和函數功能的基本語句單元,僅用于進程、過程和函數中 變量賦值語句 : := ; 注:可以包含信號、變量和常量 賦值即刻生效 例:sig

33、nal sig:std_logic; -進程外部的信號sig event_on_sig: process is variable flag:boolean := false; -說明變量flag并賦初值 begin flag := not flag; -變量賦值語句 wait on sig; end process event_on_sig; 2022/7/18電子教案 Page 39 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(2)順序語句 簡單信號賦值語句 : = transportinertial; 注: := after , 在并行語句區只為信號和常量,在順序語句區也可

34、為變量 transport表示傳輸延時,起平移信號波形的作用,inertial表示慣性延時,延 時由第一個after后的參數值決定 賦值不能立刻生效,暫存在信號驅動器中,待同步事件發生時賦值到信號 例:mux : process (a,b,sel) is -a、b和sel為敏感信號 begin case sel is when 0 = y y null; end case; end process mux;2022/7/18電子教案 Page 40 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(3)順序語句 等待語句 用于取代進程語句的敏感信號列表為進程提供同步,有四種形式: :

35、 wait -無限等待 : wait on , ; -直到信號活動或變化時結束等待 :wait until ; -直到條件為真時結束等待 : wait for ; -直到延時時間到時結束等待 注:至少要含有一個信號量,因進程一旦掛起,變量將不再改變, 若要退出等待狀態,只能靠信號的活動或變化引起布爾表達式的值為真 允許混合使用 例: : wait on , until for ; 等待語句與敏感信號列表不能同時使用2022/7/18電子教案 Page 41 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(4)順序語句 if 語句: 按條件執行操作,用于表示VHDL模型的行為 : i

36、f then ; elsif then ; else ; end if; 注:只能由關系運算符或邏輯運算符組成,給出布爾量 if語句不允許對信號邊沿做二選一 處理 舉例說明 例3-2中支持負整數運算的語句: use IEEE.std_logic_signed.all;use IEEE.std_logic_arith.all; 例3-3中clkevent 用于返回信號事件屬性 if clr = 1 then q = 0; elsif clkevent and clk = 1 then q = d; end if;2022/7/18電子教案 Page 42 of 97哈爾濱工程大學 付永慶第三部分

37、 VHDL順序語句(5)順序語句 case語句: 執行多選一操作,用于表示VHDL模型的行為 : case is when = ; end case ;注: := |others := downto|to 要覆蓋所有可能的取值,不允許重復使用它們 每次只執行一個分枝,when 子句的位置不影響執行結果2022/7/18電子教案 Page 43 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(6)順序語句 循環語句:用于描述具有重復結構或迭代運算的部分以簡化程序代碼,有三種形式: loop語句 : loop ; end loop ; for loop語句 : for in loop

38、; end loop ; 注: := to|downto 為隱含定義、是整數、不允許修改2022/7/18電子教案 Page 44 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(7)順序語句 循環語句:用于描述具有重復結構或迭代運算的部分以簡化程序代碼,有三種形式: while loop語句 :while loop ; end loop ; 注:為真執行,否則結束 循環變量非隱含定義2022/7/18電子教案 Page 45 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(8)順序語句 exit語句:循環控制語句,可強迫循環從正常執行中跳到由語句標號所指定的新位置 e

39、xitwhen; 注:缺省 或when子句則跳到循環語句end loop后面執行 next語句:循環控制語句,可結束next語句后面的操作跳到由語句標號指定的環內 新位置,只能實現內部循環控制 nextwhen; 例:process (x, y) is variable eqi:std_ulogic; begin eqi := 1; for i in xrange loop next when eqi = 0; eqi := eqi and (x(i) xnor y(i) end loop ; eq = eqi; end process;2022/7/18電子教案 Page 46 of 97哈

40、爾濱工程大學 付永慶第三部分 VHDL順序語句(9)順序語句 return語句:起結束當前最內層過程體或函數體執行的作用,有兩種形式: 當用于過程時, : return; 當用于函數時, : return ; 注:保證函數體不執行到結尾的end并帶回函數的返回值,返回值數據類型必須滿足要求 null語句:空操作,執行該語句無任何動作,只是把運行操作指向下一條語句。 : null; assert語句:斷言語句來產生警告信息 assert report severity ; 注:為真,執行下一條語句;否則輸出和報告 為文本說明信息。缺省report子句,默認消息為“assertion violat

41、ion” 為failure、error、warning和note。缺省severity子句默認為error2022/7/18電子教案 Page 47 of 97哈爾濱工程大學 付永慶第三部分 VHDL順序語句(10)順序語句 report語句:類似于斷言語句的功能,用于給出信息報告 : report severity ; 注:僅有VHDL93標準和VHDL2001標準支持report語句。 缺省severity子句時,report語句相當于VHDL87標準中的一個條件為false、 錯誤級別為note的assert語句 過程調用語句:相當于一條順序語句或并行語句,在進程中使用為順序語句。 過程

42、調用將啟動對應過程體(子過程或函數)的執行 : (實參數列表) ; 注:(實參數列表)是向過程體內部傳遞信息的接口。實參數可為信號、變量或常量 例:proc_miltiplier (a,b,y); -調用計算y=a*b的過程 2022/7/18電子教案 Page 48 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(1)設計實體:VHDL的基本設計單元,由實體說明和構造體兩部分組成 實體說明:用于描述一個設計的外部視圖, 即:定義實體名、界面接口、引入外部參數 entity is generic (); port (); end entity ; 注: 類屬子句:提供用于規定端口

43、大小、元件數目、定時的參數 constant, : in:= ; 端口子句:用于定義端口引腳名、數據流向、數據類型 signal, : bus:= ; bus 用于表示具有三態特性的端口 用于表示端口信號的輸入/輸出方向:in、out、inout、buffer、linkage 用于規定端口信號的缺省值,即:在非使用狀態時為端口信號提供上 拉電平。一旦端口信號被使用,則缺省值便自動被忽略 2022/7/18電子教案 Page 49 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(2)設計實體:VHDL的基本設計單元,由實體說明和構造體兩部分組成 實體說明: 允許使用子程序和體、類型

44、和子類型、常量或信號說明語句的區域 例: library IEEE; use IEEE.std_logic_1164.all; entity ram is port(addr:in std_logic_vector(15 downto 0); data:out std_logic_vector(31 downto 0);enable :in std_logic); -類型說明和過程說明部分 type instruction is array (1 to 8) of natural; type program is array (natural range ) of instruction; p

45、rocedure initialization (signal content:std_logic_vector(31 downto 0) is begin content 0) after 5 ns; end procedure initialization; end entity ram;2022/7/18電子教案 Page 50 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(3)設計實體:VHDL的基本設計單元,由實體說明和構造體兩部分組成 構造體:用于描述一個設計的內部視圖, 即:一個設計要實現的具體功能,實體說明與 構造體必須結對使用,VHDL規定實體說明要放在構造體

46、的前面,并總是先編 譯實體說明之后才能編譯構造體,并把編譯結果存放在當前設計庫(WORK)中 architecture of is begin end architecture ; 注: 用于說明和定義內部信號、常量、數據類型、子過程、元件等 內部說明信號不必規定信號方向 允許信號賦值、塊、進程、子程序調用、生成、元件例示等語句 例: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; 2022/7/18電子教案 Page 51 of

47、97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(4)設計實體:VHDL的基本設計單元,由實體說明和構造體兩部分組成 例:entity multiplier is generic(n: positive := 8); port(x, y: in std_logic_vector(n-1 downto 0); product: out integer range 0 to 65535 ); end entity multiplier; architecture behav of multiplier is begin process is variable rs:std_logic_vec

48、tor(15 downto 0) := X0000; variable rx:std_logic_vector(15 downto 0); begin rx( 15 downto 0):= X00&x; rs:=X0000; for i in ylow to yhigh loop if y(i) = 1 then rs := rs + rx;end if; rx(15 downto 0) := rx(14 downto 0)&0; end loop; product = conv_integer(rs); end process; end architecture behav;2022/7/1

49、8電子教案 Page 52 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(5)構造體功能的行為描述:并行信號賦值語句、進程語句是行為描述的基本單元 并行信號賦值語句:由簡單信號賦值、條件信號賦值、選擇信號賦值語句組成 簡單信號賦值語句 條件信號賦值語句 : = when else when ; 注: := after , 和對信號敏感,一旦激活會按序檢查由when所指定的條件, 如果為真,則對應就代入信號,重復上述過程直至代入最后一個 最后一個可以缺省條件,不允許把信號代入自身的描述 例:architecture behav of multiplexer is begin zm

50、ux:z = d0 when sel = “00” else d1 when sel = “01” else d2 when sel = “10” else d3 when sel = “11” ; end architecture behav;2022/7/18電子教案 Page 53 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(6)構造體功能的行為描述:并行信號賦值語句、進程語句是行為描述的基本單元 并行信號賦值語句:由簡單信號賦值、條件信號賦值、選擇信號賦值語句組成 選擇信號賦值語句 : with select = when , when ; 注: 同條件信號賦值語句

51、:= | | | others := downto | to 對信號敏感,一旦激活會對所有的進行檢測不允許嵌套使用 和case語句一樣,既不允許的取值被遺漏也不允許重復使用它們 不允許把信號代入自身的描述2022/7/18電子教案 Page 54 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(7)構造體功能的行為描述:并行信號賦值語句、進程語句是行為描述的基本單元 并行信號賦值語句:由簡單信號賦值、條件信號賦值、選擇信號賦值語句組成 選擇信號賦值語句 例:entity full_adder is port(a,b,c_in:in bit;sum,c_out:out bit);

52、end entity full_adder; architecture truth_table of full_adder is begin with bit_vector(a,b,c_in) select -選擇信號賦值語句 (c_out,sum) = bit_vector(“00”) when “000”, bit_vector(“01”) when “001”, bit_vector(“01”) when “010”, bit_vector(“10”) when “011”, bit_vector(“01”) when “100”, bit_vector(“10”) when “101”

53、, bit_vector(“10”) when “110”, bit_vector(“11”) when “111”; end architecture behav;2022/7/18電子教案 Page 55 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(8)構造體功能的行為描述 信號屬性:用于得到有關信號事件和事項處理的歷史信息 信號類屬性 Sdelayed(t) 給出一個值與S相同,但被延遲t時間的信號 Sstable(t) 給出一個boolean型信號,若至今S在t時間內沒有事件發 生,則值為真,否則為假 Squiet(t) 給出一個boolean型信號,若至今S在t時間

54、內沒有事項處 理發生,即:靜待t時間,則值為真,否則為假 Stransaction 給出一個bit型信號,每當關于S的事項處理發生時,其值 便發生相對前值的翻轉 注: 省缺t時,取默認值0,并且生成的信號比S要延遲一個模擬時間 不允許在過程和函數中應用 信號屬性函數 Sevent 若在當前模擬周期內信號S有一個事件發生,則值為真, 否則為假 Sactive 若在當前模擬周期內信號S有一個事項處理發生,則值為 真,否則為假2022/7/18電子教案 Page 56 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(9)構造體功能的行為描述 信號屬性:用于得到有關信號事件和事項處理的歷

55、史信息 信號屬性函數 Slast_event 給出從信號S前一個事件發生至今所花費的時間 Slast_active 給出從信號S前一個事項處理發生至今所花費的時間 Slast_value 給出信號S在最近一個事件發生前那個時刻的值 注: 缺省t時,取默認值0,并且生成的信號比S要延遲一個模擬時間 不允許在過程和函數中應用 信號屬性關系圖例 2022/7/18電子教案 Page 57 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(10)構造體功能的行為描述 進程語句:由順序語句組成,通過信號或端口實現信息傳遞 : process () is begin ; end process

56、 ; 注:= , 若缺省,則進程內必須包含wait語句,但不允許同時使用wait語句和敏感信號表 允許說明常量、變量、類型及子程序,不允許說明非共享變量 變量只允許在進程內使用,進程外不可見。進程僅在首次執行時對變量初始化,之 后不管進程掛起與否,變量總保持運算的中間結果而不會丟失。 在模擬期間激活進程時,進程總是從第1條順序語句(或wait語句后的順序語句)開始 執行,然后連續運行直至它上一次被掛起的地方為止 例411說明2022/7/18電子教案 Page 58 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(11)構造體功能的行為描述 無源進程:由無源并行斷言語句、無源并行

57、過程調用語句、無源進程語句組成,用于 監視實體的運行 entity is generic (); port (); begin | | end entity ; 注:并行斷言語句、并行過程調用語句、進程語句中無信號賦值操作就是無源的 實體說明中包含的并行語句全局可見,不能以任何方式影響實體運行 并行assert語句:用于檢測行為建模中的錯誤,與串行assert語句格式相同 2022/7/18電子教案 Page 59 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(12)構造體功能的子結構描述:塊、子程序、元件是結構描述的基本單元 塊語句:能把多條并行語句聚合在一起的并行語句,用于

58、描述功能相對比較獨立的子結構 : block () is generic (); generic map(); port (); port map(); begin guarded ; end block ; 注:guarded代表由隱含說明的一個布爾型信號。 用于控制以 guarded做前綴的并行信號賦值語句的運行。若值為真,guarded就接通被它保護的并 行信號賦值語句的驅動器允許賦值操作;否則就切斷驅動器禁止賦值操作。沒有 guarded前綴的并行信號賦值語句將不受影響 類屬和端口子句用于為塊語句定義界面,作用與實體說明中的情況相類似。2022/7/18電子教案 Page 60 of

59、97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(13)構造體功能的子結構描述:塊、子程序、元件是結構描述的基本單元 塊語句 允許使用常量、類型、子類型、信號和子程序等說明語句。說明項目只 在塊內有效,塊外不可見。塊外說明的信號、類屬參數和端口信號,在塊內可用,當 塊內有同名說明項目時,塊內說明項目占優 允許在塊語句內部使用塊語句,即:允許對一個系統進行塊嵌套描述。但塊嵌套不 一定使設計結構變得清晰。實際上,塊嵌套主要用于配置語句,注意構造體本身也 等價于一個塊結構。 例: library IEEE;use IEEE.std_logic_1164.all; entity mux_2 is

60、 generic (sig_width: positive :=16); port (x0,x1:in std_logic_vector(0 to sig_width-1);sel:in std_logic; y:out std_logic_vector(0 to sig_width-1); end entity mux_2; architecture behav of mux_2 is begin 2022/7/18電子教案 Page 61 of 97哈爾濱工程大學 付永慶第四部分 VHDL的模型結構(14)構造體功能的子結構描述:塊、子程序、元件是結構描述的基本單元 塊語句 b1: blo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論