Xilinx Virtual Cable s USB obvodem FTDI FT220X
Milan Horkel
Vývojové prostředí ISE pro práci s obvody programovatelné logiky (FPGA/CPLD) firmy XILINX přímo podporuje protokol XVC, kterým se přenáší JTAG příkazy prostřednictvím sítě TCP/IP. Na vzdáleném konci musí běžet příslušný obslužný program a k němu musí být připojen programovací kabel. Toto je modul programovacího kabelu s obvodem FTDI FT220X s USB rozhraním na jedné straně a JTAG konektorem na straně druhé.
Parametr | Hodnota | Poznámka |
---|---|---|
Vstupní rozhraní | USB 2.0 | Standardní velký konektor typu B |
Výstupní rozhraní | JTAG | Obvyklý jednořadý hřebínek |
Napájení | +5V do 100mA | Z rozhraní USB |
Signalizační napětí | +1.8 až +3.3V / +3.3V | Z cílového systému / fixní z FTDI |
Síťový protokol / program | XVC / mlab_xvcd.exe | UDP, port 2542 / Windows aplikace |
Vývojové prostředí | XILINX ISE – IMPACT XILINX ISE – ChipScope |
Včetně volné verze WebPack, ChipScope vyžaduje licenci |
Rozměry | 40x30x18mm | Výška nad základnou |
Pro práci s programovatelnými obvody FPGA a CPLD firmy XILINX je potřeba příslušné vybavení. Jednou z nezbytností je vhodný programovací kabel pro nahrávání konfigurace do cílové součástky. Jelikož LPT port se postupně stěhuje do muzea, jsou programovací kabely vyrobené jako klony známého Parallel Cable III zastaralé a je nutné nalézt nové řešení.
Vývojové prostředí ISE přímo podporuje připojení programovacího kabelu prostřednictvím TCP/IP sítě a použitý protokol Xilinx Virtual Cable (ve zkratce XVC) je dokumentovaný. Díky tomu lze realizovat programovací kabel za použití některého vhodného standardního obvodu rozhraní a dopsat jen poměrně jednoduchý obslužný program.
Volba padla na obvod FTDI FT220X s rozhraním USB. Jedná se o nový (v roce 2012) obvod, jehož cena je překvapivě nízká (cca 40Kč). Obslužný program s obvodem FTDI komunikuje v režimu BitBang, tedy nevyužívá žádné speciální vlastnosti tohoto obvodu a může tak pracovat prakticky se všemi obvody FTDI (včetně populárního FT232R).
Tato konstrukce představuje modul s USB rozhraním na jedné straně a JTAG konektorem na straně druhé. Konektor je zapojen dle zvyklostí XILINX programovacích kabelů. Modul podporuje signalizační napětí na JTAG rozhraní v rozmezí 1.8 až 3.3V a navíc obsahuje indikační diody.
Obslužný program běží na počítači, ke kterému je připojen programovací kabel a návrhový program ISE (přesněji komponenta IMPACT, případně ChipScope Analyser) se s programem spojí prostřednictvím TCP/IP sítě. Vývojové prostředí může samozřejmě běžet jak na dálku (přes skutečnou síť), tak i na stejném počítači (síťuje se jen uvnitř počítače). Současná verze programu běží pod systémem Windows (WinXP až Win8, 32/64bit), verze pro Linux se připravuje.
Obslužný program má samostatnou dokumentaci a stránku, kde lze stáhnout přeložený binární soubor (ale i zdrojové texty).
http://www.mlab.cz/PermaLink/XVC-SOFTWARE
Obvod U1 FT220X je obvod rozhraní USB/SPI, ale ve skutečnosti se používá v BitBang režimu, kdy se jeho SPI specifické vlastnosti nepoužijí. V zapojení by mělo jít použít i další obvody řady FT200X, zapojení vývodů je stejné.
Konektor J4 slouží pro napájení cílového zařízení z napětí +5V z USB rozhraní. Pozor, modul neobsahuje pojistku a některé počítače nemusejí mít napájení USB portů jištěné i když specifikace jištění vyžaduje. Nepřetěžujte napájení USB portu!
Hřebínek J3 slouží pro přepínání napájecího napětí IO vývodů USB obvodu. Standardně se používá napětí poskytované cílovou platformou z JTAG konektoru J2.1. Toto napětí může ležet v rozmezí 1.8 až 3.3V. Dioda D4 slouží jako ochranná.
Pokud cílová platforma neposkytuje napájecí napětí (někdy bývá značené jako VTG) na JTAG konektoru, lze použít napětí 3.3V z vnitřního stabilizátoru obvodu FTDI. Pozor na to, že některé obvody FPGA nemusejí akceptovat 3.3V.
Dioda D1 indikuje přítomnost napájecího napětí cílové platformy.
Dioda D2 indikuje aktivitu obslužného programu (spuštění programu a přenos dat).
Dioda D3 indikuje zapojení do USB (věci fungují mnohem lépe, když jsou zapojené).
Zbývající součástky jsou blokovací kondenzátory, obvody odrušení a ochranné odpory R3 až R6.
Jedná se o standardní MLAB modul k přišroubování k základnové desce.
Strana spojů obsahuje SMD součástky. Je vhodné připájet nejdříve C5 a L1 a pak obvod U1. Dioda D4 má anodu připojenou na zemní plochu.
Strana součástí obsahuje jen hřebínky, konektory a 3 diody LED. Anody LED diod jsou označeny písmenem A. Konektor J2 má 3 vývody odstraněné jako klíč.
Reference | Hodnota | Pouzdro | Reference | Hodnota | Pouzdro | |
---|---|---|---|---|---|---|
Odpory | Tranzistory | |||||
R1, R2 | 27 | R0805 | Q1, Q2 | 2N7000SMD | SOT23 | |
R3, R4, R5, R6 | 100 | R0805 | Integrované obvody | |||
R7, R8, R9 | 330 | R0805 | U1 | FT220XS | SSO16_154 | |
R10, R11 | 10k | R0805 | Konektory | |||
Kondenzátory | J1 | USB_B_01 | USB_B_01 | |||
C1, C2 | 47pF | C0805 | J2 | JUMP9_X3_X5_X8 | JUMP9_X3_X5_X8 | |
C3 | 10nF | C0805 | J3 | JUMP3 | JUMP3 | |
C4, C6, C7 | 100nF | C0805 | J4 | JUMP2X3 | JUMP2X3 | |
C5 | 10uF | C0805 | Mechanické součásti | |||
Indukčnosti | 1ks | XVC_FT220X01A | Plošný spoj | |||
L1 | L-BEAD | R1206 | 4ks | Screw M3x12 | Šroub pozinkovaný | |
Diody | 4ks | Washer M3 | Podložka | |||
D1, D3 | LED3mm_RED | LED3 | 4ks | Standoff M3x5 | Distanční sloupek | |
D2 | LED3mm_GREEN | LED3 | 1ks | JUMPER | Propojka | |
D4 | BZV55-B3V6 | MINIMELF |
Po umytí desky a optické kontrole (zkraty, otočený U1) přistoupíme k oživení. Nejprve připojíme +5V na prostřední pin J4 a změříme napětí na J3.1 (mělo by být +3.3V). Dioda D3 (s nápisem USB) by měla svítit.
Odpojíme zdroj a připojíme USB kabelem k počítači. Počítač by měl najít nový hardware a nainstalovat driver. Ovladač (typu D2XX) se najde na stránce výrobce čipu http://www.ftdichip.com/Drivers/D2XX.htm.
Dále je třeba nastavit správně konfiguraci obvodu FTDI tak, aby vývod CBUS3 fungoval jako obyčejná IO nožička. Když se to neudělá, nebude fungovat indikace LED D2 (indikuje aktivitu programu a přenos dat). To se dělá pomocným programem FT_Prog od FTDI. Program je zašitý na webu výrobce tak, aby ho laici nenašli http://www.ftdichip.com/Support/Utilities.htm.
Stažený ZIP archiv rozbalíme a můžeme spustit FT_Prog.exe a provést změnu nastavení ručně, případně můžeme použít připravenou konfiguraci ze souboru XVC_FT220X.xml.
Na obrázku je zvýrazněné požadované nastavení vývodu CBUS3.
Když už měníme konfiguraci je vhodné zadat smysluplné jméno do položky Product Description. Toto jméno pak bude vypisovat obslužný program a usnadní se tím výběr zařízení v případě, že je v systému více FTDI USB převodníků. Pro operační systém se zařízení bude i nadále tvářit jako USB Serial Converer (kdybychom změnili identifikaci zařízení, museli bychom do systému doplnit INF soubor tak, aby systém věděl, že se má pro zařízení použít FTDI driver).
Tím by mělo být nastavení dokončené a je možné spustit obslužný program mlab_xvcd.exe a pokud vše funguje správně, program vypíše spoustu informací a na konci slovo „Listen“ a je připraven k navázání síťového spojení ze strany vývojového prostředí. Dále postupujeme podle návodu k použití (abychom se zde neopakovali).
Program pro obsluhu XVC_FT220X se jmenuje mlab_xvcd.exe a je k dispozici na adrese http://www.mlab.cz/PermaLink/XVC-SOFTWARE/XVC-1x/BIN. Program se neinstaluje (je slinkovaný jako jediný exe soubor), ale potřebuje aby na počítači byly nainstalované drivery FTDI, které jsou ke stažení na stránce výrobce http://www.ftdichip.com/Drivers/D2XX.htm.
Program při prvním spuštění potřebuje povolit ve firewallu Windows síťovou komunikaci (ve Win7 si o to systém sám řekne, ve starších verzích Windows je třeba spustit konfiguraci systému firewall ručně a povolit programu síťování). Připomínám, že nastavení je třeba zopakovat, když program přesunete do jiného adresáře, nebo přejmenujete, protože nastavení platí pro konkrétní program na konkrétním místě v systému.
Program po spuštění vypíše informace a nalezené obvody FTDI a spojí se se zadaným zařízením, a když není zadáno tak s prvním nalezeným. Na příkazové řádce lze zadat spojení podle názvu, sériového čísla, umístění na USB sběrnici nebo podle pořadí nalezených obvodů FTDI.
D:\...\BIN>mlab_xvcd.exe Xilinx Virtual Cable Network Server =================================== (c) miho 2012 v 1.03 FTDI Connect Library Version 0x30207 Devices Found 1 JTAG Port Pins TCK->DBUS0(TXD) TDI->DBUS1(RXD) TDO->DBUS2(RTS) TMS->DBUS3(CTS) LED->CBUS3+DBUS7(RI) Device 0 Description "XVC_FT220X" SerialNumber "DAVY7XCB" Location 0x111 Selected Device Description "XVC_FT220X" SerialNumber "DAVY7XCB" Device Driver Ver 0x20824 Baud Rate 1000000 USB Latency 1 Starting Network Server Host Name mihomsi Network Name mihomsi Host Address 192.168.22.14 Bound Socket 2542 Set in IMPACT xilinx_xvc host=mihomsi:2542 disableversioncheck=true Listen
Je-li na konci výpisu slovo Listen, je program připraven k navázání spojení ze strany vývojového systému. Současně se rozsvítí LED indikace aktivity (na plošném spoji označená ACT).
Nyní je třeba ve vývojovém prostředí spustit program IMPACT a v něm nastavit plugin pro XVC protokol. Abychom si nemuseli pamatovat jaké parametry se zadávají, program mlab_xvcd.exe vypisuje přesně to, co je třeba do programu IMPACT zadat. Lze použít klipboard, ale pozor aby na začátku nebyla mezera (není vidět, ale plugin se nenajde a nespustí). Nastavení je v položce Output / Cable Setup.
Po odklepnutí dojde k navázání spojení a program mlab_xvcd.exe začne vypisovat tečky (program IMPACT každou sekundu pošle data po síti i když nemá co na práci). Současně zhasne indikační LED a jen poblikává při zpracování dat.
Listen Accepted 192.168.22.14:63280 Handle Data ......................................... .........
Nyní lze nahrát do obvodu FPGA konfiguraci, což bylo cílem našeho snažení.
Použití XVC kabelu není omezeno jen na nahrávání obvodů FPGA, ale lze jej použít i ve spojení s IP jádrem ChipScope (licencované) a zabudovat si tak do obvodu FPGA velmi šikovný logický analyzátor. Tomuto tématu se věnuje samostatný článek na adrese http://www.mlab.cz/PermaLink/XVC-ChipScope.
Řešení má i svá omezení. Zatím se mi nepodařilo rozchodit programování pamětí SPI připojených k obvodu FPGA ani vnitřní SPI paměti obvodů Spartan3AN. Tato funkce totiž nahrává obsah paměti tak, že nejdříve do obvodu FPGA nahraje pomocný obsah (což se povede) a pak pomocí tohoto pomocného zapojení získá přístup k pinům, ke kterým je připojena (vnější nebo vnitřní) sériová FLASH paměť. To už se bohužel nepovede. Zatím nevím proč.
Pro nahrávání SPI pamětí tedy i nadále používám LPT port s paralelním kabelem (na některých počítačích to taky občas nefunguje), nebo XILINX USB kabel (když si ho nezapomenu vypůjčit).