VHDL语法格式 下载本文

上篇 基础元素

目录: 数据类型 数据对象 运算符 语句 基本程序结构 电路描述方式

数据类型

预定义类型 bit bit_victor integer std_logic std_logic_victor 自定义类型 枚举类型 type 新数据类型 is (元素1, 元素2, ...) 例 定义 type state_type is (s1, s2, s3. s4); 引用 signal state : state_type; 数组类型 type 数组 is array (范围) of 数据类型; 例 定义 type byte is array (7 downto 0) of bit; type word is array (31 downto 0) of bit;

-- 定义一个8bit的数组 -- 定义一个新类型state_type

-- 定义一个信号state,类型为state_type

-- 定义一个32bit的数组

数据对象

端口 声明

赋值

端口 : in | out 数据类型; 端口 <= 表达式; signal 信号 : 数据类型; 信号 <= 表达式; varable 变量 : 数据类型;

-- 端口在特性上等同于信号,但赋值在entity的port中

信号 声明

赋值

变量 声明

VHDL语法格式 1

赋值 变量 := 表达式;

常数 : 数据类型 := 数值;

常数 声明

运算符

算术运算 +, -, * 并置运算 &

关系运算 =, /=, <, <=, >, >=

逻辑运算 and, or, not, nand, nor, xor, xnor

语句

并行语句 ⑴ 信号赋值语句

简单信号赋值语句 信号 <= 表达式; 选择信号赋值语句 with 选择表达式 select

信号 <= 表达式1 when 选择值1, 表达式2 when 选择值2, ......

表达式n when others;

条件信号赋值语句 信号 <= 表达式1 when 条件关系式1 else 表达式2 when 条件关系式2 else ......

表达式n when 条件n else 表达式; ⑵ 过程调用语句 过程 (实参);

⑶ 函数调用语句 信号 <= 函数 (实参);

VHDL语法格式 2

⑷ 元件例化语句

元件声明 component 元件实体 -- 将一个实体声明为元件 port (端口声明); end component; 元件引用

按位置引用 标号 : 元件实体 port map (连接端口1, 连接端口2, ...);

按名称引用 标号 : 元件实体 port map (元件端口1 >= 连接端口1, 元件端口2 >= 连接端口2, ...); ⑸ 生成语句 格式 1 [标号:] for 循环变量 in 取值范围 generate 声明语句, begin 并行语句, end generate [标号];

取值范围: 表达式 to 表达式; -- 递增方式,如1 to 5 表达式 downto 表达式 ; -- 递减方式,如5 downto 1 格式 2 [标号:] if 条件关系式 generate 声明语句; begin 并行语句,

end generate [标号] , ⑹ 块语句 块标号: block [(保护条件)] 接口声明; 类属声明; begin

VHDL语法格式

3

并行语句; -- 被保护的变量前需加上保留字guarded end block 块标号; 带保护的块语句举例: entity latch is port( d, clk : in bit; q, qb : out bit ); end latch;

achetectire latch_guard of latch is begin

b1 : block(clk = ?1?) begin

q <= guarded d after 5 ns; qb <= guarded not(d) after 7 ns; end block b1; end latch_guard

⑺ 进程语句 [标号:] process (敏感信号)

[声明语句;] --常量,变量,信号 begin 顺序语句; end process [标号:];

顺序语句 ⑴ 赋值语句 -- 在进程中

VHDL语法格式

4

信号 <= 表达式; 变量 := 表达式; ⑵ 流程控制语句 if语句

格式 1: if 条件关系式 then 顺序语句; end if;

格式 2: if 条件关系式 then 顺序语句; else 顺序语句; end if;

格式 3: if 条件关系式1 then 顺序语句;

elsif 条件关系式2 then 顺序语句; ...... else 顺序语句; end if;

case 语句 -- case 语句中,条件值有3种形式:值,值1 | 值2 |...| 值n,值 TO 值

-- 最后一行的顺序语句若为null,则有意引入锁存器

case 条件表达式 is

VHDL语法格式

5