VHDL基本语法

上传人:灯火****19 文档编号:125333116 上传时间:2020-03-17 格式:PPT 页数:59 大小:303KB
返回 下载 相关 举报
VHDL基本语法_第1页
第1页 / 共59页
VHDL基本语法_第2页
第2页 / 共59页
VHDL基本语法_第3页
第3页 / 共59页
VHDL基本语法_第4页
第4页 / 共59页
VHDL基本语法_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《VHDL基本语法》由会员分享,可在线阅读,更多相关《VHDL基本语法(59页珍藏版)》请在金锄头文库上搜索。

1、 VHDL基本语法 4 常用运算符 1 逻辑运算符 逻辑运算符有 6 种 NOT OR AND NAND NOR 和 XOR 常 用的是前 3 种 参加逻辑运算的 变量或者信号必须 有相同的数据类型和数据长度 逻辑 运算符适用的数据类型为 std logic bit std logic vector 例 SIGANL a b e f STD LOGIC SIGANL c d STD LOGIC VECTOR 7 DOWNTO 0 a AND b a OR b NOT a 正确 c AND d c XOR d NOT C 正确 a AND c 错误 因为数据类型不同 除了 not 运算符的优先级

2、最高外 其余逻辑 运算符的优先级相同 运算从左到右展开 因此要注意加括号 如 a AND b OR e AND f 不能写成 a AND b OR e AND f 2 并置运算符 并置运算符 SIGNAL c STD LOGIC VECTOR 2 DOWNTO 0 a AND 1 结果生成 4 位的 std logic vector c 结果生成 7 位的 std logic vector 3 算术运算符 算术运算符有 14 种 最常用的算术 运算符是 和 例 SIGNAL a b STD LOGIC VECTOR 3 DOWNTO 0 a b a 1 a 01 关系运算符关系运算符有下列几种

3、 等于 不等于 大于 大于等于 关系运算的结果为 真 或者 假 关系运算有如下规则 1 在进行关系运算时 两个对象的数 据类型必须相同 2 等于 不等于运算适用于所有数据 类型 3 大于 小于 大于等于和小于等于 适用于整数 实数 位 位矢量的比 较 4 运算符的优先级 各运算符优先级从最高到最低的顺序 同一行运算符优先级相同 如下 乘方 abs 取绝对值 乘 除 mod 取模 正号 负号 加 减 ror 逻辑循环右移 5 赋值语句 赋值语句的作用是给信号或者变量 赋值 它将赋值符号右边表达式的值赋 给左边的信号或者变量 赋值语句分为信号赋值语句和变量 赋值语句 1 信号赋值语句 格式 信号名

4、 表达式 由于信号是个真正的物理量 它对 应着电子电路的某一条连线 std logic 或者一组连线 std logic vector 因此它的赋值一定有时间延迟 举例 SIGNAL t1 clk clk1 STD LOGIC SIGNAL r0 r1 STD LOGIC VECTOR 15 DOWNTO 0 t1 1 clk1 NOT clk r0 x 0000 rl 0000000000000000 2 变量赋值语旬 格式 变量名 表达式 由于在电路设计中 变量不与某一物理 量一一对应 它只起到设计的辅助作用 用 于保存中间结果 做数组的下标等 因此变 量的赋值没有时间延迟 例 VARIA

5、BLE x y z INTEGER RANGE 0 TO 255 x 0 y 132 z x 6 IF 语句 IF语句属于描述硬件行为的语句 共有 三种用法 1 用于门闩控制的语句 格式 IF 条件 THEN 若干顺序执行语句 END IF 例1 用 if 语句设计的 D 触发器 程序片断 SIGNAL d clk q IF clk event AND cIk 1 THEN q d END IF Q Qd D Clk 对于描述触发器来说 经常要用到时钟的 上升沿和下降沿 下面是描述它们的 4 种 方法 clock event AND clock 1 上升沿 clock event AND cl

6、ock 0 下降沿 rising edge clock 上升沿 falling edge clock 下降沿 例2 用 IF 语句设计的锁存器 程序片断 SIGNAL d clk q STD LOGIC IF clk 1 THEN q d END IF 2 用于二选一控制的IF语句 格式 IF 条件 THEN 若干顺序执行语句 ELSE 若干顺序执行语句 END IF 例3 二选一电路 程序片断 SIGNAL sel STD LOGIC SIGNAL a b c STD LOGIC VECTOR 15 DOWNTO 0 IF sel 0 THEN c a ELSE c b END IF 3 用

7、于多选择控制的 if 语旬 格式 IF 条件 1 THEN 若干顺序执行语句 1 ELSIF 条件 2 THEN 若干顺序执行语句 2 ELSIF 条件 n 1 THEN 若干顺序执行语句 n 1 ELSE 若干顺序执行语句 n END IF 5 进程语句 PROCESS 进程语句是一个十分重要的语句 本质上它描述了一个功能独立的电路 块 process 语句有许多变种 这里只介绍 最基本的形式 格式 进程名 PROCESS 敏感信号 1 敏感信 号 2 敏感信号 n 若干变量说明语句 BEGIN 若干顺序执行语句 END PROCESS 进程名 process 语句中有个敏感信号表 各敏感信

8、号之间用逗号分开 所谓敏感信号就是指当它的状态发 生变化时 启动 process 语句执行 由于 process 语句代表一块功能独立 的电路 它的某些输入信号的状态 变 化 势必引起电路输出的变化 这些立 即引起 当然要经过短暂的时间延迟 输出信号状态 变化的信号就是敏感信 号 变量不是真正的物理量 因此不能 出现在敏感信号表中 在 process 语句中只作为输出存在的 信号 出现在信号赋值符 的左 边 不能作为敏感信 号 既出现在信号赋值符 的左边 又出现在信号赋值符 右边的信号 可以出现在敏感信号表中 这是因为 这些信号既作为这块电路的输出 又是 电路内部的反馈信号 进程语句的特点 1

9、 进程的启动由敏感信号表中所标明的 信号来触发 2 每个PROCESS语句内部语句顺序执行 3 多个PROCESS语句同时并行执行 例4 D 触发器 SIGNAL d clk q STD LOGIC PROCESS clk BEGIN IF clk event AND clk 1 THEN q 若干顺序执行语句 WHEN 条件表达式值n 若干顺序执行语句 WHEN OTHERS 若干顺序执行语句 END CASE 例6 运算器设计 参见程序例6 说明 一个有加 减 与 或功能的 16 位运 算器 其中 cin 是原来的进位 cout 是运 算后的 三位值 q 是运算的结果 a 和 b 是 2

10、个操作数 sel 是个 2 位的运算选择码 本例中result是个17位的 STD LOGIC VECTOR信号 它是为了产 生进位信号而设置的 例 7 2 与非门 参见程序 例7 说明 本例中 首先将与非门输入信号 a 和 b 并置 生成一个 2 位的 std logic vector 信号 sel 信号 C 是与非门的输出 第一个 when 中的 代表或者 即 3 个条件中的任何一 个满足 执行 C 信号名 1 端口名 2 信号名 2 端口名 n 信号名 n 其中 信号名 1 到信号名 n 都是较高层 设计实体中的信号名 端口名 1 到端口名 n 是元件的 端口名 标号是可选的 信号映 射

11、表中的各项用 分开 第 1 种映射方式中 信号名 1 到信号名 n 的书写顺序必须和 port map 语句映射的元 件的 端口名书写顺序一致 以便一一对应 第 2 种映射方式把元件端口名和较高层设 计实体中使用的信号名显式对应起来 映射 表中各项的书写顺序不受任何限制 推荐用第 2 种映射方式 二 用层次结构设计方法设计一个与或门 例 设计一个与或门 实现的功能为 and or result a1and a2 or a3 and a4 a1 a2 a3 a4 and or result op1 op2 op1 op2 and result or result 1 低层的设计实体 and ga

12、te 它将两个输入信号 op1 和 op2 进行 与 运算 产生输 1 出信号 and result 2 低层的设计实体 or gate 它将两个输入信号 op1 和 op2 进行 或 运 算 产生输 1 出信号 or result 参见程序例8 3 顶层设计实体 and or gate 它把两 个低层设计实体当作元件引用 在 高层设计实体 and or gate 的结构体 struet 中 在 begin 之前 对信号 b1 句 b2 和元件 and gate or gate 进行了说 明 在 begin 之后对元件 and gate 例化了 2 次 对元件 or gate 例化了 1 次

13、信号 b1 b2 用于 3 个元件 2 个 and gate 和 1 个or gate 之间的连接 这个结构体采用了典型的结构描述方法 程序包的用法 上述例子也可改用程序包的方法 修改程序参见例9 5 4用 VHDL 设计硬件的建议 1 进行层次结构设计时层次一定要清楚 2 给信号起名字时含义要清楚 不要随便 这样不仅其他人阅读方便 自己阅读也方 便 否则几个月后自己也会忘记 3 几个人同时设计一个大工程时 主要是模 块的划分 以及制定各模块之间的接口 这是最重要的工作 4 设计实体内使用的元件不要太多 否则阅 读将非常困难 层次宁可多几级 以便每 一个设计实体内部清晰 可读性强 5 书写的形式不影响编译 不过为了增强可 读性和查找错误 书写程序时要注意层次分 明 采用缩进形式增强可读性 6 在程序中增加注释 帮助理解程序的内容

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 外语文库 > 英语学习

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号