<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> XVC_FT220X02A </title>
<meta name="keywords" content="stavebnice MLAB univerzální moduly JTAG XVC Xilinx Virtual Cable XVC_FT220X01A FTDI USB">
<meta name="description" content="Xilinx Virtual Cable založený na obvodu FT220X, JTAG programování FPGA a CPLD přes USB">
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
<link rel="StyleSheet" href="../../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
<link rel="StyleSheet" href="../../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
<link rel="shortcut icon" type="image/x-icon" href="../../../../../../Web/PIC/MLAB.ico">
<script type="text/javascript" src="../../../../../../Web/JS/MLAB_Menu.js"></script>
<!-- AUTOINCLUDE END -->
</head>
<body lang="cs">
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
<!-- ============== HLAVICKA ============== -->
<div class="Header">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawHeader();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
<!-- ============== MENU ============== -->
<div class="Menu">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawMenu();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
<!-- ============== TEXT ============== -->
<div class="Text">
<p class="Title">
Xilinx Virtual Cable s USB obvodem FTDI FT220X
</p>
<p class=Autor>
Milan Horkel
</p>
<p class="Subtitle">
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é.
</p>
<p class="Subtitle">
<img width="301" height="224" src="XVC_FT220X02A.cs_soubory/image001.jpg"
alt="Vzhled modulu XVC_FT220X02A">
</p>
<h1> Technické parametry </h1>
<table>
<tr>
<th> Parametr </th>
<th> Hodnota </th>
<th> Poznámka </th>
</tr>
<tr>
<td> Vstupní rozhraní </td>
<td> USB 2.0 </td>
<td> Standardní velký konektor typu B </td>
</tr>
<tr>
<td> Výstupní rozhraní </td>
<td> JTAG </td>
<td> Obvyklý jednořadý hřebínek </td>
</tr>
<tr>
<td> Napájení </td>
<td> +5V do 100mA </td>
<td> Z rozhraní USB, s pojistkou 0.75A </td>
</tr>
<tr>
<td> Signalizační napětí </td>
<td> +1.8 až +3.3V / +3.3V </td>
<td> Z cílového systému / fixní z FTDI </td>
</tr>
<tr>
<td> Síťový protokol / program </td>
<td> XVC / mlab_xvcd.exe </td>
<td> UDP, port 2542 / Windows aplikace </td>
</tr>
<tr>
<td> Vývojové prostředí </td>
<td> XILINX ISE – IMPACT<br>
XILINX ISE – ChipScope </td>
<td> Včetně volné verze WebPack,<br>
ChipScope vyžaduje licenci </td>
</tr>
<tr>
<td> Rozměry </td>
<td> 40x30x18mm </td>
<td> Výška nad základnou </td>
</tr>
</table>
<h1> Popis konstrukce </h1>
<h2> Úvodem </h2>
<p>
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í.
</p>
<p>
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.
</p>
<p>
<img width="676" height="621" src="XVC_FT220X02A.cs_soubory/image002.png"
alt="Schéma toku dat ve vývojovém cyklu">
</p>
<p>
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).
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
Obslužný program má samostatnou dokumentaci a stránku, kde lze stáhnout
přeložený binární soubor (ale i zdrojové texty).
</p>
<p>
<a href="http://www.mlab.cz/PermaLink/XVC-SOFTWARE">http://www.mlab.cz/PermaLink/XVC-SOFTWARE</a>
</p>
<h2> Zapojení modulu </h2>
<p>
<img width="721" height="448" src="XVC_FT220X02A.cs_soubory/image003.png"
alt="Elektrické zapojení modulu XVC_FT220X02A">
</p>
<p>
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é.
</p>
<p>
Konektor J4 slouží pro napájení cílového zařízení z napětí +5V z USB
rozhraní. Modul obsahuje samoopravnou pojistku 0.75A, nepřetěžujte
napájení USB portu!
</p>
<p>
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á.
</p>
<p>
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. <i>Pozor na to, že některé
obvody FPGA nemusejí akceptovat 3.3V.</i>
</p>
<p>
Dioda D1 indikuje přítomnost napájecího napětí cílové platformy.
</p>
<p>
Dioda D2 indikuje aktivitu obslužného programu (spuštění programu a
přenos dat).
</p>
<p>
Dioda D3 indikuje zapojení do USB (věci fungují mnohem lépe, když jsou
zapojené).
</p>
<p>
Zbývající součástky jsou blokovací kondenzátory, obvody odrušení a
ochranné odpory R3 až R6.
</p>
<h2> Mechanická konstrukce </h2>
<p>
Jedná se o standardní MLAB modul k přišroubování k základnové desce.
</p>
<h1> Osazení a oživení </h1>
<h2> Osazení </h2>
<p>
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.
</p>
<p>
<img width="566" height="426" src="XVC_FT220X02A.cs_soubory/image004.png"
alt="Osazení součástkami ze strany spojů">
</p>
<p>
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íč.
</p>
<p>
<img width="570" height="424" src="XVC_FT220X02A.cs_soubory/image005.png"
alt="Osazení součástkami ze strany součástek">
</p>
<table class="soupiska">
<tr>
<th> Reference </th>
<th> Hodnota </th>
<th> Pouzdro </th>
<th> </th>
<th> Reference </th>
<th> Hodnota </th>
<th> Pouzdro </th>
</tr>
<tr>
<th colspan="3"> Odpory </th>
<td> </td>
<th colspan="3"> Tranzistory </th>
</tr>
<tr>
<td> R1, R2 </td>
<td> 27 </td>
<td> R0805 </td>
<td> </td>
<td> Q1, Q2 </td>
<td> 2N7000SMD </td>
<td> SOT23 </td>
</tr>
<tr>
<td> R3, R4, R5, R6 </td>
<td> 100 </td>
<td> R0805 </td>
<td> </td>
<th colspan="3"> Integrované obvody </th>
</tr>
<tr>
<td> R7, R8, R9 </td>
<td> 330 </td>
<td> R0805 </td>
<td> </td>
<td> U1 </td>
<td> FT220XS </td>
<td> SSO16_154 </td>
</tr>
<tr>
<td> R10, R11 </td>
<td> 10k </td>
<td> R0805 </td>
<td> </td>
<th colspan="3"> Konektory </th>
</tr>
<tr>
<th colspan="3"> Kondenzátory </th>
<td> </td>
<td> J1 </td>
<td> USB_B_01 </td>
<td> USB_B_01 </td>
</tr>
<tr>
<td> C1, C2 </td>
<td> 47pF </td>
<td> C0805 </td>
<td> </td>
<td> J2 </td>
<td> JUMP9_X3_X5_X8 </td>
<td> JUMP9_X3_X5_X8 </td>
</tr>
<tr>
<td> C3 </td>
<td> 10nF </td>
<td> C0805 </td>
<td> </td>
<td> J3 </td>
<td> JUMP3 </td>
<td> JUMP3 </td>
</tr>
<tr>
<td> C4, C6, C7 </td>
<td> 100nF </td>
<td> C0805 </td>
<td> </td>
<td> J4 </td>
<td> JUMP2X3 </td>
<td> JUMP2X3 </td>
</tr>
<tr>
<td> C5 </td>
<td> 10uF </td>
<td> C0805 </td>
<td> </td>
<th colspan="3"> Mechanické součásti </th>
</tr>
<tr>
<th colspan="3"> Pojistky </th>
<td> </td>
<td> 1ks </td>
<td> XVC_FT220X02A </td>
<td> Plošný spoj </td>
</tr>
<tr>
<td> F1 </td>
<td> SR075-06_SMD0805 </td>
<td> R0805 </td>
<td> </td>
<td> 4ks </td>
<td> Screw M3x12 </td>
<td> Šroub pozinkovaný </td>
</tr>
<tr>
<th colspan="3"> Indukčnosti </th>
<td> </td>
<td> 4ks </td>
<td> Washer M3 </td>
<td> Podložka </td>
</tr>
<tr>
<td> L1 </td>
<td> MI0805K400R-10 </td>
<td> R0805 </td>
<td> </td>
<td> 4ks </td>
<td> Standoff M3x5 </td>
<td> Distanční sloupek </td>
</tr>
<tr>
<th colspan="3"> Diody </th>
<td> </td>
<td> 1ks </td>
<td> JUMPER </td>
<td> Propojka </td>
</tr>
<tr>
<td> D1, D3 </td>
<td> HCL-1505-4(RED) </td>
<td> LED1206REV </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> D2 </td>
<td> HCL-1503-4(GREEN) </td>
<td> LED1206REV </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> D4 </td>
<td> BZV55-B3V6 </td>
<td> MINIMELF </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<h2> Oživení </h2>
<p>
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.
</p>
<p>
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 <a href=
"http://www.ftdichip.com/Drivers/D2XX.htm">http://www.ftdichip.com/Drivers/D2XX.htm</a>.
</p>
<p>
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 <a href=
"http://www.ftdichip.com/Support/Utilities.htm">http://www.ftdichip.com/Support/Utilities.htm</a>.
</p>
<p>
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.
</p>
<p>
Na obrázku je zvýrazněné požadované nastavení vývodu CBUS3.
</p>
<p>
<img width="641" height="406" src="XVC_FT220X02A.cs_soubory/image006.png"
alt="Nastavení funkce vývodu C3 u obvodu FTDI">
</p>
<p>
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).
</p>
<p>
<img width="642" height="448" src="XVC_FT220X02A.cs_soubory/image007.png"
alt="Nastavení USB identifikace obvodu FTDI">
</p>
<p>
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).
</p>
<h1> Software a návod k použití </h1>
<h2> Instalace programu a první spuštění </h2>
<p>
Program pro obsluhu XVC_FT220X se jmenuje mlab_xvcd.exe a je k
dispozici na adrese
<a href="http://www.mlab.cz/PermaLink/XVC-SOFTWARE/XVC-1x/BIN">http://www.mlab.cz/PermaLink/XVC-SOFTWARE/XVC-1x/BIN</a>.
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
<a href="http://www.ftdichip.com/Drivers/D2XX.htm">http://www.ftdichip.com/Drivers/D2XX.htm</a>.
</p>
<p>
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.
</p>
<h2> Spuštění mlab_xvcd.exe </h2>
<p>
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.
</p>
<p>
<samp class="Block">
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
</samp>
</p>
<p>
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).
</p>
<h2> Spuštění a nastavení programu IMPACT </h2>
<p>
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.
</p>
<p>
<img width="397" height="440" src="XVC_FT220X02A.cs_soubory/image008.png"
alt="Nastavení XVC kabelu v programu iMPACT">
</p>
<p>
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.
</p>
<p>
<samp class="Block">
Listen
Accepted 192.168.22.14:63280
Handle Data .........................................
.........
</samp>
</p>
<p>
Nyní lze nahrát do obvodu FPGA konfiguraci, což bylo cílem našeho
snažení.
</p>
<p>
<img width="834" height="432" src="XVC_FT220X02A.cs_soubory/image009.png"
alt="Funkční program iMPACT">
</p>
<h2> XVC a ChipScope </h2>
<p>
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
<a href="http://www.mlab.cz/PermaLink/XVC-ChipScope">http://www.mlab.cz/PermaLink/XVC-ChipScope</a>.
</p>
<h2> Omezení </h2>
<p>
Ř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č.
</p>
<p>
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).
</p>
</div>
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
<!-- ============== PATIČKA ============== -->
<div class="Footer">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawFooter();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
</body>
</html>