PLDFPGA新手入门Word文档格式.docx
- 文档编号:18998282
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:28
- 大小:29.74KB
PLDFPGA新手入门Word文档格式.docx
《PLDFPGA新手入门Word文档格式.docx》由会员分享,可在线阅读,更多相关《PLDFPGA新手入门Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
在PLD/FPGA開發軟件中完成設計以後,軟件會產生一個最終的編程文件(如.pof)。
如何將編程文件燒到PLD芯片中去呢?
1.對於基於乘積項(Product-Term)技術,EEPROM(或Flash)工藝的PLD(如Altera的MAX系列,Lattice的大部分產品,Xilinx的XC9500,Coolrunner系列),廠家提供編程電纜,電纜一端裝在計算機的並行打印口上,另一端接在PCB板上的一個十芯插頭,PLD芯片有四個管腳(編程腳)與插頭相連。
(如圖)
:
下載編程電纜(ByteblasterMV)的數據手冊(pdf格式)
下載Xilinx編程電纜的電路原理圖(pdf格式)
下載Lattice的電纜資料(pdf格式)
它向系統板上的器件提供配置或編程數據,這就是所謂的在線可編程(ISP,如下圖)。
Byteblaster使用戶能夠獨立地配置PLD器件,而不需要編程器或任何其它編程硬件。
編程電纜可以向代理商購買,也可以根據廠家提供的編程電纜的原理圖自己制作,成本僅需一,二十元。
早期的PLD是不支持ISP的,它們需要用編程器燒寫。
目前的PLD都可以用ISP在線編程,也可用編程器編程。
這種PLD可以加密,並且很難解密,所以常常用於單板加密。
(1)將PLD焊在PCB上 .
(2)接好編程電纜 .
(3)現場燒寫PLD芯片 .
2.對於基於查找表(LUT,Look-Uptable)技術,SRAM工藝的FPGA(如Altera的所有FPGA,如ACEX,Cyclone,Stratix系列,Xilinx的所有FPGA,如Spartan,Virtex系列,Lattice的EC/ECP系列等),由於SRAM工藝的特點,掉電後數據會消失,因此調試期間可以用下載電纜配置PLD器件,調試完成後,需要將數據固化在一個專用的EEPROM中(用通用編程器燒寫,也有一些可以用電纜直接改寫),上電時,由這片配置EEPROM先對FPGA加載數據,十幾個毫秒到幾百個毫秒後,FPGA即可正常工作。
(亦可由CPU配置FPGA)。
但SRAM工藝的PLD一般不可以直接加密。
3.還有一種反熔絲(Anti-fuse)技術的FPGA,如Actel,Quicklogic的部分產品就采用這種工藝。
但這種的PLD是不能重複擦寫,需要使用專用編程器,所以開發過程比較麻煩,費用也比較昂高。
但反熔絲技術也有許多優點:
布線能力更強,系統速度更快,功耗更低,同時抗輻射能力強,耐高低溫,可以加密,所以在一些有特殊要求的領域中運用較多,如軍事及航空航天。
為了解決反熔絲FPGA不可重複擦寫的問題,Actel等公司在90年代中後期開發了基於Flash技術的FPGA,如ProASIC系列,這種FPGA不需要配置,數據直接保存在FPGA芯片中,用戶可以改寫(但需要10幾伏的高電壓)。
隨著技術的發展,在2004年以後,一些廠家推出了一些新的PLD和FPGA,這些產品模糊了PLD和FPGA的區別。
例如Altera最新的MAXII系列PLD,這是一種基於FPGA(LUT)結構,集成配置芯片的PLD,在本質上它就是一種在內部集成了配置芯片的FPGA,但由於配置時間極短,上電就可以工作,所以對用戶來說,感覺不到配置過程,可以傳統的PLD一樣使用,加上容量和傳統PLD類似,所以altera把它歸作PLD。
還有像Lattice的XP系列FPGA,也是使用了同樣的原理,將外部配置芯片集成到內部,在使用方法上和PLD類似,但是因為容量大,性能和傳統FPGA相同,也是LUT架構,所以Lattice仍把它歸為FPGA。
怎麼樣?
對PLD/FPGA的使用有了一定的了解了吧,如有疑問,可在本站再參考其它一些文章或在論壇提出疑問。
Cupl語言大家可能沒有聽說過,實際上它是國內唯一一種和ABEL語言類似,而且可以在Windows環境上開發GAL系列PLD的編譯環境。
WinCupl這種編譯環境由ATMEL公司出品,是免費軟件,下載頁面是
一、Cupl的保留字
Cuple的保留字包括以下的字串:
APPEND
FORMAT
OUT
ASSEMBLY
FUNCTION
PARTNO
ASSY
FUSE
PIN
COMPANY
GROUP
PINNNODE
CONDITION
IF
PRESENT
DATE
JUMP
REV
DEFAULT
LOC
REVISION
DESIGNER
LOCATION
SEQUENCE
DEVICE
MACRO
SEQUENCED
ELSE
MIN
SEQUENCEJK
FIELD
NAME
SEQUENCERS
FLD
NODE
SEQUENCET
這些字串是不能被用作其它的用途的。
尤其是不能被當作標號使用。
Cupl語言有一些運算符,包括:
&
#
(
)
-
*
+
[
]
/
.
..
/*
*/
;
!
'
=
@
$
^
下面是一個門電路的例子,通過這個例子我們可以學到基本的Cupl語言的用法,在該文件中/**/之間
的為注釋。
Name
Gates;
Partno
CA0001;
Date
07/16/87;
Designer
GWoolheiser;
Company
ATI;
Location
SanJose,CA.;
Assembly
Example;
/******************************************************/
/*這是一個表示CUPL語言基本用法的例子
/*這個例子實現基本門電路
.
目標設備:
P16L8,P16P8,EP300,and82S153
/*輸入:
定義簡單門電路的輸入端
Pin1=a;
/*引腳1:
輸入端,名稱是a
Pin2=b;
/*輸出端:
定義PAL16L8和PAL16LD8器件的輸出端。
Pin12=inva;
/*引腳11:
輸出端,名稱是inva*/
Pin13=invb;
Pin14=and;
/*引腳14:
輸出端,名稱是and,與VHDL不同,and不是關鍵字,可以作為標號使用*/
Pin15=nand;
Pin16=or;
Pin17=nor;
Pin18=xor;
Pin19=xnor;
/*邏輯實現部分:
演示如何利用CUPL實現基本門電路*/
inva=!
a;
/*反相器
invb=!
b;
and
=a&
b;
/*與門
nand=!
(a&
b);
/*與非門
*/
or
=a#b;
/*或門
xor
=a$b;
/*異或門
nor
=!
(a#b)/*或非門
xnor=!
(a$b);
/*同或門
通過上面例子的學習,我們應該對Cupl語言有了初步的了解。
WinCupl不但可以編譯該文件,生成JED的熔絲文件,還可以對該文件進行波形仿真。
在做小規模的PLD設計的時候,使用GAL系列或者ATF系列的PLD比較方便,也比較便宜。
跟我學WinCupl--Cupl文件的基本格式跟我學WinCupl--Cupl文件的基本格式作者:
未知
文章來源:
網絡
點擊數:
721
更新時間:
2007-10-11
在編寫Cupl語言源文件需要遵守一定的格式,源文件由頭部說明、輸入引腳說明、輸出引腳說明和邏輯實現4部分組成,缺一不可。
一、頭部說明
頭部說明一般包括以下部分:
WAITGEN;
P9000183;
Revision
02;
1/11/89;
Osann;
LogicalDevices,Inc.;
PCMemoryBoard;
U106;
Device
F155;
Format
ij;
Name關鍵字用來說明邏輯文件的文件名,默認的擴展名是PLD,因此可以不寫擴展名。
Partno關鍵字用來說明對特定的PLD器件對應的某個公司的部件號。
如果不知道,可以不要這個部分。
Revision設計公司設計該源文件的版本號。
可以不填,可以沒有
Date
設計日期,可以不填,可以沒有
Designer設計者的名稱,可以不填,可以沒有
Company
設計者所在公司名稱,可以不填,可以沒有
Assembly本設計用於PC機板卡時的名稱,可以沒有
Location本設計用於PC機板卡時所在的位置,可以沒有
Device
必填字段,用來選擇本設計所用的具體PLD器件型號,
Format
用來指定本文件編譯後產生的燒寫芯片文件的種類。
h表示產生HEX格式的ASCII碼文件,i表示HL格式的文件,j表示產生JEDEC格式的文件。
二、引腳說明
在PLD源文件中,所用的輸入輸出引腳都必須說明後才能使用,因此,可以象下面格式一樣說明引腳:
PINpin_n=[!
]var;
PIN是關鍵字,pin_n是引腳號碼,var是引腳定義的名字,該名字用在後面的邏輯實現中。
是可選的,用來說明引腳的極性,如果沒有!
輸入是什麼就是什麼,為同相,如果有!
,就表示輸入後信號反相。
下面是一個實際的例子:
Pin2=!
A;
Pin3=!
B;
Pin16=Y;
Y=A&
B;
/*邏輯實現部分*/
當然,如果有一系列的引腳需要說明,這些引腳又是連續的,可以用[]符號來說明,比如
Pin[2..6]=A[1..5];
就表示引腳2到6用A1到A5來表示,比較方便。
三、邏輯實現部分
邏輯實現部分用來實現引腳之間的邏輯關系。
它主要靠一些邏輯操作符來實現引腳之間的關系。
這些邏輯關系包括:
邏輯符號
例子
關系
操作優先級
!
A
NOT
1
A&
B
AND
2
A#B
OR
3
$
A$B
XOR
4
其中,!
表示非,&
表示與,#表示或,$表示異或,異或的操作優先級最低,非的優先級最高。
搞清楚了這些東西,就可以自己實現最基本的邏輯門電路了。
下一講我們將說明如何使用WinCupl的環境。
跟我學WinCupl--如何使用WinCupl軟件環境
WinCupl是ATMEL公司出品的Cupl語言的編譯環境,用於PLD器件的編程,支持多種器件,包括GAL系列和ATF系列。
一般來說,ATF系列的同等級產品要必GAL的便宜,比如AFT16V8就兼容GAL16V8,可以擦寫100次,價格上也便宜1塊~2塊,性能都差不多。
在ATMEL公司的SPLD/CPLD欄目中免費下載WinCupl後,可以得到一個注冊碼,用這個碼就可以激活WinCupl了,這個碼沒有使用時間的限制。
WinCupl軟件包實際包括兩個部分,一個是WinCupl,PLD的編譯環境,一個是WinSim,相當於MAX的波形仿真部分。
接下來我們學習如何使用這個軟件。
一、編譯第一個源文件
第一次課我們舉了一個例子,說明了Cupl語言的基本結構,下面我們做另一個例子,就是兩輸入端與門。
具體步驟是:
1、啟動WinCupl。
啟動完進入主界面後,單擊File菜單的New,從New中單擊Projet,就是新建一個工程文件(其實還是PLD文件),在彈出的對話框中,可以填您的源文件名字(Name),填MYGATE,其它的東西怎麼填請您複習第2課的PLD文件頭部文件的說明部分。
這裏有個特殊的地方,就是器件(Device),系統默認的是virtual,就是不針對任何具體的部件,這裏我們改掉,改成g16v8a,這個關鍵字兼容ATF16V8。
2、單擊OK後,系統要你輸入你要用的輸入引腳數,因為我們只有兩個輸入端,因此填2,單擊OK按鈕。
3、系統要你輸入要用到的輸出引腳數,填1,單擊OK按鈕。
4、系統要你輸入要使用到的中間節點數,我們不需要,填0,單擊OK按鈕。
這樣系統就建立了一個PLD文件,文件名就是MYGATE.PLD。
系統將該文件顯示出來了,就象下面這樣:
MYGATE;
PartNo
00;
2006-8-9;
Revision01;
DesignerWUJIAN;
TALE;
AssemblyNone;
;
g16v8a;
/****************INPUTPINS*********************/
PIN
=
/*
/****************OUTPUTPINS*********************/
因此,這個文件是空的,我們填一下,將輸入輸出引腳都填好,把邏輯也寫完,就象下面這樣:
2
=a
3
=b
12
=Y
Y=a&
寫好後,我們需要編譯該文件。
在Run菜單中,單擊DeviceDependentCompile,就是基於器件型號的編譯。
如果沒有出現什麼鍵入錯誤,都能成功編譯。
編譯完成後,我們來仿真一下看看波形。
二、仿真的基本方法
編譯完成後。
單擊工具欄圖標的從右側數第2個,啟動WinSim。
啟動完成後,單擊WinSim菜單File中的New。
1、在彈出的DesignProperties對話框中,單擊DesignFile按鈕,選中MYGATE.PLD文件,按“確認”按鈕繼續。
在DesignProperties對話框中,單擊OK按鈕確認。
2、接下來WinSim會提示是否創建MYGATE.SIM文件並編譯它,單擊“是”繼續。
3、不管接下來的提示,在WinSim中Signal(信號)菜單中單擊Add,在彈出的AddSignal對話框中不斷單擊OK按鈕將a、b、y三個信號加到波形圖中。
單擊Done關閉該對話框。
4、在WinSim的File菜單中單擊Save項保存該項目。
5、在黑色的網格的左上方有個Value,Value右邊有個1,在1所在的灰色條上單擊鼠標右鍵,在彈出的菜單中的AddVector上單擊鼠標左鍵,在彈出的對話框中輸入3,表示增加波形仿真的3段。
6、在a的右側的波形上單擊鼠標右鍵,依次選0,0,1,1,在b的波形上單擊鼠標右鍵,依次選0,1,0,1。
7、保存該工程。
在Simulator菜單中選擇Simulator開始仿真,就可以看到y的波形了。
如下圖所示。
本次課我們學習了如何利用WinCupl進行PLD邏輯設計和基本仿真方法。
祝大家工作順利,學習愉快。
跟我學WinCupl--在Proteus中仿真
上面3次課中我們學會了Cupl的基本語法和如何利用WinCupl軟件包中兩個重要的部分WinCupl和WinSim進行設計與波形仿真。
如果我們需要驗證PLD器件與其它器件聯合工作的情況呢?
那就需要利用另一個著名的仿真軟件Proteus軟件自帶PLD庫進行了。
接下來我們把MYGATE項目在Proteus中進行仿真。
相信大家對Proteus已經比較熟悉了。
我們要做的其實很簡單。
裝好Proteus後(我用的是Proteus6.9,其實6以上就可以了),在元件庫的PLD/FPGA項目中選擇AM16V8,其實就是GAL16V8,將其拖到原理圖上,然後拖電阻和開關到原理圖上,再拖個發光管到電路上。
將其連好,如下圖所示。
在原理圖的AM16V8上,選中它,然後在上面單擊鼠標左鍵,在彈出的對話框的JEDECFuseMapFile欄中單擊右側的瀏覽圖標,裝入MYGATE.JED文件即可。
單擊OK按鈕關閉該對話框。
最後仿真該電路圖。
仿真開始後,可以通過撥動開關,看AM16V8第12腳的輸出結果,正好是一個與門的邏輯。
好了。
我們已經介紹了PLD器件的編程方法、編程工具的使用和如何進行實際情況的模擬。
大家就可以自己設計出一些可用的電路了
跟我學WinCupl--實現一個4D觸發器
前面我們學習了Cupl簡單的編程,現在我們學一個很特別,也是很有用處的用法,就是用引腳擴展名。
我們原來學D觸發器的時候,如果全部用組合邏輯來實現,推導出來的式子會很長很長,如果這麼傻做的話,會很麻煩。
現在我們用引腳擴展名來實現就很方便。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLDFPGA 新手入门