《VHDL語言》PPT課件.ppt
《《VHDL語言》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《VHDL語言》PPT課件.ppt(112頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、3 VHDL語 言VHDL: VHSIC Hardware Description Language.3.1 VHDL語 言 基 礎(chǔ)3.2 VHDL基 本 結(jié) 構(gòu)3.3 VHDL語 句3.4 狀 態(tài) 機 在 VHDL中 的 實 現(xiàn)3.5 常 用 電 路 VHDL程 序3.6 VHDL仿 真3.7 VHDL綜 合 HDL-Hardware Description Language 一 種 用 于 描 述 數(shù) 字 電 路 的 功 能 或 行 為 的 語 言 。 目 的 是 提 為 電 路 設(shè) 計 效 率 , 縮短 設(shè) 計 周 期 , 減 小 設(shè) 計 成 本 , 可 在 芯 片 制 造 前 進(jìn) 行
2、有 效 的 仿 真 和 錯 誤 檢 測 。 優(yōu) 點 : HDL設(shè) 計 的 電 路 能 獲 得 非 常 抽 象 級 的 描 述 。 如 基 于 RTL(Register Transfer Level)描 述 的 IC, 可 用 于 不 同 的 工 藝 。 HDL設(shè) 計 的 電 路 , 在 設(shè) 計 的 前 期 , 就 可 以 完 成 電 路 的 功 能 級 的 驗 證 。 HDL設(shè) 計 的 電 路 類 似 于 計 算 機 編 程 。 常 用 的 HDL語 言 : VHDL 、 Verilog HDL VHDL是 美 國 國 防 部 在 20世 紀(jì) 80年 代 初 為 實 現(xiàn) 其 高 速 集 成 電
3、 路硬 件 VHSIC計 劃 提 出 的 描 述 語 言 ; IEEE從 1986年 開 始 致 力 于 VHDL標(biāo) 準(zhǔn) 化 工 作 , 融 合 了 其 它ASIC芯 片 制 造 商 開 發(fā) 的 硬 件 描 述 語 言 的 優(yōu) 點 , 于 93年 形 成 了 標(biāo)準(zhǔn) 版 本 ( IEEE.std_1164) 。 1995年 , 我 國 國 家 技 術(shù) 監(jiān) 督 局 推 薦 VHDL做 為 電 子 設(shè) 計 自 動 化硬 件 描 述 語 言 的 國 家 標(biāo) 準(zhǔn) 。 VHDL 概 述 :VHDL VHSIC Hardwarter Description Language Very High speed
4、integrated circuitVHSIC 覆 蓋 面 廣 , 系 統(tǒng) 硬 件 描 述 能 力 強 , 是 一 個 多 層 次 的 硬 件 描 述 語 言 ; VHDL語 言 具 有 良 好 的 可 讀 性 , 既 可 以 被 計 算 機 接 受 , 也 容 易 被 人 們所 理 解 ; VHDL語 言 可 以 與 工 藝 無 關(guān) 編 程 ; VHDL語 言 已 做 為 一 種 IEEE的 工 業(yè) 標(biāo) 準(zhǔn) , 便 于 使 用 、 交 流 和 推 廣 。 VHDL語 言 的 不 足 之 處 : VHDL優(yōu) 點 : 設(shè) 計 的 最 終 實 現(xiàn) 取 決 于 針 對 目 標(biāo) 器 件 的 編 程 器
5、 , 工 具 的 不 同 會 導(dǎo) 致 綜合 質(zhì) 量 不 一 樣 。 3.1.1 標(biāo) 識 符 ( Identifiers)要 求 :l 首 字 符 必 須 是 字 母l 末 字 符 不 能 為 下 劃 線l 不 允 許 出 現(xiàn) 兩 個 連 續(xù) 的 下 劃 線l 不 區(qū) 分 大 小 寫l VHDL定 義 的 保 留 字 ( 關(guān) 鍵 字 ) , 不 能 用 作 標(biāo) 識 符l 標(biāo) 識 符 字 符 最 長 可 以 是 32個 字 符 。 注 釋 由 兩 個 連 續(xù) 的 虛 線 ( ) 引 導(dǎo) 。 3.1 VHDL語 言 基 礎(chǔ) 標(biāo) 識 符 用 來 定 義 常 數(shù) 、 變 量 、 信 號 、 端 口 、
6、子 程 序 或 參 數(shù) 的 名 字 ,由 字 母 ( AZ, az) 、 數(shù) 字 ( 09) 和 下 劃 線 ( _) 字 符 組 成 。 例 如 : 關(guān) 鍵 字 ( 保 留 字 ) : 關(guān) 鍵 字 ( keyword) 是 VHDL中 具 有 特 別 含 義 的 單 詞 , 只能 做 為 固 定 的 用 途 , 用 戶 不 能 用 其 做 為 標(biāo) 識 符 。 3.1.2 數(shù) 據(jù) 對 象 ( Date Objects) 常 量 ConstantConstant bus_width: integer := 8; -定 義 總 線 寬 度 為 常 數(shù) 8 數(shù) 據(jù) 對 象 包 括 常 量 、 變 量
7、 、 信 號 和 文 件 四 種 類 型 。 常 量 是 對 某 一 常 量 名 賦 予 一 個 固 定 的 值 , 而 且 只 能 賦 值 一 次 。 通 常 賦值 在 程 序 開 始 前 進(jìn) 行 , 該 值 的 數(shù) 據(jù) 類 型 則 在 說 明 語 句 中 指 明 。Constant 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 表 達(dá) 式Constant Vcc: real:=5.0; -定 義 Vcc的 數(shù) 據(jù) 類 型 是 實 數(shù) , 賦 值 為 5.0V 常 量 所 賦 的 值 應(yīng) 和 定 義 的 數(shù) 據(jù) 類 型 一 致 ;常 量 在 程 序 包 、 實 體 、 構(gòu) 造 體 或 進(jìn) 程 的 說
8、明 性 區(qū) 域 內(nèi) 必 須 加 以 說 明 。 定 義 在 程 序 包內(nèi) 的 常 量 可 供 所 含 的 任 何 實 體 、 構(gòu) 造 體 所 引 用 , 定 義 在 實 體 說 明 內(nèi) 的 常 量 只 能 在 該實 體 內(nèi) 可 見 , 定 義 在 進(jìn) 程 說 明 性 區(qū) 域 中 的 常 量 只 能 在 該 進(jìn) 程 內(nèi) 可 見 。 Variable 變 量 名 : 數(shù) 據(jù) 類 型 : 初 始 值 ;Variable count: integer 0 to 255:=20 ; - 定 義 count整 數(shù) 變 量 , 變 化 范 圍 0 255, 初 始 值 為 20。 變 量 Variable
9、變 量 只 能 在 進(jìn) 程 語 句 、 函 數(shù) 語 句 和 過 程 語 句 結(jié) 構(gòu) 中 使 用 。 變量 的 賦 值 是 直 接 的 , 非 預(yù) 設(shè) 的 , 分 配 給 變 量 的 值 立 即 成 為 當(dāng) 前 值 ,變 量 不 能 表 達(dá) “ 連 線 ” 或 存 儲 元 件 , 不 能 設(shè) 置 傳 輸 延 遲 量 。變 量 賦 值 語 句 : 目 標(biāo) 變 量 名 := 表 達(dá) 式 ;變 量 定 義 語 句 :x:=10.0; - 實 數(shù) 變 量 賦 值 為 10.0Y:=1.5+x; - 運 算 表 達(dá) 式 賦 值 , 注 意 表 達(dá) 式 必 須 與 目 標(biāo) 變 量 的 數(shù) 據(jù) 類 型 相 同
10、A(3 to 6):=(“1101”); -位 矢 量 賦 值 Signal 信 號 名 : 數(shù) 據(jù) 類 型 : 初 始 值Signal clock: bit := ; -定 義 時 鐘 信 號 類 型 , 初 始 值 為 0 信 號 Signal 信 號 表 示 邏 輯 門 的 輸 入 或 輸 出 , 類 似 于 連 接 線 , 也 可 以 表 達(dá) 存儲 元 件 的 狀 態(tài) 。 信 號 通 常 在 構(gòu) 造 體 、 程 序 包 和 實 體 中 說 明 。信 號 定 義 語 句 :Signal count: BIT_VECTOR(3 DOWNTO 0); -定 義 count為 4位 位 矢 量
11、信 號 賦 值 語 句 : 目 標(biāo) 信 號 名 = 表 達(dá) 式 ; 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的 預(yù) 定 義 數(shù) 據(jù) 類 型 在 VHDL標(biāo) 準(zhǔn) 程 序 包 STANDARD中 定 義 好 , 實 際 使 用 過 程 中 , 已自 動 包 含 進(jìn) VHDL源 文 件 中 , 不 需 要 通 過 USE語 句 顯 式 調(diào) 用 。 TYPE BOOLEAN IS (FALSE, TRUE); - 取 值 為 FALSE和 TRUE, 不 是 數(shù) 值 , 不 能 運 算 , 一 般 用 于 關(guān) 系 運 算 符 l 整 數(shù) : (Integer) 取 值 范 圍 -(231-1) (231-1), 可 用 32位
13、有 符 號 的 二 進(jìn) 制 數(shù) 表 示 variable a: integer range -63 to 63 在 實 際 應(yīng) 用 中 , VHDL仿 真 器 將 Integer做 為 有 符 號 數(shù) 處 理 , 而VHDL綜 合 器 將 Integer做 為 無 符 號 數(shù) 處 理 ; 要 求 用 RANGE子 句 為 所 定 義 的 數(shù) 限 定 范 圍 , 以 便 根 據(jù) 范 圍 來 決 定 表 示 此信 號 或 變 量 的 二 進(jìn) 制 數(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 -十 進(jìn) 制 浮 點 數(shù) 8 43.6 e+4 -八 進(jìn) 制 浮 點 數(shù) 43.6E-4 -十 進(jìn) 制 浮 點 數(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預(yù) 定 義 標(biāo) 準(zhǔn) 邏 輯 位 與 矢 量l 標(biāo) 準(zhǔn) 邏 輯 位 ( Std_Logic)l 標(biāo) 準(zhǔn) 邏 輯 位 矢 量 ( Std_Logic_vector)基 于 Std_Logic類 型 的 數(shù) 組 ;
16、使 用 Std_Logic和 Std_Logic_Vector要 調(diào) 用 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ù) 類 型 轉(zhuǎn) 換VHDL為 強 定 義 類 型 語 言 , 不 同 類 型 的 數(shù) 據(jù) 不 能 進(jìn) 行 運 算 和 直 接 賦 值 。l 類 型 標(biāo) 記 法Variable A: integer; Variable B: real;A= integer (B); B=real (A);l 函 數(shù)
19、法Conv_interger (A); -由 std_logic轉(zhuǎn) 換 為 integer型 , 在 std_logic_unsigned包 。l 常 數(shù) 轉(zhuǎn) 換 法 / 常 量 轉(zhuǎn) 換 法 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型 轉(zhuǎn) 換 為 bit型 具 有 轉(zhuǎn) 換 表 性 質(zhì) 的 常 數(shù) 在 “ STD_LOGIC_1
20、164”、 “ STD_LOGIC_ARITH”和 “ STD_LOGIC_UNSIGNED”的 程 序 包 中 提 供 的 數(shù) 據(jù) 類 型 變 換 函 數(shù) 。 屬 性屬 性 提 供 的 是 關(guān) 于 信 號 、 類 型 等 的 指 定 特 性 。 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 算 術(shù) 運 算 符 : , , *, / , MOD, REM , SLL , SRL , SLA, SRA , ROL , ROR , *, ABSl 關(guān) 系 運 算 符 : , / , , =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) 先 級 別邏 輯 、 算 術(shù) 運 算 符 ( NOT, *, ABS) 乘 法 運 算 符 ( / , MOD, REM, * ) 正 負(fù) 運 算 符 : , , 加 減 、 并 置 運 算 符 : , , - 庫 、 程 序 包 的 說 明 調(diào) 用 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 - 結(jié) 構(gòu) 體 定 義SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock) BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF;END PROCESS;Clkout=Clk;END; VHDL的 基 本 設(shè) 計 單 元 結(jié) 構(gòu) : 程 序 包 說 明 、 實 體 說 明 和 結(jié) 構(gòu) 體 說 明 三 部 分 。 3.2.1
24、 實 體 ( Entity)ENTITY 實 體 名 IS GENERIC( 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 設(shè) 定 值 ) PORT( 端 口 名 1: 端 口 方 向 端 口 類 型 ; 端 口 名 2: 端 口 方 向 端 口 類 型 ; . . 端 口 名 n: 端 口 方 向 端 口 類 型 );END 實 體 名 ; 實 體 描 述 了 設(shè) 計 單 元 的 輸 入 輸 出 接 口 信 號 或 引 腳 , 是 設(shè) 計 實 體經(jīng) 封 裝 后 對 外 的 一 個 通 信 界 面 。 ENTITY FreDevider ISPORT(Clock: IN Std_logic; Cloko
25、ut: OUT Std_logic);END; 實 體 名 最 后 一 條 端 口 聲 明 語 句 無 分 號端 口 方 向 端 口 類 型端 口 名 實 體 名 由 設(shè) 計 者 自 由 命 名 , 用 來 表 示 被 設(shè) 計 電 路 芯 片 的 名 稱 ,但 是 必 須 與 VHDL程 序 的 文 件 名 稱 相 同 。 要 與 文 件 名 一 致 ; 例 如 : GENERIC( wide: integer:=32) ; -說 明 寬 度 為 32 GENERIC( tmp: integer:=1ns) ; -說 明 延 時 1 ns 類 屬 說 明 類 屬 為 設(shè) 計 實 體 與 外 界
26、 通 信 的 靜 態(tài) 信 息 提 供 通 道 , 用 來 規(guī)定 端 口 的 大 小 、 實 體 中 子 元 件 的 數(shù) 目 和 實 體 的 定 時 特 性 等 。格 式 : GENERIC( 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 設(shè) 定 值 ; 常 數(shù) 名 : 數(shù) 據(jù) 類 型 : 設(shè) 定 值 ) ; 端 口 方 向 : IN, OUT, INOUT, BUFFER INOUTINOUTBUFFER“OUT”和 “ BUFFER”都 可 定 義 輸 出 端 口 ; 若 實 體 內(nèi) 部 需 要 反 饋 輸 出信 號 , 則 輸 出 端 口 必 須 被設(shè) 置 為 “ BUFFER”, 而 不能 為 “
27、 OUT”。 同 方 向 、 同 類 型 的 端 口 可 放 在 同 一 個 說 明 語 句 中 。ENTITY Full_adder IS PORT( a, b, c: IN BIT; sum, carry: OUT BIT ); END Full_adder; 3.2.2 結(jié) 構(gòu) 體 (Architecture)ARCHITECTURE 結(jié) 構(gòu) 體 名 OF 實 體 名 IS 聲 明 語 句 BEGIN 功 能 描 述 語 句END 結(jié) 構(gòu) 體 名 ; 用 于 聲 明 該 結(jié) 構(gòu) 體 將 用 到 的 信 號 、 數(shù) 據(jù) 類 型 、 常 數(shù) 、 子 程序 和 元 件 等 。 聲 明 的 內(nèi)
28、容 是 局 部 的 。具 體 描 述 結(jié) 構(gòu) 體 的 功 能 和 行 為 。 結(jié) 構(gòu) 體 定 義 了 設(shè) 計 單 元 具 體 的 功 能 , 描 述 了 該 基 本 設(shè) 計 單 元 的行 為 、 元 件 和 內(nèi) 部 的 連 接 關(guān) 系 。 一 個 實 體 可 對 應(yīng) 多 個 結(jié) 構(gòu) 體 , 每 個 結(jié) 構(gòu) 體 代 表 該 實 體 功 能 的 不 同 實 現(xiàn) 方 案 或 不 同 實 現(xiàn) 方 式 。 同 一 時 刻 只 有 一 個 結(jié) 構(gòu) 體 起 作 用 , 通 過 CONFIGURATION決 定 用 哪 個 結(jié) 構(gòu)體 進(jìn) 行 仿 真 或 綜 合 。 在 結(jié) 構(gòu) 體 描 述 中 , 具 體 給
29、出 了 輸 入 、 輸 出 信 號 之 間 的 邏 輯 關(guān) 系 。 ARCHITECTURE Behavior OF FreDevider IS - 結(jié) 構(gòu) 體 定 義SIGNAL Clk:Std_Logic; -信 號 聲 明BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF;END PROCESS;Clkout=Clk;END; 功 能 描 述 語 句進(jìn) 程順 序語 句 3.2.3 庫 、 程 序 包 的 調(diào) 用LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;L
30、IBRARY 庫 名 ;USE 庫 名 .程 序 包 名 .項 目 名 ; 調(diào) 用 此 程 序 包 中 所 有 的 資 源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 并 行 語 句在 結(jié) 構(gòu) 體 中 的 執(zhí) 行 是 同 時 進(jìn) 行 , 執(zhí) 行 順 序 與 書 寫 順 序 無 關(guān) 。 并 行 信 號 賦 值 語 句l 簡 單 賦 值 語 句目 標(biāo) 信 號 名 = 表 達(dá) 式 目 標(biāo) 信 號 的 數(shù)
31、據(jù) 類 型 與 右 邊 表 達(dá) 式 一 致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 選 擇 表 達(dá) 式 SELECT賦 值 目 標(biāo) 信 號 = 表 達(dá) 式 1 WHEN 選 擇 值 1, 表 達(dá) 式 2 WHEN 選 擇 值 1, 表 達(dá) 式 n WHEN OTHERS; 選 擇
32、值 要 覆 蓋 所 有 可 能 情 況 , 若 不 能 一 一 指 定 , 用 OTHERS為 其 他 情況 找 個 出 口 ; 選 擇 值 必 須 互 斥 , 不 能 出 現(xiàn) 條 件 重 復(fù) 或 重 疊 的 情 況 。 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 條 件 信 號 賦 值 語 句賦 值 目 標(biāo) 信 號 = 表 達(dá) 式 1 WHEN 賦 值 條 件 1 ELSE 表 達(dá) 式 2
34、WHEN 賦 值 條 件 2 ELSE 表 達(dá) 式 n WHEN 賦 值 條 件 n ELSE 表 達(dá) 式 ;各 賦 值 語 句 有 優(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; 進(jìn) 程 語 句l 進(jìn) 程 本 身 是 并 行 語 句 , 但 內(nèi) 部
36、是 順 序 語 句 ;l 進(jìn) 程 只 有 在 特 定 的 時 刻 ( 敏 感 信 號 發(fā) 生 變 化 ) 才 會 被 激 活 。 進(jìn) 程 標(biāo) 號 : PROCESS ( 敏 感 信 號 參 數(shù) 表 ) 聲 明 區(qū) ; BEGIN 順 序 語 句 END PROCESS 進(jìn) 程 標(biāo) 號 ;在 進(jìn) 程 中 起 作 用 的 局 部 變 量 一 個 進(jìn) 程 可 以 有 多 個 敏 感 信 號 , 任一 敏 感 信 號 發(fā) 生 變 化 都 會 激 活 進(jìn) 程 進(jìn) 程 語 句 定 義 順 序 語 句 模 塊 , 用 于 將 從 外 部 獲 得 的 信 號 值 ,或 內(nèi) 部 的 運 算 數(shù) 據(jù) 向 其 他
37、的 信 號 進(jìn) 行 賦 值 。 l 進(jìn) 程 的 工 作 原 理 當(dāng) 某 個 敏 感 信 號 的 值 發(fā) 生變 化 時 , 每 個 進(jìn) 程 語 句 立即 完 成 進(jìn) 程 內(nèi) 順 序 語 句 所定 義 的 功 能 行 為 。執(zhí) 行 過 程 終 止 順 序 語 句 所 定 義 的 功能 行 為 的 結(jié) 果 可 以 賦 值 給信 號 , 并 通 過 信 號 被 其 他的 進(jìn) 程 讀 取 或 賦 值 。 l 進(jìn) 程 與 時 鐘在 每 個 上 升 沿 啟 動 一 次 進(jìn) 程 ( 執(zhí) 行 進(jìn) 程 內(nèi) 所 有 的 語 句 ) 。上 升 沿 描 述 : 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、 為 進(jìn) 程 的 敏 感 信 號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; 異 步 復(fù) 位 信 號 Clock: IN Std_logic; 時 鐘 信 號 NUM: BUFFER Integer RANGE 0 TO 3); 計 數(shù) 器 輸 出 值E
40、ND;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS (RESET, Clock) 將 復(fù) 位 、 時 鐘 作 為 進(jìn) 程 的 敏 感 信 號BEGIN IF RESET=1 THEN Num=0; 復(fù) 位 時 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) 進(jìn) 程 的 敏 感 信 號BEGIN IF (clr=1 or inl=“1001”) THEN outl=
42、“0000”; ELSE outl=inl+1; END IF;END PROCESS;END; 重 載 符 號 , 在 庫 IEEE.Std_Logic_unsigned中 預(yù) 先 聲 明 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 進(jìn) 程 注 意 事 項 :l 進(jìn) 程 本 身 是 并 行 語 句 , 但 內(nèi) 部 為 順 序 語 句 ;l 進(jìn) 程 在 敏 感 信 號 發(fā) 生 變 化 時 被 激 活 , 在 使 用 了 敏 感 表 的 進(jìn) 程 中 不 能含 wait語 句 ;l
44、 在 同 一 進(jìn) 程 中 對 同 一 信 號 多 次 賦 值 , 只 有 最 后 一 次 生 效 ;l 在 不 同 進(jìn) 程 中 , 不 可 對 同 一 信 號 進(jìn) 行 賦 值 ;l 一 個 進(jìn) 程 不 可 同 時 對 時 鐘 上 、 下 沿 敏 感 。l 進(jìn) 程 中 的 信 號 賦 值 是 在 進(jìn) 程 掛 起 時 生 效 的 , 而 變 量 賦 值 是 即 時 生 效 。l 相 對 于 結(jié) 構(gòu) 體 而 言 , 信 號 具 有 全 局 性 , 是 進(jìn) 程 間 進(jìn) 行 并 行 聯(lián) 系 的 重 要 途 徑 。l 進(jìn) 程 為 綜 合 器 支 持 , 且 其 建 模 方 式 直 接 影 響 仿 真 和
45、綜 合 結(jié) 果 , 綜 合后 對 應(yīng) 于 進(jìn) 程 的 硬 件 結(jié) 構(gòu) 對 進(jìn) 程 中 所 有 可 讀 入 信 號 都 是 敏 感 的 。SIGNAL A,B: Integer RANGE 0 TO 7; : PROCESS (Clock) BEGIN IF rising_edge (Clock) THEN : B=A+1; B連 接 端 口 名 , );要 插 在 電 路 系 統(tǒng) 板 上 的 芯 片 較 大 的 電 路 系 統(tǒng)電 路 板 上 準(zhǔn) 備 接 受 芯 片 的 插 座元 件 定義 語 句 元 件 例 化 語 句列 出 對 外 通 信 的 各 端 口 名 當(dāng) 前 系 統(tǒng) 與 準(zhǔn) 備 接入
46、 的 元 件 對 應(yīng) 端 口 相 連的 通 信 端 口 。名 字 關(guān) 聯(lián) 方 式 : port map語 句 中 位 置 可 以 任 意 ;位 置 關(guān) 聯(lián) 方 式 : 端 口 名 和 關(guān) 聯(lián) 連 接 符 號 可 省 去 , 連接 端 口 名 的 排 列 方 式 與 所 需 例 化 的 元 件 端 口 定 義 中的 端 口 名 相 對 應(yīng) 。 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); 名 字 關(guān) 聯(lián) 方 式u3:nd2 PORT MAP( x, y, c=z1); 混 和 關(guān) 聯(lián) 方 式END; 元 件 例 化 : 1位 二 進(jìn) 制 全 加 器內(nèi) 部 端 口外 部 端 口 外 部 端 口內(nèi) 部 端 口端 口 連 線 3.3.2 順 序 語 句 順 序 語 句 僅 出 現(xiàn) 在 進(jìn) 程 和 子 程 序 中 。 順 序 語 句 綜 合 后 , 映 射 為 實 際 的 門 電 路 , 系 統(tǒng) 一 上 電 , 門 電 路 開 始 工作 。 電 路 可 實 現(xiàn) 邏 輯 上 的 順 序 執(zhí) 行 , 實 際 上 所 有 門 電 路
48、是 并 行 工 作 的 。l 賦 值 語 句l 流 程 控 制 語 句l 空 操 作 語 句l 等 待 語 句 l 子 程 序 調(diào) 用 語 句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語 句 描 述 組 合 邏 輯 電 路 時 , 務(wù) 必 涵 蓋 所 有 的 情 況 , 否 則綜 合 后 將 引 入 鎖 存 器 !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 選 擇 值 不 可 重 復(fù) 或 重 疊 ;l 當(dāng) 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語 句 在 進(jìn) 程 或
54、 過 程 中 執(zhí) 行 到 WAIT語 句 時 , 程 序 將 被 掛 起 , 并 設(shè)置 好 再 次 執(zhí) 行 的 條 件 。WAIT ON 信 號 表 UNTIL 條 件 表 達(dá) 式 FOR 時 間 表 達(dá) 式 ; WAIT ; 未 設(shè) 置 停 止 掛 起 的 條 件 , 表 示 永 遠(yuǎn) 掛 起 。 WAIT ON 信 號 表 ; 敏 感 信 號 等 待 語 句 , 敏 感 信 號 的 變 化 將 結(jié) 束掛 起 , 再 次 啟 動 進(jìn) 程 。 WAIT UNTIL 條 件 表 達(dá) 式 ; 條 件 表 達(dá) 式 為 中 所 含 的 信 號 發(fā) 生 變 化 ,且 滿 足 WAIT語 句 所 設(shè) 條 件
55、 , 則 結(jié) 束 掛 起 , 再 次 啟 動 進(jìn) 程 。 WAIT FOR 時 間 表 達(dá) 式 ; 超 時 等 待 語 句 , 從 執(zhí) 行 當(dāng) 前 的 WAIT語句 開 始 , 在 此 時 間 段 內(nèi) , 進(jìn) 程 處 于 掛 起 狀 態(tài) , 超 過 這 一 時 間 段 后 , 程序 自 動 恢 復(fù) 執(zhí) 行 。 Configuration 配 置 名 of 實 體 名 is 配 置 說 明End 配 置 名 ;3.3.3 配 置 語 句 配 置 主 要 為 頂 層 設(shè) 計 實 體 指 定 結(jié) 構(gòu) 體 , 或 為 參 與 例 化 的 元件 實 體 指 定 所 希 望 的 結(jié) 構(gòu) 體 , 以 層 次
56、 方 式 來 對 元 件 例 化 做 結(jié) 構(gòu)配 置 。 Configuration 配 置 名 of 實 體 名 is 配 置 說 明End 配 置 名 ; 為 頂 層 設(shè) 計 實 體 指 定 結(jié) 構(gòu) 體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; 為 參 與 例 化 的 元 件 實 體 指 定 所 希 望 的 結(jié) 構(gòu) 體 , 以 層 次 方 式 來 對元 件 例 化 做 結(jié) 構(gòu) 配 置 。 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) 時 序 邏 輯 進(jìn) 程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) 機 結(jié) 構(gòu) 圖 : 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) 轉(zhuǎn) 換 信 號 BEGINState_Reg: PROCESS (Reset, Clock) 狀 態(tài) 寄 存 器 BEGIN IF Reset=1 THEN 異 步 復(fù) 位 PresentState=S0; ELSEIF rising_edge(Clock) THEN PresentState=NextState; 時 鐘 上 升 沿 , 轉(zhuǎn) 換 至 下 一 狀 態(tài) END IF; END PROCESS; Change_State:PROCESS (PresentState, DIN) 組 合 邏 輯 進(jìn) 程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描 述 : 輸 出 由 當(dāng) 前 狀 態(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) 跳 轉(zhuǎn) 到 處 理 出 錯 情 況 的 狀 態(tài) ;l 直 接 回 復(fù) 到 其 他 已 設(shè) 定 的 狀 態(tài) 。 3.4.4 狀 態(tài) 機 設(shè)
66、 計 與 寄 存 器l 對 于 所 有 可 能 的 輸 入 條 件 , 當(dāng) 進(jìn) 程 中 的 輸 出 信 號 如 果 沒 有 被 完全 地 與 之 對 應(yīng) 指 定 , 此 信 號 將 自 動 被 指 定 , 即 在 未 列 出 的 條 件 下保 持 原 值 , 這 意 味 著 引 入 了 寄 存 器 。l 在 狀 態(tài) 機 中 , 如 果 存 在 一 個 或 更 多 的 狀 態(tài) 沒 有 被 明 確 指 定 轉(zhuǎn) 換方 式 , 或 者 對 于 狀 態(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版必修五《林教頭風(fēng)雪山神廟》ppt課件
- 人教版《分?jǐn)?shù)的意義和性質(zhì)》(完美版)課件
- 正比例函數(shù)及性質(zhì)
- 企業(yè)戰(zhàn)略環(huán)境分析
- 前列腺增生3課件
- 煉鐵基礎(chǔ)非高爐煉鐵課件
- 小兒腹瀉小講課分析課件
- 職業(yè)經(jīng)理人的壓力管理課件
- 街道改造PPT方案展示-項目概況案例分析現(xiàn)存建筑質(zhì)量設(shè)計理念課件
- 2022年北師大版小學(xué)數(shù)學(xué)《小數(shù)目物品平均分》課件
- 作文指導(dǎo)--場面描寫-PPT
- 肺癌診斷和治療的幾個問題
- 一下《王二小》
- 第八章專題八(教育精品)
- 六年級數(shù)學(xué)下冊 正負(fù)數(shù) 2課件 人教新課標(biāo)