1、可程式邏輯設計可程式邏輯設計主講人:鄭兆良日期:2003/10/7OutlinelPLD、SPLD、CPLD、FPGAlPLD軟體設計流程lMapping Design to XC4000l編譯邏輯設計l實行設計電路PLD發展由來發展由來l先前數位邏輯系統的設計法是依照所需的規格定義出輸入輸出、列出真值表、推導布林等式,使用K-map或邏輯代數公式求出簡化後的邏輯方程式,之後選用標準邏輯功能IC(TTL、CMOS等)印刷電路板(PCB)上建構電路l缺點有使用的IC元件多,設計的整合性很低,無法得到Reliable DesignPCB面積大,系統電路的成本高局部設計改變時,PCB板設計re-de
2、sign的空間很小l為了克服上述缺點,PLD(Programmable Logic Device)應運而生,它解決了大規模IC不能實現在大範圍與高頻使用的缺點演進過程演進過程l全訂製程IC(Full Custom ICs)從設計到製造的過程,全依客戶所委託設計的IC,得到一個最佳電路整合,在價格和性能上追求最佳的solution,但研發時間及人力花費很高l晶胞元IC(Cell Base ICs)將邏輯電路中的模組以Cell 方式建立,於是我們可以將設計完成之Cell儲存成Cell Library,往後有需要此模組時可套用此應用 l閘陣列(Gate Array)由CMOS邏輯閘組成邏輯電路,在內
3、部使用PMOS及NMOS電晶體組成基本電路,以陣列配置,再依配線成為特定用IC。積體電路廠商提供部分完成之電晶體佈局,使用者構成之間的連線關係PLD(Programmable Logic Device)l廣義的定義包含PROM、PLA、PAL、FPGAl狹義的定義只包括PAL和PLASPLD(Simple PLD)l包括PROM、PAL、PLA。這些元件是屬於雙層邏輯,包含AND陣列及OR陣列,任何函數都可表示成積項之和(Sum Of Product)。三種SPLD之分類,主要基於其AND陣列或OR陣列是否可規劃。SPLD-PROMlAND陣列不可規劃,OR陣列可規劃 SPLD-PLAl由一串
4、的AND閘、OR閘、反相器透過可程式開關陣列所連接起來的 SPLD-PALl可程式的OR陣列被一組從AND閘到OR閘的固定接線所取代,只能程式化欲組成的積項 SPLDlPLA和PAL若沒有加上外部的正反器,就無法用於循序邏輯電路。所以正反器會被加到PAL的架構中,這種電路就稱為簡易可程式邏輯裝置SPLD(Simple PLD)。多工器(multiplexer)會加到每個輸出,用以選擇是正反器輸出或是組合電路的輸出;這些AND閘、OR閘、正反器和多工器都是用來共同驅動每個輸出,這就是巨集格macrocell lPAL+Filp Flops+Multiplexers PAL+Filp Flops+
5、Multiplexers=SPLD=SPLDSPLD cont.CPLD Complex PLDl整合更多SPLD Logic Blocks及相互關係連線架構(Switch matrix),具有高整合性的特點,故能提升性能、可靠度、降低成本、時間與PCB面積等優點CPLD cont.lCPLD是由多個SPLD組裝進單一的IC裡lXilinx XC9500的CPLDXC95108包含 了六個可組態化功能區塊(CLB),每個CLB相當於一個有18個巨集格、36個輸入、18個輸出的SPLD。利用每個可組態化功能區塊裡的巨集格和經由開關矩陣去連接它們,非常複雜的多層邏輯函數就可以簡單的被建構CPLD
6、cont.FPGA(Field Programmable Gate Array)l應用在設計使用者的原型機(Prototype)或少量生產之產品。FPGA內部Logic Block連接需依Switch Matrix 來構成使用者的系統,處理速度比VLSI慢l各家的FPGA構造有相當大的差異,可分為三大類:1.查表型(LUT:Look Up Tables)Xilinx,Altera,AT&T2.多工器型(MPX:Multiplexer type)Actel,Quick Logic3.電晶體陣列型Cross Pointl以規構架構可分為:1.SRAMXilinx,Altera,AT&T,Atmel
7、2.Anti-fuseActel,Cypress,Quicklogic FPGA cont.lSRAM類型的FPGA具有重複程式化的優點,適合用來實作邏輯設計與功能性驗證。Anti-fuse其邏輯閘數可用性較高,應用電路較為 簡單,單價也較便宜,小量產品的需求較適宜lFPGA產品主要用途包含I/O介面控制、資料路徑傳輸、暫存器介面控制、PCI介面等FPGA cont.l由LUT(Lookup Table)所組成的。一般的LUT只有4個輸入和一個16位元的記憶體。輸入訊號到電路後,會對應到一個特定的記憶體位址,接著輸出此位址的內容。任何4位元輸入的邏輯函數都能被可程式邏輯的LUT元所建立。舉例:
8、一個4位元輸入AND閘的建構方式法先將所有的位元載入記憶體內,如果所有的位元皆為1,則輸出為1,而其他的情況輸出為0l在FPGA中,如XILINX XC4000系列,一個可組態邏輯區塊CLB(Configurable Logic Block)是由3個LUT、2個正反器和一些控制電路所組成的 FPGA XC4000lXC4000系列結構:由許多個Configurable Logic Cell、配線通道及開關矩陣(Switch Matrix)及I/O Block組成CAD&PLDl對於一般電路,可以使用電腦模擬程式,來檢查邏輯電路的運作情況。在正確的模擬下,用放置與繞線(place&route)或
9、是裝配(fitter)程式,將電路上的邏輯閘和接線映射到FPGA或是CPLD IC中。使用這類的軟體,決定裝置內的邏輯閘如何連接,進而建構出邏輯電路。程式的輸出是個位元串組態檔(bit-stream configuration file),能夠下載到指定的FPLD(Field Programmable Logic Device)上,之後便可以執行所設計的功能 數位設計程序的自動化數位設計程序的自動化取得規格定義輸出輸入建立真值表導出布林等式建立閘層級設計模擬閘層級設計建構數位電路除錯數位電路 可自動化PLD軟體設計流程軟體設計流程取得規格定義輸入輸出藉由schematic editor、sta
10、te maching、ABEL editor 來設計Functional Simulation映射到CPLD或是FPGA模擬映射後的設計下載到XS95或XS40上使用PC和七階LED除錯PLD軟體設計流程軟體設計流程 cont.lFunctional Simulator用來檢查已經編譯過的設計,檢視是否與所預期相符合。如果有錯誤,可以透過HDL編輯器、電路圖編輯器、狀態機編輯器來做修正 lFoundation Implementation工具把電路上所有的邏輯閘和連接轉換成netlist格式。再將netlist編譯成位元串,在這之前必須定義好專案的Flow Type。l在對應到特定的FPLD結
11、構後,Xilinx就可以決定所有邏輯閘和繞線的延遲時間。之後就可以執行時脈模擬器(timing simulator)l使用XSLOAD程式來下載位元串到XS40電路板 l偵錯是藉由LPT Cable輸入測試值到XS40 board上,再由板上的七段LED的顯示來觀察outputXC4000 PINlXC4000的腳位資訊如下:PINXSPORT Param44B045B146B247B348B449B532B634B7PINLED Segment25S026S124S220S323S418S519S6Mapping Design to XC4000(1)l在編輯好的電路圖中的IBUF/OBUF
12、double click編輯內容Mapping Design to XC4000(2)1.在Parameter Frame中Name的欄位填入LOC,Description填入p+對應PIN值2.點選Add按鈕新增的資訊會加入3.按OK關閉對話窗LOCP+腳位腳位Mapping Design to XC4000(3)l完成後電路圖上會多出參數值的註解l新增Mapping參數後記得存檔並重新create netlist及export netlist編譯邏輯設計編譯邏輯設計 點選Implement即可開始編譯l編譯邏輯設計編譯邏輯設計 cont.cont.1.轉譯(Translate):EDIF
13、netlist被轉換成內部netlist格式2.對映(Map):應用各種邏輯電路最佳化的方法,目的都是用來增加電路的速度與減少邏輯閘的數目 3.放置跟繞線(Place&Route):在netlist裡的邏輯閘被分配到特定的CLB,所有的邏輯閘間的連線也經由PSM與其他FPGA資源做最佳化佈置 4.組態(Configure):產生位元串,之後可下載到demo board上執行所設計的電路實行設計電路實行設計電路1.到C:xstools目錄下執行xsload fpga 路徑XX.bit(bit-stream file name)載入位元串到XC4000XL板上2.利用gxsport傳送輸入資料至板上3.觀察7階LED的變化