ABEL硬件描述语言概述
.C.
时钟输入(电平按低—高—低变化)
.K.
时钟输入(电平按高—低—高变化)
.U.
时钟上升沿(电平按低—高变化)
.D.
时钟下降沿(电平按高—低变化)
.F.
浮动输入或输出信号
.P.
寄存器预装载
.X.
任意值
.Z.
高阻态
⑶. 块: * 块是括在 { } 的文本段。 * 块用于宏定义和指示字中。 * 块可以嵌套使用。
FLAG „r2‟, „t3‟
⑶ TITLE 标题语句: TITLE „字符串’
3. DECLARATIONS 定义段:
• 每个模块必须有自己的定义段。 • 模块中的定义段声明设计所使用的器件、定 义器件管脚和节点的标识符。 • 常量、宏和属性也在定义段中定义。
⑴ Device 器件定义语句:
器件名,[器件名]… DEVICE 实际器件; • 器件名即设计模块中所用的标识符,实际器 件为实际器件的工业型号,用字符串表示。
在方程中有: 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触发器的激励输入 寄存器反馈信号
⑶ NODE 节点定义语句:
[!]信号名[,[!]信号名]… NODE [IN 器件名]
节点号[=„属性[,属性]…‟] [,节点号[=„属性[,属性]…‟]]…;
• 节点定义语句和管脚定义语句类似。 • 模块中有多个器件时,应选用“IN 器件名”。 • 节点定义语句必须放在器件定义语句之后。 例: ① A NODE 12=„pos,com‟;
T触发器输出
⑷ 常量定义语句:
常量名[,常量名]…=表达式[,表达式]…; 例:
X=.X.; C=.C.; A=[!B,D]; X,C,A=.X.,.C.,[!B,D]; A,B=5,7;
⑸ 宏定义语句及扩展:
宏名 MACRO([哑变量,[哑变量]…]){块}; • 宏定义中的块可以用逻辑表达式描述,也可以 用真值表来描述。 例:用宏定义一个三输入与非门。
*管脚、节点常用属性:
例: OUT0,OUT1,OUT2 PIN 3,4,5 ISTYPE „COM‟ ; OUT3,OUT4 PIN 6,7 ISTYPE „REG‟ ;
*管脚、节点常用属性:
4. 逻辑描述: ABEL 描述逻辑功能的方法有三种:
☆ 布尔方程 ☆ 真值表 ☆ 状态机
⑴ EQUATIONS 方程语句: 关键字 EQUATIONS 表示一组布尔方程的开始。
EQUATIONS !IO=(Address>=^hE000)&(Address<=^hE7FF)
• 集合的赋值和运算: 例: ① 若已定义 sign=[A,B,C]; 则可以这样赋值:sign=[1,1,0]; 或者 sign=6; 也可以这样运算:sign=[1,1,0]&[1,0,1]; 或者
ABEL语言设计源程序通过ispDesignExpert 软件编译、语法检查、逻辑化简、自动生成符 合标准的JEDEC文件(“.JED”文件)。
两个问题:
1. 什么是ABEL HDL 源文件
ABEL HDL 硬件描述语言是一种层次结构的逻辑描述语言,是 世界上可编程逻辑器件设计应用最广的语言之一。用ABEL HDL 语 言设计的文件是ASCII 格式的文本文件,叫做ABEL HDL 源文件。
例: ① 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 方程 ];
①用逻辑表达式描述:
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 )
⑵ Pin 管脚定义语句:
[!]信号名[,[!]信号名]… PIN [IN 器件名]
管脚号[=„属性[,属性]…‟] [,管脚号[=„属性[,属性]…‟]]…;
• 管脚定义语句说明信号标识符与真实器件管 脚之间的关系,并给出可编程管脚的属性。 • 模块中有多个器件时,应选用“IN 器件名”。 • “!”表示低电平有效。 • 管脚定义语句必须放在器件定义语句之后。 例: ① !Clock,Reset,S1 PIN 12,15,3; ② !Clock,Reset,S1 PIN IN U12, 12,15,3 ;
[ 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;};
2. ABEL HDL 设计的基本思想
不少EDA( 电子设计自动化) 软件工具支持ABEL HDL 设计、原理 图设计、以及ABEL HDL 和原理图混合设计等多种设计方式。由于 ABEL HDL 设计对初学者易于入门,本试验选用ABEL HDL 语言来 进行教学。
一AB部E分L 使HD用L高包级括语两言部,分用:来描述逻辑设计; 另一部分是语言处理程序,用于将逻辑描述转化为其下载文件 中含有编程及测试可编程逻辑器件所需的信息。
表示节点12名为A,为正极性且信号为组合型。
*管脚、节点常用属性:
关键字 说 明
Pos
正极性
Neg
负极性
Com
组合逻辑输出
Reg
寄存器输出
Buffer
寄存器缓冲输出
Invert
寄存器反相缓冲输出
Latch
锁存输入
Reg_d
D触发器输出
Reg_rs
RS触发器输出
Reg_jk JK触发器输出
Reg_T
二、ABEL 语言结构 1. 基本结构:
MODULE 模块名 [(哑变量名[,哑变量名]…)] [FLAG语句]… [TITLE语句]… 定义段 [EQUATIONS]… [TRUTH_TABLE]… [STATE_DIAGRAM]… [TEST_VECTORS]… END [模块名] [;]
2. 模块语句、标志语句、标题语句:
例: EQUATIONS A=B&C#D; [ W,Y ]=3; !F=(B==C); WHEN (select==0) THEN y=a;
加 减 或 异或 同或
2
&
与
4
2
<<
左移
4
2
>>
右移
4
2
/
除
4
2
*
乘
4
2等于
!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
⑶ 布尔方程(逻辑方程,简称方程):
[ WHEN 条件 THEN ] [ ! ] 标识符 = 表达式; [ ELSE 方程 ];
[ WHEN 条件 THEN ] [ ! ] 标识符 := 表达式; [ ELSE 方程 ];
[ WHEN 条件 THEN ] [ ! ] [ ENABLE ] 标识符 := 表达式; [ ELSE 方程 ];
关键字 ENABLE 用于三态输出缓冲器的使 能。ENABLE 后的标识符必须是三态型的输 出,表达式的值仅用于使能三态缓冲器,而不 赋值给信号。
例: ENABLE Y=C#D; 如果(C#D)为真,则输出 Y 被使能(但 Y 的输出信号不是 C#D)。
ABEL HDL 有如下一些特点: ① 适用于各种型号的PLD 器件的通用语法; ② 结构化的高级设计语言; ③ 灵活的逻辑描述形式——布尔关系式、真
值表、状态图; ④ 仿真与测试向量; ⑤ 省时的宏定义及指示字。
ABEL HDL 的处理程序提供了如下强大功能: ① 语法检查; ② 检验所选器件能否实现设计要求; ③ 逻辑简化; ④ 设计模拟;
⑷. 变量及变量代换: 哑 变 量:在宏、模块和指示字中,可以被真实
变量替代的标识符。 真实变量:用于宏、模块和指示字中的变量,真
实变量可以替代哑变量。真实变量可 以是标识符、数字、字符串、运算符、 集合等。 例:
例: 在宏定义中有:
OR_EM MACRO (a,b,c){?a#?b#?c }; a,b,c 是哑变量,在宏定义体中,哑变量前带 有问号“ ? ” 。
电子技术课 程设计资料
ABEL硬件描述语言概述
ABEL语言简介
• ABEL语言是一种硬件描述语言(也称为 ABELHDL),是开发PLD的一种高级程序设 计语言,由美国DATA I/O公司于1983~1988 年推出。
• ABEL语言支持逻辑方程、真值表和状态图三 种逻辑描述方式。