Nos, akkor lássuk szenvedéseim eredményét, a próbapanelt. Először is szeretném megemlíteni, hogy miért nem rakom be ide a NYÁK-tervet: nem szeretném ha azt bárki is megépítené. Ahogy az előző bejegyzésben írtam, sokat tanultam belőle, és másodjára teljesen másként csinálnám. Hogy akkor mégis mire jó ez az egész? A kapcsolási rajzok működnek, és kiindulási alapnak teljesen megfelelőek. Ha valaki arra kíváncsi, hogy mik azok a lábak, amiket egy FPGA-n minimum be kell kötni ahhoz, hogy működjön, akkor ebből a kapcsolásból nyugodtan ki tud indulni. Azokon a helyeken, ahol valamit ma már másképp csinálnék, majd írok pár sort.
Nézzük akkor először is a tápegységet.
Azt hiszem, ennél primitívebb tápegység kapcsolási rajzot nehezen lehetne találni. A 12V~ feszültséget egy kis tápegység adja, ennek a felét csapja le a D1. Ebből majd egy következő verzióban +-10 voltos szimmetrikus táp lesz, aztán meg még később kitalálom hogy hogyan legyen szimmetrikus anélkül hogy a trafót kinyírná :)
A két stabilizátor IC-ben a nélkülözhetetlen kondikkal nincs semmi meglepő, arra voltam kíváncsi, hogy kell-e bonyolultabb cucc az 1.2V-os táphoz, vagy jó az LM317, ami lehet hogy 1.25V-ot ad... Egyelőre úgy tűnik, ennyit még az FPGA eltűr (adatlap szerint is).
Van még a rajzon egy kristály oszcillátor, én speciel egy 25MHz-eset tettem bele, az FPGA-ban van PLL, úgyhogy az gyakorlatilag bármilyen frekvencián működhet.
Egy fokkal érdekesebb az FPGA tápellátása:
Az odáig egyszerű, hogy minden föld láb földre van kötve, a VCCINT lábak 1.2V-ra, a VCCAUX és a VCCO lábak 3.3 voltra (ezek nyilván azért, mert LVTTL illetve LVCMOS 3.3V-nál kisebbet nem tervezek használni). A csel a hidegítő kondenzátorokban van, ezek méretezéséről a Xilinx ad egy viszonylag jó leírást. Gyengébb angolosok kedvéért pár ökölszabály röviden:
- A kondenzátorok pontos értéke nem számít, hanem inkább az a lényeg, hogy 0.01uF - 4.7uF tartományban minden nagyságrendből legyen elég kondi.
- Nagyságrendileg annyi kondi kell, ahány táp lába van az FPGA-nak.
- 0.01uF-os kondiból kell a legtöbb, 0.1uF-ból kb. feleannyi, 1uF-ból negyedannyi, és egy-két darab nagyobb, 470uF körüli. A kicsik legyenek kerámia kondenzátorok, a nagyok lehetőleg tantál vagy elektrolit.
- A legkisebb kondik csak akkor hatásosak, ha nagyon közel vannak az FPGA-hoz (lehetőleg 2cm-en belül, esetleg közvetlenül alatta). A többi lehet fokozatosan messzebb.
Már csak az FPGA néhány fontos lába maradt ki:
- A JTAG interfész a programozáshoz. Vezessünk ki földet is, és egy 3.3V-os referenciát.
- Az órajelet ne kösse senki a CLK0-ra mint ahogy én csináltam, mert ott az XC3S50AN-en nincs DCM... a Bank0-ról érdemes egy CLK lábat választani neki.
- A három Mode pin mondja meg, hogy honnan akarjuk konfigurálni az FPGA-t. Ha a belső flash memóriájából, akkor ez "110" , ha máshonnan, akkor meg ez a dokumentum segít megtalálni, mire állítsuk.
- A DONE pin "1"-re áll, ha a konfiguráció kész, ezzel hajthatunk egy LED-et is. Ha a belső memóriát használjuk, és JTAG-gal programozzuk, akkor a PROG_B-t nem kell piszkáljuk, én azért egy jumpert raktam rá.
Az összes többi lábat oda kötjük, ahova akarjuk, ezek az user io-k, én speciel csatlakozókra vezettem ki őket, amiken keresztül össze lehet kötni pl. dugaszolós próbapanellal.
Az biztos, hogy nem ez a legbonyolultabb FPGA fejlesztőpanel amit az életben láttam, de az is valószínű, hogy nem kerül annyiba összerakni, mint egy gyári. A csatlakozókon keresztül pedig olyan perifériákat dughatunk rá, amilyet nem szégyellünk. Sajnos az FPGA bonyolult tápellátása miatt nem ússzuk meg a két oldalas NYÁK-ot, de ha nem tervezel 100MHz-nél sokkal magasabb frekvenciákkal dolgozni, akkor meg lehet úszni SMD kondik nélkül. Ebben az esetben az egyetlen SMD alkatrész, amit be kell bűvölni a helyére, az FPGA lesz, és a kondik lábain váltva a panel rétegeit a viák száma is alacsonyan tartható. Jó szórakozást :)