資源描述:
《硬件描述語言及器件5(侯伯亨版)》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、適合班級:0706044107060442教學東區(qū)11210H第五課VHDL語言構造體的描述方式行為描述方式(behaveioral)寄存器傳輸(RTL)描述方式(dataflow)結構描述方式(structural)三種描述方式所謂構造體的行為描述(BehavioralDescriptions),就是對整個系統的數學模型的描述。行為描述在EDA工程中稱為高層次描述或高級描述。在行為描述方式的程序中大量采用算術運算、關系運算、慣性延時、傳輸延時等難于進行邏輯綜合和不能進行邏輯綜合的VHDL語句。采用行為描述方式的VHDL語言程
2、序,在一般情況下只能用于行為層次的仿真,而不能進行邏輯綜合。行為描述方式代入語句延時語句多驅動器描述語句GENERIC語句在VHDL語言中一些專門用于描述系統行為的語句:代入語句是VHDL語言中進行行為描述的最基本的語句。代入語句最普遍的格式為:信號量<=敏感信號量表達式;代入語句例如:(1)a<=b;該語句的功能是a得到b的值,b為敏感量,b值發(fā)生變化時,該語句執(zhí)行;(2)z<=aNOR(bNANDc);3個敏感量a,b,c,無論哪一個的值發(fā)生變化時,該代入語句被執(zhí)行;(3)a<=bAFTER5ns;當b發(fā)生變化5ns以后才
3、代入到信號a。例4-1LIBRARYIEEE;--庫USEIEEE.STD_LOGIC_1164.ALL;--程序包ENTITYand2IS--實體PORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDand2;ARCHITECTUREand2_behaviourOFand2IS--構造體BEGINy<=aANDbAFTER5ns;ENDand2_behaviour;在VHDL語言中,存在兩種延時類型:慣性延時和傳輸延時。這兩種延時常用于VHDL語言的行為描述方式。延時語句在慣性模型中,系統或器件輸出
4、信號要發(fā)生變化必須有一段時間的延時,這段延時時間常被稱為系統或器件的慣性或稱慣性延時。在VHDL語言中,語句中如果不作特別說明,產生的延時一定是慣性延時。特點:當一個系統或器件的輸入信號變化周期小于它的慣性延時時,其輸出保持不變。幾乎所有器件都存在慣性延時,因此,硬件電路的設計人員為了逼真地仿真硬件電路的實際工作情況,在代入語句中總要加上慣性延時時間的說明。例如:a<=bAFTER5ns;慣性延時說明只在行為仿真時有意義,邏輯綜合時將被忽略,或者在邏輯綜合前必須去掉延時說明。慣性延時傳輸延時常用于描述總線延時、連接線的延時及A
5、SIC芯片中的路徑延時。傳輸延時不是缺省的,必須在語句中明確說明。舉例:傳輸延時b<=aAFTER20ns圖1慣性延時示例b<=TRANSPORTaAFTER20ns圖2傳輸延時示例在VHDL語言中,創(chuàng)建一個驅動器可以由一條信號代入語句來實現。當有多個信號并行輸出時,在構造體內部必須利用代入語句,對每個信號創(chuàng)建一個驅動器。多個驅動器的輸出連接到同一條信號線時,由判決函數決定輸出哪一個值。多驅動器的構造體應按如下方式描述:ARCHITECTUREsampleOFsampleISBEGINa<=bAFTER5ns;a<=dAFTE
6、R5ns;---爭議???多個賦值源ENDsample;多驅動器描述語句寄存器傳輸描述方式對于用行為描述方式的VHDL語言程序只有改寫為寄存器傳輸描述方式才能進行邏輯綜合。寄存器傳輸描述方式也稱為數據流描述方式。在RTL描述方式中有兩種不同的方法:(1)寄存器之間的功能描述方式;(2)寄存器硬件一一對應的直接描述方式。下面舉一個二選一電路的例子,用兩種不同的方法來描述該電路。功能描述的RTL描述方式entitymux2isport(input:instd_logic_vector(1downto0);sel:instd_log
7、ic;y:outstd_logic);endmux2;architecturemux2_dataflowofmux2isbeginy<=input(0)whensel=‘1'elseinput(1);endmux2_dataflow;此方法只需知道外部特性和功能就可以進行正確的描述。二選一電路Input(0)Input(1)sely硬件一一對應的RTL描述方式entitymux2isport(in0,in1,sel:instd_logic;y:outstd_logic);endmux2;architecturemux2_dat
8、aflowofmux2isSignaltmp1,tmp2,tmp3:std_logic;begintmp1<=in0ANDsel;tmp2<=in1AND(NOTsel);tmp3<=tmp1ORtmp2;y<=tmp3;endmux2_dataflow;此方法需要了解電路內