複雜的可編程邏輯小工具(CPLD)包含眾多7400-SERRIES邏輯IC的構建塊。可以在PC上設計總電路,然後上傳到CPLD以進行即時實現。鏈接到CPLD的微控制器就像用重新編程電路卡配對的微控制器以及完全庫存的電子商店。
首先,我們不確定廣泛的魅力以及在業餘愛好者項目中的應用程序,但我們已經相信。自定義邏輯小工具可以擺脫讀取數據表的天數,發現完美的邏輯IC組合,然後等待芯片到達。電路板更容易使用CPLD,因為具有可編程引腳放置的單個芯片可以代替100S的私有邏輯IC。可以通過上傳新設計而不是蝕刻以及填充新電路板來校正電路錯誤。 CPLDS快速,反應時間以100MHz開始。儘管他們的極端多功能性,但CPLD是一個成熟的創新,芯片以1美元開始。
我們有一個可拆分的自我編程的進步板,可以讓你開始。別擔心,這個板有一個串行端口接口,用於使用CPLD,以及不需要單獨的(通常是並行端口)JTAG程序員。
CPLDS介紹
何時利用CPLD
當樣式需要多個7400系列邏輯IC時,請考慮利用CPLD。 CPLD將更便宜,更快,也可以使用完美的PCB進行完美的識別配置來編程。
在棘手的樣式中使用CPLD可能需要許多迭代。在軟件應用程序中更容易,並將其上傳到CPLD,而不是設計,蝕刻以及填充新電路板。
最大速度以及立即響應,請選擇CPLD。速度的差異是驚人的; CPLD以100MHz開頭,而微控制器響應幾MHz的中斷。 CPLD樣式對外部刺激作出反應的類型電路,反應幾乎瞬間發生。微控制器執行代碼以對事件做出反應,即使中斷例程也具有相對高的延遲。
CPLD與FPGA
FPGA比CPLD更好地理解,但它們分享了許多特徵。這個類比並不完美,但是我們喜歡它:如果FPGA是重新編程的處理器內核,則CPLD是一種可再編程的電路卡或麵包板。 FPGA替換微控制器,內存以及其他組件。 CPLD符合邏輯IC,以及與微控制器一起使用。
製造商
Altera以及Xilinx,最大的CPLD製造商,為他們的FPGA更好地了解。格子半導體是一個更大的CPLD製造商,較少的鄰近。 Atmel製作舊行業標準CPLD的PIN兼容版本。
如果您計劃在5Volts工作,您的選擇有限。 Xilinx XC9500 CPLD仍然提供新的舊庫存,但費用超過較新的3.3伏等當量。 Atmel的ATF1502系列在5Volts工作,但他們沒有提供免費的進步環境。
在3.3Volts上有更多選項,但是新的CPLD逐步地具有2.5Volts,1.8Volts或更低運行的核心。 Altera MaxII以及Xilinx XC9500XL系列最有可能是最突出的3.3Volt CPLD。 Xilinx同樣使CoolRunnerii CPLD成為TQFP束中的僅適用於核心的單獨的1.8伏電源。
包裝
大多數製造商在Hobbyist友好PLCC 44套件中提供一個或兩個CPLD,但這開始消失。 PLCC是一個帶有四面銷的SOIC大小的表面安裝芯片。 PLCC44插座通常在通孔以及SMD版本中提供。不幸的是,較新的CPLD家庭開始擺脫PLCC束,只需提供44個引腳以及Xilinx的CoolRunnerii等更大的TQFP芯片。
開發環境
除了Verilog或VHDL之外,大多數製造商提供了一種自由進步氛圍,可利用簡單的原理圖來提供簡單的原理圖。許多人不會在免費版本中支持最新的FPGA,但是我們只要求CPLD部件無論如何。 Altera有Quartus,Xilinx有ISE,以及格子有isplever。 Atmel有針對ATF15xx系列的Prochip Designer,但他們只提供6個月的試用許可證 – 他們不會真正為我們提供。
程序員
由於PIC微控制器已編程CPLD,我們呈現的進步板不要求單獨的JTAG程序員。如果您想要外部程序員,最便宜的是並行端口程序員:Xilinx的並行電纜III以及Altera的Buttleblaster。 Sparkfun提供實惠的克隆以及原理圖。 Openocd是一款通用USB JTAG程序員,可以使用許多CPLD,FPGA以及武器。
我們的選擇
我們最終在Xilinx XC9500XL系列上定居了它D一個廉價的進步集,我們可能利用在實現整個設計之前測試我們的JTAG程序員。
DO-CPLD-DK來自DigIlent包括XC9572XL,CoolRunnerII以及並行端口編程器。 Nu Horizo ns有40美元的舊非RoHS設計,但由於邋illy變量類型處理在他們的信用歷史記錄卡處理腳本中,我們無法在線訂單。我們試圖通過電話完成,但是,即使在網站故障期間,他們也拒絕在手機上採取這麼少的訂單。最終,在包括新的地平線過高的運費之後,在Digikey(#122-1512-ND)下支付全額費用更便宜。我們通常不會提及這一點,但只有兩個地點購買董事會,最有價值不值得注意我們的經驗。
CPLD進步板
單擊此處的全尺寸原理圖(PNG)。電路以及PCB採用Cadsoft Eagle的免費軟件版本設計。此作業的所有數據都包含在文章末尾鏈接的作業存檔中。
電路
PIC 24FJ64GA002微控制器(IC1)為CPLD提供個人以及編程接口。我們在大量工作中利用了4張照片,因為外圍引腳選擇功能使電路板路由真正容易。有關更多詳細信息,請檢查我們對PIC24F的介紹。 PIC需要與PC串行端口進行交互,因此我們添加了一個實惠的MAX3232 RS232收發器。串行接口應使用USB->串行適配器。
我們選擇CPLD(IC3),Xilinx XC9572XL(PDF)在PIC以及許多其他組件之間鏈接。我們可以在PIC之間以及使用CPLD內的可再編程邏輯的其他芯片之間產生無窮無盡的電路範圍。 PIC將使用從PC串行端口發送的代碼編程CPLD,但是我們仍將JTAG引腳帶到標題中以簡單的外部調試。
DS1085數字可編程振盪器(IC4)在10kHz增量下產生8kHz之間的時鐘頻率和133MHz。這與我們之前所涵蓋的DS1077非常類似,但它在所有頻率之間具有甚至之間的步驟。 DS1085需要5閥電源(VR2)。 I2C接口同樣在5Volts運行,因此我們將其鏈接到5閥門寬容的PIC引腳。它可以利用3.3Volt 66MHz 1085L,並消除5閥電源。
我們利用廉價的3.3Volt SOT223電壓調節器(VR1),電源大部分電路。如果使用較慢的1085L 3.3Volt振盪器,則可以排除5閥電源(VR2)。
CPLD通常用作存儲器控制器,因此我們在進步板上包括32K的SRAM(IC5)。 3.3Volt閂鎖,5瓦耐受輸入將存儲器輸入到各種外部電壓(IC6)。鎖存輸入與1MOHM電阻網絡(RN1)保持較低。我們將在即將到來的文章中廣泛討論此部分。
PCB.
董事會是一項季面設計。我們製作了一些妥協,因此我們可能會使這款極其實驗性PCB原型。我們向其他可能希望在家中蝕刻這塊董事會的其他骰子的董事會“原樣”。如果將PCB發送到董事會房屋,請嘗試在創建“真實”雙面板之前糾正這些問題。
CPLD的一個電源引腳完全缺少解耦電容;沒有方法將電容器放入該區域。一個CPLD去耦電容以及SRAM去耦電容是通孔部件。利用這些通孔部件,擺脫了幾根跳線。
電路板背面的跳線被優化,用於單面生產,而不是偉大的風格實踐。我們通過在背面焊接電源總線來偽造雙面板。真正的雙面板式應通道電源總線以防止交叉信號路徑,以及包括丟失的去耦電容。
我們利用了一個表面安裝PLCC芯片插座,但是通孔版本絕對是一個更好的主意。雖然SMD版本易於焊接,但是它[原來是]噩夢。我們真的希望CPLD位於董事會的前面,以獲得最酷的呈現。具有電鍍通孔的合適的雙面板可以在前面有一個通孔插座,但是我們的單面原型板是不可能的。
零件清單
單擊此處的全尺寸放置圖(PNG)。
部分
價值
IC1.
pic25fj64ga002(SOIC)
IC2.
max3232cse(SOIC-N)
IC3.
XC9572XL-10PCG44C(PLCC)
–
PLCC44插座,SMD
IC4.
DS1085或DS1085L(SOIC)
IC5.
32KX8,3.3V,SRAM(SOJ)
IC6.
74lvt573d(SOIC)
VR1.
3.3V穩壓器,LD1117S33(SOT223)
VR2.
5V調節器,LD1117S50(SOT223)
C1-11,13-17
0.1UF去耦電容(0805)
C12.
0.01UF電容(0805)
C15,16
0.1UF去耦電容(通孔)
C18
10UF鉭電容器(A)
R1,2.
390OHM電阻(0805)
R3-5.
2000OHM電阻(0805)
RN1.
1MOHM電阻網絡(9針)
LED1,2
LED(08.05)
X1
DB9母串口連接器*未經測試
J1.
2.1mm Power Exp.
ICSP,JTAG,SV1
0.1“引腳標頭,直角
S1
觸覺開關(DTSM-6)
固件
固件是用PIC C30編譯器的免費演示版本編寫的C.在我們介紹PIC 24F系列時發現所有關於使用此照片的所有信息。固件包含在文章末尾的作業存檔中。
我們期望一個超級簡單的方法來與電路板上的硬件交互,而無盡的編譯程序測試週期。我們撥備了公共汽車海盜固件的自定義版本,可為DS1085時鐘芯片(I2C),CPLD編程接口(JTAG)以及CPLD的3個電纜(SPI)接口提供一個簡單的ASCII終端接口。檢查與固件使用的簡單語法的背景的公交海盜教程。
原始總線海盜固件處理許多共享完全相同引腳的協議。對於CPLD版本,我們將引腳分配更改為塑造進步板上的連接。我們同樣消除了未使用的模塊以及選項。
CPLD Blinky LED示例
我們在Xilinx的ISE進步環境中編寫了許多風格。示意圖,PIN放置文件以及編譯樣式(XSVF)包含在文章末尾鏈接的作業存檔中。對ISE的完整解釋超出了本文的範圍;我們發現了足以製定這些示例的輔助數據。
第一款風格只需點亮CPLD的引腳8的LED。
準備XSVF文件
XSVF是一種壓縮的JTAG編程格式,如Xilinx在此應用筆記(PDF)中解釋的。 XSVF不限於編程Xilinx設備,也可以準備好提供典型的BSDL JTAG含義文件的任何類型的芯片。
在配置目標設備 – >影響下,從ISE樣式套件作業面板打開效果編程工具。
選擇選擇以生成限制掃描文件,以及將類型設置為XSVF。
為XSVF輸出數據名稱,然後在提示添加設備時添加已編譯的CPLD圖片(ex1.jed)。
您應該看到包含單個設備的JTAG鏈。
單擊小工具以及選擇程序;效果會將編程序列記錄到XSVF文件。
使用XSVF數據,是時候打開終端以及程序CPLD。我們喜歡TERA術語以及赫拉克勒斯在Windows上。您必須在客戶端中允許XON / XOFF FLOW管理以利用JTAG接口。進步板端子的默認PC側設置為115200bps,8n1。
hiz> m <-select模式
1.艾特
2. I2C.
3. JTAG.
4. Raw3wire.
模式> 3 <-JTAG
900模式集
602 JTAG就緒
JTAG>(2)<-probe JTAG鏈宏
XXX JTAG INIT鏈
xxx jtagsm:重置
xxx jtagsm:reset->空閒
XXX JTAGSM:空閒 – >指令寄存器(延遲TMS的一位)
xxx jtagsm:ir->空閒
XXX JTAGSM:空閒 – >數據寄存器
xxx jtagsm:dr->空閒
xxx jtagsm:重置
xxx jtagsm:reset->空閒
XXX JTAGSM:空閒 – >數據寄存器
XXX JTAG鏈報告:
0x01設備
#0x01:0xc9 0x02 0x06 0x9a <-xc9572xl響應
xxx jtagsm:dr->空閒
JTAG>
在終端中,我們進入Mode菜單(M),以及選擇JTAG(3)。宏觀2探測JTAG鏈,在我們的情況下,這只是CPLD。鏈報告告訴我們,芯片鏈接以及響應。有關JTAG接口的更多信息。
現在我們可以運行XSVF程序員,宏(3),以及在二進制模式下從終端上傳XSVF數據。第一個例子只是點亮引腳8的LED 8.如果LED燈,我們可以確認編程成功。如果你的LED沒有光,不要絕望;有時JTAG程序員棒以及重置宏(1)將獲得芯片。
LED全亮度。
74LS32 / 4071或門,以半速率閃爍(/ 2)
CPLD進步板的主要元素是與CPLD的引腳7連接的1085(l)頻率合成器。下一個示例利用邏輯或門,如74LS32或4071 IC,每當時鐘信號高時閃爍LED。即使是最慢的時鐘速率閃爍也會很快看,但是,與第一例相比,我們應該得到一個很好的PWM調光影響。
JTAG> M <-SELECT模式 1.艾特 2. I2C. 3. JTAG. 4. Raw3wire. 模式> 2 <-i2c接口到DS1085 900模式集 202 i2c準備 I2C>(1)<-Address瀏覽宏 XXX瀏覽7bit I2C地址空間。 找到了小工具: 0xb0 0xb1 < - 從DS1085地址命令 I2C>
如前所述對CPLD進行編程,然後切換到I2C模式以獲得對DS1085時鐘的訪問。我們可能會在TH中查找小工具地址