VHDL数据类型vhdl语法课件.ppt

上传人:小** 文档编号:23349632 上传时间:2021-06-07 格式:PPT 页数:41 大小:297KB
返回 下载 相关 举报
VHDL数据类型vhdl语法课件.ppt_第1页
第1页 / 共41页
VHDL数据类型vhdl语法课件.ppt_第2页
第2页 / 共41页
VHDL数据类型vhdl语法课件.ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
VHDL数 据 类 型FPGA应 用 技 术 二 、 VHDL数 据 类 型 与 数 据 对 象在 VHDL程 序 中 , 我 们 经 常 会 遇 到 这 样 的 语 句 :Signal A : std_logic;Variable B : std_logic_vector(7 downto 0); Constant C : integer;数 据 对 象 类 型 数 据 类 型数 据 对 象 名 u VHDL语 言 中 的 基 本 数 据 类 型逻 辑 类 型数 值 类 型 布 尔 代 数 (Boolean)位 (Bit)标 准 逻 辑 (Std_Logic)整 数 (Integer)实 数 (Real)二 、 VHDL数 据 类 型 与 数 据 对 象 n 逻 辑 数 据 类 型 ( 1) 布 尔 代 数 ( Boolean) 型 ; ( 2) 位 ( Bit) ; ( 3) 标 准 逻 辑 ( Std_logic) ;type BIT is (0, 1); type BOOLEAN is (FALSE, TRUE) ;二 、 VHDL数 据 类 型 与 数 据 对 象 标 准 逻 辑 类 型 Type Std_Logic Is ( U, -Undefined(未 初 始 化 ) X , -Forcing Unknown( 强 未 知 ) 0 , -Forcing 0( 强 0) 1 , -Forcing 1( 强 1) Z , -Hign Impedance( 高 阻 ) W, -Weak Unknown( 弱 未 知 ) L , -Weak 0( 弱 0) H , -Weak 1( 弱 1) - , -Dont Care( 忽 略 )) 二 、 VHDL数 据 类 型 与 数 据 对 象 标 准 逻 辑 类 型 对 数字 逻 辑 电 路 的 逻 辑特 性 描 述 更 加 完 整 ,真 实 , 因 此 在 VHDL程 序 中 , 对 逻 辑 信号 的 定 义 通 常 采 用标 准 逻 辑 类 型 l 逻 辑 序 列位 序 列 (Bit_Vector)标 准 逻 辑 序 列 (Std_Logic_Vector)二 、 VHDL数 据 类 型 与 数 据 对 象 Signal data: Std_Logic_Vector( 7 downto 0);Signal addr: Bit_Vector ( 0 to 3);序 列 的 范 围 大 小 声 明 方 式 : To, Downtol 序 列 的 使 用 二 、 VHDL数 据 类 型 与 数 据 对 象 l 序 列 的 分 解 与 合 成Signal A: Std_Logic_Vector( 3 downto 0);Signal B: Std_Logic_Vector( 0 to 3);Signal C: Std_Logic_Vector( 0 to 1);Signal D: Std_Logic_Vector( 1 downto 0);C= A( 2 downto 1);B= A(3) 二 、 VHDL数 据 类 型 与 数 据 对 象 n 数 值 类 型( 1) 整 数 Type Integer Is Range -231 231-1限 定 整 数 取 值 范 围 的 方 法 : Signal A: Integer; Signal B: Integer Range 0 to 7; Signal C: Integer Range -1 to 1;二 、 VHDL数 据 类 型 与 数 据 对 象 l 无 符 号 数 Unsigned与 标 准 逻 辑 序 列 相 似 , 声 明 时 必 须 指 明 其位 数 。Signal A : Unsigned(3 downto 0);Signal B : Unsigned( 7 downto 0);注 意 : 必 须 使 用 downto形 式 。二 、 VHDL数 据 类 型 与 数 据 对 象 ( 2) 实 数 Type Real Is Range -1.7E38 to 1.7E38; 实 数 类 型 的 表 示 可 用 科 学 计 数 形 式 或 者 带 小数 点 的 形 式 。 二 、 VHDL数 据 类 型 与 数 据 对 象 l VHDL中 的 运 算 符二 、 VHDL数 据 类 型 与 数 据 对 象 算 术 运 算 符 : + 加- 减* 乘/ 除* 乘 方mod 求 模 rem 求 余 abs 求 绝 对 值 逻 辑 运 算 : and 逻 辑 与or 逻 辑 或nand 与 非nor 或 非xor 异 或xnor 同 或not 逻 辑 非 关 系 运 算 符 : = 等 于/= 不 等 于 小 于 大 于=大 于 或 等 于注 : 其 中 =操 作 符 也用 于 表 示 信 号 的 赋 值操 作 。 Signal A: state; 二 、 VHDL数 据 类 型 与 数 据 对 象 (2) 数 组 类 型Type 数 组 名 称 is Array(范 围 ) of 数 据 类 型 ;例 子 : Type Byte is Array(7 downto 0) of Bit; Signal sdo: Byte;二 、 VHDL数 据 类 型 与 数 据 对 象 u 数 据 类 型 的 转 换 在 VHDL语 言 里 , 不 同 类 型 的 数 据 信 号 之 间不 能 互 相 赋 值 。 当 需 要 不 同 类 型 数 据 之 间传 递 信 息 时 , 就 需 要 类 型 转 换 函 数 将 其 中的 一 种 类 型 数 据 转 换 为 另 一 中 数 据 类 型 后 ,再 进 行 信 号 的 传 递 。二 、 VHDL数 据 类 型 与 数 据 对 象 例 如 :Signal Y : Std_logic_vector(7 downto 0);Signal X : Integer range 0 to 255;Y= CONV_STD_LOGIC_VECTOR(X,8);二 、 VHDL数 据 类 型 与 数 据 对 象 CONV_INTEGER 将 数 据 类 型 UNSIGNED, SIGNED转 换 为INTEGER 类 型 . CONV_UNSIGNED 将 数 据 类 型 INTEGER, SIGNED转 换 为UNSIGNED 类 型 .CONV_SIGNED 将 数 据 类 型 INTEGER, UNSIGNED转 换 为SIGNED类 型 .CONV_STD_LOGIC_VECTOR 将 数 据 类 型 INTEGER, UNSIGNED, SIGNED, STD_LOGIC转 换 为 STD_LOGIC_VECTOR 类 型 . 二 、 VHDL数 据 类 型 与 数 据 对 象 u 数 据 对 象 常 量信 号变 量(Data Objects)二 、 VHDL数 据 类 型 与 数 据 对 象 (1) 常 量定 义 格 式 :Constant 常 量 名 称 : 数 据 类 型 :=给 定 值 ; 常 量 通 常 来 来 定 义 延 迟 和 功 耗 等 参 数 。注 意 ! 常 数 定 义 的 同 时 进 行 赋 初 值 。常 数 可 以 在 实 体 说 明 、 结 构 体 描 述 中 使 用 。二 、 VHDL数 据 类 型 与 数 据 对 象 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; -必 需 定 义 +entity exam1 is port (ip : in std_logic_vector(3 downto 0); op : out std_logic_vector(3 downto 0);end exam1; architecture m1 of exam1 isconstant num : integer := 6;beginop = ip + num;end m1; 二 、 VHDL数 据 类 型 与 数 据 对 象 (2) 信 号定 义 格 式Signal 信 号 名 称 : 数 据 类 型 :=初 始 值 ;信 号 相 当 于 电 路 内 部 元 件 之 间 的 物 理 连 线 ,因此 信 号 的 赋 值 有 一 定 的 延 迟 时 间 .二 、 VHDL数 据 类 型 与 数 据 对 象 l“ 信 号 ” 数 据 对 象 , 代 表 电 路 内 部 信 号 或 连 接 线 路 ,其 在 元 件 之 间 起 互 连 作 用 。注 意 ! 信 号 定 义 的 时 候 尽 管 可 以 直 接 赋 初 值 , 但 系 统 往 往 忽 略 。建 议 信 号 对 象 定 义 后 再 进 行 赋 值 。l 信 号 为 全 局 量 。l 在 实 体 说 明 、 结 构 体 描 述 和 程 序 包 说 明 中 使 用 。l 信 号 赋 值 的 语 法 格 式 为 : 信 号 名 = 表 达 式 ;如 : Signal S1 : Std_logic_vector(3 Downto 0); S1 = “0000”;二 、 VHDL数 据 类 型 与 数 据 对 象 ( 3) 变 量定 义 格 式Variable 变 量 名 称 : 数 据 类 型 :=初 始 值 ;变 量 只 能 用 于 “ 进 程 ” 之 中 ,变 量 的 赋 值 是立 即 生 效 的 ,常 用 于 高 层 次 抽 象 的 算 法 描 述 当 中 。 二 、 VHDL数 据 类 型 与 数 据 对 象 “ 变 量 ” 数 据 对 象 , 它 用 于 对 中 间 数 据 的 临 时 存储 , 并 不 一 定 代 表 电 路 的 某 一 组 件 。 注 意 ! 变 量 定 义 的 时 候 尽 管 可 以 直 接 赋 初 值 , 但 系 统 往 往 忽 略 。建 议 变 量 对 象 定 义 后 再 进 行 赋 值 。 变 量 为 局 部 量 。 仅 限 于 进 程 (Process)或 子 程 序 中 使 用 。 变 量 赋 值 的 语 法 格 式 为 : 目 标 变 量 :=表 达 式 ;如 : Variable S1 : Std_logic_vector(3 Downto 0); S1 := “0000”;二 、 VHDL数 据 类 型 与 数 据 对 象 信 号 和 变 量 的 比 较 ( 1) 信 号 和 变 量 的 对 应 关 系 不 同 : 信 号 代 表 电 路 内 部 信 号 或 连接 线 路 ; 而 变 量 则 不 是 。 ( 2) 信 号 和 变 量 声 明 的 位 置 不 同 : 信 号 声 明 在 子 程 序 、 进 程 的 外部 ; 而 变 量 声 明 在 子 程 序 、 进 程 的 内 部 。 ( 3) 信 号 为 全 局 量 , 而 变 量 只 在 定 义 它 的 域 中 才 可 见 。 因 此 ,变 量 不 能 在 两 个 进 程 之 间 传 递 信 息 。 ( 4) 在 一 个 进 程 中 多 次 为 一 个 信 号 赋 值 时 , 只 有 最 后 一 个 值 会 起作 用 ; 而 变 量 则 不 同 , 每 次 赋 值 都 会 改 变 它 的 值 。( 5) 赋 值 不 同 。 在 进 程 中 , 信 号 赋 值 只 有 在 进 程 结 束 时 起 作 用 ,而 变 量 赋 值 是 立 即 进 行 的 。 而 且 赋 值 符 号 不 同 : 信 号 赋 值 为“ =”, 变 量 赋 值 为 “ :=”。 数 据 对 象 属 性( 1) 数 值 类 属 性 : ( 数 组 类 型 的 数 据 对 象 )数 值 类 属 性 有 left, right, low, high, length。其 中 用 符 号 隔 开 对 象 名 及 其 属 性 。 left表 示 数 组 的 左 边 界 ; right表 示 数 组 的 右 边 界 ; low表 示 数 组 的 下 边 界 ; high表 示 数 组 的 上 边 界 ; length表 示 数 组 的 长 度 。 如 :Signal A : std_logic_vector(7 downto 0);Signal B : std_logic_vector(0 to 3);则 这 两 个 信 号 的 属 性 值 分 别 为 : Aleft=7; Aright=0; Alow=0; Ahigh=7; Alength=8; Bleft=0; Bright=3; Blow=0; Bhigh=3; Blength=4;数 据 对 象 属 性 ( 2) event属 性 : event属 性 , 它 的 值 为 布 尔 型 , 如 果 刚 好 有 事件 发 生 在 该 属 性 所 附 着 的 信 号 上 ( 即 信 号 有 变化 ) , 则 其 取 值 为 True, 否 则 为 False。 利 用 此 属 性 可 识 别 时 钟 信 号 的 变 化 情 况 , 即 时钟 是 否 发 生 。 数 据 对 象 属 性 例 如 : 时 钟 边 沿 表 示 :signal clk : in std_logic;If( clkevent and clk=1 )then Q=Q+1;则 clkevent and clk=1表 示 时 钟 的 上 升 沿 。即 时 钟 变 化 了 , 且 其 值 为 1。 clkevent and clk=0表 示 时 钟 的 下 降 沿 。即 时 钟 变 化 了 , 且 其 值 为 0。数 据 对 象 属 性 例 2:设 计 组 合 逻 辑 电 路设 计 一 个 1bit全 加 器 。输 入 X,Y,CI 输 出 Z,CO library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity full_bit_adder isport(a,b,ci:in std_logic; y,cout:out std_logic);end full_bit_adder; architecture bh1 of full_bit_adder isbegin y = (not a)and (not b)and ci) or (not a)and (b) and (not ci) or (a)and (not b)and(not ci) or (a) and (b)and(ci); cout = (b and ci) or (a and ci) or (a and b);end bh1; architecture bh2 of full_bit_adder isbegin y = a xor b xor ci; cout 1 0 00-1 1 1D触 发 器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff ISPORT( cp,d: IN STD_LOGIC; q: OUT STD_LOGIC);END dff; ARCHITECTURE a OF dff ISBEGINprocess(cp)beginif cpevent and cp=1 thenq=d;end if;end process;END a; (3) 计 数 器 设 计计数器CLK Q LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE ieee.std_logic_arith.ALL;ENTITY counter ISPORT( clk: in STD_LOGIC; q: buffer STD_LOGIC_vector(3 downto 0);END counter; ARCHITECTURE a OF counter ISBEGIN process(clk) begin if (clkevent and clk=1) then q=q+1; end if; end process;END a; 无 控 制 端 四 位 加 计 数 器 ARCHITECTURE a OF counter ISBEGIN process(clk) begin if (clkevent and clk=1) then if(q9) then q=q+1; else q=0000; - q0); end if; end if; end process;END a; 无 控 制 端 10进 制 计 数 器
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!