欢迎来到天天文库
浏览记录
ID:48031144
大小:395.00 KB
页数:60页
时间:2020-01-13
《AHDL课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章AHDL语言及其应用1AHDL语言概述AHDL(AlteraHardwareDescriptionLanguage)语言是一种支持Altera公司器件的硬件描述语言,它是一种模块化的高级语言,集成于MAX+PLUSII系统中,适合描述复杂的组合逻辑、状态机和真值表。用户可以使用AHDL语言建立一个完整的层次结构,也可以在一个层次结构的设计中混合使用AHDL文本设计和其他类型的设计文件,但在存储、编译等环节其文件的扩展名一定是TDF(*.tdf)。25.1AHDL设计的基本结构一个简单的示例:3AHDL语言的规则及结构特点:1)在ADHL语言中字符不区分大小写,
2、即大小写的含义相同。2)同一类型多个输入、输出或变量之间可以用逗号(“,”)分隔,每一个完整的语句都以分号(“;”)结束。3)AHDL语言中的语句不依赖描述的前后顺序。4)AHDL设计文件通常是由段和一些语句组成。5)AHDL程序段中,有两个段是每个AHDL文件所必须包含的,它们是子设计段和逻辑设计段。6)关键字SUBDESIGN之后的TAND2是子设计段的名称,也是AHDL语言文本文件的文件名,在MAX+PLUSII系统中使用时,要求其扩展名为TDF(*.TDF)。45.2节点和数组节点和数组的定义:(1)节点节点就是电路的连接点,是在AHDL语言中使用最广泛的一
3、种类型。输入、输出端口、VCC、GND等内部没有记忆功能的变量都可以看成节点。(2)数组数组是节点或触发器等类型的组合。按照结构特点可分为十进制数组和序列数组两种。5十进制数组与序列数组1)十进制数组。其名称为一个符号(或端口名)跟一个方括号(定义数组的长度)组成,例如a[3..0],在这类数组名后跟一个域,符号名或端口名加上[]引导的域,域中最长的数字的总长度不能超过32个字符。2)序列数组。其名称由一组符号名、端口名或数组组成,它们之间以逗号分隔,并被括在圆括号中如(a,b,c);十进制数组名也可以放在这个括号中,例如(a,b,c[5..1])。6关于数组的注意
4、事项1)如果要表示一个数组中的部分单元,只需写出起止单元序列号如A[2..1]。2)如果一个数组等于VCC或GND,数组中的每一个成员都将被置成VCC或GND。3)如果一个数组等于一个常数,则将常数扩展成与数组同等长度的二进制数后再赋值。4)如果一个数组被连接到一个单节点,则该数组所有的节点都与单节点b相连。5)一个数组最多包括256个变量。7AHDL中的数字在AHDL中可以单独或组合方式使用十进制、二进制、八进制和十六进制,其中十进制是AHDL语言中的默认方式。85.3布尔等式布尔等式在逻辑段中用来代表节点之间的连接以及输入及输出的逻辑关系。在布尔等式右边可以是数
5、组、数据、节点之间逻辑运算或算术运算。下面请看一个具体的示例:用AHDL语言描述下面的组合逻辑电路:9可用下面程序描述:SUBDESIGNboole1--SUBDESIGN段,boole1标识程序名。(a0,a1,b:INPUT;--在()内定义输入、输出的引脚。out1,out2:OUTPUT;)BEGIN--描述开始。out1=a1&!a0;--out1为输入信号a0取反后与a1相与的结果out2=out1#b;--out2为out1与输入信号b相或后的结果。END;--用END表示程序结束。10逻辑运算符逻辑运算符基本规则是按位操作如:!a[5..1]被解释为
6、(!a4,!a3,!a2,!a1);!B“1001”的结果是对每一位求反后为B“0110”;a[3..1]&a[5..2]被解释为(a3&a4,a2&a3,a1&a2)。如果两个操作数的长度不同,扩展规则如下:1)单个节点(包括VCC与GND)与数组进行逻辑运算,则该节点与数组逐位进行运算。2)一个数组与一个常数进行逻辑运算,则将常数扩展成与数组同等长度的二进制数后再与数组逐位运算。11算术运算符1.一元运算符的使用一元加号(+)运算符对操作数没有影响,只是明确表示一个正数。一元减号(-)运算符对后面的操作数进行求补运算。2.二元运算符的使用二元运算符算术运算规则有
7、如下要求:1)如果两个操作数都是组节点,两组的长度必须相同。2)如果操作数都是数值,短的数值将扩展至位数最长的操作数长度。3)如果一个操作数是数值而另一个是节点数组,那么这个数值将被截至或扩展至节点数组的长度。赋值语句的两侧节点数组长度不同,遵循如下规则进行扩展:①数组前面加0可以多位补0扩展②数组的后面加一个0仅实现一位补0扩展12关系运算符关系运算符可以被用于对单独节点、数组进行比较。双等号(==)为布尔表达式中的使用最多的比较符。表示符号两边的变量是否相等,而(=)表示将比较后的结果赋给等号左边的变量。比较符只能用来对节点数组与节点数组之间或节点数组与数值
此文档下载收益归作者所有