第三十三讲 PLD器件的应用
10.4 PLD器件的应用 10.4.1 可编程器件的开发系统 10.4.2 ABEL硬件描述语言 一、ABEL源文件的结构 二、ABEL的基本语法 10.4.3 应用举例 10.4 PLD器件的应用
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.数组及其运算


|