<!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_FT220X01A </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="302" height="224" src="XVC_FT220X01A.cs_soubory/image001.jpg"
          alt="Vzhled modulu XVC_FT220X01A">
      </p>
      <p>
        <a href="../XVC_FT220X01A.cs.pdf"><img class="NoBorder"
           src="../../../../../../Web/PIC/FileIco_PDF.ico"
           alt="Acrobat">&nbsp;PDF verze</a>
      </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 </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_FT220X01A.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="720" height="448" src="XVC_FT220X01A.cs_soubory/image003.png"
        alt="Elektrické zapojení modulu XVC_FT220X01A">
      </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í. 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!
      </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="477" height="357" src="XVC_FT220X01A.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="410" height="307" src="XVC_FT220X01A.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> &nbsp; </th>
          <th> Reference </th>
          <th> Hodnota </th>
          <th> Pouzdro </th>
        </tr>
        <tr>
          <th colspan="3"> Odpory </th>
          <td> &nbsp; </td>
          <th colspan="3"> Tranzistory </th>
        </tr>
        <tr>
          <td> R1, R2 </td>
          <td> 27 </td>
          <td> R0805 </td>
          <td> &nbsp; </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> &nbsp; </td>
          <th colspan="3"> Integrované obvody </th>
        </tr>
        <tr>
          <td> R7, R8, R9 </td>
          <td> 330 </td>
          <td> R0805 </td>
          <td> &nbsp; </td>
          <td> U1 </td>
          <td> FT220XS </td>
          <td> SSO16_154 </td>
        </tr>
        <tr>
          <td> R10, R11 </td>
          <td> 10k </td>
          <td> R0805 </td>
          <td> &nbsp; </td>
          <th colspan="3"> Konektory </th>
        </tr>
        <tr>
          <th colspan="3"> Kondenzátory </th>
          <td> &nbsp; </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> &nbsp; </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> &nbsp; </td>
          <td> J3 </td>
          <td> JUMP3 </td>
          <td> JUMP3 </td>
        </tr>
        <tr>
          <td> C4, C6, C7 </td>
          <td> 100nF </td>
          <td> C0805 </td>
          <td> &nbsp; </td>
          <td> J4 </td>
          <td> JUMP2X3 </td>
          <td> JUMP2X3 </td>
        </tr>
        <tr>
          <td> C5 </td>
          <td> 10uF </td>
          <td> C0805 </td>
          <td> &nbsp; </td>
          <th colspan="3"> Mechanické součásti </th>
        </tr>
        <tr>
          <th colspan="3"> Indukčnosti </th>
          <td> &nbsp; </td>
          <td> 1ks </td>
          <td> XVC_FT220X01A </td>
          <td> Plošný spoj </td>
        </tr>
        <tr>
          <td> L1 </td>
          <td> L-BEAD </td>
          <td> R1206 </td>
          <td> &nbsp; </td>
          <td> 4ks </td>
          <td> Screw M3x12 </td>
          <td> Šroub pozinkovaný </td>
        </tr>
        <tr>
          <th colspan="3"> Diody </th>
          <td> &nbsp; </td>
          <td> 4ks </td>
          <td> Washer M3 </td>
          <td> Podložka </td>
        </tr>
        <tr>
          <td> D1, D3 </td>
          <td> LED3mm_RED </td>
          <td> LED3 </td>
          <td> &nbsp; </td>
          <td> 4ks </td>
          <td> Standoff M3x5 </td>
          <td> Distanční sloupek </td>
        </tr>
        <tr>
          <td> D2 </td>
          <td> LED3mm_GREEN </td>
          <td> LED3 </td>
          <td> &nbsp; </td>
          <td> 1ks </td>
          <td> JUMPER </td>
          <td> Propojka </td>
        </tr>
        <tr>
          <td> D4 </td>
          <td> BZV55-B3V6 </td>
          <td> MINIMELF </td>
          <td> &nbsp; </td>
          <td> &nbsp; </td>
          <td> &nbsp; </td>
          <td> &nbsp; </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_FT220X01A.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_FT220X01A.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_FT220X01A.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_FT220X01A.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>