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é.

Vzhled modulu XVC_FT220X01A

Acrobat PDF verze

Technické parametry

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

Popis konstrukce

Úvodem

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.

Schéma toku dat ve vývojovém cyklu

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

Zapojení modulu

Elektrické zapojení modulu XVC_FT220X01A

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.

Mechanická konstrukce

Jedná se o standardní MLAB modul k přišroubování k základnové desce.

Osazení a oživení

Osazení

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.

Osazení součástkami ze strany spojů

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íč.

Osazení součástkami ze strany součástek

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        

Oživení

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.

Nastavení funkce vývodu C3 u obvodu FTDI

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).

Nastavení USB identifikace obvodu FTDI

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).

Software a návod k použití

Instalace programu a první spuštění

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.

Spuštění mlab_xvcd.exe

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).

Spuštění a nastavení programu IMPACT

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.

Nastavení XVC kabelu v programu iMPACT

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í.

Funkční program iMPACT

XVC a ChipScope

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.

Omezení

Ř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).