PLD設(shè)計(jì)方法及步驟
1、PLD器件的設(shè)計(jì)步驟
1.電路邏輯功能描述
PLD器件的邏輯功能描述一般分為原理圖描述和硬件描述語言描述,原理圖描述是一種直觀簡便的方法,它可以將現(xiàn)有的小規(guī)模集成電路實(shí)現(xiàn)的功能直接用PLD器件來實(shí)現(xiàn),而不必去將現(xiàn)有的電路用語言來描述,但電路圖描述方法無法做到簡練;硬件描述語言描述是可編程器件設(shè)計(jì)的另一種描述方法,語言描述可能精確和簡練地表示電路的邏輯功能,現(xiàn)在在PLD的設(shè)計(jì)過程中廣泛使用,并且有更加滸的趨勢(shì),常用的硬件描述語言有ABEL,VHDL語言等,其中ABEL是一種簡單的硬件描述語言,其支持布爾方程、真值表、狀態(tài)機(jī)等邏輯描述,適用于計(jì)數(shù)器、譯碼器、運(yùn)算電路、比較器等邏輯功能的描述;VHDL語言是一種行為描述語言,其編程結(jié)構(gòu)類似于計(jì)算機(jī)中的C語言,在描述復(fù)雜邏輯設(shè)計(jì)時(shí),非常簡潔,具有很強(qiáng)的邏輯描述和仿真能力,是未來硬件設(shè)計(jì)語言的主流。
2.計(jì)算機(jī)軟件的編程及模擬
不管是用硬件描述語言描述的邏輯還是用原理圖描述的邏輯,必須通過計(jì)算機(jī)軟件對(duì)其進(jìn)行編譯,將其描述轉(zhuǎn)換為經(jīng)過化簡的布爾代數(shù)表達(dá)式(即通常的最簡與或表達(dá)式),編譯軟件再根據(jù)器件的特點(diǎn)將表達(dá)式適配進(jìn)具體的器件,最終形成PLD器件的熔斷絲文件(通常叫做JEDEC文件,簡稱為JED文件)。
通常在將用戶設(shè)計(jì)的邏輯下載到具體器件中前,為了檢查設(shè)計(jì)的結(jié)果是否正確,通??梢酝ㄟ^計(jì)算機(jī)軟件進(jìn)行模擬,檢查其設(shè)計(jì)結(jié)果是不否與設(shè)計(jì)要求相符。
3.通過編程器將JED文件下載到PLD器件中
在上步中形成的熔斷絲文件必須下載到PLD器件中去才能實(shí)現(xiàn)設(shè)計(jì)的要求,熔斷絲文件的下載一般須通過編程器進(jìn)行下載。
編程器是一種專門用于對(duì)可編程器(如EPROM,EEPROM,GAL,CPLD,PAL等)進(jìn)行編程的專業(yè)設(shè)備,常見的編程器有臺(tái)灣河洛公司的ALL系列、南京西爾特公司的Super系列等。編程器通常通過計(jì)算機(jī)的并行打印器將JED文件下載到編程器中,編程器再將JED文件根據(jù)器件的特點(diǎn)將其寫入器件內(nèi)部,從而達(dá)到下載的目的。下圖給出了PLD的設(shè)計(jì)過程。
2、 可編程器件設(shè)計(jì)軟件簡介
可編程器件的設(shè)計(jì)軟件種類很多,各大器件廠家及一些軟件公司都開發(fā)了一系列的設(shè)計(jì)軟件,正是由于這些軟件才推動(dòng)了可編程器件的快速發(fā)展。
通常根據(jù)邏輯功能的描述方法分為:語言描述和原理圖描述設(shè)計(jì)兩大類。常見的如DATA I/O公司的BAEL語言、四通公司ASIC事業(yè)部開發(fā)的針對(duì)GAL器件的FM(Fast MAP)軟件等屬于語言描述類設(shè)計(jì)軟件;DATA I/O 公司的Synario軟件,Orcad公司的PLD等軟件屬于電路圖描述或電路圖描述與語言描述相拼命的軟件。這里主要以DATA I/O 公司的Synario軟件為例說明GAL器件的設(shè)計(jì)過程,同時(shí)該軟件還可以開發(fā)Lattice公司的pLSI器件和ispLSI器件等。
1.ABEL-HDL語言
ABEL-HDL語言是一種用語言來描述器件邏輯功能的設(shè)計(jì)語言,它與其它計(jì)算機(jī)語言一樣有一些關(guān)鍵字及一些規(guī)定。
(1)邏輯符號(hào):它可以是標(biāo)準(zhǔn)符號(hào)庫的符號(hào),也可以是代表其它電路功能的符號(hào),如圖中的異或門、與門符號(hào),它代表了異或、與門的功能,但在軟件上常常是英制的符號(hào),所以讀者使用是應(yīng)加以注意;
(2)連線:用來連接各個(gè)符號(hào),其功能相當(dāng)于實(shí)際電路的導(dǎo)線;
(3)I/O標(biāo)志:它用來標(biāo)明電原理圖的輸入、輸出信號(hào),信號(hào)的方向(輸入、輸出、雙向),及輸入/輸出腳對(duì)應(yīng)于器件引腳號(hào);
(4)圖片和文字:用于幫助說明電路的功能,便于理解電路的原理,對(duì)整個(gè)電路原理沒有實(shí)際意義。
3、 可編程邏輯器件設(shè)計(jì)舉例
1.用ABEL語言設(shè)計(jì)
(1)啟動(dòng)Synario軟件并創(chuàng)建一個(gè)新的設(shè)計(jì)項(xiàng)目
? 在Windows 95的程序組上執(zhí)行Synario,屏幕中的出現(xiàn)Synario軟件的開始界面。
? 在 File菜單中選擇New Profect…項(xiàng),鍵入新的項(xiàng)目名如SUM。如下圖所示。
在實(shí)際使用時(shí)應(yīng)注意該項(xiàng)目所處的目錄位置,否則當(dāng)退出當(dāng)前操作后就找不到前的設(shè)計(jì),當(dāng)前的目錄位置可由上圖的右框中可以看出;另外還須注意的是,新的項(xiàng)目名一般不要使用中文當(dāng)文件名。
(2)選擇器件
雙擊Virtual Device,將出現(xiàn)Choose Device的對(duì)話框,如下圖;在Device Kit中選擇到GAL16V8,單擊OK按鈕選中該器件。
(3)選擇源文件的類型
可編程邏輯設(shè)計(jì)的源文件可以是ABEL語言也可以原理圖,在Source菜單中選擇New,出現(xiàn)New話框后選擇ABEL-Module表示進(jìn)行ABEL語言的輸入,輸入相應(yīng)的模塊名及文件名。如下圖。
這里必須注意,ABEL的模塊名不可以使用中文作為文件名,否則無法進(jìn)行編譯。
(4)輸入ABEL語言源程序? 在對(duì)應(yīng)的源文件編輯器中輸入相應(yīng)的源文件,在輸入時(shí)關(guān)鍵字可以是大寫,也可以是小寫字母,但變量的大小寫不能改變,否則在編譯時(shí)將報(bào)錯(cuò)。如下圖。
(5)源文件編譯
在項(xiàng)目管理器下,選擇左邊方框中對(duì)應(yīng)于源文件的文件名,雙擊右邊區(qū)域中的Reduce Logic可以看到如上圖所示的編譯過程,如源文件無誤,則編譯器最終給出編譯報(bào)告,說明完成該邏輯所需要的資源及經(jīng)化簡后的邏輯表達(dá)式;如源文件存在問題問題,則編譯器會(huì)說明錯(cuò)誤的原因及地方。
(6)熔斷絲文件形成
在項(xiàng)目管理器左邊的區(qū)域選擇使用的器件(GAL16V8),雙擊右邊區(qū)域中的Create Fuse Map, 可看到如下圖所示的熔斷絲文件的形成過程,如報(bào)設(shè)計(jì)的邏輯報(bào)需要的資源GAL16V8可以實(shí)現(xiàn)的話,將最終形成擴(kuò)展名為.JED的熔斷絲文件。
(7)程序下載
JED的文件須下載到具有的GAL器件中,才能完成其最終的設(shè)計(jì),下載JED文件到GAL須用專門的硬件設(shè)計(jì),這種專門的的設(shè)備即通常講的編程器。這種設(shè)備與計(jì)算機(jī)的并口或串口相連,通過相應(yīng)軟件將JED文件下載到GAL器件中到。如下圖給出了Super編程器下載JED文件的畫面。
在利用編程器進(jìn)行下載時(shí),首先選擇器件的廠家,不同的廠家器件特性有所不同,故應(yīng)選擇對(duì)應(yīng)的生產(chǎn)廠家,其次選擇器件的型號(hào),這時(shí)可以將需要下載的JED文件讀入緩沖區(qū),最后對(duì)器件進(jìn)行編程,編程器將JED文件下載后還自動(dòng)進(jìn)行一次校驗(yàn),如器件工作正常,則編程 器軟件可告知下載正常,否則說明器件損壞。
由于GAL器件是使用CMOS工藝生產(chǎn)的器件,故在對(duì)GAL器件編程時(shí)應(yīng)注意計(jì)算機(jī)及編程器的接地是否良好,工作人員的人體是否帶靜電。
2.原理圖輸入設(shè)計(jì)法
原理圖輸入法的使用前面步驟與ABEL語言設(shè)計(jì)的前兩步相同,下面是原理圖設(shè)計(jì)的步驟:
(1)選擇源文件類型中選擇Schematic,輸入對(duì)應(yīng)的圖形文件名后將出現(xiàn)下圖所示的原理圖輸入界面。
(2)添加元件:選擇菜Add中的Symbol命令,屏幕出現(xiàn)Symbol Libraries對(duì)話框,選擇需要的件,其中:? GATE:邏輯門電路;ARITHS:數(shù)學(xué)運(yùn)算元件;IOPAD:輸入輸出元件;MUXEX:多路選擇開關(guān) ;REGS:寄存器。
(3)連接兩元件:從Add菜單中選擇Wire,用MOUSE左鍵在須連接處單擊后,拖動(dòng)MOUSE到另一點(diǎn)再單擊就將兩點(diǎn)連接上了。
(4)在輸入輸出端連上輸入/輸出元件:在菜單Add上選擇Symbol中的IOPAD元件,在電路的輸入/輸出畫上IOPAD元件。
(5)給接口輸出端賦名:從Add菜單中選擇Net Name項(xiàng),從屏幕底部輸入欄中輸入網(wǎng)絡(luò)名并按回車,網(wǎng)絡(luò)名會(huì)粘在光標(biāo)上隨MOUSE一起移動(dòng),將光標(biāo)移到輸入或輸出端單擊,網(wǎng)絡(luò)名就被 放置在輸入/輸出處。
(6)給接口的輸入輸出端標(biāo)注類型:在Add菜單中選擇I/O Markers,輸對(duì)應(yīng)的輸入輸出標(biāo)上輸入與輸出的標(biāo)記。
(7)給器件鎖定管腳:從Add中選擇Symbol Attribute將MOUSE光標(biāo)移到輸入輸出端的IOPAD上單擊,將SynarioPin=*中的*改為所須的輸出管腳號(hào)。
到此一個(gè)完整的原理圖已經(jīng)輸入完畢,將電路圖保存后退出后就可以與ABEL_HDL語言一樣進(jìn)行編譯,最終開成JED文件。
ABEL-HDL基本算術(shù)運(yùn)算符號(hào)
(1)基本的運(yùn)算表示
ABEL-HDL語言運(yùn)算可分為邏輯運(yùn)算和算術(shù)運(yùn)算。下面兩個(gè)表格分別列出了兩種運(yùn)算的符號(hào)及功能,下面表格中紅底的項(xiàng)為時(shí)序電路中才會(huì)使用到。
ABEL-HDL基本邏輯運(yùn)算符號(hào)
運(yùn)算符
|
優(yōu)先級(jí)
|
功能
|
例子
|
含義
|
!
|
1
|
取反
|
!(AB)
|
(AB)的非
|
&
|
2
|
與運(yùn)算
|
A&B
|
A·B
|
#
|
3
|
或運(yùn)算
|
A#B
|
A+B
|
$
|
4
|
異或運(yùn)算
|
A$B
|
A⊕B
|
=
|
|
賦值
|
A=5
|
將5賦給A
|
==
|
|
數(shù)值相等
|
A==1
|
用于判斷數(shù)值相等
|
!=
|
|
數(shù)值不等
|
A!=1
|
用于判斷數(shù)值不等
|
ABEL-HDL基本算術(shù)運(yùn)算符號(hào)
運(yùn)算符
|
功能
|
舉例
|
含義
|
+
|
算術(shù)加
|
C=A+B
|
將A與B相加,將積再賦給C
|
-
|
算術(shù)減
|
|
|
*
|
算術(shù)乘
|
|
|
/
|
算術(shù)除
|
|
|
<<,>>
|
左,右移位
|
A<<B
|
將A左移B位
|
(2)關(guān)鍵字
關(guān)鍵字
|
作 用
|
舉 例
|
module
|
說明模塊的開始,與END對(duì)應(yīng)
|
MODULE tran
|
End
|
模塊的結(jié)束
|
END
|
Title
|
說明模塊的名稱(可省略)
|
Title 'U2 is a decode'
|
Equations
|
表明與器件相關(guān)的方程式的開始
|
|
Pin
|
說明器件I/O的引腳
|
CLK,A Pin 1,2;
|
Istype
|
說明輸出信號(hào)的屬性
|
A Pin 19 istype 'COM';
|
Test_vectors
|
測(cè)試向量的開始
|
|
Truth_table
|
真值表的開始
|
|
When then Else
|
當(dāng)什么時(shí)就怎樣,否則怎樣
|
When b then c=0 esle a=b
|
If then else
|
|
|
3)ABEL語言設(shè)計(jì)舉例
例 寫出全加器的ABEL-HDL語言的源文件。
分析:在組合邏輯電路中我們分析了全加器的電路,我們可以用真值表、邏輯表達(dá)式、電路圖等幾種方式來描述其邏輯功能。其表達(dá)式寫為:
其值表可寫為:
Ci
|
A
|
B
|
Co
|
S
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
該邏輯用真值表和表達(dá)式皆可以表示,即ABEL的源文件可以有兩種表達(dá)方式。
源文件1:用表達(dá)式來表示
源文件
|
說 明
|
Module FSUM;
|
模塊定義,F(xiàn)SUM為模塊名,每行結(jié)束用分號(hào)結(jié)束
|
A,B,Ci pin 1,2,3;
|
定義A,B,Ci對(duì)應(yīng)管腳1,2,3
|
S,Co pin 19,18 istype 'com';
|
定義S,Co的管腳,并定義其為組合邏輯電路輸出
|
Equations
|
表示下面一段為邏輯表達(dá)式
|
S=A$B$Ci;
|
|
Co=A&B+A&Ci+B&Ci;
|
|
Test_vectors ([Ci,A,B]->[Co,S])
|
測(cè)試向量定義,下面為測(cè)試向量用于模擬邏輯功能
|
[0,0,0]->[0,0];
|
|
[0,0,1]->[0,1];
|
|
[0,1,0]->[0,1];
|
|
[0,1,1]->[1,0];
|
|
[1,0,0]->[0,1];
|
|
[1,0,1]->[1,0];
|
|
[1,1,0]->[1,0];
|
|
[1,1,1]->[1,1];
|
|
End
|
模塊結(jié)束
|
源文件2:用真值表來表示
只要將上面的源文件中Equations起的三行用下面一段代替即可。
Truth_table ([Ci,A,B]->[Co,S])
|
[0,0,0]->[0,0];
|
[0,0,1]->[0,1];
|
[0,1,0]->[0,1];
|
[0,1,1]->[1,0];
|
[1,0,0]->[0,1];
|
[1,0,1]->[1,0];
|
[1,1,0]->[1,0];
|
[1,1,1]->[1,1];
|
2.原理圖輸入法
ABEL-HDL語言作為一種邏輯描述語言可以進(jìn)行PLD的設(shè)計(jì),但由于有一些電路已經(jīng)有了圖紙,人們希望能直接將原理圖寫入PLD電路中去,省去進(jìn)行程序設(shè)計(jì)的時(shí)間,隨著計(jì)算機(jī)圖形化界面的發(fā)展,現(xiàn)在利用電路圖進(jìn)行邏輯描述的軟件功能愈來愈多。
下圖為一半加器的電路圖,從圖上可看出其包括以下幾個(gè)部分: