《VHDL語言》PPT課件.ppt

上傳人:san****019 文檔編號:20996351 上傳時間:2021-04-21 格式:PPT 頁數(shù):112 大?。?.48MB
收藏 版權申訴 舉報 下載
《VHDL語言》PPT課件.ppt_第1頁
第1頁 / 共112頁
《VHDL語言》PPT課件.ppt_第2頁
第2頁 / 共112頁
《VHDL語言》PPT課件.ppt_第3頁
第3頁 / 共112頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《VHDL語言》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《VHDL語言》PPT課件.ppt(112頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、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ù) 字 電 路 的 功 能 或 行 為 的 語 言 。 目 的 是 提 為 電 路 設 計 效 率 , 縮短 設 計 周 期 , 減 小 設 計 成 本 , 可 在 芯 片 制 造 前 進 行

2、有 效 的 仿 真 和 錯 誤 檢 測 。 優(yōu) 點 : HDL設 計 的 電 路 能 獲 得 非 常 抽 象 級 的 描 述 。 如 基 于 RTL(Register Transfer Level)描 述 的 IC, 可 用 于 不 同 的 工 藝 。 HDL設 計 的 電 路 , 在 設 計 的 前 期 , 就 可 以 完 成 電 路 的 功 能 級 的 驗 證 。 HDL設 計 的 電 路 類 似 于 計 算 機 編 程 。 常 用 的 HDL語 言 : VHDL 、 Verilog HDL VHDL是 美 國 國 防 部 在 20世 紀 80年 代 初 為 實 現(xiàn) 其 高 速 集 成 電

3、 路硬 件 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

4、integrated circuitVHSIC 覆 蓋 面 廣 , 系 統(tǒng) 硬 件 描 述 能 力 強 , 是 一 個 多 層 次 的 硬 件 描 述 語 言 ; VHDL語 言 具 有 良 好 的 可 讀 性 , 既 可 以 被 計 算 機 接 受 , 也 容 易 被 人 們所 理 解 ; VHDL語 言 可 以 與 工 藝 無 關 編 程 ; VHDL語 言 已 做 為 一 種 IEEE的 工 業(yè) 標 準 , 便 于 使 用 、 交 流 和 推 廣 。 VHDL語 言 的 不 足 之 處 : VHDL優(yōu) 點 : 設 計 的 最 終 實 現(xiàn) 取 決 于 針 對 目 標 器 件 的 編 程 器

5、 , 工 具 的 不 同 會 導 致 綜合 質 量 不 一 樣 。 3.1.1 標 識 符 ( Identifiers)要 求 :l 首 字 符 必 須 是 字 母l 末 字 符 不 能 為 下 劃 線l 不 允 許 出 現(xiàn) 兩 個 連 續(xù) 的 下 劃 線l 不 區(qū) 分 大 小 寫l VHDL定 義 的 保 留 字 ( 關 鍵 字 ) , 不 能 用 作 標 識 符l 標 識 符 字 符 最 長 可 以 是 32個 字 符 。 注 釋 由 兩 個 連 續(xù) 的 虛 線 ( ) 引 導 。 3.1 VHDL語 言 基 礎 標 識 符 用 來 定 義 常 數(shù) 、 變 量 、 信 號 、 端 口 、

6、子 程 序 或 參 數(shù) 的 名 字 ,由 字 母 ( AZ, az) 、 數(shù) 字 ( 09) 和 下 劃 線 ( _) 字 符 組 成 。 例 如 : 關 鍵 字 ( 保 留 字 ) : 關 鍵 字 ( keyword) 是 VHDL中 具 有 特 別 含 義 的 單 詞 , 只能 做 為 固 定 的 用 途 , 用 戶 不 能 用 其 做 為 標 識 符 。 3.1.2 數(shù) 據(jù) 對 象 ( Date Objects) 常 量 ConstantConstant bus_width: integer := 8; -定 義 總 線 寬 度 為 常 數(shù) 8 數(shù) 據(jù) 對 象 包 括 常 量 、 變 量

7、 、 信 號 和 文 件 四 種 類 型 。 常 量 是 對 某 一 常 量 名 賦 予 一 個 固 定 的 值 , 而 且 只 能 賦 值 一 次 。 通 常 賦值 在 程 序 開 始 前 進 行 , 該 值 的 數(shù) 據(jù) 類 型 則 在 說 明 語 句 中 指 明 。Constant 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 表 達 式Constant Vcc: real:=5.0; -定 義 Vcc的 數(shù) 據(jù) 類 型 是 實 數(shù) , 賦 值 為 5.0V 常 量 所 賦 的 值 應 和 定 義 的 數(shù) 據(jù) 類 型 一 致 ;常 量 在 程 序 包 、 實 體 、 構 造 體 或 進 程 的 說

8、明 性 區(qū) 域 內 必 須 加 以 說 明 。 定 義 在 程 序 包內 的 常 量 可 供 所 含 的 任 何 實 體 、 構 造 體 所 引 用 , 定 義 在 實 體 說 明 內 的 常 量 只 能 在 該實 體 內 可 見 , 定 義 在 進 程 說 明 性 區(qū) 域 中 的 常 量 只 能 在 該 進 程 內 可 見 。 Variable 變 量 名 : 數(shù) 據(jù) 類 型 : 初 始 值 ;Variable count: integer 0 to 255:=20 ; - 定 義 count整 數(shù) 變 量 , 變 化 范 圍 0 255, 初 始 值 為 20。 變 量 Variable

9、變 量 只 能 在 進 程 語 句 、 函 數(shù) 語 句 和 過 程 語 句 結 構 中 使 用 。 變量 的 賦 值 是 直 接 的 , 非 預 設 的 , 分 配 給 變 量 的 值 立 即 成 為 當 前 值 ,變 量 不 能 表 達 “ 連 線 ” 或 存 儲 元 件 , 不 能 設 置 傳 輸 延 遲 量 。變 量 賦 值 語 句 : 目 標 變 量 名 := 表 達 式 ;變 量 定 義 語 句 :x:=10.0; - 實 數(shù) 變 量 賦 值 為 10.0Y:=1.5+x; - 運 算 表 達 式 賦 值 , 注 意 表 達 式 必 須 與 目 標 變 量 的 數(shù) 據(jù) 類 型 相 同

10、A(3 to 6):=(“1101”); -位 矢 量 賦 值 Signal 信 號 名 : 數(shù) 據(jù) 類 型 : 初 始 值Signal clock: bit := ; -定 義 時 鐘 信 號 類 型 , 初 始 值 為 0 信 號 Signal 信 號 表 示 邏 輯 門 的 輸 入 或 輸 出 , 類 似 于 連 接 線 , 也 可 以 表 達 存儲 元 件 的 狀 態(tài) 。 信 號 通 常 在 構 造 體 、 程 序 包 和 實 體 中 說 明 。信 號 定 義 語 句 :Signal count: BIT_VECTOR(3 DOWNTO 0); -定 義 count為 4位 位 矢 量

11、信 號 賦 值 語 句 : 目 標 信 號 名 = 表 達 式 ; x=9;Z=x after 5 ns; - 在 5ns后 將 x的 值 賦 予 z 3.1.2 數(shù) 據(jù) 類 型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);

12、 SIGNAL a: Bit_Vector ( 7 DOWNTO 0) VHDL的 預 定 義 數(shù) 據(jù) 類 型 在 VHDL標 準 程 序 包 STANDARD中 定 義 好 , 實 際 使 用 過 程 中 , 已自 動 包 含 進 VHDL源 文 件 中 , 不 需 要 通 過 USE語 句 顯 式 調 用 。 TYPE BOOLEAN IS (FALSE, TRUE); - 取 值 為 FALSE和 TRUE, 不 是 數(shù) 值 , 不 能 運 算 , 一 般 用 于 關 系 運 算 符 l 整 數(shù) : (Integer) 取 值 范 圍 -(231-1) (231-1), 可 用 32位

13、有 符 號 的 二 進 制 數(shù) 表 示 variable a: integer range -63 to 63 在 實 際 應 用 中 , VHDL仿 真 器 將 Integer做 為 有 符 號 數(shù) 處 理 , 而VHDL綜 合 器 將 Integer做 為 無 符 號 數(shù) 處 理 ; 要 求 用 RANGE子 句 為 所 定 義 的 數(shù) 限 定 范 圍 , 以 便 根 據(jù) 范 圍 來 決 定 表 示 此信 號 或 變 量 的 二 進 制 數(shù) 的 位 數(shù) 。 l 字 符 : (Character) TYPE CHARACTER IS (NUL, SOH,STX, , , !,); -通 常

14、用 引 起 來 , 區(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ù) 據(jù) , 完 整 的 包 括 整 數(shù) 和 單 位 兩

15、個 部 分 , 用 至 少 一 個 空 格 隔開 , 僅 用 于 仿 真 不 可 綜 合 ; 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ù) 組 ;

16、使 用 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

17、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ù) 據(jù) 類 型 名 IS 數(shù) 據(jù) 類

18、 型 定 義 OF 基 本 數(shù) 據(jù) 類 型 或 TYPE 數(shù) 據(jù) 類 型 名 IS 數(shù) 據(jù) 類 型 定 義l SUBTYPE 子 類 型 名 IS 基 本 數(shù) 據(jù) 類 型 定 義 RANGE 約 束 范 圍subtype digit is integer range 0 to 9; 3.1.3 數(shù) 據(jù) 類 型 轉 換VHDL為 強 定 義 類 型 語 言 , 不 同 類 型 的 數(shù) 據(jù) 不 能 進 行 運 算 和 直 接 賦 值 。l 類 型 標 記 法Variable A: integer; Variable B: real;A= integer (B); B=real (A);l 函 數(shù)

19、法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_1

20、164”、 “ STD_LOGIC_ARITH”和 “ STD_LOGIC_UNSIGNED”的 程 序 包 中 提 供 的 數(shù) 據(jù) 類 型 變 換 函 數(shù) 。 屬 性屬 性 提 供 的 是 關 于 信 號 、 類 型 等 的 指 定 特 性 。 event: 若 屬 性 對 象 有 事 件 發(fā) 生 , 則 生 成 布 爾 值 “ true”, 常 用 來 檢 查 時 鐘邊 沿 是 否 有 效 。上 升 沿 : Clock EVENT AND Clock=1 range: 生 成 一 個 限 制 性 數(shù) 組 對 象 的 范 圍 left: 生 成 數(shù) 據(jù) 類 型 或 數(shù) 據(jù) 子 類 型 的 左

21、 邊 界 值 ;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 DOWN

22、TO 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 - 實

23、體 聲 明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

24、 實 體 ( Entity)ENTITY 實 體 名 IS GENERIC( 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 設 定 值 ) PORT( 端 口 名 1: 端 口 方 向 端 口 類 型 ; 端 口 名 2: 端 口 方 向 端 口 類 型 ; . . 端 口 名 n: 端 口 方 向 端 口 類 型 );END 實 體 名 ; 實 體 描 述 了 設 計 單 元 的 輸 入 輸 出 接 口 信 號 或 引 腳 , 是 設 計 實 體經 封 裝 后 對 外 的 一 個 通 信 界 面 。 ENTITY FreDevider ISPORT(Clock: IN Std_logic; Cloko

25、ut: OUT Std_logic);END; 實 體 名 最 后 一 條 端 口 聲 明 語 句 無 分 號端 口 方 向 端 口 類 型端 口 名 實 體 名 由 設 計 者 自 由 命 名 , 用 來 表 示 被 設 計 電 路 芯 片 的 名 稱 ,但 是 必 須 與 VHDL程 序 的 文 件 名 稱 相 同 。 要 與 文 件 名 一 致 ; 例 如 : GENERIC( wide: integer:=32) ; -說 明 寬 度 為 32 GENERIC( tmp: integer:=1ns) ; -說 明 延 時 1 ns 類 屬 說 明 類 屬 為 設 計 實 體 與 外 界

26、 通 信 的 靜 態(tài) 信 息 提 供 通 道 , 用 來 規(guī)定 端 口 的 大 小 、 實 體 中 子 元 件 的 數(shù) 目 和 實 體 的 定 時 特 性 等 。格 式 : GENERIC( 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 設 定 值 ; 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 設 定 值 ) ; 端 口 方 向 : IN, OUT, INOUT, BUFFER INOUTINOUTBUFFER“OUT”和 “ BUFFER”都 可 定 義 輸 出 端 口 ; 若 實 體 內 部 需 要 反 饋 輸 出信 號 , 則 輸 出 端 口 必 須 被設 置 為 “ BUFFER”, 而 不能 為 “

27、 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ù) 據(jù) 類 型 、 常 數(shù) 、 子 程序 和 元 件 等 。 聲 明 的 內

28、容 是 局 部 的 。具 體 描 述 結 構 體 的 功 能 和 行 為 。 結 構 體 定 義 了 設 計 單 元 具 體 的 功 能 , 描 述 了 該 基 本 設 計 單 元 的行 為 、 元 件 和 內 部 的 連 接 關 系 。 一 個 實 體 可 對 應 多 個 結 構 體 , 每 個 結 構 體 代 表 該 實 體 功 能 的 不 同 實 現(xiàn) 方 案 或 不 同 實 現(xiàn) 方 式 。 同 一 時 刻 只 有 一 個 結 構 體 起 作 用 , 通 過 CONFIGURATION決 定 用 哪 個 結 構體 進 行 仿 真 或 綜 合 。 在 結 構 體 描 述 中 , 具 體 給

29、出 了 輸 入 、 輸 出 信 號 之 間 的 邏 輯 關 系 。 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;L

30、IBRARY 庫 名 ;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ù)

31、據(jù) 類 型 與 右 邊 表 達 式 一 致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; 選 擇

32、值 要 覆 蓋 所 有 可 能 情 況 , 若 不 能 一 一 指 定 , 用 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 D

33、OWNTO 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

34、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_Vecto

35、r(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 進 程 本 身 是 并 行 語 句 , 但 內 部

36、是 順 序 語 句 ;l 進 程 只 有 在 特 定 的 時 刻 ( 敏 感 信 號 發(fā) 生 變 化 ) 才 會 被 激 活 。 進 程 標 號 : PROCESS ( 敏 感 信 號 參 數(shù) 表 ) 聲 明 區(qū) ; BEGIN 順 序 語 句 END PROCESS 進 程 標 號 ;在 進 程 中 起 作 用 的 局 部 變 量 一 個 進 程 可 以 有 多 個 敏 感 信 號 , 任一 敏 感 信 號 發(fā) 生 變 化 都 會 激 活 進 程 進 程 語 句 定 義 順 序 語 句 模 塊 , 用 于 將 從 外 部 獲 得 的 信 號 值 ,或 內 部 的 運 算 數(shù) 據(jù) 向 其 他

37、的 信 號 進 行 賦 值 。 l 進 程 的 工 作 原 理 當 某 個 敏 感 信 號 的 值 發(fā) 生變 化 時 , 每 個 進 程 語 句 立即 完 成 進 程 內 順 序 語 句 所定 義 的 功 能 行 為 。執(zhí) 行 過 程 終 止 順 序 語 句 所 定 義 的 功能 行 為 的 結 果 可 以 賦 值 給信 號 , 并 通 過 信 號 被 其 他的 進 程 讀 取 或 賦 值 。 l 進 程 與 時 鐘在 每 個 上 升 沿 啟 動 一 次 進 程 ( 執(zhí) 行 進 程 內 所 有 的 語 句 ) 。上 升 沿 描 述 : Clock EVENT AND Clock=1 下 降 沿

38、 描 述 : 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) 將 時 鐘 作

39、 為 進 程 的 敏 感 信 號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ù) 器 輸 出 值E

40、ND;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

41、_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=

42、“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

43、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

44、 在 同 一 進 程 中 對 同 一 信 號 多 次 賦 值 , 只 有 最 后 一 次 生 效 ;l 在 不 同 進 程 中 , 不 可 對 同 一 信 號 進 行 賦 值 ;l 一 個 進 程 不 可 同 時 對 時 鐘 上 、 下 沿 敏 感 。l 進 程 中 的 信 號 賦 值 是 在 進 程 掛 起 時 生 效 的 , 而 變 量 賦 值 是 即 時 生 效 。l 相 對 于 結 構 體 而 言 , 信 號 具 有 全 局 性 , 是 進 程 間 進 行 并 行 聯(lián) 系 的 重 要 途 徑 。l 進 程 為 綜 合 器 支 持 , 且 其 建 模 方 式 直 接 影 響 仿 真 和

45、綜 合 結 果 , 綜 合后 對 應 于 進 程 的 硬 件 結 構 對 進 程 中 所 有 可 讀 入 信 號 都 是 敏 感 的 。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) 與 準 備 接入

46、 的 元 件 對 應 端 口 相 連的 通 信 端 口 。名 字 關 聯(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 n

47、d2 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í) 行 , 實 際 上 所 有 門 電 路

48、是 并 行 工 作 的 。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:

49、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 順 序

50、 語 句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 TH

51、EN 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;

52、 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.AL

53、L;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語 句 在 進 程 或

54、 過 程 中 執(zhí) 行 到 WAIT語 句 時 , 程 序 將 被 掛 起 , 并 設置 好 再 次 執(zhí) 行 的 條 件 。WAIT ON 信 號 表 UNTIL 條 件 表 達 式 FOR 時 間 表 達 式 ; WAIT ; 未 設 置 停 止 掛 起 的 條 件 , 表 示 永 遠 掛 起 。 WAIT ON 信 號 表 ; 敏 感 信 號 等 待 語 句 , 敏 感 信 號 的 變 化 將 結 束掛 起 , 再 次 啟 動 進 程 。 WAIT UNTIL 條 件 表 達 式 ; 條 件 表 達 式 為 中 所 含 的 信 號 發(fā) 生 變 化 ,且 滿 足 WAIT語 句 所 設 條 件

55、 , 則 結 束 掛 起 , 再 次 啟 動 進 程 。 WAIT FOR 時 間 表 達 式 ; 超 時 等 待 語 句 , 從 執(zhí) 行 當 前 的 WAIT語句 開 始 , 在 此 時 間 段 內 , 進 程 處 于 掛 起 狀 態(tài) , 超 過 這 一 時 間 段 后 , 程序 自 動 恢 復 執(zhí) 行 。 Configuration 配 置 名 of 實 體 名 is 配 置 說 明End 配 置 名 ;3.3.3 配 置 語 句 配 置 主 要 為 頂 層 設 計 實 體 指 定 結 構 體 , 或 為 參 與 例 化 的 元件 實 體 指 定 所 希 望 的 結 構 體 , 以 層 次

56、 方 式 來 對 元 件 例 化 做 結 構配 置 。 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);

57、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) 。 LIBR

58、ARY 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ù) 據(jù) 類 型SIGNAL State: State_type;BEGINChange_State: PROCESS (Reset, C

59、lock) 時 序 邏 輯 進 程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; EN

60、D 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

61、 : 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

62、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; en

63、d 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 MealyMac

64、hine 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;

65、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) 機 設

66、 計 與 寄 存 器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

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


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