1、EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第1页2022年11月18日第一讲 VHDL编程基础 1.1 1.1 概述概述 1.2 VHDL1.2 VHDL程序基本结构程序基本结构 1.3 VHDL1.3 VHDL语言要素语言要素 EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第2页2022年11月18日1.1 1.1 概概 述述 1.1.1 1.1.1 常用硬件描述语言简介常用硬件描述语言简介EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第3页2022年11月
2、18日1.2 VHDL1.2 VHDL程序基本结构程序基本结构 1.2.1 VHDL1.2.1 VHDL程序设计举例程序设计举例1)1)或门的逻辑描述或门的逻辑描述 LIBRARY IEEELIBRARY IEEE;-IEEE-IEEE库的使用说明库的使用说明 USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL;ENTITY OR2 IS ENTITY OR2 IS -实体实体OR2OR2的说明的说明 PORT(APORT(A,B B:IN STD_LOGICIN STD_LOGIC;C C:OUT STD_LOGIC)OUT STD_
3、LOGIC);END ENTITY OR2END ENTITY OR2;-实体实体OR2OR2的结构体的结构体ART1ART1的说明的说明 ARCHITECTURE ART1 OF OR2 ISARCHITECTURE ART1 OF OR2 IS BEGIN BEGIN C=A OR B C=A OR B;END ARCHITECTURE ART1END ARCHITECTURE ART1;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第4页2022年11月18日2)2)半加器的逻辑描述半加器的逻辑描述 -IEEE-IEEE库的使用说明库的使用说明
4、 LIBRARY IEEELIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL;-实体实体H_ADDERH_ADDER的说明的说明 ENTITY H_ADDER ISENTITY H_ADDER IS PROT(A PROT(A,B B:IN STD_LOGICIN STD_LOGIC;COCO,SOSO:OUT STD_LOGIC)OUT STD_LOGIC);END ENTITY H_ADDEREND ENTITY H_ADDER;-实体实体H_ADDERH_ADDER的结构体的结构体ART2ART2的说明的
5、说明 ARCHITECTURE ART2 OF H_ADDER ISARCHITECTURE ART2 OF H_ADDER IS BEGIN BEGIN SO=A XOR B SO=A XOR B;CO=A AND BCO=A AND B;END ARCHITECTURE ART2END ARCHITECTURE ART2;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第5页2022年11月18日1.2.2 VHDL1.2.2 VHDL程序的基本结构程序的基本结构库、程序包使用说明配置(CONFIGURATION)结构体(ARCHITECTURE)
6、实体(ENTITY)PORT端口说明结构体说明GENERIC类属说明体实计设结构体功能描述EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第6页2022年11月18日1.2.3 1.2.3 库库用来存储预先完成的程序包和数据集合体的仓库。用来存储预先完成的程序包和数据集合体的仓库。语句格式:语句格式:LIBRARY LIBRARY 库名;库名;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第7页2022年11月18日种类:种类:IEEEIEEE库、库、STDSTD库、库、WORKWORK库、库、VITALVI
7、TAL库库用法:用法:a aUSE USE 库名库名.程序包名程序包名.项目名;项目名;b bUSE USE 库名库名.程序包名程序包名.ALL.ALL;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第8页2022年11月18日 例:例:LIBRARY IEEELIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALL;EDA技术及技术及CPLD/FP
8、GA应用简明教程应用简明教程 清华大学出版社清华大学出版社第9页2022年11月18日1.2.4 1.2.4 实体实体(ENTITY)(ENTITY)1 1实体语句结构实体语句结构实体说明单元的常用语句结构如下:实体说明单元的常用语句结构如下:ENTITY ENTITY 实体名实体名 ISIS GENERIC(GENERIC(类属表类属表);PORT(PORT(端口表端口表);END ENTITY END ENTITY 实体名;实体名;实体是对设计实体与外部电路进行接口描述,是实体是对设计实体与外部电路进行接口描述,是设计实体经封装后对外的一个通信界面。设计实体经封装后对外的一个通信界面。ED
9、A技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第10页2022年11月18日3 3PORTPORT端口说明端口说明书写格式:书写格式:PORT(PORT(端口名:端口模式端口名:端口模式 数据类型;数据类型;端口名:端口模式端口名:端口模式 数据类型数据类型);端口名端口名 :实体的每一个对外通道的名字:实体的每一个对外通道的名字端口模式端口模式:数据流动方式(:数据流动方式(4类)类)数据类型数据类型:数据的表达格式(主要:数据的表达格式(主要2类)类)EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第11页2
10、022年11月18日1.2.5 1.2.5 结构体结构体(ARCHITECTURE)(ARCHITECTURE)结构体是用于描述设计实体的内部结构以结构体是用于描述设计实体的内部结构以及实体端口间的逻辑关系。及实体端口间的逻辑关系。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第12页2022年11月18日进程语句块语句体结构明说体构结述能描功体构结元件例化语句子程序调用语句信号赋值语句常数说明数据类型说明信号说明例化元件说明子程序说明EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第13页2022年11月1
11、8日 语句格式:语句格式:ARCHITECTURE ARCHITECTURE 结构体名结构体名 OF OF 实体名实体名 ISIS 说明语句说明语句 BEGIN BEGIN 功能描述语句功能描述语句 END ARCHITECTURE END ARCHITECTURE 结构体名;结构体名;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第14页2022年11月18日结构体说明语句:结构体说明语句:对结构体的功能描述语句中将要用到的信号对结构体的功能描述语句中将要用到的信号(SIGNAL)(SIGNAL)、数据类型、数据类型(TYPE)(TYPE)、常数、
12、常数(CONSTANT)(CONSTANT)、元件、元件(COMPONENT)(COMPONENT)、函数、函数(FUNCTION)(FUNCTION)和过程和过程(PROCEDURE)(PROCEDURE)等等加以说明的语句。加以说明的语句。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第15页2022年11月18日功能描述语句:功能描述语句:功能描述语句结构可以含有五种不同类型(功能描述语句结构可以含有五种不同类型(块语块语句、进程语句、子程序调用语句、信号赋值语句和元句、进程语句、子程序调用语句、信号赋值语句和元件例化语句件例化语句)的,以并行
13、方式工作的语句结构。而在)的,以并行方式工作的语句结构。而在每一语句结构的内部可能含有并行运行的逻辑描述语每一语句结构的内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句。句或顺序运行的逻辑描述语句。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第16页2022年11月18日1.3 VHDL1.3 VHDL语言要素语言要素1.3.1 VHDL1.3.1 VHDL文字规则文字规则EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第17页2022年11月18日1 1 数字型文字数字型文字整数文字:整数文字:
14、整数都是十进制的数,如:5,678,0,156E2(=15600),45_234_287(=45234287)实数文字:实数文字:实数也都是十进制的数,但必须带有小数点,如:1.335,88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499)以数制基数表示的文字:以数制基数表示的文字:用这种方式表示的数由五个部分组成。SIGNAL d1,d2,d3,d4,d5,:INTEGER RANGE 0 TO 255;d1=110#170#;-(十进制表示,等于十进制表示,等于 170)d2=16#FE#;-(十六进制表示,等于十六进制表示,等
15、于 254)d3=2#1111_1110#;-(二进制表示,等于二进制表示,等于 254)d4=8#376#;-(八进制表示,等于八进制表示,等于 254)d5=16#E#E1 ;-(十六进制表示,等于十六进制表示,等于2#1110000#,等于,等于224)物理量文字物理量文字(VHDL综合器不接受此类文字)。如:60s(60秒秒),100m(100米米),k(千欧姆千欧姆),177A(177安培安培)EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第18页2022年11月18日2 2 字符串型文字字符串型文字(1)文字字符串)文字字符串(2)数位字
16、符串)数位字符串ERROR ,Both S and Q equal to 1,X ,BB$CC B:二进制基数符号,表示二进制位:二进制基数符号,表示二进制位0或或1,在字符串中的每位表示一个,在字符串中的每位表示一个Bit。O:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个3位位(BIT)的二进制数。的二进制数。X:十六进制基数符号:十六进制基数符号(0F),代表一个十六进制数,即一个,代表一个十六进制数,即一个4位的二进制数。位的二进制数。data1=B1_1101_1110 -data1=B1_1101_
17、1110 -二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是9 9data2=O15 -data2=O15 -八进制数数组,位矢数组长度是八进制数数组,位矢数组长度是6 6data3=XAD0 -data3=XAD0 -十六进制数数组,位矢数组长度是十六进制数数组,位矢数组长度是1212data4=B101_010_101_010 -data4=B101_010_101_010 -二进制数数组,位矢数组长度是二进制数数组,位矢数组长度是1212data5=101_010_101_010 -data5=101_010_101_010 -表达错误,缺表达错误,缺B B。data6=0AD0
18、 -data6=0AD0 -表达错误,缺表达错误,缺X X。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第19页2022年11月18日3 3 标识符标识符规则:规则:*有效的字符:包括有效的字符:包括2626个大小写英文字母,数字包括个大小写英文字母,数字包括0 09 9 以及下划线以及下划线“_”_”。*任何标识符必须以英文字母开头。任何标识符必须以英文字母开头。*必须是单一下划线必须是单一下划线“_”_”,且其前后都必须有英文字,且其前后都必须有英文字母或数字。母或数字。*标识符中的英语字母不分大小写。标识符中的英语字母不分大小写。*允许包含图
19、形符号允许包含图形符号(如回车符、换行符等如回车符、换行符等),也允许,也允许包含空格符。包含空格符。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第20页2022年11月18日4 4 下标名下标名SIGNAL aSIGNAL a,b:BIT_VECTOR(0 TO 3);b:BIT_VECTOR(0 TO 3);z=b(3);z=b(3);语句格式:语句格式:数组类型信号名或变量名数组类型信号名或变量名(表达式表达式1 TO/DOWNTO 1 TO/DOWNTO 表达式表达式2)2);EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清
20、华大学出版社清华大学出版社第21页2022年11月18日1.3.2 VHDL1.3.2 VHDL数据对象数据对象EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第22页2022年11月18日1 1常量常量(CONSTANT)(CONSTANT)定义形式:定义形式:CONSTANT CONSTANT 常量名:数据类型常量名:数据类型=表达式;表达式;常量定义语句所允许的设计单元有实体、结构体、程常量定义语句所允许的设计单元有实体、结构体、程序包、块、进程和子程序。序包、块、进程和子程序。常量的使用范围取决于它常量的使用范围取决于它被定义的位置。被定义的位
21、置。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第23页2022年11月18日2 2变量变量(VARIABLE)(VARIABLE)a a变量是一个局部量,只能在进程和子程序中使用变量是一个局部量,只能在进程和子程序中使用b b变量的赋值是一种理想化的数据传输变量的赋值是一种理想化的数据传输c cVHDLVHDL语言规则不支持变量附加延时语句语言规则不支持变量附加延时语句d d变量常用在实现某种算法的赋值语句中变量常用在实现某种算法的赋值语句中EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第24页2022
22、年11月18日定义语法格式:定义语法格式:VARIABLE VARIABLE 变量名:数据类型:变量名:数据类型:=初始值初始值;附值语法格式:附值语法格式:目标变量名目标变量名:=:=表达式;表达式;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第25页2022年11月18日3.3.信号信号(SIGNAL)(SIGNAL)信号是描述硬件系统的基本数据对象,类似于连接线。信号是描述硬件系统的基本数据对象,类似于连接线。定义语法格式:定义语法格式:SIGNAL SIGNAL 信号名:信号名:数据类型数据类型=初始值;初始值;附值语法格式:附值语法格式:
23、目标变量名目标变量名=表达式;表达式;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第26页2022年11月18日 4 4三者的使用比较三者的使用比较(2)(2)从行为仿真和从行为仿真和VHDLVHDL语句功能上看,信号与变量的语句功能上看,信号与变量的区别主要表现在接受和保持信号的方式、信息保持与区别主要表现在接受和保持信号的方式、信息保持与传递的区域大小上。传递的区域大小上。(1)(1)从硬件电路系统来看,所代表的意义不同。从硬件电路系统来看,所代表的意义不同。(3)(3)从综合后所对应的硬件电路结构来看,信号一般从综合后所对应的硬件电路结构来看
24、,信号一般将对应更多的硬件结构。将对应更多的硬件结构。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第27页2022年11月18日1.3.3 1.3.3 数据类型数据类型标量型标量型(Scalar Type)Scalar Type)复合类型复合类型(Composite Type)Composite Type)存取类型存取类型(Access Type)Access Type)文件类型文件类型(Files Type)Files Type)EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第28页2022年11月18
25、日1 VHDL1 VHDL的预定义数据类型的预定义数据类型1.1.布尔布尔(BOOLEAN)(BOOLEAN)数据类型数据类型2.2.位位(BIT)(BIT)数据类型数据类型3.3.位矢量位矢量(BIT_VECTOR)(BIT_VECTOR)数据类型数据类型4.4.字符字符(CHARACTER)(CHARACTER)数据类型数据类型5.5.整数整数(INTEGER)(INTEGER)数据类型数据类型6.6.实数实数(REAL)(REAL)数据类型数据类型EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第29页2022年11月18日7.7.字符串字符串(
26、STRING)(STRING)数据类型数据类型VARIABLE string_var:STRING(1 TO 7);string_var:=a b c d;8.8.时间时间(TIME)(TIME)数据类型数据类型TYPE time IS RANGE 2147483647 TO 2147483647 units fs;-飞秒,飞秒,VHDL中的最小时间单位中的最小时间单位 ps=1000 fs;-皮秒皮秒 ns=1000 ps;-纳秒纳秒 us=1000 ns;-微秒微秒 ms=1000 us;-毫秒毫秒 sec=1000 ms;-秒秒 min=60 sec;-分分 hr=60 min;-时时e
27、nd units;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第30页2022年11月18日2 IEEE2 IEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量1.1.标准逻辑位标准逻辑位STD_LOGICSTD_LOGIC数据类型数据类型2.2.标准逻辑矢量标准逻辑矢量(STD_LOGIC_VECTOR)(STD_LOGIC_VECTOR)数据类型数据类型STD_LOGIC_VECTOR类型定义如下:TYPE STD_LOGIC_VECTOR IS ARRAY(NATURAL TYPE STD_LOGIC_VECTOR IS ARRAY(NATU
28、RAL RANGE )OF STD_LOGIC;RANGE )OF STD_LOGIC;TYPE STD_LOGIC IS(UTYPE STD_LOGIC IS(U,XX,00,11,ZZ,WW,LL,HH,-)-);EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第31页2022年11月18日3 3 其他预定义标准数据类型其他预定义标准数据类型1.1.无符号数据类型无符号数据类型(UNSIGNED TYPE)UNSIGNED TYPE)2.2.有符号数据类型有符号数据类型(SIGNED TYPE)SIGNED TYPE)十进制的8可以作如下表示:UN
29、SIGNED(1000)UNSIGNED(1000)两则无符号数据定义的示例:VARIABLE var:UNSIGNED(0 TO 10);VARIABLE var:UNSIGNED(0 TO 10);SIGNAL sig:UNSIGNED(5 TO 0);SIGNAL sig:UNSIGNED(5 TO 0);例如:SIGNED(0101)SIGNED(0101)代表代表+5+5,5 5SIGNED(1011)SIGNED(1011)代表代表 5 5EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第32页2022年11月18日4 4 用户自定义数据类
30、型方式用户自定义数据类型方式类型定义语句类型定义语句TYPE语句格式如下:TYPE TYPE 数组类型名数组类型名 IS IS 数据类型定义数据类型定义 OF OF 基本数据类型基本数据类型 ;子类型定义语句子类型定义语句子类型语句格式如下:SUBTYPE SUBTYPE 子类型名子类型名IS IS 基本数据类型基本数据类型 RANGE RANGE 约束范围约束范围 ;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第33页2022年11月18日5 5 枚举类型枚举类型 用文字符号表示一组实际的二进制数的类型,一般将第一个枚举量编码为位矢量0,位矢的长
31、度取所有元素的最小值。TYPE M_STATE IS(STATE1,STATE2,STATE3,STATE4,TYPE M_STATE IS(STATE1,STATE2,STATE3,STATE4,STATE5);STATE5);EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第34页2022年11月18日6 6 整数类型和实数类型整数类型和实数类型TYPE N1 IS RANGE 0 TO 100 TYPE N1 IS RANGE 0 TO 100;-7-7位二进制原码位二进制原码TYPE N2 IS RANGE 0 TO 6 TYPE N2 IS
32、RANGE 0 TO 6;-3-3位二进制原码位二进制原码EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第35页2022年11月18日7 7 数组类型数组类型限定性数组限定性数组限定性数组定义语句格式如下:TYPE TYPE 数组名数组名IS ARRAY(IS ARRAY(数组范围数组范围)OF)OF 数据类型数据类型 ;非限定性数组非限定性数组非限制性数组的定义语句格式如下:TYPE TYPE 数组名数组名IS ARRAY(IS ARRAY(数组下标名数组下标名RANGE RANGE)OF)OF 数据类型数据类型 ;EDA技术及技术及CPLD/FP
33、GA应用简明教程应用简明教程 清华大学出版社清华大学出版社第36页2022年11月18日8 8 记录类型记录类型记录类型的语句格式如下:记录类型的语句格式如下:TYPE 记录类型名 IS RECORD 元素名 :元素数据类型;元素名 :元素数据类型;END RECORD 记录类型名;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第37页2022年11月18日9 9 数据类型转换数据类型转换1 1)类型转换函数)类型转换函数CONV_STD_LOGIC_VECTORCONV_STD_LOGIC_VECTOR、CONV_INTEGERCONV_INTEG
34、ER2 2)直接类型转换)直接类型转换数据类型标识符数据类型标识符(表达式表达式)EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第38页2022年11月18日1.3.4 VHDL1.3.4 VHDL操作符操作符类型操作符功能操作数数据类型关系操作符=等于等于任何数据类型任何数据类型/=/=不等于不等于任何数据类型任何数据类型 大于大于枚举与整数类型及其一维数组枚举与整数类型及其一维数组=大于等于大于等于枚举与整数类型及其一维数组枚举与整数类型及其一维数组逻辑操作符ANDAND与与BITBIT、BOOLEANBOOLEAN,STD_LOGICSTD_L
35、OGICOROR或或BITBIT、BOOLEANBOOLEAN,STD_LOGICSTD_LOGICNANDNAND与非与非BITBIT、BOOLEANBOOLEAN,STD_LOGICSTD_LOGICNORNOR或非或非BITBIT、BOOLEANBOOLEAN,STD_LOGICSTD_LOGICXORXOR异或异或BITBIT、BOOLEANBOOLEAN,STD_LOGICSTD_LOGICXNORXNOR异或非异或非BITBIT、BOOLEANBOOLEAN,STD_LOGICSTD_LOGICNOTNOT非非BITBIT、BOOLEANBOOLEAN,STD_LOGICSTD_L
36、OGICEDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第39页2022年11月18日类型操作符操作符功能功能操作数数据类型操作数数据类型算术操作符+加加整数整数-减减整数整数&并置并置一维数组一维数组*乘乘整数和实数整数和实数/除除整数和实数整数和实数MODMOD取模取模整数整数REMREM取余取余整数整数SLLSLL逻辑左移逻辑左移BITBIT或布尔型一维数组或布尔型一维数组SRLSRL逻辑右移逻辑右移BITBIT或布尔型一维数组或布尔型一维数组SLASLA算术左移算术左移BITBIT或布尔型一维数组或布尔型一维数组SRASRA算术右移算术右移BI
37、TBIT或布尔型一维数组或布尔型一维数组ROLROL逻辑循环左移逻辑循环左移BITBIT或布尔型一维数组或布尔型一维数组RORROR逻辑循环右移逻辑循环右移BITBIT或布尔型一维数组或布尔型一维数组*乘方乘方整数整数ABSABS取绝对值取绝对值整数整数+正正整数整数-负负整数整数EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第40页2022年11月18日运算符优先级NOT、ABS、*最高优先级最低优先级*、/、MOD、REM+(正号)、-(负号)+、-、&SLL、SLA、SRL、SRA、ROL、ROR=、/=、=AND、OR、NAND、NOR、XO
38、R、XNOREDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第41页2022年11月18日【例】【例】SIGNAL a,b,c:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d,e,f,g:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL h,I,j,k:STD_LOGIC;SIGNAL l,m,n,o,p:BOOLEAN;.a=b AND c;-b、c 相与后向相与后向a赋值,赋值,a、b、c的数据类型同属的数据类型同属4位长的位矢量位长的位矢量 d=e OR f OR g;-两个操作符两个操作符OR相
39、同,不需括号相同,不需括号 l=(m XOR n)AND(o XOR p);-操作符不同,必须加括号操作符不同,必须加括号 h=i AND j AND k;-两个操作符都是两个操作符都是AND,不必加括号,不必加括号 h=i AND j OR k;-两个操作符不同,未加括号,表达错误两个操作符不同,未加括号,表达错误 a=b AND e;-操作数操作数b 与与 e的位矢长度不一致,表达错误的位矢长度不一致,表达错误 h=i OR l;-i 的数据类型是位的数据类型是位STD_LOGIC,而,而l的数据类型是的数据类型是.-布尔量布尔量BOOLEAN,因而不能相互作用,表达错误。,因而不能相互作
40、用,表达错误。1 1 逻辑操作符逻辑操作符EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第42页2022年11月18日2 2 关系操作符关系操作符【例】【例】ENTITY relational_ops_1 IS PORT(a,b:IN BITVECTOR(0 TO 3);m:OUT BOOLEAN);END relational_ops_1;ARCHITECTURE example OF relational_ops_1 IS BEGIN m”(”(大于大于)、“”(=”(=”(大于等大于等于于)“=”(“=”(小于等小于等于于)EDA技术及技术及C
41、PLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第43页2022年11月18日3 3 算术操作符算术操作符类别算术符求和操作符+(加)、-(减)、&(并置)求积操作符*、/、MOD、REM符号操作符+(正号)、-(负号)混合操作符ABS、*移位操作符SLL、SLA、SRL、SRA、ROL、ROREDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第44页2022年11月18日4 4 各种操作符的使用说明各种操作符的使用说明(1)(1)严格遵循在基本操作符间操作数是同数据类型的严格遵循在基本操作符间操作数是同数据类型的规则;严格遵循操作
42、数的数据类型必须与操作符所要规则;严格遵循操作数的数据类型必须与操作符所要求的数据类型完全一致的规则。求的数据类型完全一致的规则。(2)(2)注意操作符之间的优先级别。当一个表达式中有注意操作符之间的优先级别。当一个表达式中有两个以上的算符时,可使用括号将这些运算分组。两个以上的算符时,可使用括号将这些运算分组。EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第45页2022年11月18日第二讲 VHDL顺序语句2.1 2.1 赋值语句赋值语句 2.2 2.2 转向控制语句转向控制语句 2.3 2.3 空操作语句空操作语句 2.4 2.4 其它语句和说
43、明其它语句和说明 EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第46页2022年11月18日EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第47页2022年11月18日2.1 2.1 赋值语句赋值语句变量赋值:变量赋值:局部特征、无延时局部特征、无延时信号赋值:信号赋值:全局特征、有延时全局特征、有延时语法格式:语法格式:变量赋值目标变量赋值目标:=:=赋值源;赋值源;语法格式:语法格式:信号赋值目标信号赋值目标 =赋值源;赋值源;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版
44、社清华大学出版社第48页2022年11月18日【例【例】SIGNAL S1SIGNAL S1:STD_LOGICSTD_LOGIC;SIGNAL SVEC SIGNAL SVEC :STD_LOGIC_VECTOR(0 TO 3)STD_LOGIC_VECTOR(0 TO 3);PROCESS(S1)PROCESS(S1)VARIABLE V1VARIABLE V1:STD_LOGICSTD_LOGIC;BEGINBEGIN V1 :=1 V1 :=1;-立即将立即将V1V1置位为置位为1 1 S1 =1 S1 =1;-由于在本进程中,这里的由于在本进程中,这里的S1S1不是最后一不是最后一个
45、赋值语句故不作任何赋值操作个赋值语句故不作任何赋值操作EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第49页2022年11月18日SVEC(0)=V1SVEC(0)=V1;-将将V1V1在上面的赋值在上面的赋值1 1,赋给,赋给SVEC(0)SVEC(0)SVEC(1)=S1SVEC(1)=S1;-将最下面的赋予将最下面的赋予S1S1的值的值00,赋给,赋给SVEC(1)SVEC(1)V1:=0 V1:=0;-将将V1V1置入新值置入新值0 0 S1=0 S1=0;-由于这是由于这是S2S2最后一次赋值,赋值有效,最后一次赋值,赋值有效,-此此00将
46、上面准备赋入的将上面准备赋入的11覆盖掉覆盖掉SVEC(2)=V1SVEC(2)=V1;-将将V1V1在上面的赋值在上面的赋值0 0,赋给,赋给SVEC(2)SVEC(2)SVEC(3)=S1SVEC(3)=S1;-将将S1S1在上面的赋值在上面的赋值0 0,赋给,赋给SVEC(3)SVEC(3)END PROCESSEND PROCESS;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第50页2022年11月18日赋值目标赋值目标段下标元素赋值目标及集合块赋值段下标元素赋值目标及集合块赋值目标目标【例【例】VARIABLE AVARIABLE A,
47、B B:STD_LOGIC_VECTOR(1 TO 4)STD_LOGIC_VECTOR(1 TO 4);A(1 TO 2):=10A(1 TO 2):=10;A(4 DOWNTO 1):=1011A(4 DOWNTO 1):=1011;EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第51页2022年11月18日2.2 2.2 转向控制语句转向控制语句(1 1)IF IF 语句语句(2 2)CASE CASE 语句语句EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第52页2022年11月18日(1 1)IF
48、IF语句语句语句结构:语句结构:IF IF 条件句条件句 THEN THEN 顺序语句顺序语句ELSIF ELSIF 条件句条件句 THENTHEN 顺序语句顺序语句;ELSEELSE 顺序语句顺序语句;END IFEND IFEDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第53页2022年11月18日【例【例】EDA技术及技术及CPLD/FPGA应用简明教程应用简明教程 清华大学出版社清华大学出版社第54页2022年11月18日LIBRARY IEEELIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.
49、STD_LOGIC_1164.ALL;ENTITY CONTROL_STMTS ISENTITY CONTROL_STMTS IS PORT(A PORT(A,B B,C C:IN BOOLEANIN BOOLEAN;OUTPUTOUTPUT:OUT BOOLEAN)OUT BOOLEAN);END CONTROL_STMTSEND CONTROL_STMTS;ARCHITECTURE EXAMPLE OF CONTROL_STMTS ISARCHITECTURE EXAMPLE OF CONTROL_STMTS ISBEGINBEGINEDA技术及技术及CPLD/FPGA应用简明教程应用简明
50、教程 清华大学出版社清华大学出版社第55页2022年11月18日 PROCESS(A PROCESS(A,B B,C)C)VARIABLE N VARIABLE N:BOOLEANBOOLEAN;BEGINBEGIN IF A THEN N IF A THEN N:=B=B;ELSE NELSE N:=C=C;END IFEND IF;OUTPUT=NOUTPUT=顺序语句;顺序语句;WHEN WHEN 选择值选择值 =顺序语句;顺序语句;WHEN OTHERS =WHEN OTHERS =顺序语句;顺序语句;END CASE END CASE;EDA技术及技术及CPLD/FPGA应用简明教程