




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 硬件執(zhí)行:并發(fā)執(zhí)行(VHDL本質) 仿真執(zhí)行:順序執(zhí)行、并發(fā)執(zhí)行 分為兩大類:順序(Sequential)描述語句 并發(fā)(Concurrent)描述語句 ARCHITECTURE Process Process ENTITY Sequential Process Combinational Process portsports component VHDLVHDL順序語句(順序語句(SequentialSequential) 2 順序描述語句: 執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設計 語言的特點相似。順序語句只能用在進程與子程 序中。 常用的順序描述語句: 賦值語句; if語句;case語
2、句;loop語句; next語句;exit語句;子程序;return語句; wait語句;null語句。 3 一一 對象與賦值語句對象與賦值語句 所有對象均分為:變量和信號 對象 := 表達式; - 變量賦值 對象 = 表達式; - 信號賦值 要求:表達式的值必須與對象的類型、 寬度一致。 4 信號賦值延遲更新數(shù)值、時序電路; 變量賦值立即更新數(shù)值、組合電路。 5 例:信號賦值與變量賦值的比較 信號賦值: architecture rtl of sig is signal a,b : std_logic; - 定義信號 begin process(a, b) begin a = b ; b =
3、 a ; end process ; end rtl ; - 結果是 a 和 b 的值互換 6 變量賦值: architecture rtl of var is begin process variable a,b:std_logic; - 定義變量 begin a := b ; b := a ; end process ; end rtl; - 結果是a和b的值都等于b的初值 7 二、二、 轉向控制語句轉向控制語句 轉向控制語句通過條件控制開關決定是否執(zhí) 行一條或幾條語句,或重得執(zhí)行一條或幾條語句, 或跳過一條或幾條語句。 分為五種: if 語句、case 語句、 loop 語句、next
4、語句、 exit 語句 8 1 1、if if 語句語句 if 語句執(zhí)行一序列的語句,其次序依賴于一 個或多個條件的值。 1 1)if if 語句的門閂控制語句的門閂控制 例:if (ena = 1) then q = d; end if; 綜合后生成鎖存器(latch) if 條件 then 順序處理語句; end if ; 9 2 2)if if 語句的二選擇控制語句的二選擇控制 格式: 用條件來選擇兩條不同程序執(zhí)行的路徑。 if 條件 then 順序處理語句; else 順序處理語句; end if ; 10 此描述的典型電路是二選一電路: architecture rtl of mux
5、2 is begin process(a, b, sel) begin if (sel = 1) then y = a ; else y 順序處理語句; when 值 to 值 = 順序處理語句; when 值|值|值|值 = 順序處理語句; 以上三種方式的混合; when others = 順序處理語句; 15 Case 語句使用注意: 1)分支條件的值必須在表達式的取值范圍內。 2)兩個分支條件不能重疊。 3)CASE語句執(zhí)行時必須選中,且只能選中一 個分支條件。 4)如果沒有others分支條件存在,則分支條 件必須覆蓋表達式所有可能的值。 對std_logc, std_logic_ve
6、ctor數(shù)據(jù)類型 要特別注意使用others分支條件。 16 例:用case 語句描述四選一電路 17 3 3、Loop Loop 語句語句 loop 語句與其它高級語言中的循環(huán)語句 相似。Loop 語句有三種格式。 1 1)無限)無限 loop loop 語句語句 VHDL重復執(zhí)行 loop 循環(huán)內的語句, 直至遇到 exit 語句結束循環(huán)。 18 L2: loop a:=a+1; exit L2 when a 10; end loop L2; 19 2 2)for loop for loop 語句語句 特點: 循環(huán)變量是 loop 內部自動聲明的局部量, 僅在 loop 內可見;不需要指定
7、其變化方式。 離散范圍必須是可計算的整數(shù)范圍: 整數(shù)表達式 to 整數(shù)表達式 整數(shù)表達式 downto 整數(shù)表達式 標號:for 循環(huán)變量 in 離散范圍 loop 順序處理語句; end loop 標號; 20 21 3 3)while loop while loop 語句語句 例:sum:=0; i:=0; abcd: while (i10) loop sum:=sum+i; i:=i+1; end loop abcd; 注:循環(huán)變量 i 需事先定義、賦初值,并指定 其變化方式。一般綜合工具不支持 while loop 語句。 標號:while 循環(huán)條件 loop 順序處理語句; end
8、loop 標號; 22 4 4、Next Next 語句語句 在loop 語句中 next語句用來跳出本次循 環(huán)。 格式: 分三種情況: 1) 無條件終止當前的循環(huán),跳回到本次循環(huán) LOOP語句開始處,開始下次循環(huán)。 next 標號 when 條件表達式; next ; 23 2) 無條件終止當前的循環(huán),跳轉到指定標號 的LOOP語句開始處,重新開始執(zhí)行循環(huán)操作。 3) 當條件表達式的值為true,則執(zhí)行next語 句,進入跳轉操作,否則繼續(xù)向下執(zhí)行。 next 標號 ; next 標號 when 條件表達式; 24 5 5、 Exit Exit 語句語句 exit 語句將結束循環(huán)狀態(tài)。 格式
9、: next語句與exit語句的格式與操作功能 非常相似,區(qū)別是:next語句是跳向loop語句 的起始點,而exit語句則是跳向loop語句的終 點。 exit 標號 when 條件表達式; 25 三三 wait wait 語句語句 進程在仿真時的兩個狀態(tài): 執(zhí)行或掛起。 進程狀態(tài)的變化受wait 語句或敏感信號量變 化的控制。 可設置 4種不同的條件: wait - 無限等待 wait on - 敏感信號量變化 wait until - 條件滿足(可綜合) wait for - 時間到 26 1 1、wait on wait on 語句語句 格式: 例:以下兩種描述是完全等價的 敏感信號量
10、列表和 wait 語句只能選其一,兩 者不能同時使用。 wait on 信號,信號; process(a, b) begin y= a and b; end process; process begin y expression , parameter_ name = expression) ; 函數(shù)調用: function_name ( parameter_name = expression , parameter_name = expression) ; 31 五、五、return return 語句語句 return 語句只能用于子程序中,并用來終止 一個子程序的執(zhí)行。 格式: 分為:1
11、)return ; 用于過程,只是結束過程,不返回任何值。 2)return 表達式; 用于函數(shù),并且必須返回一個值。 return 表達式; 32 例:用于函數(shù)的return語句 function opt (a,b,sel: std_logic ) return std_logic is begin if sel = 1 then return ( a and b ); else return (a or b ); end if; end function opt; 33 六六 null null 語句語句 null為空語句,不作任何操作。格式: null; 34 3.5 VHDL3.5 V
12、HDL并發(fā)語句(并發(fā)語句(ConcurrentConcurrent) Architecture 并發(fā)語句 并發(fā)語句 并發(fā)語句 信號 信號 信號 35 常用的并發(fā)描述語句有: 進程(process)語句、 塊(block)語句、 順序描述語句的并行版本、 并行過程調用語句、 元件例化語句、 生成語句。 36 一、進程(一、進程(processprocess)語句)語句 進程(process)語句最具VHDL語言特色。提 供了一種用算法描述硬件行為的方法。 特點: 1、進程與進程,或其它并發(fā)語句之間的并發(fā)性; 2、進程內部的順序性; 3、進程的啟動與掛起; 4、進程與進程,或其它并發(fā)語句之間的通信
13、。 37 敏感信號表:進程內要讀取的所有敏感信號 (包括端口)的列表。每一個敏感 信號的變化,都將啟動進程。 格式: 標記: process ( 敏感信號表) 進程說明項 begin 順序描述語句 end process 標記; 信號名稱 ,信號名稱 38 3、如果有 wait 語句,則不允許有敏感信號表。 PROCESS (a,b) BEGIN -sequential statements END PROCESS; PROCESS BEGIN - sequential statements WAIT ON (a,b) ; END PROCESS; 39 二、塊語句二、塊語句 塊語句將一系列并
14、行描述語句進行組合,目 的是改善并行語句及其結構的可讀性??墒菇Y構 體層次鮮明,結構明確。 語法如下: 標記:block ( 塊保護表達式 ) 塊說明項 begin 并行語句 end block 標記 ; 40 1 1、塊語句的使用不影響邏輯功能、塊語句的使用不影響邏輯功能 以下兩種描述結果相同: 描述一: a1: out1=1 after 2 ns; a2: out2=1 after 2 ns; a3: out3=1 after 2 ns; 描述二: a1: out1=1 after 2 ns; blk1: block begin a2: out2=1 after 2 ns; a3: out
15、3=1 after 2 ns; end block blk1; 41 三三 并行信號賦值語句并行信號賦值語句 包括三種: 簡單并行信號賦值; 條件信號賦值; 選擇信號賦值。 共同特點: 1、賦值目標必須是信號,與其它并行語句同 時執(zhí)行,與書寫順序及是否在塊語句中無關。 2、每一信號賦值語句等效于一個進程語句。 所有輸入信號的變化都將啟動該語句的執(zhí)行。 42 1 1、簡單并行信號賦值語句、簡單并行信號賦值語句 即:信號 = 表達式 例:以下兩種描述等價 architecture behav of a_var is begin output=a(i); end behav; architectur
16、e behav of a_var is begin process(a, i) begin output=a(i); end process; end behav; 一個簡單并行信號賦值語句是一個進程的縮寫。 43 2 2、條件信號賦值語句、條件信號賦值語句 格式: 目的信號量 = 表達式1 when 條件1 else 表達式2 when 條件2 else 表達式3 when 條件3 else 表達式n; 44 例:用條件信號賦值語句描述四選一電路 entity mux4 is port(i0, i1, i2, i3, a, b : in std_logic; q : out std_logi
17、c); end mux4; architecture rtl of mux4 is signal sel : std_logic_vector (1 downto 0); begin sel=b q=i0 when sel = “00” else i1 when sel = “01” else i2 when sel = “10” else i3 when sel = “11”; end rtl; 45 3 3、選擇信號賦值語句、選擇信號賦值語句 格式: with 表達式 select 目的信號量 表達式 ,參數(shù)名= 表達式) 47 例:并行過程調用與串行過程調用 procedure adde
18、r( signal a, b: in std_logic; signal sum: out std_logic); adder(a1, b1, sum1); process(c1, c2) begin adder(c1, c2, s1); end process; 48 五 VHDLVHDL的層次化設計與元件聲明的層次化設計與元件聲明 (component)(component) 及元件例化(及元件例化(instantialinstantial)語句)語句 1 1、層次化設計、層次化設計 49 2. 2. 元件聲明元件聲明 定義:對所調用的較低層次的實體模塊 (元件)的名稱、類屬參數(shù)、端口 類
19、型、數(shù)據(jù)類型的聲明。 語法: component 元件名 is generic (類屬聲明); port (端口聲明); end component 元件名 ; 元件聲明類似實體聲明(entity) 50 例:元件聲明 51 3. 3. 元件的例化元件的例化 定義:把低層元件安裝(調用)到當前層次 設計實體內部的過程。 包括:類屬參數(shù)傳遞、元件端口映射。 例化名稱:元件名稱 generic map ( 類屬名稱 = 表達式 ,類屬名稱 = 表達式 ) port map ( 端口名稱 = 表達式 , 端口名稱 = 表達式 ); 例: u1:ADD generic map (N = 4) port
20、 map (x,y,z,carry); 52 端口映射方式:端口映射方式: 名稱關聯(lián)方式:名稱關聯(lián)方式: 低層次端口名 =當前層次端口名、信號名 例:or2 port map(o=n6,i1=n3,i2=n1) 位置關聯(lián)方式:位置關聯(lián)方式: (當前層次端口名,當前層次端口名,) 例:or2 port map( n3, n1,n6 ) 注:位置關聯(lián)方式中,例化的端口表達式 (信號)必須與元件聲明語句中的端口 順序一致。 53 一個低層次設計在被例化前必須有一個元件聲明。 ENTITY exam is PORT( ea, eb :IN STD_LOGIC_VECTOR(3 DOWNTO 0); e
21、y : OUT STD_LOGIC); END exam ; ARCHITECTURE exam_arch OF exam IS COMPONENT compare PORT( a : IN STD_LOGIC_VECTOR(3 DOWNTO 0); b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); y : OUT STD_LOGIC ); END COMPONENT; -元件聲明 BEGIN u1 : compare PORT MAP ( ea, eb, ey) ; -元件例化 END exam_arch ; 54 六六 生成語句生成語句 生成語句的作用:復制建立 0
22、 個或多個備份。 (并行結構) 分為兩類: for generate:采用一個離散的范圍決 定備份的數(shù)目。 If generate:有條件地生成 0 個或 1 個備份。 55 1 1、for generate for generate 語句語句 語法: 范圍:整數(shù)表達式 to 整數(shù)表達式 整數(shù)表達式 downto 整數(shù)表達式 for - loop 語句與 for generate 的比較: 標號:for 循環(huán)變量 in 范圍 generate 并行語句 end generate 標號; 56 例:用生成語句創(chuàng)建多個備份 component comp port (x : in bit ; y :
23、 out bit) ; end component ; signal a , b : bit_vector (0 to 7) ; gen : for I in arange generate u : comp port map (x = a( I ), y = b( I ) ; end generate gen ; 57 2 2、If generate If generate 語句語句 語法: if 語句與 If generate 的區(qū)別: 1、If generate 沒有類似于 if 語句的 else 或 elsif 分支語句。 2、if 語句是順序語句,If generate為并 行語句。
24、 標號:if 條件表達式 generate 并行語句 end generate 標號; 58 子程序的類型:子程序的類型: 過程(Procedure): 0 個或多個 in、inout、 或 out 參數(shù)。可獲得多個返回值。 函數(shù)(Function): 0 個或多個 in 參數(shù),一個 return 值。 只能獲得一個返回值。 過程可作為一種獨立的語句結構而單獨存在, 函數(shù)通常作為表達式的一部分來調用。 子程序包含兩部分:子程序包含兩部分:子程序聲明和子程序主體。 59 一、子程序聲明一、子程序聲明 1 1、過程聲明語法、過程聲明語法 參數(shù)聲明指明輸入輸出端口的數(shù)目和類型, 語法如下: 方式指參數(shù)的傳遞方向,有三種形式: in、out、inout Procedure 過程名(參數(shù)聲明); 參數(shù)名:方式 參數(shù)類型 ;參數(shù)名:方式 參數(shù)類型 60 2 2、函數(shù)聲明語法、函數(shù)聲明語法 參數(shù)聲明指明輸入輸出端口的數(shù)目和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《A day in the park》作業(yè)設計方案
- 個人消防責任書
- 協(xié)議合同和加盟合同范本
- 醫(yī)療器材加工合同范本
- 中藥炮制工中級習題庫+參考答案
- 生物制藥復習題+答案
- 農藝工中級??荚囶}(含答案)
- 接觸網(wǎng)中級工測試題
- 七律長征 教案教學設計
- 危廢傭金合同范本
- (2024年)神經(jīng)內科科室應急全新預案x
- 《起重機械安全評估規(guī)范》編制說明(征求意見稿)
- 廣州小學英語單詞分類識記表-注音版
- 人教版PEP五年級數(shù)學下冊教案(全冊 完整)
- 窗簾工程方案
- 2024年醫(yī)學高級職稱-全科醫(yī)學(醫(yī)學高級)筆試歷年真題薈萃含答案
- 國防動員建設總體規(guī)劃方案
- 教案檢查總結及整改措施
- 商品流通學課件
- 第2課《美麗的“缺牙巴”》課件
- 胃癌術后化療后護理查房
評論
0/150
提交評論