abel-hdl语言简明教程

上传人:第*** 文档编号:34416917 上传时间:2018-02-24 格式:DOC 页数:8 大小:79KB
返回 下载 相关 举报
abel-hdl语言简明教程_第1页
第1页 / 共8页
abel-hdl语言简明教程_第2页
第2页 / 共8页
abel-hdl语言简明教程_第3页
第3页 / 共8页
abel-hdl语言简明教程_第4页
第4页 / 共8页
abel-hdl语言简明教程_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《abel-hdl语言简明教程》由会员分享,可在线阅读,更多相关《abel-hdl语言简明教程(8页珍藏版)》请在金锄头文库上搜索。

1、ABEL-HDL 语言简明教程1ABEL-HDL 语言简明教程一. ABEL-HDL 简介ABEL-HDL(ABEL Hardware Description Language)语言是一种层次化的硬件描述语言,它支持多种行为级输入形式,其中包括逻辑方程式、状态图和真值表等。ABEL 编译器和 ispLEVERispDesignEXPERTISP Synario 版本软件中的 ABEL-HDL 编译器可通过仿真对 ABEL-HDL 语言设计进行功能验证。此后,编译器在 PLD 或 FPGA 等可编程 IC上实现此设计。ABEL-HDL 设计还可以通过标准格式的设计传输文件转移到其它设计环境中去使

2、用。二. ABEL-HDL 语法ABEL-HDL 源文件中的每一行必须符合以下语法规则: 一行最多为 150 个字符长。 每一行可用按回车键来结束;除开始、结束、标题等语句外,多以分号“;”结束。 不同的关键字、标识符和数之间最少要用一个空格隔开。 在同一关键字、数、运算符或标识符中不可嵌入空格和句点。 关键字及特殊常量可用大写、小写或大小写字母混合方式键入,关键字及特殊常量与大小写无关。 一般标识符也可以是大写、小写或大小写字母混用,但必须注意:一般标识符与大小写有关,这点在编写程序时要特别小心,极易出错。2.1 ABEL-HDL 基本语法1. 标识符标识符(用户提供的名字和标号)用于标识下

3、列各项的名称: 器件 (P16V8R) 器件引脚及节点 (LD,Q3,Q2,Q1,Q0,N_1) 功能块 (?A&?B&?C) 集合 (Q3.Q0) 输入或输出信号 (I3,I2,I1,I0,Q3,Q2,Q1,Q0) 常量 (H,L,.X.,.C.) 宏 (NAND3) 哑变量 (A,B,C)不管标识符描述的是什么,其规则和限制是相同的:1). 标识符最长为 31 个字符。2). 标识符必须以一个字母或下划线开头。3). 除标识符的第一个字符外,其余字符均可以是大小写字母、数字,波浪线()和下划线(_) 。4). 在标识符中不得出现空格,可使用下划线或大写字母来区分一个标识符中的各个字词。5)

4、. 除保留的标识符(即关键字和特殊常量)外,标识符与字母大小写有关,即大小写字母的含义不同。6). 除了合法的点后缀(或称为点扩展名,参见“基本逻辑器件的描述” )外,在标识符中不能用句号。ABEL-HDL 语言简明教程2注意以下几点: 标识符应该做到“见名知意” ,如 And_In1,And_In2,表示二个输入与门的二个输入信号。 标识符应简单明了,易于区分,避免使用大量相似的标识符。 一个标识符如用几个单词组成,则各单词之间宜用下划线或大小写字符来区分,以便阅读。如利用标识符 THIS_IS_A_COUNTER 比利用标识符 THISISACOUNTER 就更容易阅读和理解。 使用标识符

5、,需要特别注意:关键字在编程时不得用来给器件、引脚、节点、数组常量、集合、宏或信号命名。2. 特殊常量在赋值语句、真值表和测试向量中,用户可使用常量;也可将一常量赋给标识符,并在整个模块中用此标识符代表该常量。常量的值可以是数值,也可以是非数值的特殊常量(或称为专用常量,是一种特殊的标识符) 。常用的特殊常量有:H 逻辑高电平L 逻辑低电平.C. 时钟输入(低电平-高电平-低电平转换).K. 时钟输入(高电平-低电平-高电平转换).U. 时钟上升沿(低电平-高电平转换).D. 时钟下降沿(高电平-低电平转换).X. 任意值.Z. 高阻态3. 运算符ABEL-HDL 语言的运算符分为四种基本类型

6、:逻辑运算符、算术运算符、关系运算符及赋值运算符,下面对它们进行说明:1). 逻辑运算符:逻辑代数中的各种逻辑运算如与、或、非、异或等,在 ABEL-HDL 语句中均有专门的符号,如下所示:运算符 定义 举例 逻辑代数中的含义! 非 !A & 与 A&B AB# 或 A#B A+B$ 异或 A$B AB!$ 同或 A!$B AB2). 算术运算符:算术运算符定义了表达式中各项之间的算术关系。移位操作运算符也属于此类中。运算符 举例 说明- -A 求负数(补码)- A-B 减+ A+B 加* A*B 乘/ A/B 无符号整除% A%B 取模:无符号整除的余数 AB A 右移 B 位注意:“/”是

7、无符号的取整除法,即其商为正整数。用求模运算符 “%”可得到除的余数。移位操作执行无符号的逻辑移位;在右移过程中零由左边移入,而在左移过程中零由右边移入。3). 关系运算符:比较一个表达式的两个项。用关系运算符形成的表达式产生一个布尔真(True)或伪(False )值。运算符 说明=(两连写等号) 等于!= 不等于大于= 大于等于所有的关系运算符都是无符号的。在使用关系运算符时,一般总是使用括号“( )”,以保证表达式的运算按希望的顺序进行。4). 赋值运算符:赋值运算符一般在 EQUATIONS 语句段的方程式中使用,而不在表达式中出现。组合型赋值(立即赋值)无延时地进行赋值,只要方程式算

8、完就赋值;寄存器型赋值(时钟赋值)则在与该输出相关的时钟信号的下一个时钟脉冲有效边沿到来时进行赋值。运算符 说明= 组合型赋值:= 寄存器型赋值注意:在电子系统设计第 2 章的 RTL 语言中,用“”表示时钟赋值,而用“:=”表示立即赋值或定义命名变量。4. 表达式和方程式表达式是标识符和运算符的结合,除赋值运算符不能在表达式中使用之外,其它运算符包括逻辑运算符、算术运算符、关系运算符都可以用于表达式中。逻辑方程式 Equations 也称为布尔方程,表示输入信号和输出信号之间的逻辑关系。所有运算符(包括赋值运算符在内)都可以用于方程式中。5. 块(block)块是包括在花括号“ ”中的一段文

9、本。块常用于方程式、状态图、宏和命令中。一个块中的文本可以是一行或多行。例如:不用块的表达式:WHEN (Mode=S_Data) THEN Out_data:=S_in;ELSE WHEN (Mode=T_Data) THEN Out_data:=T_in;WHEN (Mode=S_Data) THEN S_Valid:=1;ELSE WHEN (Mode=T_Data) THEN T_Valid:=1;用块的表达式,以上语句可被简化:WHEN (Mode=S_Data) THEN Out_data:=S_in; S_Valid:=1;ELSE WHEN (Mode=T_Data) THEN

10、 Out_Data:=T_in; T_Valid:=1;6. 集合(set)ABEL-HDL 语言简明教程4集合是信号及常量的汇集。集合简化了 ABEL-HDL 语言的逻辑描述和测试向量,它允许把一组信号用一个名字来引用。由逗号或范围运算符“.”分开的常量及信号清单,再用方括号将其括起来,即可表示一个集合。例如:MultiOut 及 Select 集合定义为:MultiOut=B0,B1,B2,B3,B4,B5,B6,B7; Select=S2,S1,S0;以上集合也可用“.”来表示:MultiOut=B0.B7; Select=S2.S0;用“.”来定界范围的标识符必须有兼容(形式相似)的名

11、字,它们必须以相同的字母开头,以数字结束,例如上面的 B0、B1、B2 等。注意:集合所支持的运算符有限,它支持大多数逻辑运算符、关系运算符和赋值运算符,但仅支持算术运算符中的加“+” 、减“” 、取负(取补码) “”。7. 字符和数ABEL-HDL 语言的字符由 ASCII 字符组成,可以使用大小写字母及 101 键盘使用的大部分字符:az 小写字母AZ 大写字母09 数字空格符制表符! # $ ? + : | , . / %总共有 96 个。字符可用于标识符、字符串和注释。8. 注释注释是使源文件易懂的另一种方法。用户可用如下方式进行注释:1). 用一双引号“ ”开始,以另一双引号或行结束

12、来结束。2). 用一双斜杠“/”开始,以一行结束来结束。语言处理程序对双引号中的内容不进行处理。注释不可嵌于关键字中。注意:在单引号“”内的信息是所需的字符串,它是语句的一部分,而不是注释。如:IC4 device P16V8R;语句中的P16V8R是语句的一部分,不是注释。9. 基本逻辑器件的描述基本逻辑器件有门和触发器(在 ABEL-HDL 语言中,触发器统称为寄存器) 。门电路可直接用逻辑表达式表示,如:Out1=A语句表示一个与门。寄存器需要时钟方程、输出方程、复位方程等一组方程才能完整地描述。为了简洁,通常对一个寄存器只定义一个标识符,而对于寄存器的时钟信号、复位信号等则在该寄存器标

13、识符后面加点后缀来表示。下表给出了 ABEL-HDL 常用的点后缀:点后缀 含义 点后缀 含义.AP 异步寄存器置位 .AR 异步寄存器复位.CLK 边沿触发器的时钟输入 .D D 触发器的激励输入.FB 寄存器反馈 .J JK 触发器的 J 激励输入.K JK 触发器的 K 激励输入 .LD 寄存器并行置数输入.OE 输出使能 .LE 寄存器的锁存使能输入.SP 同步寄存器置位 .SR 同步寄存器复位在编程时,以上点后缀的方程要根据具体电路选用,没必要全用。ABEL-HDL 语言简明教程5例如,下图给出了一种典型的 D 触发器的各个点后缀描述:与上图相对应的 D 触发器的一段 ABEL-HD

14、L 基本功能描述语句如下:d_d,cp,clear,preset PIN;/d_d 为 D 输入端信号,cp 为触发时钟信号,clear 为清零信号,preset 为预置信号q_d PIN ISTYPE reg_d;/q_d 为 Q 输出端信号,亦可写为 ISTYPE reg(参见 2.2 小节中的 ISTYPE 属性定义语句)EQUATIONSq_d.CLK=cp; /以该 D 触发器的 Q 输出端信号 q_d 作为触发器标识符q_d.AR=clear; /指定 clear 为异步清零信号q_d.AP=preset; /指定 preset 为异步预置信号q_d:=d_d; /指定该 D 触发

15、器的逻辑功能,在 cp 上升沿时输入端 d_d 置到输出端 q_d10. 变量及变量代换变量的结构能用于宏、模块及命令中。ABEL-HDL 语言支持两种变量,定义如下: 哑变量(相当于“哑元” 、 “形参” ):宏、模块或指示字中可被真实变量替代的标识符。 真实变量(相当于“实参” ):用于宏、模块或指示字中的变量,真实变量可以替代哑变量。一个真实变量可以是标识符、数字、字符串、运算符、集合或 ABEL-HDL 语言的其它元素。可在宏说明中规定哑变量,也可在宏、模块或命令的体中规定哑变量(参见 2.2 小节ABEL-HDL 源文件基本结构中的 MACRO 宏定义语句) 。例如:OR_EM MA

16、CRO (a,b,c) ?a#?b#?c;定义了一个名为 OR_EM 的宏,它是三个变量的逻辑或,这些变量在宏定义中用哑变量a、b、c 来表示;在大括号内的宏定义体中,哑变量前带上问号“?”构成一个整体,表示需要用真实变量来代替这个整体。例如:D=OR_EM(X,Y,Z就表示用真实变量 X、Y 和 Z&L 来调用 OR_EM 宏,结果为 D=X#Y#Z&L。真实变量必须严格按其本身形式替代,其中的空格也不能忽略。哑变量与真实变量的关系总结如下:1). 哑变量的位置是保留给真实变量的。2). 前面带问号的哑变量需用真实变量替代。3). 变量替代在检查源文件前完成。4). 真实变量中空格有意义。PRESETCLEARD QQ.OE.SP (.AP).D.CLK.SR (.AR).Q.PINISTYPE reg_dABEL-HDL

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号