VHDL笔记第三部分

VHDL程序结构及语言要素

编程语言的基本单元,反映了VHDL重要的语言特征,具有计算机编程语言的一般特性

VHDL四要素

一.数据对象(object)
1)变量 Variable
2)信号 Singal
3)常数 Constant
二.数据类型(Type)
三.各类操作数(Operands)
四.运算操作符(Operater)

VHDL文字规则(数值型文字和标识符 )
  1. 数值型文字
    整数:整数都是十进制的数,如:
    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 <= 10#170# ; – (十进制表示,等于 170)
    d2 <= 16#FE# ; – (十六进制表示,等于 254)
    d3 <= 2#1111_1110#; – (二进制表示,等于 254)
    d4 <= 8#376# ; – (八进制表示,等于 254)
    d5 <= 16#E#E1 ; – (十六进制表示,等于224)
VHDL文字规则
  1. 字符(串)型文字
    字符是用单引号引起来的ASCII字符,可以是数值,也可以是符号或字母,如: ‘A’,‘d’,‘1’,‘Z’,‘5’,‘*’,‘K’,’-’
    注:可以用字符来定义一个新的数据类型,如:
    TYPE STD_LOGIC IS (‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,’-’ )
    字符串则是一维的字符数组,需放在双引号中。字符串有文字字符串和数位字符串两种类型的。
    (1)文字字符串
    文字字符串是用双引号引起来的一串文字,如:
    “ERROR”,“Both S and Q equal to 1”,“XY7R”,“BB$CC”
    (2)数位字符串(也称位矢量)
    数位字符串与文字字符串相似,但它代表的是二进制、八进制或十六进制的数。位矢量的长度即为等值的二进制数的位数。数位字符串首先要表示计数基数,基数符号以“B”、“O”和“X”表示,放在前面,数值放在双引号中置于其后。
    B:二进制基数符号
    O:八进制基数符号
    X:十六进制基数符号(0~F)
    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 <= “0AD0” --表达错误,缺X。
    3 标识符(短标识符VHDL’87版、扩展标识符 VHDL’93版)
    标识符(Identifers)用来定义常数、变量、信号、端口、子程序或参数的名字
    (1) 短标识符规则:
    有效字符:包括26个大小写英文字母,数字0~9 及下划线“”。
    必须以英文字母开头。
    必须是单一下划线“
    ”,且其前后都必须有英文字母或数字。
    英语字母不分大小写。
    保留字或关键词不能用作短标识符。
    下面是合法的标识符:
    multi_screens,
    Multi_screens,
    Multi_Screens,
    MULTI_SCREENS,
    State2
    下面的书写是不合法的:

Decoder_1 --起始为非英文字母
2FFT --起始为数字
Sig
#N --符号“#”不能成为标识符的构成
Not-Ack --符号“-”不能成为标识符的构成
RyY_RST_ --标识符的最后不能是下划线“
Date
_BUS --标识符中不能有双下划线
return --关键词
(2) 扩展标识符
① 扩展标识符要用反斜杠“\”来定界。\multi_screens,eda_centrol\等都是合法的扩展标识符。
② 允许使用任何字符,包括图形符号、空格符等。
例如:\mode A and B\,$100\,\p%name\。
③ 可以用保留字。例如:\buffer\,\ENTITY\,\end\等。
④ 扩展标识符的界定符两个斜杠之间可以用数字打头。
如:\100$\,\2chip\,\4screens\等。
⑤ 允许多个下划线相连。如:
\Four_screens\,\TWO_Computer_sharptor\等。
⑥ 扩展标识符区分大小写。如: \END\与\end\不同。
⑦ 同名的扩展标识符与短标识符不同。如:
\COMPUTER\与COMPUTER和computer都不相同。
⑧ 若扩展标识符内含有一个反斜杠,可用两个反斜杠代替。
如\add\sub\ (名称为add\sub)

数据对象DATA OBJECTS

类似于一种容器,可以接受不同数据类型的赋值
电路中的恒定电平->常数(CONSTANT)
门与门间的连线及其连线上的信号值->变量(VARIABLE)
VHDL最具有特色的语言要素之一->信号(SIGNAL)

1 常数(CONSTANT)
一个恒定不变的量,一旦定义赋值程序中既不能修改
特点:易于阅读和修改 如位矢宽度(改变硬件结构)
常量定义:CONSTANT 常量名:数据类型 :=表达式;
可以是标量类型或复合类型,但不能是文件类型(FILE)或存取类型(ACCESS)
允许使用的单元:实体,结构体,程序包,块,进程和子程序

2 变量(VARIABLE)
定义变量的一般表述:VARIABLE 变量名 : 数据类型 := 初始值 ;
特征
1 一个局部量,只能在进程中和子程序中使用。
2 不能将信息带出对它作定义的当前设计单元。
3 一种理想化的数据传输,立即发生,不延时。
注:VHDL不支持变量附加延时语句
变量赋值语句: 目标变量名 :=表达式
注意:a 目标变量名可为单值变量或数组型变量
b 表达式必须与所定一同数据类型,其可以是运算表达式或一个值
3 信号(SIGNAL)
定义格式:SIGNAL 信号名:数据类型 :=初始值 ;
 注:信号具有全局特性,可见性同常量;初始值仅在行为仿真中有效
信号赋值语句表达式: 目标 信号名<=表达式 ;
解注:这里的表达式可以是运算表达式或是数据对象,符号“<=” 表示延时赋值操作,可以设置延时量。

数据对象DATA OBJECTS

例:y1<= x;
y2<= x AFTER 10 ns; --默认为惯性延迟
y3<= TRANSPORT x AFTER 10 ns; --传输延迟
问:为什么信号赋值用<=,而变量用 := ?
注意:信号的初始赋值符号仍是“:=“,因为仿真时间坐标从初始值开始无所谓延时
因为<=两边的数值不总是一致的(与硬件传播延时有关)

信号 与 实体的端口
信号 :无方向说明,实体的内部信号,显式信号定义
实体的端口:有方向限制,隐形的信号(实质作了隐式的信号定义),结构体中可看作信号加以使用
 注意:
1信号的适用范围和定义范围是实体,结构体和程序包,进程和子程序中不允许定义
2只能将信号列入敏感表,变量不行
3信号可以有多个驱动源(赋值源),即存在多个同名的信号被赋值 ,其结果由最后的赋值语句来决定,例如:

信号

SIGNAL a,b,c,y,z :INTEGER; PROCESS ( a , b, c)
BEGIN
y<=a × b;
z<= c-x;
y<= b
END PROCESS;
………………
信号赋值语句出现于不同位置的区别:
 进程中:顺序信号赋值,即这时的赋值操作要视进程是否被启动
 结构体中:并行信号赋值,赋值操作各自独立地并行发生

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数字电子技术是研究电子器件及其应用的学科,主要用于处理信息和能量转换。在数字电路中,信息被表示为离散的电压序列。[1] 在数字电子技术的基础笔记中,有以下几个重要的概念和内容: 1. 信息和编码:香农是第一个对信息进行研究的人。补码和余三码是常用的编码方式,用于表示负数和进位信号。格雷码是一种特殊的编码形式,相邻码只有一位发生状态变化。[1] 2. 逻辑代数:逻辑代数是用于描述和分析逻辑运算的数学工具。真值表、与、或、非、异或等逻辑运算在逻辑代数中起着重要的作用。带入定理和反演定理是逻辑代数中常用的推理方法。最小项和最大项是逻辑函数的两种标准形式。卡诺图是用于简化逻辑函数的图形化方法。[1] 3. 门电路:门电路是由逻辑门组成的电路,用于实现逻辑功能。常见的逻辑门包括与门、或门、非门等。[1] 4. 可编程逻辑器件:EDA(Electronic Design Automation)是用于对可编程逻辑器件进行编程和链接的工具。可擦除PLD(Erasable Programmable Logic Device)和FPGA(Field Programmable Gate Array)是常见的可编程逻辑器件。HDL(硬件描述语言)如Verilog和VHDL用于描述硬件电路。SoC(System on Chip)是一种集成了完整系统和嵌入软件的芯片。[2] 5. 触发器:触发器用于存储和记忆1位二进制信号。常见的触发器包括RS触发器、JK触发器、T触发器和D触发器。触发器可以用于实现存储和时序控制功能。[2] 6. 格雷码:在数字系统中,为了避免代码按一定顺序变化时出现错误,可以使用格雷码进行编码。格雷码具有多种编码形式。[3] 以上是数字电子技术基础笔记中的一些重要内容和概念。这些内容涵盖了信息和编码、逻辑代数、门电路、可编程逻辑器件、触发器和格雷码等方面的知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

展桑~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值