kompleksowe programowalne gadżety logiczne (CPLDS) zawierają bloki budowlane dla wielu 7400 serries Logic ICS. Całkowity obwody można zaprojektować na komputerze, a następnie przesłać do CPLD do natychmiastowej implementacji. Mikrokontroler związany z CPLD jest jak mikrokontroler sparowany z kartą obwodu reprogrammable, a także całkowicie zaopatrzony sklep elektroniczny.
Po raz pierwszy nie byliśmy pewni szerokiego uroku, jak również zastosowanie CPLD w projektach hobbystów, jednak byliśmy przekonani. Niestandardowy gadżet logiczny może pozbyć się dni odczytu arkuszy danych, odkrywając doskonałą kombinację logiczną IC, a następnie czekając na chipy. Płytki obwodowe są łatwiejsze z CPLDS, ponieważ pojedynczy układ z programowalnym umieszczeniem pinu może zastąpić 100 sekund prywatnych układów logicznych. Błędy obwodu można skorygować, przesyłając nową konstrukcję, a nie trawienie, a także wypchnięcie nowej płytki drukowanej. CPLDS są szybkie, z czasami reakcji począwszy od 100 MHz. Pomimo ich skrajnej wszechstronności, CPLD są dojrzałą innowacją z żetonami począwszy od 1 USD.
Mamy domową, samoporządkowaną tablicę postępową, aby rozpocząć. Nie martw się, ta deska ma interfejs portu szeregowego do pracy z CPLD, a także nie potrzebuje oddzielnego (zwykle równoległego portu) programatora JTAG.
Intro do CPLDS.
Kiedy wykorzystywać CPLD
Rozważ wykorzystanie CPLD, gdy styl wymaga więcej niż jednej sieci Logic Series 7400. CPLD będzie tańszy, szybszy, jak również można zaprogramować za pomocą doskonałej konfiguracji pin-out dla łatwiejszych płytek PCB.
Użyj CPLD w trudnych stylach, które mogą potrzebować wielu iteracji. Łatwiej jest stylować nowy obwód w aplikacji oprogramowania, a także przesłać go do CPLD niż jest to projektowanie, Etch, a także fikcję nową płytką drukowaną.
Dla maksymalnej prędkości, a także natychmiastowa odpowiedź wybierz CPLD. Różnica prędkości jest niesamowita; CPLDS zaczynają się na 100 MHz, podczas gdy mikrokontrolery reagują na przerywa się na kilku MHz. CPLD Style Obwody, które reagują na bodziec zewnętrzny, reakcje zdarzają się niemal natychmiast. Mikrokontroler wykonuje kod, aby reagować na zdarzenia, a nawet procedury przerwania mają stosunkowo wysoką opóźnienie.
CPLD VS FPGA.
FPGA są znacznie lepiej rozumiane niż CPLDS, jednak dzielą wiele cech. Ta analogia nie jest doskonała, jednak podoba nam się: gdzie FPGAS jest repgasalnym rdzeniem procesora, CPLD to karta obwód przepisywalny lub breadboard. FPGA Wymień mikrokontrolery, pamięć, a także inne komponenty. CPLDS weźmie w układach logicznych, a także dobrze działają z mikrokontrolerem.
Producenci
Altera, a także Xilinx, najwięksi producenci CPLD, są znacznie lepiej rozumiane dla swoich FPGA. Półprzewodnik Lattice to jeszcze jeden producent CPLD z mniejszą dzielnicą. Atmel sprawia, że kompatybilne wersje PIN starego przemysłu standardowego CPLDS.
Jeśli planujesz pracować na 5 VOLTS, twoje wybory są ograniczone. XILINX XC9500 CPLDS są nadal oferowane jako nowe stare zapasy, jednak koszty cztery razy więcej niż nowsze ekwiwalenty 3.3 większe. Seria ATF1502 ATFEL działa na 5 VOLTS, jednak nie oferują swobodnego środowiska postępowego.
W 33 r. Występuje więcej opcji, jednak nowe CPLDS stopniowo mają rdzeń, który działa na 2,5 róży, 1,8 wholts lub niższej. ARAXA MAXII, a także seria XILINX XC9500XL są najprawdopodobniej najwybitniejszą liczbą CPLDS 3.3Volt. Xilinx Podobnie jak CPLD CPLD CPLD, jednak jest dostępny tylko w pakiecie TQFP, a także wymaga oddzielnego dostaw 1,8 rwórek dla rdzenia.
Pakiety.
Większość producentów oferuje jedno lub dwa CPLD w hobbystycznym pakiecie Plcc 44, choć zaczyna się znikać. PLCC jest sumowanym żetonem powierzchni instalacyjnym z pinami na wszystkich czterech stronach. Gniazda PLCC44 są powszechnie oferowane w wersjach przelotowych, a także SMD. Niestety, nowsze gospodarstwa domowe CPLD zaczynają pozbyć się wiązki PLCC, a także oferują tylko 44 pin oraz większe żetony TQFP, takie jak Coolrunnerii Xilinx.
Środowiska rozwojowe.
Większość producentów oferuje bezpłatną atmosferę rozwoju, która obsługuje wpis stylu wykorzystujący proste schematy, oprócz Verilog lub VHDL. Wielu nie będzie obsługi najnowszych FPGA w wersji wolnej, jednak i tak wymagamy tylko części CPLD. Altera ma Quartus, Xilinx ma Ise, a także kratę ma ISLLEVER. Atmel ma projektant prochip dla serii ATF15XX, jednak oferują tylko 6 miesięcznych zezwoleń na próbę – których tak naprawdę nie dostaliby nam.
Programiści
Poradnik Postęp, który prezentujemy, nie wymaga oddzielnego programatora JTAG, ponieważ mikrokontroler PIC już programuje CPLD. Jeśli chcesz programisty zewnętrznego, najtańsze są programistów portów równoległych: kabel równoległy III dla XILINX, a także bytleblaster do Altera. Oferowane są niedrogie klony, a także schematyki, są oferowane w Sparkfun. Openocd jest ogólnym programistą USB JTAG, który będzie współpracować z wieloma CPLD, FPGA, a także ramionami.
Nasz wybór
Ostatecznie osiedliliśmy się w seriach XILINX XC9500XL, ponieważ jest had Niedrogi zestaw awantyczny Możemy wykorzystać do przetestowania naszego programatora JTAG przed wdrożeniem całego projektu.
THE-CPLD-DK z Digilent obejmuje XC9572XL, CoolRunNerii, a także programator portu równoległego. Horyzonty Nu ma niektóre stare projekty innych niż RoHS za 40 USD, jednak ze względu na niedopuszczalną obsługę zmiennej zmiennej w skryptach przetwarzania kart kredytowych, nie mogliśmy łącznie zamówienia online. Próbowaliśmy to zrobić przez telefon, jednak odmówili podjęcia takiego małego zamówienia w telefonie, nawet podczas awarii stron internetowych. W końcu tańsze było płacenie pełnego kosztów w Divikey (# 122-1512-Nd) po włączeniu wygórowanej wysyłki nowej horyzontu. Normalnie nie wspominamy o tym, jednak tylko dwie lokalizacje zakupu Zarządu najprawdopodobniej warto zauważyć nasze doświadczenie.
CPLD Advance Board.
Kliknij tutaj, aby uzyskać pełny obraz schematyczny (PNG). Obwód, a także PCB są zaprojektowane z wykorzystaniem darmowej wersji CadSoft Eagle. Wszystkie dane dotyczące tego zadania są zawarte w archiwum pracy związane na końcu artykułu.
Okrążenie
Mikrokontroler mikrokontroler PIC 24FJ64GA002 zapewnia indywidualną, jak i programowanie interfejs do CPLD. Wykorzystujemy to zdjęcie 4 $ w wielu miejscach pracy, ponieważ peryfikacja peryferyjnego wybierz funkcję, sprawia, że trasowanie deska jest naprawdę łatwe. Aby uzyskać więcej informacji, sprawdź nasze wprowadzenie do PIC24F. PIC musi wchodzić w interakcje z portem szeregowym PC, więc dodaliśmy niedrogi MAX3232 RS232 Transceiver. Interfejs szeregowy powinien pracować z adapterem szeregowym USB->.
Nasza opcja CPLD (IC3), XILINX XC9572XL (PDF), jest połączona między zdjęciem, a także szereg innych komponentów. Możemy wytworzyć nieskończoną gamę obwodów między zdjęciem, a także inne żetony wykorzystujące logikę przeprogramowanej wewnątrz CPLD. PIC zaprogramuje CPLD z kodem wysłanym z portu szeregowego PC, jednak nadal przywiozowaliśmy szpilki JTAG na nagłówek do prostego debugowania zewnętrznego.
DY1085 cyfrowy programowalny oscylator (IC4) wytwarza częstotliwości zegara między 8 kHz, a także 133 MHz w przyrostach 10 kHz. Jest to niezwykle podobne do DS1077, które objęliśmy wcześniej, jednak ma nawet kroki między wszystkimi częstotliwościami. DS1085 wymaga zasilania 5 VOLT (VR2). Interfejs I2C działają również w 5 VOLTS, więc powiązaliśmy go do kołków pic 5 VOLT. Można zamiast tego wykorzystać 3,3 VOLT 66MHz 1085L, a także wyeliminować zasilanie 5 VOLT.
Wykorzystaliśmy niedrogi regulator napięcia 3.3volt Sot223 (VR1), aby zasilać większość obwodu. Dostawa 5 VR2) może być wykluczona, jeśli korzystasz z wolniejszego oscylatora 1085L 3.3volt.
CPLDS są powszechnie wykorzystywane jako kontroler pamięci, więc obejmowaliśmy 32K SRAM (IC5) na tablicy postępowej. A 3.3Volt zatrzask z wejściem tolerancyjnym 5 VOLT interfejsu wejściowe pamięci do szerokiej gamy napięć zewnętrznych (IC6). Wejścia zatrzaskowe są utrzymywane niskie za pomocą sieci rezystora 1MOHM (RN1). Omówimy tę sekcję szeroko w nadchodzącym artykule.
PCB.
Zarząd jest quasi jednostronną konstrukcją. Zrobiliśmy szereg kompromisów, abyśmy mogli prototypować to niezwykle eksperymentalne pcb. Prezentujemy zarząd “jak jest” dla innych twardień, które mogą chcieć wytrawić tę planszę w domu. Jeśli wyślesz PCB do domu planszy, spróbuj poprawić te problemy przed utworzeniem “prawdziwej” dwustronnej płyty.
Jedna kołek zasilania CPLD jest całkowicie brakuje kondensatora odsprzęgania; Nie było metody umieszczania kondensatora w tym obszarze. Jeden kondensator z oddzielenia CPLD, a także kondensator rozdzielający SRAM, są częściami przelotowymi. Wykorzystując te części przelotowe, pozbyć się kilku przewodów zworki.
Druty zworkowe z tyłu płyty są zoptymalizowane dla jednostronnej produkcji, a nie w świetnych praktykach stylowych. Ufobiliśmy dwustronną deskę, lutując moc autobusem na plecach. Prawdziwy dwustronny styl płyty powinien ścieżkę magistrali mocy, aby zapobiec przecinającym ścieżek sygnałowych, a także obejmują brakujące kondensatory oddzielenia.
Wykorzystaliśmy powierzchnię instalacji gniazda chipów PLCC, jednak wersja przelotowa jest zdecydowanie znacznie lepszym pomysłem. Mamy jednak wersję SMD byłoby proste do lutowania, jednak [okazało się] koszmar. Naprawdę pożądaliśmy CPLD na przedniej części zarządu na najfajniejszą możliwą prezentację. Odpowiednia dwustronna płyta z platerowanymi otworami może mieć gniazdo przelotowe z przodu, jednak nie było to możliwe dzięki naszej jednostronnej płycie prototypowej.
Lista części
Kliknij tutaj, aby uzyskać schemat rozmieszczenia w pełnym rozmiarze (PNG).
Część
Wartość
IC1.
PIC25FJ64GA002 (SOIC)
IC2.
MAX3232CSE (SOIC-N)
IC3.
XC9572XL-10PCG44C (PLCC)
–
Gniazdo PLC44, SMD
IC4.
DS1085 lub DS1085L (SOIC)
IC5.
32kx8, 3.3V, SRAM (SOJ)
IC6.
74LVT573D (SOIC)
VR1.
Regulator 3.3 V, LD1117S33 (SOT223)
VR2.
Regulator 5 V, LD1117S50 (SOT223)
C1-11,13-17.
0.1UF Kondensatory oddzielające (0805)
C12.
0.01uf kondensator (0805)
C15,16.
0.1UF Kondensatory oddzielające (przelotowe)
C18.
10UF kondensator tantalowy (a)
R1,2.
Rezystor 390OHM (0805)
R3-5.
Rezystor 2000OHM (0805)
Rn1.
Sieć rezystorów 1MOHM (9 pin)
LED1,2.
LED (08.05)
X1
db9 female serial port connector *untested
J1
2.1mm power jack
ICSP, JTAG, SV1
0.1″ pin header, right angle
S1
Tactile switch (DTSM-6)
Firmware
The firmware is written in C utilizing the free presentation version of the pic C30 compiler. discover all about working with this pic in our introduction to the pic 24F series. The firmware is included in the job archive at the end of the article.
We desired a super simple method to interact with the hardware on the board without endless compile-program-test cycles. We made a custom version of the Bus Pirate firmware that provides a simple ASCII terminal interface to the DS1085 clock chip (I2C), the CPLD programing interface (JTAG), as well as a 3 cable (SPI) interface to the CPLD. inspect out the Bus Pirate tutorial for background on the simple syntax utilized with the firmware.
The original Bus Pirate firmware handles a number of protocols that share the exact same pins. For the CPLD version, we altered the pin assignments to in shape the connections on the advancement board. We likewise eliminated unused modules as well as options.
CPLD blinky LED examples
We prepared a number of styles in Xilinx’s ISE advancement environment. The schematics, pin placement files, as well as compiled styles (XSVF) are included in the job archive linked at the end of the article. A full explanation of ISE is beyond the range of this article; we discovered the assist data sufficiently useful to make these examples.
The very first style just lights the LED linked to pin 8 of the CPLD.
Prepare the XSVF file
XSVF is a compressed JTAG programming format, as explained by Xilinx in this application note (PDF). XSVF isn’t restricted to programming Xilinx devices, as well as can be gotten ready for any type of chip that provides a typical BSDL JTAG meaning file.
Open the effect programming tool from the ISE style Suite job panel under Configure target device->iMPACT.
select the choice to produce a limit scan file, as well as set the type to XSVF.
Give the XSVF output a data name as well as then add a compiled CPLD picture (ex1.jed) when prompted to add a device.
You should see a JTAG chain that contains a single device.
Click on the gadget as well as select program; effect will record the programming sequences to an XSVF file.
With XSVF data in hand, it’s time to open up a terminal as well as program the CPLD. We like Tera Term as well as Hercules on Windows. You must allow XON/XOFF flow manage in the client to utilize the JTAG interface. The default PC side setting for the advancement board terminal is 115200bps, 8N1.
HiZ>m <–select mode
1. Hiz.
2. I2C
3. JTAG
4. RAW3WIRE
MODE>3 <–JTAG
Zestaw trybów 900.
602 JTAG READY
JTAG>(2) <–probe JTAG chain macro
xxx JTAG INIT CHAIN
xxx JTAGSM: RESET
xxx JTAGSM: RESET->IDLE
xxx JTAGSM: IDLE->Instruction Register (DELAYED ONE bit FOR TMS)
xxx JTAGSM: IR->IDLE
xxx JTAGSM: IDLE->Data Register
xxx JTAGSM: DR->IDLE
xxx JTAGSM: RESET
xxx JTAGSM: RESET->IDLE
xxx JTAGSM: IDLE->Data Register
xxx JTAG CHAIN REPORT:
0x01 DEVICE(S)
#0x01 : 0xC9 0x02 0x06 0x9A <–XC9572XL responds
xxx JTAGSM: DR->IDLE
JTAG>
In the terminal we go into the mode menu (m), as well as select JTAG (3). Macro 2 probes the JTAG chain, in our situation this is just the CPLD. The chain report tells us that the chip is linked as well as responding. checked out more about the JTAG interface.
Now we can run the XSVF programmer, macro (3), as well as upload the XSVF data from the terminal in binary mode. The very first example just lights the LED on pin 8. If the LED lights, we can confirm that programming was successful. If your LED doesn’t light, don’t despair; sometimes the JTAG programmer sticks as well as a reset macro (1) will get the chip going.
LED at full brightness.
74LS32/4071 OR gate, blink at half rate (/2)
A major element of the CPLD advancement board is the 1085(L) frequency synthesizer linked to pin 7 of the CPLD. The next example utilizes a logic OR gate, like a 74LS32 or 4071 IC, to blink the LED whenever the clock signal is high. At even the slowest clock rate the blinking will be as well quick to see, however we should get a nice PWM dimming impact compared to the very first example.
JTAG>m <–select mode 1. Hiz. 2. I2C 3. JTAG 4. RAW3WIRE MODE>2 <–I2C interface to DS1085 Zestaw trybów 900. 202 I2C gotowy I2C>(1) <–address browse macro xxx browsing 7bit I2C address space. Found gadgets at: 0xB0 0xB1 <–found the DS1085 address I2c >.
Program the CPLD as before, as well as then switch to I2C mode to gain access to the DS1085 clock. We might look up the gadget address in th