第5节 VHDL基本描述语句(2)
第5节 VHDL基本描述语句(2)
并行过程调用语句、并行断言语句
- 过程调用语句:
--顺序过程调用语句:进程或子程序内部;
--并行过程调用语句:结构体并行语句或块语句中。并发执行,等价于一个进程语句。
--格式:过程名(参数表) - 断言(assert)语句:
--用于仿真、调试中的人机对话;在仿真中报告指定的错误信息,以便程序的修改;
--顺序断言语句:进程、函数、过程中;
--并行断言语句:实体说明、结构体、块语句中。
元件例化语句

元件例化语句
- 低层次元件嵌入到高一层的设计中,并把相应端口正确连接起来,就是元件例化语句的功能。体现层次化设计、模块化设计思想;
- 应用广泛,避免大量重复工作;
- 用Component语句指明结构体所要调用的元件、单元或模块;
- 用Port Map语句进行元件端口信号映射(包括位置映射和名称映射);
- 元件描述:用于声明端口类型和数据类型
COMPONENT <低层设计名称> IS
PORT ( <端口名称> : <端口类型> <数据类型>; ….. <端口名称> : <端口类型> <数据类型>; )
END COMPONENT; - 元件配置:用于映射端口
<实例名称> : <低层设计名称>PORT MAP(
<低层端口名称> => <本层端口名称>; … ;
<低层端口名称> => <本层端口名称>;)
类属(Generic)语句
- 一个实体的结构体描述经常分解为不同层次模块的组合。类属语句实现各个模块之间公共参数(如位矢量长度、数组长度、延时时间等)的传递。
- 类属语句通常放在实体说明部分,所定义的参数整个实体可见。
- 使用Generic语句易于使器件模块化和通用化。例如,在设计中有一些参数不能确定,为了简化设计和减少VHDL语言的书写,通常编写通用的VHDL源代码。
- 在设计的源代码中,这些参数是待定的,在仿真时,只要用Generic语句将待定参数初始化即可。
- 在例化元件时采用参数匹配命令Generic Map来改变参数的值。
生成(Generate)语句
- 用来产生多个相同的结构,避免多段相同结构的VHDL程序的重复书写。
- 例如:将D触发器扩展成移位寄存器、移位寄存器扩展为移位寄存器阵列等等。
- 基本格式:
[生成标号]:工作模式描述 GENRATE
<并行处理语句>;
END GENRATE [生成标号]; - 有FOR和IF两种工作模式:
--For:常用来进行重复结构的描述;
--IF:常用来进行含有例外情况的重复结构的描述。
顺序语句
- 顺序赋值语句
- Wait 语句
- IF 语句
- CASE 语句
- LOOP 语句
- NEXT 语句
- EXIT 语句
- NULL 语句
- RETURN 语句
- 顺序断言语句
- REPORT 语句
- 顺序过程调用语句
顺序赋值语句、Wait语句
- 顺序赋值语句
--进程中语句是顺序执行的;
--注意信号赋值与变量赋值的区别。 - Wait语句:用于指明启动进程的敏感信号
--Wait: 无限等待;
--Wait on: 等待敏感信号变化;
--Wait for: 等待指定的时间;
--Wait until: 等待条件表达式为真;
--多条件:Wait on … until … for …
IF语句
- 基本格式:
[IF标号:]
IF 布尔表达式 THEN
顺序语句
[ELSIF 布尔表达式 THEN
顺序语句];
……
[ELSE 顺序语句];
END IF [IF标号]
IF语句根据条件是否成立来决定语句的执行顺序;
能够嵌套使用;是顺序语句,可在进程中使用。
CASE语句
- 基本格式:
[CASE标号:]
CASE 表达式 IS
WHEN 条件值1=>顺序语句;
WHEN 条件值2=>顺序语句;
WHEN 条件值3=>顺序语句;
……
[WHEN Others=>顺序语句;]
END CASE[CASE标号]
根据表达式的取值来决定进行某项操作;
条件值不能重复,不能遗漏,others只能在最后出现一次。
LOOP语句
- 主要功能:使程序进行有规则的循环,循环次数受迭代算法的控制。
- 两种形式:
--For循环:用于规定数目的循环;
--While循环:用控制条件判断循环是否结束; - 基本格式:
[LOOP标号:]
[重复模式] LOOP
顺序语句;
END LOOP [LOOP标号]
两种跳出循环的语句
- Next语句:在循环语句内部,跳出本次循环

- Exit语句:在循环语句内部,跳出整个循环。

其他顺序语句
- Null语句:
空操作,不发生任何动作。
常用于Case语句。
- Return语句:
只用在函数和过程中,用来结束函数和过程的执行。
- 顺序断言语句:
只在进程、函数、过程中使用。
- 顺序过程调用语句。
只在进程、函数、过程中使用。


