在学,就是一点点笔记,有错误的话,望请大佬指正,非常感谢。
1.1 VHDL结构
1.1 实体和端口模式
实体的端口描述主要有四类:
- IN端口----输入端口
- OUT端口----输出端口
- INOUT端口----输入输出端口
- BUFFER端口----缓冲端口(与INOUT端口功能类似,区别在于当需要输入数据时,只允许回读输出的数据,也就是允许反馈。)
ENTITY 实体名 IS
[GENERIC ( 参数名: 数据类型 );]
[PORT ( 端口表: 数据类型);]
END ENTITY 实体名;
1.2 结构体
ARCHITECTURE 结构体名 OF 实体名 IS
[说明语句]
BEGIN
[功能描述语句]
END ARCHITECTURE 结构体名;
1.3 库和库的种类
LIBRARY WORK ;
LIBRARY STD ; //打开sTD库
USE STD.STANDARD.ALL ; //能够使用STD库中的所有内容
重点所需要的库有:
- IEEE库
- STD库
- WORK库
- VITAL库
1.4 库和程序包的调用方法
LIBRARY 库名;
USE 库名.程序包名.ALL ;
USE 库名.程序包名.项目名 ;
USE 库名.程序包名.ALL;
例子:
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.STD_ULOGIC ;
USE IEEE.STD_LOGIC_1164.RISING_EDGE ;
1.5 配置
2.1 VHDL结构
2.2 VHDL文字规则
2.2.1 数字
- 整数
5, 678, 0, 156E2(=15600), 45_234_287(=45234287)
- 实数
1.335, 88_670_511.453_909(=88670551.453909), 1.0, 44.99E-2(=0.4499)
- 文字示例
SIGNAL d1,d2,d3,d4,d5,: INTEGER RANGE 0 TO 255;//全部定义为整数类型
d1 <= 10#170#; //向d1赋值10#170#(十进制表示,等于170)
d2 <= 16#FE#; //(十六进制表示,等于254)
d3 <= 2#1111_1110#; //(二进制表示,等于254)->也是整数类型!
d4 <= 8#376#; //(八进制表示,等于254)
d5 <= 16#A#E3; //(六进制表示,等于16#A000#)
- 物理量文字
60s(60秒),100m(100米),k(千欧姆),177A(177安培)
- 字符串
data1 <= B"1_1101_1110" //二进制数数组,位矢数组长度是9位
data2 <= O"15" //八进制数数组,位矢数组长度是6位
data3 <= X"AD0" //十六进制数数组,位矢数组长度是12
data4 <= B"101_010_101_010" //二进制数数组,位矢数组长度是12
data5 <= "101_010_101_010" //表达错误,缺B
data6 <= "101010101010" //表达正确。这里可以略去B,但不可加下划线
data6 <= "0AD0" //表达错误,缺x
2.2.2 关键词
2.2.3 标识符及其表述规则
- 有效的字符:包括26个大小写英文字母,数字包括0~9以及下划线“_”。
- 任何标识符必须以英文字母开头。
- 必须是单一下划线“_”,且其前后都必须有英文字母或数字。
- 标识符中的英语字母不分大小写。
- 允许包含图形符号(如回车符、换行符等),也允许包含空格符。