PLD器件的應(yīng)用
10.4 PLD器件的應(yīng)用
10.4.1 可編程器件的開發(fā)系統(tǒng)
10.4.2 ABEL硬件描述語(yǔ)言
一、ABEL源文件的結(jié)構(gòu)
二、ABEL的基本語(yǔ)法
10.4.3 應(yīng)用舉例
10.4 PLD器件的應(yīng)用
10.4.1 可編程器件的開發(fā)系統(tǒng)
10.4.2 ABEL硬件描述語(yǔ)言
一、ABEL源文件的結(jié)構(gòu)
看一個(gè)簡(jiǎn)單的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.標(biāo)題段
標(biāo)題語(yǔ)句是可選語(yǔ)句,ABEL在編譯時(shí)不處理該語(yǔ)句。格式:
module (字符串)
title ‘(字符串)’
2.定義段
(1)器件定義:用來(lái)確定所使用的器件。語(yǔ)句格式為:
(器件序號(hào)) device‘器件名’;
如:U1 device‘GAL16R8’;它定義了序號(hào)為U1 的器件是 GAL16R8。
(2)信號(hào)和引腳及引腳類型定義:指定信號(hào)名稱及其對(duì)應(yīng)的器件引腳,并說明信號(hào)的屬性,語(yǔ)句格式為:
[!]信號(hào)名,[!]信號(hào)名,…[!]信號(hào)名 pin引腳號(hào),引腳號(hào),…引腳號(hào)
[istype‘屬 性’];
(3)常量定義:用來(lái)定義設(shè)計(jì)者習(xí)慣的常量標(biāo)識(shí)符替代ABEL語(yǔ)言中的一些專用常量標(biāo)識(shí)符,其語(yǔ)句格式為:
標(biāo)識(shí)符,標(biāo)識(shí)符,… = 常量,常量,…;
如: 1,0,X,CP=H,L,.X.,.C.;
(4)數(shù)組定義和表達(dá)式定義
數(shù)組定義就是用一個(gè)標(biāo)識(shí)符簡(jiǎn)記一組數(shù)組元素。其語(yǔ)句格式為:
標(biāo)識(shí)符=[元素1,元素2,…];
如: S=[ Q1, Q2, Q3];
(5)注釋行:為便于閱讀程序而加入的注釋。編譯程序是不會(huì)處理它。
如:“input pin;(輸入引腳)
“output pin;(輸出引腳)
3.邏輯描述段——編程設(shè)計(jì)的核心
(1)邏輯方程。其格式為:
equations
方程1 ;
方程2 ;
…
方程n ;
(2)真值表。其格式如下:
truth _ table
([元素1,元素2…]—>[元素1,元素2,…])
[×,×,…]—>[×,×,…]
…
[×。×,…]—>[×,×,…];
其中第一行是關(guān)鍵字,后面沒有分號(hào),第二行是表頭,用圓括號(hào)括起來(lái),后面沒有分號(hào)。括號(hào)內(nèi)左邊是輸入信號(hào)數(shù)組,右邊是輸出信號(hào)數(shù)組,兩數(shù)組之間用賦值號(hào)連接。對(duì)于組合邏輯,賦值號(hào)為“->”,對(duì)于觸發(fā)器輸出,賦值號(hào)為“:>”。表頭下面為真值表,表的每一行作為一條語(yǔ)句,用分號(hào)結(jié)束。關(guān)鍵字和表頭也可以寫在同一行,但關(guān)鍵字和表頭之間要用空格隔開。在輸入和輸出數(shù)組中的元素可以是變量標(biāo)識(shí)符(如[A,B,C]),也可以是數(shù)組標(biāo)識(shí)符(如[A,F(xiàn)F]),而FF=[Q2,Q1,Q0],就是說,數(shù)組中可以嵌套數(shù)組。
4.測(cè)試向量段——測(cè)試電路的邏輯功能是否正確
結(jié)構(gòu)如下:
test _ vectors
([元素 1,元素2,…]—>[元素 1,元素 2,…])
[×,×,…]—>[×,×,…];
…
[×,×…]—> [×,×,…];
5.結(jié)束段
模塊設(shè)計(jì)結(jié)束時(shí),用關(guān)鍵字end表示結(jié)束。因此end只與module對(duì)應(yīng)。end后面沒有分號(hào)。
下面給出了一個(gè)ABEL源文件的典型結(jié)構(gòu)。
module(字符串)
title‘(字符串)’
(字符串)device‘(器件名)’;
[!]信號(hào)名,[?。菪盘?hào)名,…,[!]信號(hào)名 pin 引腳號(hào),引腳號(hào),…,引腳號(hào);
標(biāo)識(shí)符,標(biāo)識(shí)符,… = 常量,常量,…;
equations
方程1;
方程2;
…
方程n;
test _ vectors([輸入信號(hào)]>[輸出信號(hào)])
end
二、ABEL的基本語(yǔ)法
l.合法字符與語(yǔ)句
2.標(biāo)識(shí)符與關(guān)鍵字
3,常量和數(shù)值
4.運(yùn)算符
5.?dāng)?shù)組及其運(yùn)算