Fórum témák

» Több friss téma
Fórum » CPLD, FPGA - Miértek, hogyanok
Lapozás: OK   43 / 49
(#) sdrlab válasza slimcolt hozzászólására (») Feb 18, 2017 /
 
Hát ez érdekes...mintha azt olvastam volna erről a verzióról, hogy high speed sebességet tud, s így vagy 3x gyorsabb az olcsóbb verziónál..., ehhez képest az az ftdi illesztő is csak full speed-et tud. Így tényleg csak pénzkidobás...
(#) slimcolt válasza sdrlab hozzászólására (») Feb 19, 2017 /
 
Hát igen, elvileg High Speed...
(#) zombee hozzászólása Feb 25, 2017 /
 
Sziasztok!
Altera CPLD-vel szeretnék foglalkozni. Van elfekvőben pár darab Altera MAX EPM3064ATC100, és hozzá DIP átalakító. Tudom hogy nem mai gyerek, a 90-es évek terméke, de még mindig használják, évente mi is beültetünk és felprogramozunk legalább 1000 darabot belőle. Az égetéshez "MAXII+ plus" programot és mezei LPT portos programozót használunk, utóbbit is én raktam össze pár éve. Az USB-Blaster-t is sikerült működésre bírni egy másik programmal(Quartus II Standalone).

Ami van:
- Quartus II Web Edition 13.0SP1 <-- ez a legfrissebb ami a "régi" MAX sorozatokat (3k/7k) támogatja.
- USB Blaster és LPT portos JTAG égető, mindkettő kezelőprogramjával "pof" fájlt kell megnyitni.
- kb. 8 évvel ezelőtt programoztam Verilog nyelven XILINX Spartan FPGA-t, de már nem emlékszem

Egy weboldal segítségével Bővebben: Link eljutottam odáig, hogy egy "engedélyezhető, 4-ből 16 dekóder"-t összeraktam, a fordító megette, csinált POF fájlt is. Az eredményt még nem teszteltem, mert a DIP-átalakítóba még csak az IC van beforrasztva, nincs JTAG csatlakozó, és a be/kimeneteket sem kötöttem be.

A kérdésem főképp az lenne, hogy mit jelent a 64 makrocella? Ez a pofonegyszírű dekóder 16-ot (25%) elvisz, pedig csak 16db. 4-es AND-kapu van benne, és 16 engedélyezhető meghajtó a kimeneten. Valahogy azt gyanítom hogy minden kimenetre 1-1 makrocellát elvisz.

A későbbiekben Altera vonalon ezekkel tervezek még foglalkozni:
EP2C5T144 (Cyclone II FPGA)
EPM240T100 (MAX II) ez se mai gyerek, de kegyetlenül olcsó
A hozzászólás módosítva: Feb 25, 2017
(#) pajti2 válasza zombee hozzászólására (») Feb 26, 2017 /
 
A makro cella jellemzően adatfeldolgozási alapegység.

Hogy konkrétan mit takar, az az adott gyártó jellemző vonása is, de alapvetően tartalmaz:
-Lehetséges logikai bemeneteket, 3..8..még több. Némelyik talán "kikapcsolható" logikai kapuzással.
-Logikai függvény számolására alkalmas egységet, ami a jelenben leginkább egy memória mátrix, amibe 1:1 belepakolják a kiszámolt Karnaugh-táblát. A bemenet címez, a kimeneten a cella tartalma jelenik meg.
-Kimeneti D-tárolót, ami a logikai függvény végeredményét feljegyezni képes. Esetleg a régebbi kimenetet is meg tudja őrizni, mert többet kötnek sorba belőle. Talán külön órajel szinkron vezérelhetőségük is van külön-külön. Talán preset / clear bemenetük is van bitstreamről vezérelhetően. Talán kimeneti 3-state meghajtás is van rajtuk.

És még tartalmazhatnak sok mindent, meg lehet butítani is a fentebbieket. A gyártó adatlapja általában konkrét szokott lenni a makro cella mibenlétéről. Tessék csak olvasgatni az adatlapot, úgysem úszod meg! Az angolnak muszáj mennie, anélkül felejtsd is el mindenestül.
A hozzászólás módosítva: Feb 26, 2017
(#) zombee válasza pajti2 hozzászólására (») Feb 26, 2017 /
 
Köszönöm. Az angol nem probléma, csak a komplexitás és az adatlapok terjedelme ami ijesztő
egy kicsit, még úgy is hogy a teljes AVR-családot átolvastam adatlapostul (persze vannak átfedések).
Lekopogom, 8-10 éve minimális angol tudással sikerült az FPGA és AVR alapokat elsajátítani.
Egyedül csak azt felejtettem el amivel azóta nem foglalkoztam semennyit sem.
A hozzászólás módosítva: Feb 26, 2017
(#) pajti2 válasza zombee hozzászólására (») Feb 26, 2017 /
 
Ha van elég aprólékos gondolkodásmódod és türelmed, hogy gondolkodni tudj információról időben bitenként és órajelenként, és látni tudd mindazt a bármilyen magas alkalmazás szintig felépített információs folyamatok mögött, akkor megvan mindened, hogy profi lehess fpga terepen. A többi csak idő és gyakorlat kérdése.
(#) zombee válasza pajti2 hozzászólására (») Feb 26, 2017 /
 
Azt hiszem mindez megvan, talán egyedül a ráfordítható időből nem bővelkedem.
Azt reméltem, lesz itt valaki aki napi szinten foglalkozik Altera cuccokkal. Még az se lenne baj
ha az "ósdi" MAX3k/7k/II és társaival nem is foglalkozik, de azért ismeri az egyes típuscsaládok
alapkoncepcióját, sajátosságait, trükkjeit amivel gyorsabbá és kényelmesebbé válhat a tanulás
a majdnem-kezdők számára.
Én annyival vagyok előrébb, hogy van egy kis verilog+FPGA alap, megvan a szükséges elektronikai tudás a CMOS IC-kkel és mikrokontrollerekkel való tervezéshez, és az ilyen áramkörök hibakereséséhez, javításához. A kérdéses IC-hez (EPM3064) is van némi rutinom, pl. építettem hozzá égetőt.
A hozzászólás módosítva: Feb 26, 2017
(#) pajti2 válasza zombee hozzászólására (») Feb 27, 2017 / 1
 
Oké, szóval türelmes vagy, csak éppen nem akarod az adatlapokat végigolvasni, nem akarsz időt rászánni, és egyébként is valaki más most azonnal mondja meg, mi a teendő. Valahogy úgy gondoltad?
A hozzászólás módosítva: Feb 27, 2017
(#) zombee válasza pajti2 hozzászólására (») Feb 27, 2017 /
 
Hát nem egészen. Most épp van egy apróság amibe belefutottam, kb. ilyesmi "segítségre" gondolok:

A lábakat a verilog programbeli I/O-kkal összekötő rész a "Pin Planner" (Quartus II 13.0 SP1). Egy teljesen új projektnél a felhasznált I/O-k mellett felsorolja a JTAG (TCK, TDO, TDI, TMS) lábakat is. A "Fitter Locaton" oszlopban szerepel a JTAG láb eredeti, adatlap szerinti sorszáma, de a "Location" oszlopba már nem. Ha üresen hagyom ezeket a mezőket, előfordulhat hogy "kizárom" magam az IC-ből és többé nem lehet programozni?

Most ebben a pillanatban összeraktam, a biztonság kedvéért vettem a fáradságot és a Pin Planner résznél beállítottam a JTAG lábakat is, biztos ami biztos. Az USB-Blaster beégette a kódot, és utána is sikerült. Így biztos nem zárom ki magam. De azért macera mindig beállítani.
A hozzászólás módosítva: Feb 27, 2017
(#) pajti2 válasza zombee hozzászólására (») Feb 28, 2017 /
 
Lenne itt egy fontos dolog, amit el kellene fogadni a kísérleti elektronika természetéről. Nem tudsz úgy tanulni, hogy félelemben élsz. Teljesen mindegy, mi fog történni. Ha beleette magát a gondolataidba, mert lusta voltál feltúrni az adatlapon az io bankok konfigurálásáról szóló részt, akkor már buktad, és most ki kell próbálnod. Ami az elméleti teljességet illeti, a jtag egy állapotgép, aminek az állapotait a tms + órajel vezérli. A tms reset után belsőleg weak pull up-ot kap, és az állapotgép reset állapotban marad. Ha a tms-t nem tudod alacsonyra húzni, akkor az eszköz jtaggal kezelhetetlen ( Bővebben: Link ), és egy olyan configolási lehetőség a kódvédelem lehetséges eszköze.
(#) zombee válasza pajti2 hozzászólására (») Márc 1, 2017 /
 
Most konkrétan a busz-multiplexer (8 bites buszok, 8-ból 1-et) nem akar verilogban összejönni.
A net tele van egybites verziókkal, de ez nem működik 8 bitesre. Most azt nem tudom, melyik a
helyes irány: assign, vagy always+case szerkezet?
A hozzászólás módosítva: Márc 1, 2017
(#) SBahadurD válasza zombee hozzászólására (») Márc 1, 2017 /
 
Mindkettő helyes, de assign használatával elég körülményes.
(#) killbill válasza SBahadurD hozzászólására (») Márc 2, 2017 /
 
Miert korulmenyes? Raadasul tetszoleges felteteleket irhatsz, case-nel ez nem megy.
  1. assign out = (feltetel1) ? input1 :
  2.                      (feltetel2) ? input2 :
  3.                      (feltetel3) ? input3 : 8'hzz;
(#) zombee válasza SBahadurD hozzászólására (») Márc 2, 2017 /
 
Valahogy sejtettem. Az assign 2-bemenetes multiplexerre nagyon jó, ennél többre kicsit körülményes:
  1. //1-bites:
  2. assign O[7:0] = MPX[0] ? I[15:8] : I[7:0];
  3. //2-bites (talán még jó is):
  4. assign O[7:0] = MPX[1] ? (MPX[0] ? I[31:24] : I[23:16]) : (MPX[0] ? I[15:8] : I[7:0]);

Ha ugyanezt always-case-szerkezetben csinálom, valamiért kidob egy csomó "loop warning"-ot.
(#) killbill válasza zombee hozzászólására (») Márc 2, 2017 /
 
Nem korulemnyes, csak korulmenyesen irod.
  1. assign O[7:0] = (MPX[1:0] == 3) ? I[31:24] :
  2.                  (MPX[1:0] == 2) ? I[23:16] :
  3.                  (MPX[1:0] == 1) ? I[15:8] : I[7:0];

de irhatnad azt is, hogy
  1. assign O[7:0] = (I[31:0] >> (8 * MPX[1:0])) & 8'hff;
Szerintem pontosan ugyanazt fogja szintetizalni belole...
(#) zombee válasza killbill hozzászólására (») Márc 2, 2017 /
 
A másodikkal (8 * MPX[1:0]) már próbálkoztam korábban, arra konstans 0-t ad mindig.
A hozzászólás módosítva: Márc 2, 2017
(#) slimcolt hozzászólása Márc 2, 2017 /
 
Sziasztok,

A Quartus mellé én használom az ALTERA Model-Sim-t is. Ezzel letudod pontosan szimulálni a végeredményt! Elég nagy segítség. Bár én is kezdő vagyok még...
A MAX II helyet pedig ajánlom a MAX V-öt (kb semmivel nem drágább), valamint a MAX 10-et (ez már FPGA, belső config flash-el, és core voltage regulátorral és ez sem drága...). Vásárláshoz a mouser-t és a farnell-t ajánlanám!
(#) zombee válasza slimcolt hozzászólására (») Márc 7, 2017 /
 
A szimulációval úgy vagyok, hogy inkább kipróbálom az adott cuccot. AVR-nél már megszoktam. Általában "e"-n nézem az árakat: EPM240T100 (MAX II) IC-t adják 1€-ért, MAX V és MAX 10 sehol sincs ehhez képest. A jelenlegi fejlesztéseknél is a MAXII irányba nyitnék, bár tudom hogy ez se mai gyerek, és 10 év múlva problémás lehet a beszerzése. De nem aggódok: a sokkal régebbi EPM3064 (MAX3000) is kapható még dögivel, csak kicsit drágább(kb. 3x)...

Lenne egy kis szakmai jellegű kérdésem: PLL. Átolvastam a Cyclone II - höz tartozó doksit, de sajnos sokat nem értettem belőle. Szeretnék a későbbiekben olyan cuccost építeni (leprogramozni), ami egy adott frekvenciatartományban (40MHz +/- 2%) képes run-time behangolni a frekvenciát. (Természetesen Cyclone II vagy újabb IC-vel.) VGA esetén kell ez a lehetőség, hogy a sorszinkronból elő tudjam állítani a pixel órajelet. Quartus II - ben a "MegaWizard" elég sok paramétert elkér, de nem láttam olyan bemenetet amivel lehet a PLL-t befolyásolni.
A hozzászólás módosítva: Márc 7, 2017
(#) gtk hozzászólása Márc 8, 2017 /
 
Valaki csinalt mar DDC-t FPGA-ba ? Fogalmam sincs hogy kb mekkora eroforras kell egy 80 MSPS 16-bit ADC jelenek alapsavba keveresehez. Hasonlora gondoltam: savszellesseg 50-100kHz, DDS frekvencia leptetes 50-100 kHz. Mondjuk Cyclone II vagy III-ba beleferhet ?
A hozzászólás módosítva: Márc 8, 2017
(#) sdrlab válasza gtk hozzászólására (») Márc 8, 2017 /
 
Persze hogy belefér A közepesen nagyokba nem csak ennyi, hanem sokkal sokkal több is belefér!
Persze, minden el lehet kúrni, és ha nem jól van csinálva, semmi se elég...!
(#) gtk válasza sdrlab hozzászólására (») Márc 8, 2017 /
 
Itt meg bejon egy dolog, az LVDS ADC fele, ahogy nezem a cyclone 3-ban van.
(#) zombee válasza zombee hozzászólására (») Márc 9, 2017 /
 
Lassú az emésztésem, eddig tartott: jól sejtem, hogy a PLL-szintézerrel csak a bemenő frekvencia egész többszöröse és annak egész hányadosa állítható elő? Ha például egy 40MHz-es kimenőjelet akarok 1-1 ezrelékkel "csúsztatni", az csak úgy megy (elméletben) ha egy 40kHz-es "alapjelet" szorzok fel 1000-el?
Gyakorlatban: egy CycloneII-es PLL max. csak 32-vel tud szorozni, ezért erre a feladatra 2 PLL-t kell használni, és 39062.5Hz-es (40MHz/1024) alapjelet?
(#) sdrlab válasza zombee hozzászólására (») Márc 9, 2017 /
 
Nem teljesen értem a feladatot..., de minek ide FPGA ? Nem lenne egyszerűbb egy sima analóg PLL-t ráállítani a sorfrekvenciára ? Vagy még az se kell, mert a videojelben amplitúdó függő szinkron szintek vannak, az az komparálással szépen kiválasztható!
(#) killbill válasza sdrlab hozzászólására (») Márc 9, 2017 /
 
Idézet:
„a videojelben amplitúdó függő szinkron szintek vannak”
Hogy micsodák?
(#) sdrlab válasza killbill hozzászólására (») Márc 9, 2017 /
 
Valamiért kompozit videojelre asszociáltam..., de visszaolvasva...VGA-ról van szó, ott pedig külön szinkron jelek vannak, tehát minden adott, csinálni sem kell semmit se...

Lehet félreérthetően fogalmaztam - a szinkron impulzusok szintje százalékosan determinált
(#) killbill válasza sdrlab hozzászólására (») Márc 9, 2017 /
 
Idézet:
„VGA-ról van szó, ott pedig külön szinkron jelek vannak, tehát minden adott, csinálni sem kell semmit se...”
Hát... Adott a szinkronjel, de abbol pixel clock-ot csinalni, az elegge PLL gyanús feladat. Ha nincs PLL, hanem fix oszcillatorrol csinalod a pixel clock-ot, akkor 1 pixelnyi lotyogese lesz a clock-nak a szinkronjelhez kepest. Ez sem mintavetelezesnel, sem overlay-nel nem elonyos.
(#) sdrlab válasza killbill hozzászólására (») Márc 9, 2017 /
 
Ha 1024-es a felbontás, az 2 hatványa! Egyszerű sima analóg szorzással elő lehet állítani a szinkronjelből ezt a pontos frekvenciát.
(#) killbill válasza sdrlab hozzászólására (») Márc 9, 2017 /
 
Egyszeru analog szorzas? Lehet, nem ertelek.
(#) sdrlab válasza killbill hozzászólására (») Márc 9, 2017 /
 
A nem szinuszos jelek mindig tartalmaznak felharmonikusokat. Kiválasztod az N-edik felharmonikust, majd arra ugyanúgy alkalmazod az előbbit. Néhány fokozattal mindenféle PLL nélkül atompontos pixel frekvenciád lesz.
Ugyan megemlítettem kettő hatványát...de valójában nem szükséges ez a feltétel sem, egyedül az egész számú többszörös kell csak.
(#) zombee válasza sdrlab hozzászólására (») Márc 9, 2017 /
 
Nem ártana ismerni a VGA szabvány(oka)t. Nem elhanyagolható tény, hogy pl. 1024x768 (látható) felbontásnál "egy sor" az nem 1024 pixelidőből áll, hanem az adott videomódtól függően valamivel több, és az soha nem lesz a kettő hatványa. Van első és hátsó "váll", na meg a szinkronjel ideje. Ugyanez igaz a függőleges szinkronra is, csak ott a soridő az alapegység. Az egészben kulcsfontosságú a pixelidő, ami atomi alapegység a VGA módok időzítésében. A pixelidőt minden üzemmódváltásnál át kell hangolni az új szinkronfrekvenciához, az alkalmazott videomódtól függően. És minden sor elején a pixel számlálót a szinkronjel felfutó élénél frissíteni. Ez nagyon is PLL feladat, és ha adott az FPGA-ban akkor nem használnék külső egységet. Az N-edik felharmonikushoz nem értek annyira, de ha egyszer adott a szinkronjel, annak megfelelő felszorzásával egyszerűbben és biztonságosabban előállítható a pixel órajel. Pl. egy kis felbontású animációs videónál az N-edik felharmonikus zérus lenne...

Néhány hónapja még állítható frekvenciájú (1Hz-100kHz) szinuszgenerátort akartam építeni CPLD, SRAM, EEPROM, DAC és külső 50MHz oszcillátor használatával. Aztán rájöttem hogy egy DDS (pl. AD9833) pontosan ugyanígy működik, de jóval kisebb helyen elfér és kevesebb programozást igényel; a teljes rendszer a DDS mellett egy oszcillátort kér.
A hozzászólás módosítva: Márc 9, 2017
Következő: »»   43 / 49
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem