ABEL硬件描述语言概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3. 其它元素 ⑴. 集合: 集合是作为一个整体来进行运算的一组信 号和常量。 •集合的定义:
例:
① Address=[ A7,A6,A5,A4,A3,A2,A1,A0 ];
② Address=[ A7..A0 ]; ③ x=.x.; Address=[ A7,A6,A5,A4,x,x,x,x ];
ABEL HDL 有如下一些特点: ① 适用于各种型号的PLD 器件的通用语法; ② 结构化的高级设计语言; ③ 灵活的逻辑描述形式——布尔关系式、真
值表、状态图; ④ 仿真与测试向量; ⑤ 省时的宏定义及指示字。
ABEL HDL 的处理程序提供了如下强大功能: ① 语法检查; ② 检验所选器件能否实现设计要求; ③ 逻辑简化; ④ 设计模拟;
JK触发器的J激励输入 JK触发器的K激励输入 寄存器并行置数输入 锁存器的锁存使能输入
点后缀 .LH .OE .PIN
.Q .R .RE .S .SP .SR .T
含义 锁存器的锁存使能(高电平) 输出使能 引脚反馈
寄存器输出(书写源文件时可以省略) SR触发器的R激励输入 寄存器复位信号(同步或异步) SR触发器的S激励输入 寄存器同步置位 寄存器同步复位 T触发器的激励输入
表示节点12名为A,为正极性且信号为组合型。
*管脚、节点常用属性:
关键字 说 明
Pos
正极性
Neg
负极性
Com
组合逻辑输出
Reg
寄存器输出
Buffer
寄存器缓冲输出
Invert
寄存器反相缓冲输出
Latch
锁存输入
Reg_d
D触发器输出
Reg_rs
RS触发器输出
Reg_jk JK触发器输出
Reg_T
FLAG „r2‟, „t3‟
⑶ TITLE 标题语句: TITLE „字符串’
3. DECLARATIONS 定义段:
• 每个模块必须有自己的定义段。 • 模块中的定义段声明设计所使用的器件、定 义器件管脚和节点的标识符。 • 常量、宏和属性也在定义段中定义。
⑴ Device 器件定义语句:
器件名,[器件名]… DEVICE 实际器件; • 器件名即设计模块中所用的标识符,实际器 件为实际器件的工业型号,用字符串表示。
T触发器输出
⑷ 常量定义语句:
常量名[,常量名]…=表达式[,表达式]…; 例:
X=.X.; C=.C.; A=[!B,D]; X,C,A=.X.,.C.,[!B,D]; A,B=5,7;
⑸ 宏定义语句及扩展:
宏名 MACRO([哑变量,[哑变量]…]){块}; • 宏定义中的块可以用逻辑表达式描述,也可以 用真值表来描述。 例:用宏定义一个三输入与非门。
⑶ NODE 节点定义语句:
[!]信号名[,[!]信号名]… NODE [IN 器件名]
节点号[=„属性[,属性]…‟] [,节点号[=„属性[,属性]…‟]]…;
• 节点定义语句和管脚定义语句类似。 • 模块中有多个器件时,应选用“IN 器件名”。 • 节点定义语句必须放在器件定义语句之后。 例: ① A NODE 12=„pos,com‟;
⑵ Pin 管脚定义语句:
[!]信号名[,[!]信号名]… PIN [IN 器件名]
管脚号[=„属性[,属性]…‟] [,管脚号[=„属性[,属性]…‟]]…;
• 管脚定义语句说明信号标识符与真实器件管 脚之间的关系,并给出可编程管脚的属性。 • 模块中有多个器件时,应选用“IN 器件名”。 • “!”表示低电平有效。 • 管脚定义语句必须放在器件定义语句之后。 例: ① !Clock,Reset,S1 PIN 12,15,3; ② !Clock,Reset,S1 PIN IN U12, 12,15,3 ;
①用逻辑表达式描述:
NAND3 MACRO(A,B,C){!(?A&?B&?C)}; 调用:D=NAND3(Clock,Hello,Busy);
则:D=!(Clock&Hello&Busy);
例:用宏定义一个三输入与非门。 ②用真值表描述:
NAND3 MACRO(A,B,C) {TRUTH_TABLE( [ ?A, ?B, ?C ] > ?Y )
⑷. 变量及变量代换: 哑 变 量:在宏、模块和指示字中,可以被真实
变量替代的标识符。 真实变量:用于宏、模块和指示字中的变量,真
实变量可以替代哑变量。真实变量可 以是标识符、数字、字符串、运算符、 集合等。 例:
例: 在宏定义中有:
OR_EM MACRO (a,b,c){?a#?b#?c }; a,b,c 是哑变量,在宏定义体中,哑变量前带 有问号“ ? ” 。
*管脚、节点常用属性:
例: OUT0,OUT1,OUT2 PIN 3,4,5 ISTYPE „COM‟ ; OUT3,OUT4 PIN 6,7 ISTYPE „REG‟ ;
*管脚、节点常用属性:
4. 逻辑描述: ABEL 描述逻辑功能的方法有三种:
☆ 布尔方程 ☆ 真值表 ☆ 状态机
⑴ EQUATIONS 方程语句: 关键字 EQUATIONS 表示一组布尔方程的开始。
sign=6&5; ② [a,b]=^bxx11; 等同于 [a,b]=^b11; ③ [a,b]=^b1; 等同于 [a,b]=^b01; ④ [a,b]=c&d; 等同于 a=c&d; b=c&d;
⑵. 特殊常量值: 除了H 和L 外,两边带点,大小写均可。
常量值 说 明
H
逻辑高电平
L
逻辑低电平
[ 0 , .X., .X.] > 1; [ .X., 0 , .X.] > 1; [ .X., .X., 0 ] > 1; [ 1 , 1 , 1 ] > 0;}; 调用:D=NAND3(Clock,Hello,Busy); 则:TRUTH_TABLE( [ Clock, Hello, Busy ] > D ) [ 0 , .X. , .X. ] > 1; [ .X. , 0 , .X. ] > 1; [ .X. , .X. , 0 ] > 1; [ 1 , 1 , 1 ] > 0;};
.C.
时钟输入(电平按低—高—低变化)
.K.
时钟输入(电平按高—低—高变化)
.U.
时钟上升沿(电平按低—高变化)
.D.
时钟下降沿(电平按高—低变化)
.F.
浮动输入或输出信号
.P.
寄存器预装载
.X.
任意值
.Z.
高阻态
⑶. 块: * 块是括在 { } 的文本段。 * 块用于宏定义和指示字中。 * 块可以嵌套使用。
⑤ 自动生成文件。
一、ABEL 语言元素
1. 字符和数 ⑴ 标识符:
• 标识符代表器件、器件管脚、节点、集合、输入 信号、输出信号、宏、常量及变量等。
• 标识符不能和关键字(即保留字)重名。
⑵ 字符串: • 用单引号扩起来的一系列字符。
• ⑶ 注释: 以双引号开头的一行字符。
2. 运算符、表达式与方程 ⑴ 运算符
[ WHEN 条件 THEN ] [ ! ] [ ENABLE ] 标识符 := 表达式; [ ELSE 方程 ];
关键字 ENABLE 用于三态输出缓冲器的使 能。ENABLE 后的标识符必须是三态型的输 出,表达式的值仅用于使能三态缓冲器,而不 赋值给信号。
例: ENABLE Y=C#D; 如果(C#D)为真,则输出 Y 被使能(但 Y 的输出信号不是 C#D)。
例: EQUATIONS A=B&C#D; [ W,Y ]=3; !F=(B==C); WHEN (select==0) THEN y=a;
• 逻辑运算符:
运算符
说明
举例
!
逻辑非
!A
&
逻辑与
A&B
#
逻辑或
A#B
$
逻辑异或
A$B
!$
逻辑同或
A!$B
• 算术运算符:
运算符
举例
说明
A
取二进制补码
AB
减
+
A+B
加
*
A*B
乘
/
A/B
除
%
A%B
取模
<<
A<<B
A左移B位
>>
A>>B
A右移B位
• 关系运算符:
运算符
说明
==
等于
!=
不等于
<
小于
<=
加 减 或 异或 同或
2
&
与
4
2
<<
左移
4
2
>>
右移
4
2
/
除
4
2
*
乘
4
2
%
取模
4
==
等于
!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
⑶ 布尔方程(逻辑方程,简称方程):
[ WHEN 条件 THEN ] [ ! ] 标识符 = 表达式; [ ELSE 方程 ];
[ WHEN 条件 THEN ] [ ! ] 标识符 := 表达式; [ ELSE 方程 ];
电子技术课 程设计资料
ABEL硬件描述语言概述
ABEL语言简介
• ABEL语言是一种硬件描述语言(也称为 ABELHDL),是开发PLD的一种高级程序设 计语言,由美国DATA I/O公司于1983~1988 年推出。
• ABEL语言支持逻辑方程、真值表和状态图三 种逻辑描述方式。
• 具有简单易学的特点。
⑹ ISTYPE 属性定义语句: 信号名[,信号名]… ISTYPE „属性[,属性]…‟;
• 信号名是指管脚或节点的标识符。属性定义语 句用于对管脚或节点具有可编程特性的器件进行 属性定义,使具体的器件形成正确的逻辑并使设 计优化。
• ISTYPE属性定义语句必须放在DEVICE器件定 义语句、PIN管脚定义语句、NODE节点定义语句 之后。
2. ABEL HDL 设计的基本思想
不少EDA( 电子设计自动化) 软件工具支持ABEL HDL 设计、原理 图设计、以及ABEL HDL 和原理图混合设计等多种设计方式。由于 ABEL HDL 设计对初学者易于入门,本试验选用ABEL HDL 语言来 进行教学。
一AB部E分L 使HD用L高包级括语两言部,分用:来描述逻辑设计; 另一部分是语言处理程序,用于将逻辑描述转化为其下载文件 中含有编程及测试可编程逻辑器件所需的信息。
例: ① X=A&B; ② Y:=C#D; ③ !A=B$C; 等同于 A=!(B$C); ④ WHEN A==B THEN Y=C; ELSE Y=D; ⑤ A=B;
A=C; 等同于 A=B#C;
[ WHEN 条件 THEN ] [ ! ] [ ENABLE ] 标识符 = 表达式; [ ELSE 方程 ];
⑴ MODULE 模块语句: MODULE 模块名 [(哑变量名[,哑变量名]…)] …… (声明和逻辑描述) …… END [模块名] [;]
⑵ FLAG 标志语句: FLAG 参数名[,参数名]…
* 在原文件需要特殊处理或需要采用不同等级的处理 才能使设计成功时,可以应用FLAG语句。
例如:对设计使用2级化简来减少冗余项,且仿真时 使用3级跟踪,可用以下语句实现:
EQUATIONS !IO=(Address>=^hE000)&(Address<=^hE7FF)
• 集合的赋值和运算: 例: ① 若已定义 sign=[A,B,C]; 则可以这样赋值:sign=[1,1,0]; 或者 sign=6; 也可以这样运算:sign=[1,1,0]&[1,0,1]; 或者
小于等于
>
Hale Waihona Puke Baidu
大于
>=
大于等于
举例 A==B A!=B A<B A<=B A>B A>=B
• 赋值运算符:
运算符
说明
=
非时钟赋值
:=
时钟赋值
举例 A=B A:=B
⑵ 表达式:标识符和运算符的组合
优先级
表达式中运算符的优先级: 3 3
优先级 运算符 说明
3
1
1
!
取补 取反
3 3
运算符 +
# $ !$
说明
在方程中有: D=OR_EM(X,Y,A&B); 调用OR_EM 宏,结果为:D=X#Y#(A&B);;
点后缀 .AP .AR .CE .CLK .D .FB
.J .K .LD .LE
⑸. 常用的点后缀:
含义 寄存器异步置位
寄存器异步复位
时钟导通触发器的时钟输入
边沿触发器的时钟输入 D触发器的激励输入 寄存器反馈信号
二、ABEL 语言结构 1. 基本结构:
MODULE 模块名 [(哑变量名[,哑变量名]…)] [FLAG语句]… [TITLE语句]… 定义段 [EQUATIONS]… [TRUTH_TABLE]… [STATE_DIAGRAM]… [TEST_VECTORS]… END [模块名] [;]
2. 模块语句、标志语句、标题语句:
ABEL语言设计源程序通过ispDesignExpert 软件编译、语法检查、逻辑化简、自动生成符 合标准的JEDEC文件(“.JED”文件)。
两个问题:
1. 什么是ABEL HDL 源文件
ABEL HDL 硬件描述语言是一种层次结构的逻辑描述语言,是 世界上可编程逻辑器件设计应用最广的语言之一。用ABEL HDL 语 言设计的文件是ASCII 格式的文本文件,叫做ABEL HDL 源文件。