EDA技术与VHDL_汇总
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据对象
信号
SIGNAL 信号名: 数据类型:= 初始值; 目标信号名<= 表达式 表达式AFTER 时间量 时间量; 目标信号名 SIGNAL a,b,c,y,z: INTEGER ; ... PROCESS (a,b,c) BEGIN y <= a + b ; z <= c – a ; y <= b ; END PROCESS ;
VHDL 基本语法
设计库和标准程序包
LIBRARY WORK ; LIBRARY STD ; USE STD.STANDARD.ALL ; LIBRARY <设计库名>; USE < 设计库名>.<程序包名>.ALL ; 如: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
数据对象
变量 目标变量名:= 表达式; 目标变量名 表达式
VARIABLE x,y : INTEGER RANGE 15 DOWNTO 0 ; --分别定义变量x和y为整数类型 VARIABLE a,b : STD_LOGIC_VECTOR(7 DOWNTO 0) ; x := 11 ; y := 2 + x ; -- 运算表达式赋值,y 也是实数变量 a := b --b向a赋值 a(0 TO 5) := b(2 TO 7) ;
整数类型INTEGER 范围——32位有符号的二进制数表示的数,包含正负整数和零 例如:
1 0 35 10E3 16#D9# 8#720# 2#11010010# 十进制整数 十进制整数 十进制整数 十进制整数,等于十进制整数1000 十六进制整数,等于十六进制整数D9H 八进制整数,等于八进制整数720O 二进制整数,等于二进制整数11010010B
顺序语句
LOOP语句
(1) 单个 单个LOOP语句,其语法格式如下: 语句, 语句 其语法格式如下: [ LOOP标号:] LOOP 顺序语句 END LOOP [ LOOP标号]; (2) FOR_LOOP语句,语法格式如下: [LOOP标号:] FOR 循环变量,IN 循环次数范围 LOOP 顺序语句 END LOOP [LOOP标号];
顺序语句
RETURN语句 返回语句RETURN有两种语句格式: RETURN; -- 第一种语句格式,结束过程,不返回任何值 RETURN 表达式; -- 第二种语句格式,返回一个值
返回语句RETURN,只能用于子程序体中。函数至少包含一个返 , 回语句。
空操作语句
NULL;
并行语句
并行信号赋值语句(Concurrent Signal Assignments)。 进程语句(Process Statements)。 块语句(Block Statements)。 条件信号赋值语句(Selected Signal Assignments)。 元件例化语句(Component Instantiations),其中包括 类属配置语句。 生成语句(Generate Statements)。 并行过程调用语句(Concurrent Procedure Calls)。 参数传递映射语句 端口说明语句
检测信号跳变
注:不完整条件语句——时序电路结构的必要条件和关键所在 不完整条件语句 时序电路结构的必要条件和关键所在 完整电路只能构成组合逻辑电路
VHDL 基本语法
须注明位宽) 标准逻辑矢量数据类型 STD_LOGIC_VECTOR (须注明位宽)
B <= "01100010" ; -- B(7)为'0‘ B(4 DOWNTO 1) <= "1101" ; -- B(4)为'1‘ B(7 DOWNTO 4) <= A ; -- B(6)等于A(2) SIGNAL C :BIT_VECTOR(3 DOWNTO 0);
数据对象
变量
注:局部量,只在进程和子程序使用,赋值没有延时
VARIABLE 变量名: 数据类型:= 初始值;
VARIABLE a : INTEGER RANGE 0 TO 15 ; --变量a定义为常数,取值范围是0到5 VARIABLE d : STD_LOGIC := ‘1’ ; --变量a定义为标准逻辑位数据类型, 初始值是1
VHDL 基本语法
1、BIT数据类型定义: 、 TYPE BIT IS(‘0’,‘1’); --只有两种取值 2、STD_LOGIC数据类型定义: 、 TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-'); 弱 强 强 强 高 弱 未 弱
初 始 化 0 1 0 1 知 未 辑 逻 辑 逻 阻 知 辑 未 逻 辑 逻
VHDL 语言
VHDL语句结构与语法小节
实体:以ENTITY. . .END ENTITY e_name描述器件的端口特性。 结构体: 以ARCHITECTURE ... END ARCHITECTURE 给出器件的逻辑功能和行为。 端口定义: 以PORT()语句定义器件端口及其数据类型。 端口模式: IN、OUT、INOUT、BUFFER描述端口数据的流向特征。 数据类型: 数据对象承载数据的类别:INTEGER、BOOLEAN、STD_LOGIC、 BIT、STD_LOGIC_VECTOR。 信号赋值符:“<=”,用于信号数据的传输,仿真传输延时最短为一个δ。 “ 条件比较符: “=”,在条件语句表式中用于比较待测数据的关系。 δ 延时: 模拟器最小分辨时间δ,或称延时δ 。 逻辑操作符: AND、OR、NOT、NAND、XOR、XNOR。 IF条件语句:IF_THEN_ELSE语句作为顺序语句。 并行条件语句:WHEN_ELSE条件信号赋值语句。 进程语句: 以PROCESS ...END PROCESS引导的语句结构。 顺序语句: 由进程语句引导的,以顺序方式执行的语句。 并行语句: 在结构体中以并行方式执行的语句。 文件取名: 建议文件名与VHDL设计的实体名一致,后缀是.vhd。
VHDL 基本语法
实体表达
实体名
ENTITY e_name IS
端口语句和端口信号名
PORT ( p_name : port_m data_type; ... p_namei : port_mi data_type ); END ENTITY e_name;
端口模式
端口模式
数据类型
“IN”、“OUT”、“INOUT”、“BUFFER” 、 、 、
Leabharlann Baidu
Q : BUFFER NATURAL RANGE 15 DOWNTO 0; NATURAL是INTEGER的子集,包含零和正整数
数据对象
常数
注:具有全局性
CONSTANT 常数名:数据类型:= 表达式;
CONSTANT FBT : STD_LOGIC_VECTOR := "010110" ; -- 标准位矢类型 CONSTANT DATAIN : INTEGER := 15 ; -- 整数类型
VHDL 基本语法
并置操作符& 并置操作符 SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; ... a <= '1'&'0'&d(1)&'1' ; -- 元素与元素并置,并置后的数组长度为4 ... IF a & d = "101011" THEN ... –- 在IF条件句中可以使用并置符
VHDL语句结构与语法小节
文件存盘: VHDL设计文件必须存于指定为工程的目录中,此目录将被设定为 WORK库,WORK库的路径即为此目录的路径。 VHDL库:LIBRARY语句打开VHDL库:IEEE库、标准库STD、工作库WORK . . 程序包: USE 语句声明使用程序包: STD_LOGIC_1164、 STD_LOGIC_UNSIGNED、STANDARD等程序。 数据对象:信号:SIGNAL,变量:VERIABLE,常数:CONSTANT 信号属性函数:信号属性函数EVENT、LAST_VALUE。 时钟检测: 时钟检测上升沿检测表式: CLK'EVENT AND CLK='1'、 RISING_EDGE()、FALLING_EDGE()等。 时序电路:不完整条件语句产生时序电路:IF … THEN … END IF,IF … THEN … ELSIF … THEN …END IF 真值表表达:表达方法之一是用CASE_WHEN语句,但要注意OTHERS的应用 。 并置操作符:并置操作符&可用于合并两个或多个逻辑矢量,构建成新的数组。 元件例化:由元件调用声明语句COMPONENT和映射语句PORT MAP( )构成。 运算符重载概念:当进行非整数类型数据运算操作时需要调用运算符重载函数, 这可以打开程序包STD_LOGIC_UNSIGNED。
数据对象
信号与变量赋值语句功能的比较
顺序语句
VHDL有6类基本顺序语句 有 类基本顺序语句 •赋值 赋值 •流程控制 流程控制 •等待 等待 •子程序调用 子程序调用 •返回 返回 •空操作 空操作
顺序语句
CASE语句 (顺序语句,须放在进程中) CASE <表达式> IS When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ; When <选择值或标识符> => <顺序语句>; ... ; <顺序语句> ; ... WHEN OTHERS => <顺序语句>; END CASE ;
顺序语句
(1) IF 条件句 Then 顺序语句 END IF ; (3) IF 条件句Then IF 条件句Then ... END IF END IF (4) IF 条件句Then 顺序语句 ELSIF 条件句Then 顺序语句 ... ELSE 顺序语句 END IF
(2) IF 条件句Then 顺序语句 ELSE 顺序语句 END IF ;
顺序语句
语句执行中进行转向控制。 种格式: (3)用于 )用于LOOP语句执行中进行转向控制。有3种格式: 语句执行中进行转向控制 种格式
NEXT; -- 第一种语句格式,无条件终止当前循环转向起点,开始下一次循环 NEXT LOOP 标号 -- 第二种语句格式,与一类似,但可以跳转到指定的循环 标号; NEXT LOOP 标号 WHEN 条件表达式; -- 第三种语句格式,当条件成立时,执 行跳转
数据类型 “INTEGER”、“BOOLEAN”、“STD_LOGIC”、”BIT“ 、 、 、
VHDL 基本语法
结构体表达
ARCHITECTURE arch_name OF e_name IS [说明语句] BEGIN (功能描述语句)
电路功能描述,并行语句 说明数据对象、类型、调用声明,并非必须
VHDL 基本语法
3. 信号定义和数据对象
SIGNAL Q1 : STD_LOGIC ;
比端口更灵活
数据对象有3种:信号,变量,常量 4. 上升沿检测表式和信号属性函数EVENT 上升沿检测表式和信号属性函数EVENT <信号名 信号名>'EVENT’ 信号名 5. 不完整条件语句与时序电路
IF CLK'EVENT AND CLK = '1' THEN Q1 <= D ;
顺序语句
WAIT语句
WAIT; -- 第一种语句格式,永远挂起进程 WAIT ON 信号表 -- 第二种语句格式,敏感信号有变化时结束挂起并重新启动 信号表; WAIT UNTIL 条件表达式 -- 第三种语句格式,条件满足时,结束挂起 条件表达式; WAIT FOR 时间表达式; -- 第四种语句格式,超时等待语句,超时后才恢复启动
END ARCHITECTURE arch_name ;
VHDL 基本语法
PROCESS (a,b,s) BEGIN IF s = '0' THEN y <= a ; ELSE y <= b ; END IF; END PROCESS; 敏感表
进程语句
顺序语句
赋值语句 进程启动语句 子程序调用语句 顺序描述语句 进程跳出语句
文件取名和存盘
关键词和文件名都不区分大小写,推荐文件名用小写,特别是后缀 关键词和文件名都不区分大小写,推荐文件名用小写,特别是后缀.vhd
3.8 进程语句归纳
3.8.3 进程要点 1. PROCESS为一无限循环语句 为一无限循环语句 2. PROCESS中的顺序语句具有明显的顺序 并行运行双重性 中的顺序语句具有明显的顺序/并行运行双重性 中的顺序语句具有明显的顺序 3. 进程必须由敏感信号的变化来启动 (或WAIT) ) 4. 进程语句本身是并行语句 5. 信号是多个进程间的通信线 6. 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑