高级布尔方程语言
可编程逻辑器件PLD的高级程序设计语言
高级布尔方程语言(Advanced Boolean Equation Language,ABEL)是可编程逻辑器件PLD的一种高级程序设计语言,由美国DATA I/O公司于1983~1988年推出。用ABEL语言编写ABEL源文件,把它输入计算机,在ABEL软件及PLD编程器的支持下,能对可编程逻辑器件PLD自动进行编程,具有简单易学的特点。
语法规则
ABEL源文件由许多语句组成。语句包括标识符、字符串、关键字、运算符及表达式等。
标识符
(1)标识符用来表示信号名、引脚名、状态名、集合名、常量、器件以及模块名等;
(2)标识符必须以英文字母或下划线开始;
(3)标识符中若有空格,用下划线代替;
(4)标识符最长不得超过31个字符;
(5)标识符和英文字母的大、小写有关,如F和f就是两个不同的标识符。
例如:F,f,CS,B1,DATA_BUS等。
字符串
(1)字符串是用前、后单引号限定的ASCII字符序列;
(2)字符串用来表示标题、标记、信号属性及器件的工业标号(在ABEL软件中的器件库中);
(3)字符串中允许有空格;
(4)字符串的长度不超过324个字符。
例如:‘Multiplier for Complement of 2’,'P16R6'。
运算符和表达式
ABEL语言中的表达式是标识符和运算符的组合。运算分为不同的优先级,最高优先级为1级,最低优先级是4级。先进性较高优先级的运算。表达式中优先级相同的运算,按由左至右的次序进行。圆括号能改变运算次序,先进行最里层圆括号中的运算。
集合
(1)一组信号或常量称为集合;
(2)集合名可以用一个标识符来表示;
(3)对集合的运算就是对集合中每个元素单独进行运算;
(4)两个或多个集合在进行运算时,它们的元素个数必须相等,对不同集合的相应元素单独进行运算。
(5)非集合变量和集合之间的运算是非集合变量和集合的每一个元素单独进行运算;
(6)方括号是集合的符号;
(7)集合的元素不得超过32个。
ABEL软件的数值运算精度是32位。32位二进制补码的取值范围是到,即-21,4748,到21,4748,。32位无符号二进制数的取值范围是0到,即0到42,9496,。一切运算结果都不能超过数制的取值范围;否则,要犯溢出错误。
ABEL语言中符号^B、^O、^D及^H(或^b、^o、^d及^h)分别表示二进制数、八进制数、十进制数、十六进制数十进制数的符号^D可以省略不写。
在ABEL语言中,还可以用字符串表示数。例如:字符A的ASCII码是100,0001;字符E的ASCII码是100,0101。故'A'=0100,000=^B0100,0001=^H41。
专用常量
除数字是常量外,ABE语言还定义了一些专用常量(又称特殊常量),以简化ABEL源文件的书写。专用常量的表示法是在英文字母的左下方及右下方各加一个圆点。
(1).C.:时钟脉冲输入(低电平——高电平——低电平转换);
(2).D.:脉冲下降沿(高电平——低电平转换);
(3).F.:悬浮的输入或输出信号;
(4).K.:时钟输入(高电平——低电平——高电平转换);
(5).P.:寄存器预加载;
(6).U.:时钟脉冲上升沿(低电平——高电平转换);
(7).X.:任意值;
(8).Z.:三态值。
注意:专用常量字母可以用大写或小写字母输入,表示的含义相同。
关键字
关键字用来表示语句的功能;关键字的英文字母可以大写、小写或大小写混合;关键字不得用来给器件、引脚、节点、常量、集合、宏、或信号命名。常见关键字如下:
(1)module(模块):表示模块开始语句,module的右面是一个模块名标识符。
(2)flag(标记):表示标记语句,flag的右面是选择ABEL软件的化简级别、仿真输出文件格式(又称跟踪级别)等的字符串。
(3)title(标题):表示标题语句,title的右面是一个标题字符串,标题字符串书写源文件的标题,也可以加上源文件的作者、单位、日期等。
(4)device(器件):表示器件说明语句,device的左面是标识符表示的器件名,device的右面是用字符串表示的器件工业标号。
(5)pin(器件引脚):表示引脚说明语句,pin的左面是信号名(标识符),pin的右面是和信号名对应的引脚号(十进制数字)。
(6)istype(属性):表示属性说明语句,istype的左面是“信号名及关键字pin”,或信号名,istype的右面是表示信号属性的字符串。
(7)equation(逻辑方程):表示逻辑方程的语句,equation的下一行开始写逻辑方程。各个逻辑方程必须以分号结束。
(8)state_diagram(状态图):表示状态图开始的语句,state_diagram的右面是寄存器状态变量集和,其下一行开始写各状态的状态描述语句。
(9)state(状态):表示状态描述语句,stata的右面是状态名的标识符(代表一定的状态分配值)和冒号,下一行开始写状态下的无条件输出信号值及状态转移语句。
(10)GOTO(也可以写goto):表示无条件转移语句,GOTO的右面是状态名标识符。
(11)IF…THEN…ELSE…(如果……那么转向……否则转向……):表示条件转移语句,IF右面是用表达式表示的转移条件,THEN及ELSE的右面都是状态名的标识符。
(12)WHEN…ENDWITH:表示条件输出语句,WITH的右面是条件输出值。
(13)CAES…ENDCASE:表示多路转移语句,CASE的右面是用表达式表示的转移条件,然后是冒号,状态名标识符及分号等。
(14)truth_table(真值表):表示真值表开始语句,truth_table的右面是左圆括号,输入信号集合,组合输出符“->”或寄存器输出符“:>”,输出信号集合及右括号,下一行开始输入信号集合及输出信号集合构成的表格,此表格的每一行必须以分号结束。
(15)ENABLE(使能):它的右面写输出信号名。
(16)fuses(熔丝):表示熔丝段开始语句,把可编程逻辑控制器中的熔丝各编上不同的号码,称为“熔丝号”,熔丝语句为:熔丝号=熔丝值。
(17)test_vectors(测试向量):表示测试向量段开始语句。
(18)end(结束):表示模块结束语句。
注意:不允许使用任何关键字作信号名等标识,且关键字的右面必须有空格。
注释段
(1)注释段是对ABEL源文件的注释,以便于理解和阅读ABEL源文件。
(2)注释段不影响ABEL源文件的意义。
(3)注释段可以不输入计算机,因此,能用任何文字(包括汉字)书写注释段。
(4)用前双引号表示注释段开始,以行的末尾或后双引号表示注释段的结束。
(5)注释段的行数不受限制,但每一注释行都要用前双引号作为注释行的开始。
结构
ABEL源文件的典型结构是:
module 模块名
title '标题名'
器件名 device ‘器件的工业标号’;
@ALTERNATE(指示字:代替)
信号名 pin 引脚号;
常量说明;
常用表达式;
集合的定义;
equation(逻辑方程)
state_diagram(状态图)
truth_table(真值表)
fuses(熔丝)
test_vectors(测试向量)
end
ABEL源文件每行不得超过131个字符。ABEl 源文件中允许不写熔丝段语句。
子程序
ABEL3.0软件共包含6个子程序:
(1)语法分析子程序,文件名是PARSE.EXE。
(2)逻辑描述转换子程序,文件名是TRANSFOR.EXE。
(3)逻辑化简子程序,文件名是REDUCE.EXE。
(4)熔丝图子程序,文件名是FUSEMAP.EXE。
(5)仿真子程序,文件名是SIMULATE.EXE。
(6)文档文件子程序,文件名是DOCUMENT.EXE。
参考资料
最新修订时间:2022-08-25 12:36
目录
概述
语法规则
参考资料