歡迎來到裝配圖網! | 幫助中心 裝配圖網zhuangpeitu.com!
裝配圖網
ImageVerifierCode 換一換
首頁 裝配圖網 > 資源分類 > PPT文檔下載  

《VHDL語言》PPT課件.ppt

  • 資源ID:20996351       資源大小:1.48MB        全文頁數(shù):112頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

《VHDL語言》PPT課件.ppt

3 VHDL語 言VHDL: VHSIC Hardware Description Language.3.1 VHDL語 言 基 礎3.2 VHDL基 本 結 構3.3 VHDL語 句3.4 狀 態(tài) 機 在 VHDL中 的 實 現(xiàn)3.5 常 用 電 路 VHDL程 序3.6 VHDL仿 真3.7 VHDL綜 合 HDL-Hardware Description Language 一 種 用 于 描 述 數(shù) 字 電 路 的 功 能 或 行 為 的 語 言 。 目 的 是 提 為 電 路 設 計 效 率 , 縮短 設 計 周 期 , 減 小 設 計 成 本 , 可 在 芯 片 制 造 前 進 行 有 效 的 仿 真 和 錯 誤 檢 測 。 優(yōu) 點 : HDL設 計 的 電 路 能 獲 得 非 常 抽 象 級 的 描 述 。 如 基 于 RTL(Register Transfer Level)描 述 的 IC, 可 用 于 不 同 的 工 藝 。 HDL設 計 的 電 路 , 在 設 計 的 前 期 , 就 可 以 完 成 電 路 的 功 能 級 的 驗 證 。 HDL設 計 的 電 路 類 似 于 計 算 機 編 程 。 常 用 的 HDL語 言 : VHDL 、 Verilog HDL VHDL是 美 國 國 防 部 在 20世 紀 80年 代 初 為 實 現(xiàn) 其 高 速 集 成 電 路硬 件 VHSIC計 劃 提 出 的 描 述 語 言 ; IEEE從 1986年 開 始 致 力 于 VHDL標 準 化 工 作 , 融 合 了 其 它ASIC芯 片 制 造 商 開 發(fā) 的 硬 件 描 述 語 言 的 優(yōu) 點 , 于 93年 形 成 了 標準 版 本 ( IEEE.std_1164) 。 1995年 , 我 國 國 家 技 術 監(jiān) 督 局 推 薦 VHDL做 為 電 子 設 計 自 動 化硬 件 描 述 語 言 的 國 家 標 準 。 VHDL 概 述 :VHDL VHSIC Hardwarter Description Language Very High speed integrated circuitVHSIC 覆 蓋 面 廣 , 系 統(tǒng) 硬 件 描 述 能 力 強 , 是 一 個 多 層 次 的 硬 件 描 述 語 言 ; VHDL語 言 具 有 良 好 的 可 讀 性 , 既 可 以 被 計 算 機 接 受 , 也 容 易 被 人 們所 理 解 ; VHDL語 言 可 以 與 工 藝 無 關 編 程 ; VHDL語 言 已 做 為 一 種 IEEE的 工 業(yè) 標 準 , 便 于 使 用 、 交 流 和 推 廣 。 VHDL語 言 的 不 足 之 處 : VHDL優(yōu) 點 : 設 計 的 最 終 實 現(xiàn) 取 決 于 針 對 目 標 器 件 的 編 程 器 , 工 具 的 不 同 會 導 致 綜合 質 量 不 一 樣 。 3.1.1 標 識 符 ( Identifiers)要 求 :l 首 字 符 必 須 是 字 母l 末 字 符 不 能 為 下 劃 線l 不 允 許 出 現(xiàn) 兩 個 連 續(xù) 的 下 劃 線l 不 區(qū) 分 大 小 寫l VHDL定 義 的 保 留 字 ( 關 鍵 字 ) , 不 能 用 作 標 識 符l 標 識 符 字 符 最 長 可 以 是 32個 字 符 。 注 釋 由 兩 個 連 續(xù) 的 虛 線 ( ) 引 導 。 3.1 VHDL語 言 基 礎 標 識 符 用 來 定 義 常 數(shù) 、 變 量 、 信 號 、 端 口 、 子 程 序 或 參 數(shù) 的 名 字 ,由 字 母 ( AZ, az) 、 數(shù) 字 ( 09) 和 下 劃 線 ( _) 字 符 組 成 。 例 如 : 關 鍵 字 ( 保 留 字 ) : 關 鍵 字 ( keyword) 是 VHDL中 具 有 特 別 含 義 的 單 詞 , 只能 做 為 固 定 的 用 途 , 用 戶 不 能 用 其 做 為 標 識 符 。 3.1.2 數(shù) 據 對 象 ( Date Objects) 常 量 ConstantConstant bus_width: integer := 8; -定 義 總 線 寬 度 為 常 數(shù) 8 數(shù) 據 對 象 包 括 常 量 、 變 量 、 信 號 和 文 件 四 種 類 型 。 常 量 是 對 某 一 常 量 名 賦 予 一 個 固 定 的 值 , 而 且 只 能 賦 值 一 次 。 通 常 賦值 在 程 序 開 始 前 進 行 , 該 值 的 數(shù) 據 類 型 則 在 說 明 語 句 中 指 明 。Constant 常 數(shù) 名 : 數(shù) 據 類 型 : 表 達 式Constant Vcc: real:=5.0; -定 義 Vcc的 數(shù) 據 類 型 是 實 數(shù) , 賦 值 為 5.0V 常 量 所 賦 的 值 應 和 定 義 的 數(shù) 據 類 型 一 致 ;常 量 在 程 序 包 、 實 體 、 構 造 體 或 進 程 的 說 明 性 區(qū) 域 內 必 須 加 以 說 明 。 定 義 在 程 序 包內 的 常 量 可 供 所 含 的 任 何 實 體 、 構 造 體 所 引 用 , 定 義 在 實 體 說 明 內 的 常 量 只 能 在 該實 體 內 可 見 , 定 義 在 進 程 說 明 性 區(qū) 域 中 的 常 量 只 能 在 該 進 程 內 可 見 。 Variable 變 量 名 : 數(shù) 據 類 型 : 初 始 值 ;Variable count: integer 0 to 255:=20 ; - 定 義 count整 數(shù) 變 量 , 變 化 范 圍 0 255, 初 始 值 為 20。 變 量 Variable 變 量 只 能 在 進 程 語 句 、 函 數(shù) 語 句 和 過 程 語 句 結 構 中 使 用 。 變量 的 賦 值 是 直 接 的 , 非 預 設 的 , 分 配 給 變 量 的 值 立 即 成 為 當 前 值 ,變 量 不 能 表 達 “ 連 線 ” 或 存 儲 元 件 , 不 能 設 置 傳 輸 延 遲 量 。變 量 賦 值 語 句 : 目 標 變 量 名 := 表 達 式 ;變 量 定 義 語 句 :x:=10.0; - 實 數(shù) 變 量 賦 值 為 10.0Y:=1.5+x; - 運 算 表 達 式 賦 值 , 注 意 表 達 式 必 須 與 目 標 變 量 的 數(shù) 據 類 型 相 同A(3 to 6):=(“1101”); -位 矢 量 賦 值 Signal 信 號 名 : 數(shù) 據 類 型 : 初 始 值Signal clock: bit := ; -定 義 時 鐘 信 號 類 型 , 初 始 值 為 0 信 號 Signal 信 號 表 示 邏 輯 門 的 輸 入 或 輸 出 , 類 似 于 連 接 線 , 也 可 以 表 達 存儲 元 件 的 狀 態(tài) 。 信 號 通 常 在 構 造 體 、 程 序 包 和 實 體 中 說 明 。信 號 定 義 語 句 :Signal count: BIT_VECTOR(3 DOWNTO 0); -定 義 count為 4位 位 矢 量信 號 賦 值 語 句 : 目 標 信 號 名 = 表 達 式 ; x=9;Z=x after 5 ns; - 在 5ns后 將 x的 值 賦 予 z 3.1.2 數(shù) 據 類 型l 布 爾 : (Boolean)l 位 : ( Bit ) TYPE BIT IS (0,1); -取 值 為 0和 1, 用 于 邏 輯 運 算 l 位 矢 量 : ( Bit_Vector ) TYPE BIT_VECTOR IS ARRAY (Natural range) OF BIT; - 基 于 Bit類 型 的 數(shù) 組 , 用 于 邏 輯 運 算 SIGNAL a: Bit_Vector(0 TO 7); SIGNAL a: Bit_Vector ( 7 DOWNTO 0) VHDL的 預 定 義 數(shù) 據 類 型 在 VHDL標 準 程 序 包 STANDARD中 定 義 好 , 實 際 使 用 過 程 中 , 已自 動 包 含 進 VHDL源 文 件 中 , 不 需 要 通 過 USE語 句 顯 式 調 用 。 TYPE BOOLEAN IS (FALSE, TRUE); - 取 值 為 FALSE和 TRUE, 不 是 數(shù) 值 , 不 能 運 算 , 一 般 用 于 關 系 運 算 符 l 整 數(shù) : (Integer) 取 值 范 圍 -(231-1) (231-1), 可 用 32位 有 符 號 的 二 進 制 數(shù) 表 示 variable a: integer range -63 to 63 在 實 際 應 用 中 , VHDL仿 真 器 將 Integer做 為 有 符 號 數(shù) 處 理 , 而VHDL綜 合 器 將 Integer做 為 無 符 號 數(shù) 處 理 ; 要 求 用 RANGE子 句 為 所 定 義 的 數(shù) 限 定 范 圍 , 以 便 根 據 范 圍 來 決 定 表 示 此信 號 或 變 量 的 二 進 制 數(shù) 的 位 數(shù) 。 l 字 符 : (Character) TYPE CHARACTER IS (NUL, SOH,STX, , , !,); -通 常 用 引 起 來 , 區(qū) 分 大 小 寫 ;l 字 符 串 : (String)VARIABLE string_var: STRING (1 TO 7);string_var:=“A B C D” ; - 通 常 用 “ ” 引 起 來 , 區(qū) 分 大 小 寫 ; l 實 數(shù) : (Real) 取 值 范 圍 -1.0E38 +1.0E38, 僅 用 于 仿 真 不 可 綜 合 1.0 -十 進 制 浮 點 數(shù) 8 43.6 e+4 -八 進 制 浮 點 數(shù) 43.6E-4 -十 進 制 浮 點 數(shù)l 時 間 : (Time) 物 理 量 數(shù) 據 , 完 整 的 包 括 整 數(shù) 和 單 位 兩 個 部 分 , 用 至 少 一 個 空 格 隔開 , 僅 用 于 仿 真 不 可 綜 合 ; fs,ps,ns,us,ms,sec,min,hrl 錯 誤 等 級 ( Severity Level) : 表 示 系 統(tǒng) 狀 態(tài) , 僅 用 于 仿 真 不 可 綜 合 ;TYPE severity_level IS (NOTE、 WARNING、 ERROR、 FAILURE); IEEE預 定 義 標 準 邏 輯 位 與 矢 量l 標 準 邏 輯 位 ( Std_Logic)l 標 準 邏 輯 位 矢 量 ( Std_Logic_vector)基 于 Std_Logic類 型 的 數(shù) 組 ; 使 用 Std_Logic和 Std_Logic_Vector要 調 用 IEEE庫 中 的 Std_Logic_1164 程 序 包 ; 就 綜 合 而 言 , 能 夠 在 數(shù) 字 器 件 中 實 現(xiàn) 的 是 “ 、 0、 1、 Z”四 種 狀 態(tài) 。 在 條 件 語 句 中 , 必 須 要 全 面 考 慮 Std_Logic的 所 有 可 能 取 值 情 況 , 否 則 綜合 器 可 能 會 插 入 不 希 望 的 鎖 存 器 。U: Uninitialized; X: Forcing Unkown; 0: Forcing 0 1: Forcing 1 Z: High Impedance W: Weak UnknownL: Weak 0 H: Weak 1 : Dont care 枚 舉 : type states is (idle, decision, read, write); type boolean is (false, true); type bit is (0, 1);數(shù) 組 : type value_type is array (127 downto 0) of integer; type matrix_type is array (0 to 15, 0 to 31) of std_logic; 用 戶 自 定 義l TYPE 數(shù) 據 類 型 名 IS 數(shù) 據 類 型 定 義 OF 基 本 數(shù) 據 類 型 或 TYPE 數(shù) 據 類 型 名 IS 數(shù) 據 類 型 定 義l SUBTYPE 子 類 型 名 IS 基 本 數(shù) 據 類 型 定 義 RANGE 約 束 范 圍subtype digit is integer range 0 to 9; 3.1.3 數(shù) 據 類 型 轉 換VHDL為 強 定 義 類 型 語 言 , 不 同 類 型 的 數(shù) 據 不 能 進 行 運 算 和 直 接 賦 值 。l 類 型 標 記 法Variable A: integer; Variable B: real;A= integer (B); B=real (A);l 函 數(shù) 法Conv_interger (A); -由 std_logic轉 換 為 integer型 , 在 std_logic_unsigned包 。l 常 數(shù) 轉 換 法 / 常 量 轉 換 法 Type conv_table is array(std_logic) of bit;Constant table: conv_table:=(0|L=0, 1|H=1, others=0);Signal a: bit; signal b: std_logic;A=table(b); - 將 std_logic型 轉 換 為 bit型 具 有 轉 換 表 性 質 的 常 數(shù) 在 “ STD_LOGIC_1164”、 “ STD_LOGIC_ARITH”和 “ STD_LOGIC_UNSIGNED”的 程 序 包 中 提 供 的 數(shù) 據 類 型 變 換 函 數(shù) 。 屬 性屬 性 提 供 的 是 關 于 信 號 、 類 型 等 的 指 定 特 性 。 event: 若 屬 性 對 象 有 事 件 發(fā) 生 , 則 生 成 布 爾 值 “ true”, 常 用 來 檢 查 時 鐘邊 沿 是 否 有 效 。上 升 沿 : Clock EVENT AND Clock=1 range: 生 成 一 個 限 制 性 數(shù) 組 對 象 的 范 圍 left: 生 成 數(shù) 據 類 型 或 數(shù) 據 子 類 型 的 左 邊 界 值 ;right , high, low, lengthrange: “0 to n” ; reverse_range: “ n downto 0” 運 算 符l 算 術 運 算 符 : , , *, / , MOD, REM , SLL , SRL , SLA, SRA , ROL , ROR , *, ABSl 關 系 運 算 符 : , / , , =l 邏 輯 運 算 符 : AND, OR, NAND, NOR, XNOR, NOT, XORl 賦 值 運 算 符 : l 其 他 運 算 符 : , , SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; .a = 10d(1)1 ; - 元 素 與 元 素 并 置 , 并 置 后 的 數(shù) 組 長 度 為 4 .IF a d = 101011 THEN . - 在 IF條 件 句 中 可 以 使 用 并 置 符 運 算 符 優(yōu) 先 級 別邏 輯 、 算 術 運 算 符 ( NOT, *, ABS) 乘 法 運 算 符 ( / , MOD, REM, * ) 正 負 運 算 符 : , , 加 減 、 并 置 運 算 符 : , , - 庫 、 程 序 包 的 說 明 調 用 USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider IS - 實 體 聲 明PORT(Clock: IN Std_logic; Clkout: OUT Std_logic);END;ARCHITECTURE Behavior OF FreDevider IS - 結 構 體 定 義SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock) BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF;END PROCESS;Clkout=Clk;END; VHDL的 基 本 設 計 單 元 結 構 : 程 序 包 說 明 、 實 體 說 明 和 結 構 體 說 明 三 部 分 。 3.2.1 實 體 ( Entity)ENTITY 實 體 名 IS GENERIC( 常 數(shù) 名 : 數(shù) 據 類 型 : 設 定 值 ) PORT( 端 口 名 1: 端 口 方 向 端 口 類 型 ; 端 口 名 2: 端 口 方 向 端 口 類 型 ; . . 端 口 名 n: 端 口 方 向 端 口 類 型 );END 實 體 名 ; 實 體 描 述 了 設 計 單 元 的 輸 入 輸 出 接 口 信 號 或 引 腳 , 是 設 計 實 體經 封 裝 后 對 外 的 一 個 通 信 界 面 。 ENTITY FreDevider ISPORT(Clock: IN Std_logic; Clokout: OUT Std_logic);END; 實 體 名 最 后 一 條 端 口 聲 明 語 句 無 分 號端 口 方 向 端 口 類 型端 口 名 實 體 名 由 設 計 者 自 由 命 名 , 用 來 表 示 被 設 計 電 路 芯 片 的 名 稱 ,但 是 必 須 與 VHDL程 序 的 文 件 名 稱 相 同 。 要 與 文 件 名 一 致 ; 例 如 : GENERIC( wide: integer:=32) ; -說 明 寬 度 為 32 GENERIC( tmp: integer:=1ns) ; -說 明 延 時 1 ns 類 屬 說 明 類 屬 為 設 計 實 體 與 外 界 通 信 的 靜 態(tài) 信 息 提 供 通 道 , 用 來 規(guī)定 端 口 的 大 小 、 實 體 中 子 元 件 的 數(shù) 目 和 實 體 的 定 時 特 性 等 。格 式 : GENERIC( 常 數(shù) 名 : 數(shù) 據 類 型 : 設 定 值 ; 常 數(shù) 名 : 數(shù) 據 類 型 : 設 定 值 ) ; 端 口 方 向 : IN, OUT, INOUT, BUFFER INOUTINOUTBUFFER“OUT”和 “ BUFFER”都 可 定 義 輸 出 端 口 ; 若 實 體 內 部 需 要 反 饋 輸 出信 號 , 則 輸 出 端 口 必 須 被設 置 為 “ BUFFER”, 而 不能 為 “ OUT”。 同 方 向 、 同 類 型 的 端 口 可 放 在 同 一 個 說 明 語 句 中 。ENTITY Full_adder IS PORT( a, b, c: IN BIT; sum, carry: OUT BIT ); END Full_adder; 3.2.2 結 構 體 (Architecture)ARCHITECTURE 結 構 體 名 OF 實 體 名 IS 聲 明 語 句 BEGIN 功 能 描 述 語 句END 結 構 體 名 ; 用 于 聲 明 該 結 構 體 將 用 到 的 信 號 、 數(shù) 據 類 型 、 常 數(shù) 、 子 程序 和 元 件 等 。 聲 明 的 內 容 是 局 部 的 。具 體 描 述 結 構 體 的 功 能 和 行 為 。 結 構 體 定 義 了 設 計 單 元 具 體 的 功 能 , 描 述 了 該 基 本 設 計 單 元 的行 為 、 元 件 和 內 部 的 連 接 關 系 。 一 個 實 體 可 對 應 多 個 結 構 體 , 每 個 結 構 體 代 表 該 實 體 功 能 的 不 同 實 現(xiàn) 方 案 或 不 同 實 現(xiàn) 方 式 。 同 一 時 刻 只 有 一 個 結 構 體 起 作 用 , 通 過 CONFIGURATION決 定 用 哪 個 結 構體 進 行 仿 真 或 綜 合 。 在 結 構 體 描 述 中 , 具 體 給 出 了 輸 入 、 輸 出 信 號 之 間 的 邏 輯 關 系 。 ARCHITECTURE Behavior OF FreDevider IS - 結 構 體 定 義SIGNAL Clk:Std_Logic; -信 號 聲 明BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF;END PROCESS;Clkout=Clk;END; 功 能 描 述 語 句進 程順 序語 句 3.2.3 庫 、 程 序 包 的 調 用LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;LIBRARY 庫 名 ;USE 庫 名 .程 序 包 名 .項 目 名 ; 調 用 此 程 序 包 中 所 有 的 資 源LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; USE IEEE.Std_Logic_Arith.ALL;USE IEEE.Std_Logic_Unsigned.ALL; 3.3 VHDL語 句3.3.1 并 行 語 句在 結 構 體 中 的 執(zhí) 行 是 同 時 進 行 , 執(zhí) 行 順 序 與 書 寫 順 序 無 關 。 并 行 信 號 賦 值 語 句l 簡 單 賦 值 語 句目 標 信 號 名 = 表 達 式 目 標 信 號 的 數(shù) 據 類 型 與 右 邊 表 達 式 一 致ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF; END PROCESS;Clkout=Clk; l 選 擇 信 號 賦 值 語 句WITH 選 擇 表 達 式 SELECT賦 值 目 標 信 號 = 表 達 式 1 WHEN 選 擇 值 1, 表 達 式 2 WHEN 選 擇 值 1, 表 達 式 n WHEN OTHERS; 選 擇 值 要 覆 蓋 所 有 可 能 情 況 , 若 不 能 一 一 指 定 , 用 OTHERS為 其 他 情況 找 個 出 口 ; 選 擇 值 必 須 互 斥 , 不 能 出 現(xiàn) 條 件 重 復 或 重 疊 的 情 況 。 LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY MUX ISPORT( Data0, Data1, Data2, Data3: IN Std_Logic_VECTOR(7 DOWNTO 0); Sel: IN Std_Logic_Vector(1 DOWNTO 0); DOUT: OUT Std_Logic_Vector(7 DOWNTO 0);END;ARCHITECTURE DataFlow OF MUX ISBEGIN WITH Sel SELECT DOUT= Data0 WHEN “00”, Data1 WHEN “01”, Data2 WHEN “10”, Data3 WHEN “11”,“ 00000000” WHEN OTHERS;END; 地 址 選 線 Sel 輸 出 DOUT00 Data001 Data110 Data211 Data34X1多 路 選 擇 器 l 條 件 信 號 賦 值 語 句賦 值 目 標 信 號 = 表 達 式 1 WHEN 賦 值 條 件 1 ELSE 表 達 式 2 WHEN 賦 值 條 件 2 ELSE 表 達 式 n WHEN 賦 值 條 件 n ELSE 表 達 式 ;各 賦 值 語 句 有 優(yōu) 先 級 的 差 別 , 按 書 寫 順 序 從 高 到 低 排 列 ;各 賦 值 條 件 可 以 重 疊 。 8輸 入 優(yōu) 先 編 碼 器I7I6I5 A2I4 A1I3 A0 I2I1I0高低優(yōu)先級LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY Priority_Encoder ISPORT( I: IN Std_Logic_VECTOR(7 DOWNTO 0); A: OUT Std_Logic_Vector(2 DOWNTO 0);END;ARCHITECTURE DataFlow OF Priority_Encoder ISBEGIN A=“111” WHEN I(7)=1 ELSE “110” WHEN I(6)=1 ELSE “101” WHEN I(5)=1 ELSE “100” WHEN I(4)=1 ELSE “011” WHEN I(3)=1 ELSE “010” WHEN I(2)=1 ELSE “001” WHEN I(1)=1 ELSE “000” WHEN I(0)=1 ELSE “111”;END; 進 程 語 句l 進 程 本 身 是 并 行 語 句 , 但 內 部 是 順 序 語 句 ;l 進 程 只 有 在 特 定 的 時 刻 ( 敏 感 信 號 發(fā) 生 變 化 ) 才 會 被 激 活 。 進 程 標 號 : PROCESS ( 敏 感 信 號 參 數(shù) 表 ) 聲 明 區(qū) ; BEGIN 順 序 語 句 END PROCESS 進 程 標 號 ;在 進 程 中 起 作 用 的 局 部 變 量 一 個 進 程 可 以 有 多 個 敏 感 信 號 , 任一 敏 感 信 號 發(fā) 生 變 化 都 會 激 活 進 程 進 程 語 句 定 義 順 序 語 句 模 塊 , 用 于 將 從 外 部 獲 得 的 信 號 值 ,或 內 部 的 運 算 數(shù) 據 向 其 他 的 信 號 進 行 賦 值 。 l 進 程 的 工 作 原 理 當 某 個 敏 感 信 號 的 值 發(fā) 生變 化 時 , 每 個 進 程 語 句 立即 完 成 進 程 內 順 序 語 句 所定 義 的 功 能 行 為 。執(zhí) 行 過 程 終 止 順 序 語 句 所 定 義 的 功能 行 為 的 結 果 可 以 賦 值 給信 號 , 并 通 過 信 號 被 其 他的 進 程 讀 取 或 賦 值 。 l 進 程 與 時 鐘在 每 個 上 升 沿 啟 動 一 次 進 程 ( 執(zhí) 行 進 程 內 所 有 的 語 句 ) 。上 升 沿 描 述 : Clock EVENT AND Clock=1 下 降 沿 描 述 : Clock EVENT AND Clock=0上 升 沿 描 述 : rising_edge (Clock)下 降 沿 描 述 : falling_edge (Clock) LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider ISPORT( Clock: IN Std_logic; Clkout: OUT Std_logic);END;ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk: Std_Logic;BEGIN PROCESS (Clock) 將 時 鐘 作 為 進 程 的 敏 感 信 號BEGIN IF rising_edge (Clock) THEN Clk=NOT Clk; 在 時 鐘 上 升 沿 執(zhí) 行 Clk=NOT Clk END IF;END PROCESS;Clkout=Clk;END; LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;ENTITY Counter ISPORT( RESET: IN Std_Logic; 異 步 復 位 信 號 Clock: IN Std_logic; 時 鐘 信 號 NUM: BUFFER Integer RANGE 0 TO 3); 計 數(shù) 器 輸 出 值END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS (RESET, Clock) 將 復 位 、 時 鐘 作 為 進 程 的 敏 感 信 號BEGIN IF RESET=1 THEN Num=0; 復 位 時 Num清 0 ELSIF rising_edge (Clock) THEN IF Num=3 THEN Num=0; 如 果 Num 3就 清 0 ELSE Num=Num+1; 否 則 自 加 1 END IF; END IF;END PROCESS;END; 仿 真 波 形 : LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;USE IEEE.Std_Logic_unsigned.ALL;ENTITY Counter ISPORT( clr : IN Std_Logic; inl: in std_logic_vector(3 downto 0); outl: out std_logic_vector(3 downto 0) 計 數(shù) 器 輸 出 值);END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS (clr, inl) 進 程 的 敏 感 信 號BEGIN IF (clr=1 or inl=“1001”) THEN outl=“0000”; ELSE outl=inl+1; END IF;END PROCESS;END; 重 載 符 號 , 在 庫 IEEE.Std_Logic_unsigned中 預 先 聲 明 LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;USE IEEE.Std_Logic_unsigned.ALL;ENTITY Counter ISPORT( clr, clk: IN Std_Logic; cnt: buffer std_logic_vector(3 downto 0) 計 數(shù) 器 輸 出 值);END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS BEGINWait until clkevent and clk=1; IF (clr=1 or cnt=9) THEN cnt=“0000”; ELSE cnt output output output output = s1; END CASE; END IF;END PROCESS;END; l 進 程 注 意 事 項 :l 進 程 本 身 是 并 行 語 句 , 但 內 部 為 順 序 語 句 ;l 進 程 在 敏 感 信 號 發(fā) 生 變 化 時 被 激 活 , 在 使 用 了 敏 感 表 的 進 程 中 不 能含 wait語 句 ;l 在 同 一 進 程 中 對 同 一 信 號 多 次 賦 值 , 只 有 最 后 一 次 生 效 ;l 在 不 同 進 程 中 , 不 可 對 同 一 信 號 進 行 賦 值 ;l 一 個 進 程 不 可 同 時 對 時 鐘 上 、 下 沿 敏 感 。l 進 程 中 的 信 號 賦 值 是 在 進 程 掛 起 時 生 效 的 , 而 變 量 賦 值 是 即 時 生 效 。l 相 對 于 結 構 體 而 言 , 信 號 具 有 全 局 性 , 是 進 程 間 進 行 并 行 聯(lián) 系 的 重 要 途 徑 。l 進 程 為 綜 合 器 支 持 , 且 其 建 模 方 式 直 接 影 響 仿 真 和 綜 合 結 果 , 綜 合后 對 應 于 進 程 的 硬 件 結 構 對 進 程 中 所 有 可 讀 入 信 號 都 是 敏 感 的 。SIGNAL A,B: Integer RANGE 0 TO 7; : PROCESS (Clock) BEGIN IF rising_edge (Clock) THEN : B=A+1; B連 接 端 口 名 , );要 插 在 電 路 系 統(tǒng) 板 上 的 芯 片 較 大 的 電 路 系 統(tǒng)電 路 板 上 準 備 接 受 芯 片 的 插 座元 件 定義 語 句 元 件 例 化 語 句列 出 對 外 通 信 的 各 端 口 名 當 前 系 統(tǒng) 與 準 備 接入 的 元 件 對 應 端 口 相 連的 通 信 端 口 。名 字 關 聯(lián) 方 式 : port map語 句 中 位 置 可 以 任 意 ;位 置 關 聯(lián) 方 式 : 端 口 名 和 關 聯(lián) 連 接 符 號 可 省 去 , 連接 端 口 名 的 排 列 方 式 與 所 需 例 化 的 元 件 端 口 定 義 中的 端 口 名 相 對 應 。 LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;ENTITY nd2 ISPORT( a, b: IN Std_Logic; c: out std_logic);END;ARCHITECTURE nd2behv OF nd2 IS BEGIN yc1, c=y, b=d1); 名 字 關 聯(lián) 方 式u3:nd2 PORT MAP( x, y, c=z1); 混 和 關 聯(lián) 方 式END; 元 件 例 化 : 1位 二 進 制 全 加 器內 部 端 口外 部 端 口 外 部 端 口內 部 端 口端 口 連 線 3.3.2 順 序 語 句 順 序 語 句 僅 出 現(xiàn) 在 進 程 和 子 程 序 中 。 順 序 語 句 綜 合 后 , 映 射 為 實 際 的 門 電 路 , 系 統(tǒng) 一 上 電 , 門 電 路 開 始 工作 。 電 路 可 實 現(xiàn) 邏 輯 上 的 順 序 執(zhí) 行 , 實 際 上 所 有 門 電 路 是 并 行 工 作 的 。l 賦 值 語 句l 流 程 控 制 語 句l 空 操 作 語 句l 等 待 語 句 l 子 程 序 調 用 語 句l 返 回 語 句 賦 值 語 句ENTITY TEST_Signal ISPORT( Reset, Clock: IN Std_logic; NumA, NumB: OUT Integer RANGE 0 TO 255);END;ARCHITECTURE TEST OF TEST_Signal IS SIGNAL A, B: Integer RANGE 0 TO 255; BEGIN PROCESS (RESET,Clock) VARIABLE C: Integer RANGE 0 TO 255; BEGIN IF RESET=1 THEN A=0; B=2;C:=0; ELSEIF rising_edge(Clock) THEN C:=C+1;A=C+1;B=A+2; END IF; END PROCESS; Num A=A; NumB=B;END; 流 程 控 制 語 句l IF語 句 :IF 條 件 式 THEN 順 序 語 句END IF;IF 條 件 式 THEN 順 序 語 句ELSE 順 序 語 句END IF; IF 條 件 式 THEN 順 序 語 句ELSEIF 條 件 式 2 THEN 順 序 語 句 ELSE 順 序 語 句END IF; 有 優(yōu) 先 級 用 IF語 句 描 述 組 合 邏 輯 電 路 時 , 務 必 涵 蓋 所 有 的 情 況 , 否 則綜 合 后 將 引 入 鎖 存 器 !ENTITY Encoder ISPORT( En: IN Std_logic; I: IN Std_logic_Vetor(7 DOWNTO 0); A: OUT Std_logic_Vetor(2 DOWNTO 0); Idle: OUT Std_logic);END;ARCHITECTURE Behavior OF Encoder IS BEGIN PROCESS (En, I)BEGIN IF En=1 THEN IF I(7)=1 THEN A=“111”; Idle=0; ELSIF IF I(6)=1 THEN A=“110”; Idle=0; ELSIF IF I(5)=1 THEN A=“101”; Idle=0; ELSIF IF I(4)=1 THEN A=“100”; Idle=0; ELSIF IF I(3)=1 THEN A=“011”; Idle=0; ELSIF IF I(2)=1 THEN A=“010”; Idle=0; ELSIF IF I(1)=1 THEN A=“001”; Idle=0; ELSIF IF I(0)=1 THEN A=“000”; Idle=0; ELSE A=“000”; Idle b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 順 序 語 句 ; WHEN 選 擇 值 |選 擇 值 =順 序 語 句 ; WHEN OTHERS=順 序 語 句 ;END CASE;l 選 擇 值 不 可 重 復 或 重 疊 ;l 當 CASE語 句 的 選 擇 值 無 法 覆 蓋 所 有 的 情 況 時 ,要 用 OTHERS指 定 未 能 列 出 的 其 他 所 有 情 況 的 輸 出 值 ; LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY MUX ISPORT( Data0, Data1, Data2, Data3: IN Std_Logic_VECTOR(7 DOWNTO 0); Sel: IN Std_Logic_Vector(1 DOWNTO 0); DOUT: OUT Std_Logic_Vector(7 DOWNTO 0);END; ARCHITECTURE DataFlow OF MUX IS BEGIN CASE Sel IS WHEN “00”= DOUT DOUT DOUT DOUT DOUTNULL; END CASE; END IF;END PROCESS; WAIT語 句 在 進 程 或 過 程 中 執(zhí) 行 到 WAIT語 句 時 , 程 序 將 被 掛 起 , 并 設置 好 再 次 執(zhí) 行 的 條 件 。WAIT ON 信 號 表 UNTIL 條 件 表 達 式 FOR 時 間 表 達 式 ; WAIT ; 未 設 置 停 止 掛 起 的 條 件 , 表 示 永 遠 掛 起 。 WAIT ON 信 號 表 ; 敏 感 信 號 等 待 語 句 , 敏 感 信 號 的 變 化 將 結 束掛 起 , 再 次 啟 動 進 程 。 WAIT UNTIL 條 件 表 達 式 ; 條 件 表 達 式 為 中 所 含 的 信 號 發(fā) 生 變 化 ,且 滿 足 WAIT語 句 所 設 條 件 , 則 結 束 掛 起 , 再 次 啟 動 進 程 。 WAIT FOR 時 間 表 達 式 ; 超 時 等 待 語 句 , 從 執(zhí) 行 當 前 的 WAIT語句 開 始 , 在 此 時 間 段 內 , 進 程 處 于 掛 起 狀 態(tài) , 超 過 這 一 時 間 段 后 , 程序 自 動 恢 復 執(zhí) 行 。 Configuration 配 置 名 of 實 體 名 is 配 置 說 明End 配 置 名 ;3.3.3 配 置 語 句 配 置 主 要 為 頂 層 設 計 實 體 指 定 結 構 體 , 或 為 參 與 例 化 的 元件 實 體 指 定 所 希 望 的 結 構 體 , 以 層 次 方 式 來 對 元 件 例 化 做 結 構配 置 。 Configuration 配 置 名 of 實 體 名 is 配 置 說 明End 配 置 名 ; 為 頂 層 設 計 實 體 指 定 結 構 體Entity nand is port ( a, b: in std_logic; c: out std_logic );End entity nand;Architecture one of nand is begin c=not (a and b);End architecture one;Architecture two of nand is begin cs, b=qf, c=q); u2:nand PORT MAP ( a=q, b=r, c=qf); END rsf; Configuration sel of rs is for rsf for u1,u2:nand use entity work.nand (two);end for;end for;End sel; 為 參 與 例 化 的 元 件 實 體 指 定 所 希 望 的 結 構 體 , 以 層 次 方 式 來 對元 件 例 化 做 結 構 配 置 。 3.4 狀 態(tài) 機 在 VHDL中 的 實 現(xiàn)3.4.1 Moore 狀 態(tài) 機 的 VHDL描 述輸 出 僅 取 決 于 其 所 處 的 狀 態(tài) 。 LIBRARY IEEE; USE IEEE.Std_ Logic_1164.ALL;ENTITY Moore ISPORT( Reset, Clock, DIN : IN Std_Logic; DOUT: OUT Std_Logic_Vetor(2 DOWNTO 0);END;ARCHITECTURE Mooremachine OF Moore ISTYPE State_type IS (S0, S1, S2, S3); 定 義 State_type為 枚 舉 型 數(shù) 據 類 型SIGNAL State: State_type;BEGINChange_State: PROCESS (Reset, Clock) 時 序 邏 輯 進 程BEGIN IF Reset=1 THEN State=S0; ELSEIF rising_edge(Clock) THEN CASE State IS WHEN S0= IF DIN=1 THEN State=S1; END IF; WHEN S1= IF DIN=1 THEN State=S2; END IF; WHEN S2= IF DIN=1 THEN State=S3; END IF; WHEN S3= IF DIN=1 THEN State=S0; ELSE StateDOUT DOUT DOUT DOUT =“111”; END CASE; END PROCESS;END; 仿 真 波 形 圖 : 時 鐘 同 步 Moore狀 態(tài) 機 結 構 圖 : LIBRARY IEEE; USE IEEE.Std_ Logic_1164.ALL;ENTITY Moore ISPORT( Reset,Clock, DIN : in Std_Logic; DOUT: out Std_Logic_Vetor(2 DOWNTO 0) );END;ARCHITECTURE Mooremachine OF Moore IS TYPE State_type IS (S0, S1, S2, S3); SIGNAL PresentState, NextState : State_type; 定 義 狀 態(tài) 轉 換 信 號 BEGINState_Reg: PROCESS (Reset, Clock) 狀 態(tài) 寄 存 器 BEGIN IF Reset=1 THEN 異 步 復 位 PresentState=S0; ELSEIF rising_edge(Clock) THEN PresentState=NextState; 時 鐘 上 升 沿 , 轉 換 至 下 一 狀 態(tài) END IF; END PROCESS; Change_State:PROCESS (PresentState, DIN) 組 合 邏 輯 進 程BEGIN CASE Present State IS WHEN S0= if DIN=1 then NextState=S1; else NextState=S0; end if; DOUT =“001”; WHEN S1= if DIN=1 then NextState=S2; else NextState=S1; end if ; DOUT =“011”; WHEN S2= if DIN=1 then NextState=S3; else NextState=S2; end if ; DOUT =“101”; WHEN S3= if DIN=1 then NextState=S0; else NextState=S1; end if ; DOUT =“111”; END CASE;END PROCESS;END; 仿 真 波 形 圖 : 3.4.2 Mealy 狀 態(tài) 機 的 VHDL描 述 : 輸 出 由 當 前 狀 態(tài) 與 輸 入 共 同 決 定 。 LIBRARY IEEE; USE IEEE.Std_ Logic_1164.ALL;ENTITY MealyMachine ISPORT( Reset ,Clock,DIN: IN Std_Logic; DOUT: OUT Std_Logic_Vetor(2 DOWNTO 0);END;ARCHITECTURE Statemachine OF MealyMachine ISTYPE State_type IS (S0, S1, S2, S3);SIGNAL State: State_type;BEGINChange_State: PROCESS (Reset, Clock)BEGIN IF Reset=1 THEN State=S0; ELSIF rising_edge(Clock) THEN CASE State IS WHEN S0= IF DIN=1 THEN State=S1; END IF; WHEN S1= IF DIN=1 THEN State=S2; END IF; WHEN S2= IF DIN=1 THEN State=S3; END IF; WHEN S3= IF DIN=1 THEN State=S0; ELSE StateIF DIN=0 THEN DOUT =“000”; ELSE DOUTIF DIN=0 THEN DOUT =“010”; ELSE DOUT IF DIN=0 THEN DOUT =“100”; ELSE DOUT IF DIN=0 THEN DOUT =“110”; ELSE DOUTState=Error; 使 狀 態(tài) 機 從 未 定 義 的 狀 態(tài) 跳 轉 到 處 理 出 錯 情 況 的 狀 態(tài) ;l 直 接 回 復 到 其 他 已 設 定 的 狀 態(tài) 。 3.4.4 狀 態(tài) 機 設 計 與 寄 存 器l 對 于 所 有 可 能 的 輸 入 條 件 , 當 進 程 中 的 輸 出 信 號 如 果 沒 有 被 完全 地 與 之 對 應 指 定 , 此 信 號 將 自 動 被 指 定 , 即 在 未 列 出 的 條 件 下保 持 原 值 , 這 意 味 著 引 入 了 寄 存 器 。l 在 狀 態(tài) 機 中 , 如 果 存 在 一 個 或 更 多 的 狀 態(tài) 沒 有 被 明 確 指 定 轉 換方 式 , 或 者 對 于 狀 態(tài) 機 中 的 狀 態(tài) 值 沒 有 規(guī) 定 所 有 的 輸 出 值 , 就 可能 引 入 寄 存 器 。 計 數(shù) 器 : 3.5 常 用 電 路 的 VHDL程 序 比 較 器 : 奇 數(shù) 倍 分 頻 : 8位 奇 偶 校 驗 電 路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY p_check IS PORT (a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);y: OUT STD_LOGIC);END p_check; ARCHITECTURE opt OF p_check I

注意事項

本文(《VHDL語言》PPT課件.ppt)為本站會員(san****019)主動上傳,裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!