预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5讲VHDL语言要素(1)VHDL语言要素有效的字符:包括26个大小写英文字母,数字包括0~9以及下划线“_” 任何标识符必须以英文字母开头 下划线“_”的前后必须有英文字母或数字 标识符中的英语字母不分大小写 标识符的命名不能与保留字(关键字)相同2.扩展标识符(93标准): 以反斜杠来界定,免去了87标准中基本标识符的一些限制。 可以以数字打头,允许包含图形符号,允许使用VHDL保留字,区分字母大小写等。 如:\74LS163\、\Sig_#N\、\entity\、\ENTITY\ 注意: 写程序时,应用关键字时用大写,定义的标识符用小写。或者关键字用小写,定义的标识符用大写,以便于区分。VHDL对象常量定义的一般表述: CONSTANT常量名:数据类型:=表达式; 例如: CONSTANTa,b:INTEGER:=2;常量的使用范围取决于它被定义的位置:2.变量(VARIABLE)变量赋值格式:变量名:=表达式; 例:a:=“1010101”;--------位矢量赋值 b:=‘0’;---------位赋值 x:=100.0;-------实数赋值(3)变量定义的时候尽管可以直接赋初值,但系统往往忽略。建议变量对象定义后再进行赋值。[例] VARIABLEx,y:REAL;3.信号(SIGNAL)例:SIGNALclk:std_logic:=‘0’; SIGNALa:integerrange0to15; SIGNALdata:std_logic_vector(15downto0); 信号的使用和定义范围是实体、结构体和程序包。在程序中: (1)信号值的代入采用“<=”代入符,而且信号代入时可以附加延时。 (2)变量赋值时用“:=”,不可附加延时。 (3)信号的初始赋值符号仍是“:=”。说明: 同一信号不能在两个进程中赋值。 在同一进程中,可以允许多次对同一信号赋值。即在同一进程中存在多个同名的信号被赋值。但是因为信号的赋值是有延时的,其结果只是最后的赋值语句被启动。…… SIGNALa,b,c,y,z:integer; …… PROCESS(a,b,c) BEGIN y<=a*b;---------不对y进行赋值 z<=c-y; y<=b;---------y的最后赋值 ENDPROCESS; ……信号与变量的区别(3)赋值生效的时间不同label1:process variablea,b:integer; begin waituntilclk=‘1’; a:=10; b:=20; a:=b; b:=a; endprocess;libraryieee; useieee.std_logic_1164.all; entitybcvis port(a,b,c:instd_logic; x,y:outstd_logic); endbcv;2.6VHDL数据类型和子类型每一对象只能具有一个数据类型且只能具有那个数据类型的值。 对某对象进行操作的类型必须与该对象的类型相匹配。 不同类型之间的数据不能直接代入,即使数据类型相同,而位长不同也不能进行代入。标量类型:是最基本的数据类型,通常用于描述一个单值数据对象。标量类型包括:实数类型、整数类型、枚举类型和时间类型。 复合类型:由细小的数据类型复合而成,如可由标量类型复合而成。复合类型主要有数组型和记录型。 子类型:是上述基本类型的子集,是对已有的数据类型加以限制。上述五大类数据类型又可分成在现成程序包中可以随时获得的预定义数据类型和用户自定义数据类型两类。预定义数据类型是VHDL中最常用、最基本的数据类型,这些数据类型都已在VHDL的标准程序包Standard和std_logic_1164及其它的标准程序包中作了定义,可在设计中随时调用。2.6.1文字(3)以数值基数表示的数: 用这种方式表示的数由五部分组成:基#整数#[指数] 第一部分:用十进制数标明数值进位的基数; 第二部分:数值隔离符“#”; 第三部分:表达的数值; 第四部分:指数隔离符“#”; 第五部分:用十进制数表示的指数部分,若为0可省略不写。例如: 10#17#;--(表示第三部分为十进制数,等于17) 16#FE#;--(表示第三部分十六进制数,等于254) 2#1111_1110#;--(表示第三部分为二进制数,等于254) 8#376#;--(表示第三部分为八进制数,等于254) 16#E#1;--(表示十六进制数,等于14×161,等于224)(4)字符 是用单引号括起来的ASCⅡ码,一般情况下VHDL对字母的大小写不敏感,但对字符的大小写是敏感的, 例:‘A’和‘a’是不同的。 (5)字符串 是用双引号括起来的字符序列,在VHDL中字符串常用来作为说明文字出现。 例:“itistimeout”,“ERR