WINCupl使用要點_第1頁
WINCupl使用要點_第2頁
WINCupl使用要點_第3頁
WINCupl使用要點_第4頁
WINCupl使用要點_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、跟我學Cupl之一簡介Cupl語言大家可能沒有聽說過,實際上它是國內(nèi)唯一一種和ABEL語言類似,而且可以在 Windows環(huán)境上開發(fā)GAL系列PLD的編譯環(huán)境。WinCupl這種編譯環(huán)境由ATMEL公司出品,是免費軟件,下載頁面 是 id=653 ,在該頁面中選擇 WinCupl 的下載,登記一下你的基本情況就能下載了。下載時會給你注冊碼,很方便。一、Cupl的保留字Cuple的保留字包括以下的字串:APPEND FORMAT OUTASSEMBLY FUNCTION PARTNO ASSY FUSE PINCOMPANY GROUP PINNNODECONDITION IF PRESENT

2、DATE JUMP REV DEFAULT LOC REVISION DESIGNER LOCATION SEQUENCE DEVICE MACRO SEQUENCED ELSE MIN SEQUENCEJK FIELD NAME SEQUENCERS FLD NODE SEQUENCET這些字串是不能被用作其它的用途的。尤其是不能被當作標號使用。Cupl語言有一些運算符,包括:& # ()- * + / :./* */ ;,!=下面是一個門電路的例子,通過這個例子我們可以學到基本的Cupl 語言的用法,在該文件中 /*/ 之間的為注釋。NameGates;PartnoCA0001;Date0

3、7/16/87;DesignerG Woolheiser;CompanyATI;LocationSan Jose, CA.;AssemblyExample;/*/*/* 這是一個表示CUPL 語言基本用法的例子*/*這個例子實現(xiàn)基本門電路.*/*/*/* 目標設(shè)備 : P16L8, P16P8, EP300, and 82S153*/ /*/* 輸入 : 定義簡單門電路的輸入端 */Pin 1 = a; /* 引腳1:輸入端,名稱是a */Pin 2 = b;/* 輸出端 : 定義 PAL16L8 和 PAL16LD8 器件的輸出端。 */Pin 12 = inva; /* 引腳 11:輸出端

4、,名稱是inva */Pin 13 = invb;Pin 14 = and; /*引腳14:輸出端,名稱是 and,與VHDL不同,and不是關(guān)鍵字,可以作為標號使用*/Pin 15 = nand;Pin 16 = or;Pin 17 = nor;Pin 18 = xor;Pin 19 = xnor;/* 邏輯實現(xiàn)部分: 演示如何利用 CUPL 實現(xiàn)基本門電路 */inva = !a; /* 反相器*/invb = !b;and = a & b; /* 與門 */nand = !(a & b); /* 與非門 */or = a # b; /* 或門 */xor = a $ b; /* 異或門

5、*/nor = !(a # b) /* 或非門 */xnor = !(a $ b); /* 同或門 */通過上面例子的學習,我們應該對Cupl 語言有了初步的了解。WinCupl 不但可以編譯該文件,生成JED 的熔絲文件,還可以對該文件進行波形仿真。在做小規(guī)模的PLD 設(shè)計的時候,使用 GAL 系列或者 ATF 系列的 PLD 比較方便,也比較便宜。Cupl 文件的基本格式在編寫Cupl 語言源文件需要遵守一定的格式,源文件由頭部說明、輸入引腳說明、輸出引腳說明和邏輯實現(xiàn)4 部分組成,缺一不可。一、頭部說明頭部說明一般包括以下部分:Name WAITGEN ;Partno P9000183

6、;Revision 02 ;Date 1/11/89 ;Designer Osann ;Company Logical Devices, Inc. ;Assembly PC Memory Board ;Location U106 ;Device F155;Format ij ;Name關(guān)鍵字用來說明邏輯文件的文件名,默認的擴展名是PLD ,因此可以不寫擴展名。Partno 關(guān)鍵字用來說明對特定的 PLD 器件對應的某個公司的部件號。如果不知道,可以不要這個部分。Revision 設(shè)計公司設(shè)計該源文件的版本號??梢圆惶?,可以沒有Date 設(shè)計日期,可以不填,可以沒有Designer 設(shè)計者的名稱

7、,可以不填,可以沒有Company 設(shè)計者所在公司名稱,可以不填,可以沒有Assembly 本設(shè)計用于PC 機板卡時的名稱,可以沒有Location 本設(shè)計用于 PC 機板卡時所在的位置,可以沒有Device 必填字段,用來選擇本設(shè)計所用的具體 PLD 器件型號,F(xiàn)ormat 用來指定本文件編譯后產(chǎn)生的燒寫芯片文件的種類。 h 表示產(chǎn)生 HEX 格式的 ASCII 碼文件, i表示 HL 格式的文件, j 表示產(chǎn)生 JEDEC 格式的文件。二、引腳說明在 PLD 源文件中,所用的輸入輸出引腳都必須說明后才能使用,因此,可以象下面格式一樣說明引腳PIN pin_n=!var ;PIN 是關(guān)鍵字,

8、 pin_n 是引腳號碼, var 是引腳定義的名字,該名字用在后面的邏輯實現(xiàn)中。 !是可選的,用來說明引腳的極性,如果沒有!,輸入是什么就是什么,為同相,如果有! ,就表示輸入后信號反相。下面是一個實際的例子:Pin 2 = !A;Pin 3 = !B;Pin 16 = Y;Y = A & B; /* 邏輯實現(xiàn)部分 */當然,如果有一系列的引腳需要說明,這些引腳又是連續(xù)的,可以用 符號來說明,比如Pin2.6 = A1.5;就表示引腳 2 到 6 用 A1 到 A5 來表示,比較方便。三、邏輯實現(xiàn)部分邏輯實現(xiàn)部分用來實現(xiàn)引腳之間的邏輯關(guān)系。它主要靠一些邏輯操作符來實現(xiàn)引腳之間的關(guān)系。這些邏輯

9、關(guān)系包括:邏輯符號例子關(guān)系操作優(yōu)先級!ANOTANDORXOR其中,!表示非,& 表示與,#表示或,$表示異或,異或的操作優(yōu)先級最低,非的優(yōu)先級最高。搞清楚了這些東西,就可以自己實現(xiàn)最基本的邏輯門電路了。下一講我們將說明如何使用 WinCupl 的環(huán)境。如何使用 WinCupl 軟件環(huán)境WinCupl 是 ATMEL 公司出品的 Cupl 語言的編譯環(huán)境,用于 PLD 器件的編程,支持多種器件,包括 GAL 系列和 ATF 系列。一般來說, ATF 系列的同等級產(chǎn)品要必GAL 的便宜,比如AFT16V8 就兼容 GAL16V8 ,可以擦寫100次,價格上也便宜1塊2塊,性能都差不多。在 ATM

10、EL 公司的 SPLD/CPLD 欄目中免費下載WinCupl 后,可以得到一個注冊碼,用這個碼就可以激活 WinCupl 了,這個碼沒有使用時間的限制。WinCupl 軟件包實際包括兩個部分,一個是 WinCupl,PLD 的編譯環(huán)境,一個是WinSim ,相當于 MAX的波形仿真部分。接下來我們學習如何使用這個軟件。一、編譯第一個源文件第一次課我們舉了一個例子,說明了 Cupl 語言的基本結(jié)構(gòu),下面我們做另一個例子,就是兩輸入端與門。具體步驟是:1、啟動 WinCupl。啟動完進入主界面后,單擊 File菜單的New,從New中單擊Projet,就是新建一個工程文件(其實還是 PLD文件)

11、,在彈出的對話框中,可以填您的源文件名字(Name),填MYGATE ,其它的東西怎么填請您復習第2 課的 PLD 文件頭部文件的說明部分。這里有個特殊的地方,就是器件( Device) ,系統(tǒng)默認的是virtual ,就是不針對任何具體的部件,這里我們改掉,改成g16v8a ,這個關(guān)鍵字兼容ATF16V8 。2 、單擊 OK 后,系統(tǒng)要你輸入你要用的輸入引腳數(shù),因為我們只有兩個輸入端,因此填2 ,單擊OK 按鈕。3、系統(tǒng)要你輸入要用到的輸出引腳數(shù),填1,單擊OK 按鈕。4 、系統(tǒng)要你輸入要使用到的中間節(jié)點數(shù),我們不需要,填0,單擊 OK 按鈕。這樣系統(tǒng)就建立了一個PLD 文件,文件名就是MY

12、GATE.PLD 。系統(tǒng)將該文件顯示出來了,就象下面這樣:Name MYGATE ;PartNo 00 ;Date 2006-8-9 ;Revision 01 ;Designer WUJIAN ;Company TALE ;Assembly None ;Location ;Device g16v8a ;/* *INPUT PINS */PIN =; /*/PIN =; /*/* * OUTPUT PINS */PIN =; /*/因此,這個文件是空的,我們填一下,將輸入輸出引腳都填好,把邏輯也寫完,就象下面這樣:Name MYGATE ;PartNo 00 ;Date 2006-8-9 ;Re

13、vision 01 ;Designer WUJIAN ;Company TALE ;Assembly None ;Location ;Device g16v8a ;/* * INPUT PINS */*/*/PIN 2 = a; /*PIN 3 = b; /*/* * OUTPUT PINS */PIN 12 = Y; /*/Y = a & b;寫好后,我們需要編譯該文件。在 Run 菜單中,單擊 Device Dependent Compile ,就是基于器件型號的編譯。如果沒有出現(xiàn)什么鍵入錯誤,都能成功編譯。編譯完成后,我們來仿真一下看看波形。二、仿真的基本方法編譯完成后。單擊工具欄圖標的

14、從右側(cè)數(shù)第 2 個,啟動 WinSim 。啟動完成后,單擊 WinSim 菜單 File 中New1、在彈出的 Design Properties對話框中,單擊 Design File按鈕,選中 MYGATE.PLD 文件,按“確認按鈕繼續(xù)。在 Design Properties對話框中,單擊 OK按鈕確認。2、接下來 WinSim會提示是否創(chuàng)建 MYGATE.SIM 文件并編譯它,單擊“是”繼續(xù)。3、不管接下來的提示,在 WinSim中Signal (信號)菜單中單擊 Add,在彈出的Add Signal對話框中不斷單擊OK按鈕將a、b、y三個信號加到波形圖中。單擊Done關(guān)閉該對話框。4、

15、在 WinSim的File菜單中單擊Save項保存該項目。5、在黑色的網(wǎng)格的左上方有個Value, Value右邊有個1,在1所在的灰色條上單擊鼠標右鍵,在彈出的菜單中的Add Vector上單擊鼠標左鍵,在彈出的對話框中輸入3,表示增加波形仿真的 3段。6、在a的右側(cè)的波形上單擊鼠標右鍵,依次選 0, 0, 1, 1,在b的波形上單擊鼠標右鍵,依次選 0, 1,0, 1。7、保存該工程。在 Simulator菜單中選擇Simulator開始仿真,就可以看到 y的波形了。如下圖所示唇星即5而-田CUPLMYGATE。量 F|e View SignalWindow He|p口后舊|朝回回唱|制夕

16、|扇F1 t 2 t 34Signal Value i i i 卜本次課我們學習了如何利用 WinCupl進彳f PLD邏輯設(shè)計和基本仿真方法。祝大家工作順利,學習愉快。實現(xiàn)一個4D觸發(fā)器我們原來學D觸發(fā)器的時候,如果全部用組合邏輯來實現(xiàn),推導出來的式子會很長很長,如果這么傻做的 話,會很麻煩?,F(xiàn)在我們用引腳擴展名來實現(xiàn)就很方便。我們以GAL16V8B (在 WinCupl中對應的編譯型號為 g16V8a)為例,GAL16V8B 一共有20個引腳。第1引腳是CLK,即時鐘引腳,第29引腳是輸入引腳,共8個。第10引腳是地,第11引腳是OE,低電平禁止,高電平允許。第 1219是輸出引腳,共8個

17、,第20引腳是電源,一般可接 +5V?,F(xiàn)在我們用該器件來實現(xiàn)一個4D 觸發(fā)器,即 4 個同樣的 D 觸發(fā)器。在 WinCupl 中新建一個工程,文件內(nèi)容如下:Name DSample ;PartNo 00 ;Date 2006-8-9 ;ReVision 01 ;Designer Wu Jian ;Company Tale ;Assembly None ;Location ;DeVice g16V8a ;/* * INPUT PINS */PIN 2.5 = A1.4;/* * OUTPUT PINS */PIN 18 = Q1;PIN 17 = Q2;PIN 16 = Q3;PIN 15 =

18、 Q4;Q1.D = A1;Q2.D = A2;Q3.D = A3;Q4.D = A4;很有意思吧。關(guān)鍵是最后的 QX.D 。這個“ .D”表示把Q1Q4當D觸發(fā)器用。A1A4就是這4個D觸發(fā)器的輸入端,Q1Q4就是D觸發(fā)器的輸出端,正好4個。有人就要問了,時鐘端呢?不要急,GAL16V8B 的第1個引腳就是時鐘端,當時鐘端的輸入信號出現(xiàn)上升沿的時候就將第25引腳的信號鎖存到第1815引腳。而11引腳可以當OE使能端用,正好一個 D觸發(fā)器。本文件編譯后,在 Proteus軟件中的仿真圖如下所示:好了,這個圖大家可以自己去仿真。如果看過我的文章后對您有幫助的話,就達到我的目的了。在Proteus

19、中仿真上面3次課中我們學會了 Cupl的基本語法和如何利用 WinCupI軟件包中兩個重要的部分 WinCupI和WinSim 進行設(shè)計與波形仿真。如果我們需要驗證 PLD器件與其它器件聯(lián)合工作的情況呢?那就需要利用另一個著 名的仿真軟件Proteus軟件自帶PLD庫進行了。接下來我們把 MYGATE項目在Proteus中進行仿真。相信大家對 Proteus已經(jīng)比較熟悉了。我們要做的 其實很簡單。裝好 Proteus后(我用的是Proteus 6.9,其實6以上就可以了),在元件庫的PLD/FPGA項目中選擇AM16V8 ,其實就是GAL16V8 ,將其拖到原理圖上, 然后拖電阻和開關(guān)到原理圖

20、上,再拖個發(fā)光管 到電路上。將其連好,如下圖所示在原理圖的AM16V8上,選中它,然后在上面單擊鼠標左鍵,在彈出的對話框的JEDEC Fuse Map File欄中單擊右側(cè)的瀏覽圖標,裝入 MYGATE.JED文件即可。單擊 OK按鈕關(guān)閉該對話框。最后仿真該電路圖。仿真開始后,可以通過撥動開關(guān),看 AM16V8第12腳的輸出結(jié)果,正好是一個與 門的邏輯。好了。我們已經(jīng)介紹了 PLD器件的編程方法、編程工具的使用和如何進行實際情況的模擬。大家就可以自己設(shè)計出一些可用的電路了到底有哪些重要的引腳擴展名Cupl語言中引腳重要的擴展名包括:擴展名等式的某側(cè).AP左邊(L)flip-flop的異步預置.

21、ARLflip-flop的異步復位.APMUXL多路選擇器的異步預置.ARMUXL多路選擇器的異步復位.BYPL可編程寄存器的旁路.CALComplement array.CELflip-flop的D觸發(fā)器的輸入使能.CKLflip-flop的可編程時鐘.CKMUXL多路器件的時鐘.DLflip-flop的D觸發(fā)器的輸入端DFB右邊(R)D寄存器回饋路徑選擇.DQRD鎖存器的Q 端 flip-flop擴展名等式的某側(cè).IMUXL 多路選擇器的2 引腳的選擇端.INTR寄存器宏單元的內(nèi)部回饋路徑.JLJK 觸發(fā)器的 J 端 flip-flop.KLJK 觸發(fā)器的 K 端 flip-flop.LL

22、D 輸入鎖存器.LEL可編程鎖存器使能.LEMUXL鎖存器使能多路選擇器.OEL可編程輸出使能.OEMUXL三態(tài)門的使能端.PRL可編程預置端.RLflip-flop 的 RS 觸發(fā)器 R 輸入端.SLflip-flop的RS觸發(fā)器S輸入端.SPLflip-flop 的異步置位端S.SRLflip-flop 的異步復位端R.TLflip-flop 的 T 觸發(fā)器輸入端由上面的列表可以知道,這些東西有些我們做小規(guī)模的 PLD 設(shè)計的時候根本用不上。如果是小規(guī)模的pld ,上面的某些擴展名是不支持的,比如在GAL16V8B 設(shè)計中, LE 就不支持。不過,我們能用觸發(fā)器就是一個很大的進步,這樣可以

23、在幾百個門邏輯的規(guī)模下設(shè)計一些市面上買不到的器件。做一個 JK 觸發(fā)器在前面的課程中我們學到了如何做一個4D 觸發(fā)器,也知道了引腳擴展名。但是,如果你直接用 .J 和 .K 來申明一個 JK 觸發(fā)器,并想用它在 gal16V8b 中實現(xiàn)是不可能的。為什么呢?因為GAL16V8 手冊中指出,內(nèi)部只有 D 觸發(fā)器的邏輯,沒有JK 觸發(fā)器的邏輯,想直接借用是不可能的??晌覀冃枰粋€jk 觸發(fā)器怎么辦呢?我們可以查 數(shù)字電子技術(shù) 一類的書, 這些書中有的就告訴了我們怎么用 D 觸發(fā)器實現(xiàn)一個jk 觸發(fā)器,基本邏輯是:Q.D = (J1&!Q)#(!K1&Q);我們把這個邏輯用 GAL16V8 實現(xiàn)就可

24、以了。如果你看不懂的話,我可以解釋一下。 Q 就是數(shù)字電子書 上的 Qn 。 !Q 就是 Qn 取反。我們現(xiàn)在把這個東西用 Cupl 語言實現(xiàn)如下:Name JKSample ;PartNo 00 ;Date 2006-8-10 ;Revision 01 ;Designer Wu Jian ;Company Zhu Zhou AI ;Assembly None ;Location ;Device g16v8a ;/* * INPUT PINS */*/*/PIN 2 = J1; /*PIN 3 = K1; /*/* * OUTPUT PINS */*/PIN 18 = Q; /*Q.D = (J1&!Q)#(!K1&Q);把這個文件敲進去。如果敲入正確,就能正常編譯。在利用 Proteus 仿真的時候, GAL16V8B 的第 1 腳 是時鐘CLK,上升沿有效,第 2腳是J腳,置位腳,第3腳是K腳,復位腳,第18腳是Q輸出端。試試 看,這里我們就不需要給圖了,只要你正確連線

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論