PLD器件的应用
10.4.1 可编程器件的开发系统
10.4.2 ABEL硬件描述语言
一、ABEL源文件的结构
二、ABEL的基本语法
10.4.3 应用举例
10.4.1 可编程器件的开发系统
10.4.2 ABEL硬件描述语言
一、ABEL源文件的结构
看一个简单的ABEL源程序文件的例子。
module G_3AND
title‘ This is an example of 3 _input AND gate useing a GAL16V8’
“device type;
3 _AND device‘GAL16V8’;
“input pins;
A,B,C pin 2,3,4;
“output pins;
Y pin 18;
“constants;
1,0=H,L;
equations
Y=A&B&C;
test_vectors([A,B,C]->[Y])
[0,0,0]一>[0];
[0,0,1]一>[0];
[0,1,0]一>[0];
[0,1,1]一>[0];
[1,0,0]一>[0];
[1,0,1]一>[0];
[1,1,0]一>[0];
[1,1,1]一>[1];
end
1.标题段
标题语句是可选语句,ABEL在编译时不处理该语句。格式:
module (字符串)
title ‘(字符串)’
2.定义段
(1)器件定义:用来确定所使用的器件。语句格式为:
(器件序号) device‘器件名’;
如:U1 device‘GAL16R8’;它定义了序号为U1 的器件是 GAL16R8。
(2)信号和引脚及引脚类型定义:指定信号名称及其对应的器件引脚,并说明信号的属性,语句格式为:
[!]信号名,[!]信号名,…[!]信号名 pin引脚号,引脚号,…引脚号
[istype‘属 性’];
(3)常量定义:用来定义设计者习惯的常量标识符替代ABEL语言中的一些专用常量标识符,其语句格式为:
标识符,标识符,… = 常量,常量,…;
如: 1,0,X,CP=H,L,.X.,.C.;
(4)数组定义和表达式定义
数组定义就是用一个标识符简记一组数组元素。其语句格式为:
标识符=[元素1,元素2,…];
如: S=[ Q1, Q2, Q3];
(5)注释行:为便于阅读程序而加入的注释。编译程序是不会处理它。
如:“input pin;(输入引脚)
“output pin;(输出引脚)
3.逻辑描述段——编程设计的核心
(1)逻辑方程。其格式为:
equations
方程1 ;
方程2 ;
…
方程n ;
(2)真值表。其格式如下:
truth _ table
([元素1,元素2…]—>[元素1,元素2,…])
[×,×,…]—>[×,×,…]
…
[×。×,…]—>[×,×,…];
其中第一行是关键字,后面没有分号,第二行是表头,用圆括号括起来,后面没有分号。括号内左边是输入信号数组,右边是输出信号数组,两数组之间用赋值号连接。对于组合逻辑,赋值号为“->”,对于触发器输出,赋值号为“:>”。表头下面为真值表,表的每一行作为一条语句,用分号结束。关键字和表头也可以写在同一行,但关键字和表头之间要用空格隔开。在输入和输出数组中的元素可以是变量标识符(如[A,B,C]),也可以是数组标识符(如[A,FF]),而FF=[Q2,Q1,Q0],就是说,数组中可以嵌套数组。
4.测试向量段——测试电路的逻辑功能是否正确
结构如下:
test _ vectors
([元素 1,元素2,…]—>[元素 1,元素 2,…])
[×,×,…]—>[×,×,…];
…
[×,×…]—> [×,×,…];
5.结束段
模块设计结束时,用关键字end表示结束。因此end只与module对应。end后面没有分号。
下面给出了一个ABEL源文件的典型结构。
module(字符串)
title‘(字符串)’
(字符串)device‘(器件名)’;
[!]信号名,[!]信号名,…,[!]信号名 pin 引脚号,引脚号,…,引脚号;
标识符,标识符,… = 常量,常量,…;
equations
方程1;
方程2;
…
方程n;
test _ vectors([输入信号]>[输出信号])
end
二、ABEL的基本语法
l.合法字符与语句
2.标识符与关键字
3,常量和数值
4.运算符
5.数组及其运算
评论