版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2024/2/4電子教案Page1of97哈爾濱工程大學付永慶VHDLANDITSAPPLICATIONS付永慶哈爾濱工程大學信息與通信工程學院信號與信息處理專業(yè)通信與信息系統(tǒng)專業(yè)VHDL語言及其應用2024/2/4電子教案Page2of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(1)
36學時
開課專業(yè)
課程性質(zhì)▲指選課/選修課
教材與參考書▲VHDL語言及其應用,付永慶,高等教育出版社,2005▲TheDesigner’sGuideto
VHDL,PeterJ.Arshenden,MorganKaufmannPublishers,2001
實驗設備▲PLD-1型可編程器件教學實驗箱/AlteraUP-1實驗板2024/2/4電子教案Page3of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(2)
教學目的▲
教授學生掌握VHDL語言工具和軟硬件聯(lián)合設計方法▲
培養(yǎng)學生獨立組織基于PLD器件的硬件實驗的能力
教學內(nèi)容第一部分VHDL綜述(2學時)第二部分VHDL語言的學習基礎(4學時)第三部分VHDL順序語句(2學時)第四部分VHDL的模型結(jié)構(gòu)(2學時)第五部分深入理解VHDL(2學時)第六部分VHDL設計舉例(2學時)第七部分上機練習和課程設計(22學時,含2-4學時的考核)▲
以VHDL’93為主,當遇到VHDL語句、語義與研發(fā)工具沖突時,以器件商的工具所支持的范圍為準
2024/2/4電子教案Page4of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(3)
考核與評分方法▲
提交書面設計報告及設計程序▲
演示硬件設計結(jié)果▲
評分起點50分+理論推導、建模、原理說明(10分)+演示正確性(15分)+創(chuàng)新性(15分)+設計合理性與人機界面(10分),總分×難度系數(shù)
指定設計題目
▲
漢字滾動顯示4個以上漢字,具有上、下、左、右滾動控制的能力,難度系數(shù)0.8▲直流數(shù)字電流表
測量范圍0~100mA,誤差≤1%,難度系數(shù)0.85
2024/2/4電子教案Page5of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(4)
指定設計題目
▲
自動量程頻率計測量范圍1Hz~1MHz,相對誤差≤1‰,難度系數(shù)0.95▲任意波形發(fā)生器
至少三種波形,頻率范圍10~1000Hz,步進量10Hz,難度系數(shù)0.9
▲FIR帶通濾波器
中心頻率200Hz,3dB帶寬20Hz,帶外衰減>10dB,難度系數(shù)1.1
▲FIR低通濾波器
截至頻率200Hz,帶外衰減>20dB,難度系數(shù)0.9▲基帶FSK電路f1=1250Hz,f2=2500Hz,波特率=625bps,難度系數(shù)1.0
▲基帶BPSK電路
fC=1250Hz,波特率=625bps,難度系數(shù)1.12024/2/4電子教案Page6of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(5)
指定設計題目
▲黑白字符顯示控制芯片
VGA模式,字符點陣32×32,字模32個,全屏10行每行10個字符,連續(xù)顯示輸入字符至少8個,難度系數(shù)1.0▲PS/2鍵盤控制器
接收鍵盤掃描碼,用LED顯示,難度系數(shù)0.75
▲多譜信號源
產(chǎn)生含50、100、200、300、400、500、600、700、800Hz等高譜線的的信號源,輸出電壓±2.5V、可調(diào)整,難度系數(shù)1.0
▲計算器
能對0~100范圍內(nèi)的整數(shù)完成加、減、乘、除運算,難度系數(shù)1.0▲邏輯分析儀
用示波器X-Y輸入設計一個8線邏輯信號分析儀,輸入頻率<1KHz,每屏顯示至少含4個周波,難度系數(shù)1.22024/2/4電子教案Page7of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(6)
指定設計題目▲
相位測量儀表可測雙路同頻信號50Hz~1KHz,相位差-45o~+45o,測量誤差≤1o,難度系數(shù)1.1
▲圖形顯示終端
用示波器屏幕顯示10個漢字,難度系數(shù)1.2
▲多用途信號源
為AD9854配置智能控制單元,產(chǎn)生ASK、FSK、PSK、FM、AM調(diào)制信號源,頻率范圍1~10MHz,增量0.1MHz,難度系數(shù)1.1▲設計USB接口
具有讀寫優(yōu)盤的能力,可顯示讀出數(shù)據(jù),難度系數(shù)1.1▲測溫儀表
測溫范圍20~40℃,誤差≤±1℃,難度系數(shù)1.02024/2/4電子教案Page8of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(7)
指定設計題目▲
超聲波測距范圍1~5米,測量誤差≤±0.01米,難度系數(shù)1.0
▲交流電壓表
測量范圍≤5伏,精度1%,難度系數(shù)1.1
選題與要求▲每題不超過10人,原則上僅允許同一導師的1名學生進入
▲報告必須有詳盡的原理分析和硬核實現(xiàn)結(jié)構(gòu)介紹,否則不給分▲實驗涉及的少量外部元件由學生負責,否則請選無花費的題目
▲允許自選題目,但須獲得批準
▲接受提前考核2024/2/4電子教案Page9of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(8)
設計報告格式
2024/2/4電子教案Page10of97哈爾濱工程大學付永慶VHDL語言及其應用—課程說明(9)
設計報告格式
2024/2/4電子教案Page11of97哈爾濱工程大學付永慶第一部分VHDL綜述(1)
什么是VHDL語言?▲
HDL語言是一種支持用形式化方法來描述數(shù)字邏輯電路和系統(tǒng)的語言
▲VHDL語言源于美國國防部發(fā)起的VHSIC(VeryHighSpeedIntegratedCircuits)計劃
▲1987年12月IEEE批準VHDL為標準HDL語言(IEEE-1076),稱為VHDL’87▲1993年修訂為VHDL’93,2001年修訂為VHDL2001▲
IEEE-1076.1VHDL-AMS,IEEE-1076.2MathematicalPackages,IEEE-1076.3SynthesisPackages,IEEE-1076.4VITAL,IEEEStandard1164Multi-valueLogicSystem
VHDL語言的優(yōu)點?
▲人機可讀性好
▲比圖形和布爾方程更簡潔
▲方便設計重用
▲容易實現(xiàn)設計仿真與驗證▲便于映射為IC芯片的制造工藝
2024/2/4電子教案Page12of97哈爾濱工程大學付永慶第一部分VHDL綜述(2)
自頂向下設計
▲VHDL語言支持自頂向下的系統(tǒng)劃分,直至劃分后的最底層單元能用圖元(primitiveelement)來實現(xiàn)為止
▲圖元就是基本邏輯單元、宏模型或IP_core
VHDL的基本模型
▲行為模型:用于描述數(shù)字器件或系統(tǒng)的功能,統(tǒng)指數(shù)學方程表示的模型
▲時序模型:用于描述數(shù)字器件或系統(tǒng)的激勵與響應間的關系,統(tǒng)指布爾方程表示的模型
▲結(jié)構(gòu)模型:用于描述自頂向下劃分系統(tǒng)形成的各個基本單元間的互連關系,統(tǒng)指用元件互連生成的電路模型
2024/2/4電子教案Page13of97哈爾濱工程大學付永慶第一部分VHDL綜述(3)
VHDL的基本設計流程
2024/2/4電子教案Page14of97哈爾濱工程大學付永慶第一部分VHDL綜述(4)
VHDL的主要應用領域
▲智能模塊(IP)的研發(fā)IP:用VHDL語言編寫,經(jīng)邏輯優(yōu)化和功能驗證的可生成VLSI中各種功能單元的軟件群,例如,無線通信產(chǎn)品、網(wǎng)上設備、中央處理器(通用CPU)、DSP、PCI、USB、嵌入式CPU
▲單芯片全功能集成系統(tǒng)設計:SoPC系統(tǒng)、嵌入式計算、ASIC驗證
▲功能可重置系統(tǒng)的設計:遠程系統(tǒng)升級、可重配置設計
FPGA的發(fā)展方向
▲多用途:CAM,RAM、PLL
▲高密度、低功耗、低成本:MAXII系列、CycloneII系列
▲嵌入硬核、超高速:Stratix系列、StratixII系列、StratixGX系列
▲超低成本:結(jié)構(gòu)化的ASICs,例如,HardCopy系列
▲嵌入CPU軟核:Nios、NiosII2024/2/4電子教案Page15of97哈爾濱工程大學付永慶第一部分VHDL綜述(5)Altera公司的最新FPGA芯片2024/2/4電子教案Page16of97哈爾濱工程大學付永慶第一部分VHDL綜述(6)Altera公司的SoC研發(fā)板2024/2/4電子教案Page17of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(1)書寫規(guī)定與基本句法單元▲
書寫規(guī)定保留字用黑體小寫字母表示類型字用小寫字母表示庫
用大寫字母表示標識符
用小寫字母表示簡化書寫
用<…>表示任選項
用[…]表示重復項
用{…}表示,有時也用之界定一段語句二選一
用
…
…
表示定義為
用::=表示語句分隔
用分號
“;”
表示特殊要強調(diào)的內(nèi)容
用黑體表示注釋
用
“--”
前綴2024/2/4電子教案Page18of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(2)書寫規(guī)定與基本句法單元▲
標識符基本標識符由VHDL’87支持,長度不能超過32個有效字符序列,字符集:0~9,a~z,A~Z和下劃線“_”
擴展標識符由VHDL’93,VHDL2001支持,首尾用反斜杠“\”定界,區(qū)分大小寫,總與基本標識符不同,字符集:ASCII碼,反斜杠字符要雙寫,允許任意字符,包括保留字、類型字▲
保留字類型字專用字保留字預留用于專門用途的標識符,VHDL’87,VHDL’93和VHDL2001有差別類型字用于表示數(shù)據(jù)類型的標識符專用字用于表示特別信息和常量的標識符2024/2/4電子教案Page19of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(3)書寫規(guī)定與基本句法單元▲數(shù)及表示法數(shù)制:二進制、十進制、十六進制書寫格式:被表示的數(shù)::=<基>#<用基表示的整數(shù)[.用基表示的整數(shù)]>#[<指數(shù)>]<基>為2~16之間的十進制正整數(shù),#號為定界符,<基>為10時可省略定界符和基。<指數(shù)>::=E[+]<十進制正整數(shù)>|E<–><十進制正整數(shù)>;<用基表示的整數(shù)>::=<擴展數(shù)字>{[下劃線]<擴展數(shù)字>};<擴展數(shù)字>::=<數(shù)字>|<字符>用字符A~F表示10~15的數(shù)字,不分大小寫。舉例:2#0001_0111_0010#8#562#16#172#3703.7E+2--整數(shù)370的表示2#0.100#8#0.4#16#0.8#--實數(shù)0.5的表示注意:在相鄰數(shù)字之間插入下劃線只為增加可讀性,對數(shù)值無影響。2024/2/4電子教案Page20of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(4)書寫規(guī)定與基本句法單元▲字符、串、位串字符:用單引號括起來,例如,‘A’、‘a(chǎn)’、‘%’串:用雙引號括起來。串內(nèi)包含雙引號字符時,用雙寫雙引號來表示。串長度超過一行,用運算符“&”把兩個子串連接起來,例如,“Astring”“Thisstringcontainsan″″embeddedstring″″init”“00001111zzzz”“”
位串:僅由0和1字符組成的串,用雙引號括起來,前綴符號
B代表二進制
O代表八進制
X代表十六進制例如,B“10”B“1111_0010_0001”--二進制位串O“072”
O“13”
o“372”--八進制位串
X“FA”X“0d”x“FFE0”--十六進制位串2024/2/4電子教案Page21of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(5)目標與分類▲信號、變量、常量和文件
從硬件的角度看,信號代表著實際電路中的某一連接線,而常量代表著實際電路中的電源或地。變量和文件沒有與硬件直接的對應關系,通常它們只作為暫存和交換信息的載體使用
信號抽象描述電路的導線,起保持改變的數(shù)值和連接子元件的作用。信號總是在元件的端口連接元件,元件間交換的信息僅通過信號傳送信號賦值不意味著立即更新其保持的原有內(nèi)容,因為任何對信號的賦值操作只能作為預定數(shù)值存儲在信號的驅(qū)動器中,僅當模擬時間經(jīng)過起同步作用的語句或再一次啟動了進程時才會發(fā)生更新動作。允許利用屬性存取過去和當前的數(shù)值,可以接受來自變量的賦值2024/2/4電子教案Page22of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(6)目標與分類▲信號、變量、常量和文件
信號信號說明語句的書寫格式為:signal<信號名>{,…}:<類型字>[約束范圍][:=<表達式>];例如:signaltemp_sum:std_logic_vector(3downto0):=“0011”;signala,b:std_logic;信號a和b取系統(tǒng)默認值,即:該類型的最左值或最小值‘0’。信號代入符為“<=”,例如:output<=axorbafter3ns;2024/2/4電子教案Page23of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(7)目標與分類▲信號、變量、常量和文件
變量
用于描述硬件的高層次特性,在綜合過程中可能推斷為存儲器件。存在兩種變量:規(guī)則變量和共享變量。
規(guī)則變量只能在子程序和進程語句中被說明和使用,是一個局部量。共享變量的作用范圍是全局的,即:跨越同級和向下的設計層次可見。VHDL’87標準只支持規(guī)則變量,VHDL’93和VHDL’2001標準既支持規(guī)則變量也支持共享變量。
不允許在進程和子程序中說明共享變量。
變量說明語句的書寫格式如下:variable<變量名>{,<…>}:<類型字>[約束范圍][:=<表達式>];
全局變量說明需加入保留字shared2024/2/4電子教案Page24of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(8)
目標與分類▲信號、變量、常量和文件
變量變量只在進程首次執(zhí)行時初始化,并在進程被掛起和重新激活時保持原有數(shù)值不變。共享變量除賦值機制與信號不同外,其他類同于信號。變量賦值語句的書寫格式為:[語句標號:]<變量名>:=<表達式>;例子:m:=1;counter:=counter+1;VHDL中對變量賦值是立即生效的。變量在賦值時不能用after引入附加延時例如,下列賦值語句是錯誤的。
op1:counter:=counter+1after2ns;
VHDL’87標準不支持語句標號的使用
2024/2/4電子教案Page25of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(9)目標與分類▲信號、變量、常量和文件
常量代表具有語義的常數(shù)值。說明時賦值,一旦被賦值,就在整個程序執(zhí)行中保持不變。書寫格式:constant<常量名>{,…}:<類型字>[:=<表達式>];例子:constantnumber_of_bytes:integer:=8;constantnumber_of_bits:integer:=8*number_of_bytes;constantm:integer:=user_function(a,b);--user_function為函數(shù)constantn:integer:=a+b;子程序中說明的常量,僅在子程序調(diào)用時有效,調(diào)用結(jié)束后它的值將被釋放,常量說明語句中缺少賦值時稱之為緩定常量。2024/2/4電子教案Page26of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(10)目標與分類▲信號、變量、常量和文件
文件僅支持讀寫操作,不支持綜合。不可以通過賦值來更新內(nèi)容,只能通過子程序?qū)ξ募M行讀寫操作。STD庫textio包提供對文件的全部支持內(nèi)容。
特殊目標端口、類屬(generic)、參量(parameter)及循環(huán)語句和生成語句的標號等。端口所包含的目標為信號,作用是為實體內(nèi)部數(shù)據(jù)與外部數(shù)據(jù)交換創(chuàng)建通道類屬的作用是為外部信息送入實體內(nèi)部提供通道,類屬傳送的信息均為靜態(tài)信息,即:常量。參量的作用類似于C語言中的形式參數(shù),參量在子程序中可以被說明為信號、變量或常量,而在函數(shù)中只能被說明為常量。2024/2/4電子教案Page27of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(11)數(shù)據(jù)類型▲標量類型、復合類型、尋址類型、文件類型
標量類型目標的數(shù)據(jù)值由單個元素構(gòu)成
復合類型目標的數(shù)據(jù)值由多個元素結(jié)組構(gòu)成
尋址類型指針類型,值指向存儲空間,用于建立目標間的聯(lián)系或控制存儲空間
文件類型外部文件存放的數(shù)據(jù)值序列的鏡像,用于數(shù)據(jù)讀入和寫出▲預定義類型、用戶自定義類型2024/2/4電子教案Page28of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(12)數(shù)據(jù)類型
整數(shù)類型(integer)位寬32位:值范圍-231+1~231-1,有符號數(shù)、無符號數(shù)、不能按bit操作子類型:自然數(shù)natural,正整數(shù)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_1001”▲預定義類型:STD庫提供、可直接引用2024/2/4電子教案Page29of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(13)數(shù)據(jù)類型▲預定義類型
時間類型(time)單位:fs、ps、ns、μs、ms、sec、min、hr
錯誤等級類型(severity)值狀態(tài):note(注意)
、warning(警告)、error(出錯)、failure(失敗)
尋址類型(line):指針類型,值指向存儲空間
文件類型(text):用于定義代表外部文件的目標▲用戶自定義類型:非隱含定義,需要type語句
整數(shù)類型(integer)、實數(shù)類型(real)、物理類型
枚舉類型(enumerated):離散值由左至右分配數(shù)值
組類型(array):限定性組、非限定性組(元素規(guī)模暫不定)
記錄類型(record):不同類型數(shù)據(jù)集合,不能直接產(chǎn)生硬件對應
尋址類型(access)和文件類型(file)2024/2/4電子教案Page30of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(14)數(shù)據(jù)類型▲自定義語句格式
標量類型定義type{<類型名>}{,…}is[<類型字>][約束范圍];
枚舉類型定義type{<類型名>}
{,…}is({<標識符>│<字符>}{,…});
限定性組類型定義type{<組類型名>}{,…}isarray({<下標界>}{,…})
of<類型字>;
<下標界>::=<類型字>│{<簡單表達式>{to│downto}<簡單表達式>}
或者<類型字>[range<簡單表達式>{to│downto}<簡單表達式>]
非限定性組類型定義
type{<組類型名>}{,…}isarray({<類型字>range<>}{,…})
of<類型字>;
2024/2/4電子教案Page31of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(15)數(shù)據(jù)類型▲自定義語句格式
物理類型定義type{<物理類型名>}{,…}is<約束范圍>
units<基本單位>;[{<導出單位>=<十進制數(shù)>│<以基表示的數(shù)><單位名>;}]
endunits<物理類型名>;
記錄類型定義type{<記錄名>}
{,…}isrecord{<元素名>{,…}:<類型字>;}
endrecord<記錄類型名>;
子類型定義subtype{<子類型名>}{,…}is<父類型字>[約束范圍];
組集合體({[<選擇列表>=>]<表達式>}{,…})命名結(jié)合、位置結(jié)合2024/2/4電子教案Page32of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(16)數(shù)據(jù)類型▲VHDL數(shù)據(jù)類型匯總
2024/2/4電子教案Page33of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(17)數(shù)據(jù)類型▲標量類型屬性數(shù)值類、函數(shù)類、信號類、數(shù)據(jù)類型類、數(shù)據(jù)范圍類,用于簡化書寫和獲取標量類型的信息
數(shù)值類屬性T’left--能給出T的取值范圍的左端值;T’right--能給出T的取值范圍的右端值;T’low--能給出T的取值范圍的低端值;T’high--能給出T的取值范圍的高端值;T’ascending--如果T的取值范圍按升序排列則為真,否則為假;T’image(x)--能給出一個表達x的值的串;T’value(s)--能給出由串s表達的T的值。2024/2/4電子教案Page34of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(18)數(shù)據(jù)類型▲標量類型屬性
函數(shù)類屬性T’pos(x)--能給出x在T中的位置號;T’val(n)--能給出在位置n處T的取值;T’succ(x)--能給出x值所在位置的下一個位置處的值;T’pred(x)--能給出x值所在位置的前一個位置處的值;T’leftof(x)--能給出x值所在位置的左邊位置處的值;T’rightof(x)--能給出x值所在位置的右邊位置處的值;例如,type
dayis(sun,mon,tue,wed,thu,fri,sat);Day’pos(sun)=0Day’val(3)=wed
Day’succ(thu)=friDay’pred(thu)=wedDay’leftof(mon)=sunDay’right(mon)=tue2024/2/4電子教案Page35of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(19)數(shù)據(jù)類型▲組類型屬性
A’left(N)——能給出A的第N維下標界的左邊界值;A’right(N)——能給出A的第N維下標界的右邊界值;A’low(N)——能給出A的第N維下標界的下邊界值;A’high(N)——能給出A的第N維下標界的上邊界值;A’range(N)——能給出A的第N維下標的取值范圍;A’reverse_range(N)——能給出A的第N維下標取值范圍的相反值;A’length(N)——能給出A的第N維下標界的長度;A’ascending(N)——如果A的第N維下標取值按升序排列則為真,否則為假;2024/2/4電子教案Page36of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(20)表達式與運算符▲表達式
由運算符和操作數(shù)組成▲運算符
特殊運算符:**、abs、not
乘法運算符:*、/、mod、rem
正、負運算符:+、-
加減運算符:+、-、&
移位運算符:sll、srl、sla、sra、rol、ror
關系運算符:=、/=、<、>、<=、>=
邏輯運算符:and、or、nand、nor、xor、xnor▲類型限定與類型轉(zhuǎn)換
類型限定:顯性表示數(shù)據(jù)的類型語句格式:<類型字>’(數(shù)據(jù))2024/2/4電子教案Page37of97哈爾濱工程大學付永慶第二部分VHDL語言的學習基礎
(21)表達式與運算符▲類型轉(zhuǎn)換2024/2/4電子教案Page38of97哈爾濱工程大學付永慶第三部分VHDL順序語句(1)順序語句建模進程、過程和函數(shù)功能的基本語句單元,僅用于進程、過程和函數(shù)中▲變量賦值語句
[<標號>:]<變量名>:=<表達式>;注:⑴<表達式>可以包含信號、變量和常量⑵賦值即刻生效例:signalsig:std_logic;--進程外部的信號sig……
event_on_sig:processisvariableflag:boolean:=false;--說明變量flag并賦初值begin
flag:=notflag;--變量賦值語句
waitonsig;
endprocessevent_on_sig;
2024/2/4電子教案Page39of97哈爾濱工程大學付永慶第三部分VHDL順序語句(2)順序語句▲簡單信號賦值語句
[<標號>:]<信號名><=[transport│inertial]<波形>;注:⑴<波形>::={<表達式>[after<時間表達式>]}{,…}
在并行語句區(qū)只為信號和常量,在順序語句區(qū)也可為變量
⑵transport表示傳輸延時,起平移信號波形的作用,inertial表示慣性延時,延時由第一個after后的參數(shù)值決定
⑶賦值不能立刻生效,暫存在信號驅(qū)動器中,待同步事件發(fā)生時賦值到信號例:mux:process(a,b,sel)is--a、b和sel為敏感信號begincaseseliswhen‘0’=>y<=aafter5ns;--若sel=‘0’,則a代入ywhen‘1’=>y<=bafter5ns;--若sel=‘1’,則b代入ywhenothers=>null;endcase;endprocessmux;2024/2/4電子教案Page40of97哈爾濱工程大學付永慶第三部分VHDL順序語句(3)順序語句▲等待語句用于取代進程語句的敏感信號列表為進程提供同步,有四種形式:
[<標號>:]wait--無限等待[<標號>:]waiton<信號名>{,…};--直到信號活動或變化時結(jié)束等待[<標號>:]waituntil<布爾表達式>;--直到條件為真時結(jié)束等待[<標號>:]waitfor<時間表達式>;--直到延時時間到時結(jié)束等待注:⑴<布爾表達式>至少要含有一個信號量,因進程一旦掛起,變量將不再改變,若要退出等待狀態(tài),只能靠信號的活動或變化引起布爾表達式的值為真⑵允許混合使用例:[<標號>:]
wait[on<信號列表>{,…}][until<布爾表達式>][for<時間表達式>];
⑶等待語句與敏感信號列表不能同時使用2024/2/4電子教案Page41of97哈爾濱工程大學付永慶第三部分VHDL順序語句(4)順序語句▲if語句:按條件執(zhí)行操作,用于表示VHDL模型的行為
[<標號>:]
if<條件表達式>then<順序語句>;[[{elsif<條件表達式>then<順序語句>;}][else<順序語句>;]]
endif;注:⑴<條件表達式>只能由關系運算符或邏輯運算符組成,給出布爾量⑵if語句不允許對信號邊沿做二選一處理⑶舉例說明例3-2中支持負整數(shù)運算的語句:
useIEEE.std_logic_signed.all;useIEEE.std_logic_arith.all;例3-3中clk’event
用于返回信號事件屬性
ifclr=‘1’thenq<=‘0’;
elsifclk’eventandclk=‘1’then
q<=d;
endif;2024/2/4電子教案Page42of97哈爾濱工程大學付永慶第三部分VHDL順序語句(5)順序語句▲case語句:執(zhí)行多選一操作,用于表示VHDL模型的行為
[<標號>:]
case<選擇表達式>is{when<選擇項>=><順序語句>;}endcase[<標號>];注:⑴<選擇項>::=<值表達式>|<離散值>|<值范圍>|others<值范圍>::=<值表達式>{downto|to}<值表達式>
⑵<選擇項>要覆蓋所有可能的取值,不允許重復使用它們
⑶每次只執(zhí)行一個分枝,when子句的位置不影響執(zhí)行結(jié)果2024/2/4電子教案Page43of97哈爾濱工程大學付永慶第三部分VHDL順序語句(6)順序語句▲循環(huán)語句:用于描述具有重復結(jié)構(gòu)或迭代運算的部分以簡化程序代碼,有三種形式:
loop語句
[<標號>:]
loop{<順序語句>;}endloop[<標號>];
for
loop語句
[<標號>:]
for<循環(huán)變量>in<離散范圍>loop{<順序語句>;}endloop[<標號>];注:⑴<離散范圍>::=<簡單表達式>{to|downto}<簡單表達式>
⑵<循環(huán)變量>為隱含定義、是整數(shù)、不允許修改2024/2/4電子教案Page44of97哈爾濱工程大學付永慶第三部分VHDL順序語句(7)順序語句▲循環(huán)語句:用于描述具有重復結(jié)構(gòu)或迭代運算的部分以簡化程序代碼,有三種形式:
whileloop語句
[<標號>:]while
<布爾表達式>
loop{<順序語句>;}endloop[<標號>];注:⑴<布爾表達式>為真執(zhí)行,否則結(jié)束⑵循環(huán)變量非隱含定義2024/2/4電子教案Page45of97哈爾濱工程大學付永慶第三部分VHDL順序語句(8)順序語句▲exit語句:循環(huán)控制語句,可強迫循環(huán)從正常執(zhí)行中跳到由語句標號所指定的新位置
exit[<語句標號>][when<條件>];注:缺省<語句標號>或when子句則跳到循環(huán)語句endloop后面執(zhí)行▲next語句:循環(huán)控制語句,可結(jié)束next語句后面的操作跳到由語句標號指定的環(huán)內(nèi)新位置,只能實現(xiàn)內(nèi)部循環(huán)控制
next[<語句標號>][when<條件>];例:process(x,y)isvariableeqi:std_ulogic;begin
eqi:=‘1’;foriinx’rangeloopnextwheneqi=‘0’;eqi:=eqiand(x(i)xnory(i))endloop;
eq<=eqi;endprocess;2024/2/4電子教案Page46of97哈爾濱工程大學付永慶第三部分VHDL順序語句(9)順序語句▲return語句:起結(jié)束當前最內(nèi)層過程體或函數(shù)體執(zhí)行的作用,有兩種形式:
當用于過程時,[<語句標號>:]return;
當用于函數(shù)時,[<語句標號>:]return<表達式>;
注:保證函數(shù)體不執(zhí)行到結(jié)尾的end并帶回函數(shù)的返回值,返回值數(shù)據(jù)類型必須滿足要求
▲
null語句:空操作,執(zhí)行該語句無任何動作,只是把運行操作指向下一條語句。
[<語句標號>:]null;
▲
assert語句:斷言語句來產(chǎn)生警告信息
assert<條件表達式>[report<報告信息>][severity<錯誤級別>];
注:⑴<條件表達式>為真,執(zhí)行下一條語句;否則輸出<報告信息>和報告<錯誤級別>⑵<報告信息>為文本說明信息。缺省report子句,默認消息為“assertionviolation”⑶<錯誤級別>為failure、error、warning和note。缺省severity子句默認為error2024/2/4電子教案Page47of97哈爾濱工程大學付永慶第三部分VHDL順序語句(10)順序語句▲report語句:類似于斷言語句的功能,用于給出信息報告
[<語句標號>:]report<報告信息>[severity<錯誤級別>];
注:⑴僅有VHDL’93標準和VHDL’2001標準支持report語句。⑵缺省severity子句時,report語句相當于VHDL’87標準中的一個條件為false、錯誤級別為note的assert語句
▲
過程調(diào)用語句:相當于一條順序語句或并行語句,在進程中使用為順序語句。過程調(diào)用將啟動對應過程體(子過程或函數(shù))的執(zhí)行[<語句標號>:]<過程名>[(實參數(shù)列表)];注:(實參數(shù)列表)是向過程體內(nèi)部傳遞信息的接口。實參數(shù)可為信號、變量或常量例:proc_miltiplier(a,b,y);--調(diào)用計算y=a*b的過程2024/2/4電子教案Page48of97哈爾濱工程大學付永慶第四部分VHDL的模型結(jié)構(gòu)(1)設計實體:VHDL的基本設計單元,由實體說明和構(gòu)造體兩部分組成▲實體說明:用于描述一個設計的外部視圖,即:定義實體名、界面接口、引入外部參數(shù)
entity<實體名>is[generic(<類屬參數(shù)表>);][port(<端口表>);][<說明語句區(qū)>]
endentity[<實體名>];注:⑴類屬子句:提供用于規(guī)定端口大小、元件數(shù)目、定時的參數(shù){[constant]<參數(shù)>{,…}:[in]<類型名>[:=<簡單表達式>]}{;…}⑵端口子句:用于定義端口引腳名、數(shù)據(jù)流向、數(shù)據(jù)類型{[signal]<端口名>{,…}:[<端口模式>]<類型名>[bus][:=<簡單表達式>]}{;…}
bus用于表示具有三態(tài)特性的端口
<端口模式>用于表示端口信號的輸入/輸出方向:in、out、inout、buffer、linkage
<簡單表達式>用于規(guī)定端口信號的缺省值,即:在非使用狀態(tài)時為端口信號提供上拉電平。一旦端口信號被使用,則缺省值便自動被忽略
2024/2/4電子教案Page49of97哈爾濱工程大學付永慶第四部分VHDL的模型結(jié)構(gòu)(2)設計實體:VHDL的基本設計單元,由實體說明和構(gòu)造體兩部分組成▲實體說明:
<說明語句區(qū)>允許使用子程序和體、類型和子類型、常量或信號說明語句的區(qū)域例:
libraryIEEE;useIEEE.std_logic_1164.all;entityramisport(addr:instd_logic_vector(15downto0);
data:outstd_logic_vector(31downto0);enable:instd_logic);--類型說明和過程說明部分
typeinstructionisarray(1to8)ofnatural;typeprogramisarray(naturalrange<>)ofinstruction;procedureinitialization(signalcontent:std_logic_vector(31downto0))isbegin
content<=(others=>’0’)after5ns;endprocedureinitialization;endentityram;2024/2/4電子教案Page50of97哈爾濱工程大學付永慶第四部分VHDL的模型結(jié)構(gòu)(3)設計實體:VHDL的基本設計單元,由實體說明和構(gòu)造體兩部分組成▲構(gòu)造體:用于描述一個設計的內(nèi)部視圖,即:一個設計要實現(xiàn)的具體功能,實體說明與構(gòu)造體必須結(jié)對使用,VHDL規(guī)定實體說明要放在構(gòu)造體的前面,并總是先編譯實體說明之后才能編譯構(gòu)造體,并把編譯結(jié)果存放在當前設計庫(WORK)中
architecture<構(gòu)造體名>of<實體名>is[<說明語句區(qū)>]
begin{<并行語句區(qū)>}
endarchitecture[<構(gòu)造體名>];
注:⑴<說明語句區(qū)>用于說明和定義內(nèi)部信號、常量、數(shù)據(jù)類型、子過程、元件等⑵內(nèi)部說明信號不必規(guī)定信號方向⑶<并行語句區(qū)>允許信號賦值、塊、進程、子程序調(diào)用、生成、元件例示等語句
例:
libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;
2024/2/4電子教案Page51of97哈爾濱工程大學付永慶第四部分VHDL的模型結(jié)構(gòu)(4)設計實體:VHDL的基本設計單元,由實體說明和構(gòu)造體兩部分組成
例:entitymultiplierisgeneric(n:positive:=8);port(x,y:instd_logic_vector(n-1downto0);product:outintegerrange0to65535);endentitymultiplier;architecturebehavofmultiplierisbeginprocessisvariablers:std_logic_vector(15downto0):=X"0000";variablerx:std_logic_vector(15downto0);begin
rx(15downto0):=X"00"&x;rs:=X"0000";foriiny'lowtoy'highloopify(i)='1'thenrs:=rs+rx;endif;
rx(15downto0):=rx(14downto0)&'0';endloop;
product<=conv_integer(rs);endprocess;endarchitecturebehav;2024/2/4電子教案Page52of97哈爾濱工程大學付永慶第四部分VHDL的模型結(jié)構(gòu)(5)構(gòu)造體功能的行為描述:并行信號賦值語句、進程語句是行為描述的基本單元▲并行信號賦值語句:由簡單信號賦值、條件信號賦值、選擇信號賦值語句組成
簡單信號賦值語句
條件信號賦值語句
[<語句標號>:]<信號名><=[<延遲機制>]{<波形>when<條件表達式>else}<波形>[when<條件表達式>];注:⑴<波形>::={<簡單表達式>[after<時間表達式>]}{,…}⑵<條件表達式>和<波形>對信號敏感,一旦激活會按序檢查由when所指定的條件,如果為真,則對應<波形>就代入信號,重復上述過程直至代入最后一個<波形>⑶最后一個<波形>可以缺省條件,不允許把信號代入自身的描述例:architecturebehavofmultiplexerisbegin
zmux:z<=d0whensel
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國鋼材貿(mào)易行業(yè)資本規(guī)劃與股權融資戰(zhàn)略制定與實施研究報告
- 2025-2030年中國公眾物業(yè)管理行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國紅外探測器行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國智慧屏行業(yè)全國市場開拓戰(zhàn)略制定與實施研究報告
- 2024中國建筑工程用機械制造行業(yè)分析報告
- 年產(chǎn)6萬噸銅項目可行性研究報告(模板)
- 年產(chǎn)汽車橫拉桿總成項目申請報告
- 廣東省湛江市廉江市2022-2023學年五年級上學期英語期末試卷
- 導播理論知識培訓班課件
- 防爆知識培訓課件教材
- 2024年道路清障拖車服務合同協(xié)議3篇
- 2025年1月八省聯(lián)考河南新高考物理試卷真題(含答案詳解)
- 建設工程檢試驗工作管理實施指引
- 軟件租賃合同范例
- 匯川技術在線測評題及答案
- 雙方個人協(xié)議書模板
- 廣東省廣州市2023-2024學年高一上學期期末物理試卷(含答案)
- 2024年四川省公務員錄用考試《行測》真題及答案解析
- 銀行內(nèi)部管理檔案制度
- 安徽省蕪湖市2023-2024學年高一上學期期末考試 物理 含解析
- 電氣自動化年終總結(jié)
評論
0/150
提交評論