Fórum témák
» Több friss téma |
Fórum » CPLD, FPGA - Miértek, hogyanok
Szia ! Elsosorban az audio codec miatt. Aztan a spartanon levo ddr ramot nekem nem sikerult elinditani. Ezen meg SDRAM van, bizom benne hogy sikerul majd hasznalni. A kovetkezo indok a fejlesztokornyezet. Hiteles emberektol tudom hogy sokkal hasznalhatobb mint a Xilinx fele.
akkor nem kerested eléggé...
itt egy srác kipakolta a webre a cd tartalmát: http://users.ece.gatech.edu/~hamblen/DE1/DE1_CDROM/
Üdv!
Az biztos, hogy az ISE nem valami extra cucc, és akkor ultra finoman fogalmaztam. Ami biztos: a 12.1-es verzió nálam egy 500-as Spartan3E-ben lévő 10%-ot lefedő projektnél kb. 3x gyorsabb a szintézis, mint a régebbi 11.x verzióknál. Ez az eddigi legnagyobb fejlődés, amivel találkoztam. Egyszerűen nem is értem, hogy eddig hogy lehetett ezt ennyire elszúrni! Imi.
Egyelore tapasztalatom nincs ezzel kapcsolatosan, meg ezutan toltom le a web edition-t. Az bosszantott, hogy ra raknak egy csomo hasznalhatatlan dolgot. Ha pl. mar rajta van a DDR, ami ugye jol hangzik,..akkor adjanak mar hozza egy alap soft-controllert amivel mar el lehet indulni. Es statert KIT. Ezen jobban elferne egy nagyobb SRAM vagy sima SDRAM.
adnak hozzá controllert...
xilinx honlapon keress rá.
Üdv mindenkinek
Pár éve foglalkoztam kicsit FPGA-val, de sosem mélyültem el benne. Nagyjából tudom, hogy mit lehet velük csinálni, viszont egyáltalán nem ismerem a konkrét tipusokat. Tudnátok nekem javasolni valami CPLD-t vagy FPGA-t, aminek van legalább 85 IO célra használható lába (ebből kb. 16 darab elég ha csak bemenet tud lenni, és másik 16 elég ha csak kimenet tud lenni), és meg tudnék vele olyat csinálni, hogy egy bejövő 16 bites cím, 8 bites adat és három bites vezérlőbuszt két másik irányba szétosztanék némi logikával megfűszerezve egy memória és egy kontroller felé. Pl. a memória cím és vezérlőbuszát tudja vezérelni a kontroller is és a bejövő busz is, illetve az adatbusz iránya állítható legyen bármely két eszköz között bármelyik irányba. Arra lenne jó, hogy ne kelljen kétoldalas panelt készítenem a rengeteg vezeték kereszteződései miatt, hanem inkább feltennék egy ilyen chipet, és a chipben oldanám meg a kereszteződéseket, valamint akkor már egy csomó nagyimpedanciás kimenettel rendelkező buffert is kihagyhatnék. Elég, ha 3,3V-os a chip és a bemenetei 5V-ot elviselnek, viszont az jó lenne, ha a konfigurációját (vagy hogy nevezik) belső flash-ben tárolná (bár ez azért nem kizáró tényező). Illetve az sem árt, ha nem túl drága és be is lehet szerezni (chipcadben jó lenne). Tokozás ne legyen túl elvetemült, 0,5mm lábtávolság már jó lenne. Egyéb kívánalom nincs, működési sebességként gondolom 12MHz-es jelek átvitele manapság nem probléma, és a feladat szerintem nem is igényli, hogy legyen saját órajele a CPLD-nek, mivel egyszerű logikai kapukkal is megvalósítható a feladata.
Közben tanulmányoztam a dolgokat, és az XC95144XL-10TQG144C úgy tűnik, megfelelő lesz nekem. Van is chipcadnél raktáron, nemis vészes az ára, van bőven IO lába, 5V-ot elvisel a bemeneteken, 10ns nekem elég, van belső flash, stb.
Hali !
Vigyázat! ISE 11.4 uninstallnál ,ha a project könyvtár az ISE install könyvtárban van, törölni fogja . Eddig installáltam majdnem minden verziót, mindig megmaradt a project könyvtár és tartalma, most nem. Még jó hogy ránéztem és nem kezdtem installálni a 12.1-est, így undeletével most varázsolom vissza a projektjeimet. A xilinxes fiúk mindig alkotnak valamit, hogy a sok pirospont mellé, behúzzak ugyanannyi feketét Üdv. Zoli
Ezeknek az ujabb ISEknek jobb a kodszerkesztoje?
A 8.xx szanalmas volt,...
Hali!
Köszi a figyelmeztetést, nekem minden a "c:\munka\xxx" alatt van, soha nem pakolok semmit a telepített programok alá. Így könnyen archiválok. Imi.
Üdv!
Amire én felfigyeltem: a 10.x-ben gyors volt, a 11.x-ben annyira lassú volt, hogy külső szövegszerkesztőt kellett használnom hozzá. A 12.x-ben megint jó. A régebbieket nem ismerem. A 10.x-ben volt egy olyan hiba is, hogy a kikommentezett sorokat vagyis a "/*"-jel jelölteket csak akkor színezte át, ha egyesével végiglépkedtél rajtuk. Más: a 10.x-ben van egy olyan hiba, hogy mikor a szimuláció-hoz indít egy új szálat a windows-ban, akkor az egyszerűen beragadt sokszor, feladatkezelőből kellett kilőni. Imi.
Jó elgondolás, én valahogy leragadtam a "program, project legyen együtt" elvnél. Eddig nem volt gondom, de valóban, az archiválás egszerübb ahogy Te csinálod.
Üdv. Zoli
én a notepad++ -t preferálom, nem kell mellette futnia a több száz mega memóriát felfaló ISE-nek
hogyha lesz egy kis időm, megtanulom, hogy hogyan lehet parancssori scripteket írni a szintézisre és társaira, és akkor a GUI-tól is megszabadulok. Idézet: Ez azt jelenti, hogy sima szövegszerkesztővel dolgozol? A fordítás hogyan történik utána, ott sem kell az ISE?„én a notepad++ -t preferálom, nem kell mellette futnia a több száz mega memóriát felfaló ISE-nek ” Bocs, ha nagyon egyszerűt kérdezek, de nem ismerem csak az ISE-t egy kicsit és pont az a bajom vele, hogy nagyon nagy! Steve
természetesen utána be kell tölteni ISE-be, de abban épeszű ember csak ritkán indít el fordítást
alaposan meg kell tervezni, hogy mit szeretnél HDL-ben leírni, azt begépeled, a végén betöltöd ISE-be, nyomsz egy syntax check-et, ha van hiba kijavítod, ha nincs, akkor szintézis.
Bocs, ha lámáskodok, csak nem világos: az igazi hosszú folyamat maga a szintézis . Az ISE-t mindenképpen be kell töltened a leírásod alapján, a szintézist azzal csinálod, akkor mi a nyereség ( hogy a gépelést egy különálló szövegszerkesztőben csinálod, ami nem ismeri a megfelelő szintaktikát és a gépelés alatt nem fogyasztod a géped erőforrásait? ) ?
Steve
miért ne ismerné?
sőt, még saját dolgokat is bele tudsz venni a szöveg színezésbe, ezen kívül van rengeteg script ami segítségével automatizálhatod a kódolást. a szintézis a kutyát nem érdekli, azt akár scriptből is futtathatod, a lényeg, hogy milyen warningokat és hibákat talál, neked ezek alapján kell finomhangolnod a kódodat. ezen kívül a szintézishez kell felhasználói beavatkozás? NEM te csak szintézis után tudsz beavatkozni, esetleg közben figyeled hogy miket firkál a konzolba, és az alapján leállíthatod, hogyha úgy érzed, hogy hülyeséget csinál
Azért az ISE nem hazudtolja meg magát, 12.1. Az FPGA-s Quadrature encoderemet próbáltam, hogy bele fér e, egy XC95144XL -be. -> "cpldfit.exe has encountered a problem and needs to close. We are sorry for the inconvenience." Csak egy órája vettem kézbe. Most melyiket rakjam vajon vissza ? Csak néhány órámba kerülne ez a kis müvelet. .
Nálam 400-as Spartan3-on 74%-nál, a SmartXplorer ugyanúgy 3-6 perceket hoz(Core2 2.13G). Üdv. Zoli
Üdv!
Nem ismerem ezt a "cpldfit.exe" progit, soha nem használtam. Szintézis nálam: 31 sec helyett 12 sec, 27 állapotú automata van benne, 3E500-ból 10%-ot fogyaszt. Core2Duo@2.26 GHz. 3GB RAM Kérdés: használ a szintézishez több szálat, vagyis jó, hogy 2 mag van ? Ha igen, akkor nem emiatt van, hogy a régebbi esetleg nem támogatta a szálakra bomlást ? Imi. Idézet: „Kérdés: használ a szintézishez több szálat, vagyis jó, hogy 2 mag van ?” Miért nem nézed meg? Ha mindkét magon látod a terhelést a szintézis folyamán, akkor használja mindkettőt.
Szia!
Igazad van, megnéztem, de csak az egyik magot használja full-ra, a másik csak 5%-ra megy fel. A leírás szerint: Additionally, the 12.1 software features an average of 2X faster logic synthesis and 1.3X faster implementation run times for large designs than previous versions and an improved embedded design methodology. Imi.
Az a másik szerintem csak azért megy feljebb, mert valami rendszerfolyamat használja.
Lányok, fiúk, valaki átnézné a kódomat? Alapvetően az lenne a feladata, hogy egy 8051-es kontroller (ecu), egy flash memória és egy PIC kontroller között megoldja a kapcsolatot az alábbiakban leírt módon. Alapvetően kétféle üzem van, amit a pic_mode jel határoz meg:
Ha a pic_mode magas, akkor a flash memóriát a 8051-es kontroller használja külső programmemóriaként, tehát a flash memóriát a 8051 címzi. Ebben az üzemben a flash RD lába fixen nullán van, a WR lába fixen 1-en. Az áramkör akkor teszi ki a flashtől érkezett adatot a 8051 adatbuszára, ha az ecu_rd jel alacsony, amit eredetileg a 8051 PSEN jele kezel. Amikor az ecu_rd magas, akkor az ecu_data kimenetek mind nagyimpedanciás állapotban kell, hogy legyenek, illetve felhúzás az lehet rajtuk. Egy-egy olvasás úgy néz ki, hogy alapból a PSEN magas, majd amikor olvasni akar a 8051, akkor először kiteszi a címbuszra a címet, majd alacsonyra húzza a PSEN lábat, beolvassa az adatot, majd visszamegy magasra a PSEN. Eközben a PIC-el logolni kellene azt, hogy a 8051 milyen címeket kérdezett le, de mivel a 8051 két címet olvas egymás után nem sokkal, ezért a CPLD a két címet el kell hogy tárolja, és a PIC csak a második cím bekérése után kell, hogy beolvassa magának a "lehallgatott" címeket. E célból szerepel a buff0 és buff1 nevű változó, hogy amikor a PSEN alacsony szintre megy, akkor a pillanatnyi címbusz értéket eltárolja felváltva a buff0 és buff1 változókban. A pic_int jel alacsonyra váltásakor fogja a PIC majd beolvasni az eltárolt címeket, és a pid_rd jeltől függően kellene, hogy a CPLD a pic_addr buszra kitegye a buff0 vagy buff1 tartalmát. Másik mód, amikor a pic_mode jel alacsony, ekkor a pic foglalkozik a flash memóriával, tudja azt írni és olvasni is, tehát ilyenkor a pic vezérli a flash címvezetékét, RD és WR jeleit is. Ebben az üzemben a 8051 mintha ott se lenne, de legjobb, ha az ecu_data kimenetek mind alacsonyra húzás szintre állnak be. Ilyenkor a CPLD-nek csak annyi a dolga, hogy átereszti a jeleket a pic és a flash között. Viszont itt van egy apró probléma, ugye az írás a flash-be úgy történik, hogy a pic kiteszi mind a cím, mind az adatbuszra a jeleket, majd utána lehúzza a WR jelet nullára. Mivel a WR lehúzásának pillanatában már az adatnak ott kell lennie a flash-nél, ezért azt csináltam, hogy amikor mind az RD, mind a WR magas, akkor is a pic hajtja meg a flash adatbuszát. Vagyis csak amikor az RD alacsonyra vált, akkor válnak a flash_data lábak nagyimpedanciássá. Szóval remélem érthető, hogy mit akarok alkotni és valakinek lesz annyi türelme, hogy átnézze, amit írtam.
Pár kérdés
Az a cél, hogy a PIC-el tudd frissíteni a 8051 programját? (firmware) Mert akkor nem kell CPLD PIC vezérelné a 8051 reset lábát. Ha H akkor 8051 üzemel rendessen. Ha lehúzod resetbe és ott tartod akkor a kimenetek lebegnek, tehát a PIC elkezdhet programozni, ha végzett, lábait kikapcsolja reset H ba. Ha az a cél, hogy megfigyeld a 8051 futási címeit, akkor sem indokolt a CPLD. De én egy egyszerű AVR-t alkalmaznék PIC helyett, ami gyorsabb mindkettőnél és mindkét memoria cimzést el tudja csipni. Ha nem szinkronkényszeres a dolog, akkor meg az órajellel is lehet játszani. A PIC küldené az órajelet a 8051-nek olyan sebességgel, ahogy neki tetszik, majd felfüggeszt és megnézi az aktuális címeket. Ha írni akar, akkor kellhet pár 74-es busz ic. sztm
Igen, egyik feladat, hogy a PIC új programot tudjon adni viszonylag egyszerűen a 8051-nek. De ez nem futás közben történik, hanem a 8051 megáll, kézzel betesszük az új programot a flash-be, és akkor ismét indul elölről a 8051.
8051-hez másképp nem férek hozzá, csak az áramkörben levő eprom helyére dugott szalagkábellel. Tehát ez egyben válasz arra is, hogy szinkronkényszeres a dolog. Sajnos úgy tűnik, nem tudják elcsípni, nem elég gyorsak. Szimulátorban néztem 80MHz-es futó PIC32 válaszidejét megszakításra, és épp ott mozog a határon, hogy egy 12MHz-en futó 8051 címzését még el tudná kapni, de ha véletlenül a 8051 magasabb órajelen fut, akkor már nem ér oda időben. Abban igazad van, hogy CPLD nélkül is megoldható lenne, van is egy próba áramkör, ami csak a flash tartalmát tudja cserélni, az pár logikai kapuból és egy kontrollerből áll. De a címek miatt kell a nagyobb sebességű legalább 64 lábú kontroller, ami már csak smd tokban van, és a sok vezetékkeresztezés és a logikai kapuk miatt is akarom betenni a CPLD-t, mert így akkor szinte bárhogy huzalozhatom a nyákot, a CPLD-n belül úgy használom a lábakat, ahogy tetszik, valamint szinte minden elfér egyoldalas panelen. Enélkül pedig kétoldalas panelt kellene készítenem összevissza kereszteződő vezetékekkel, ami mondjuk nagyobbszériás gyártásnál oké, de 1-2 darabnál egyszerűbb a CPLD. Na meg így legalább CPLD-t is átismétlem, mert pár éve az egyetemen használtunk FPGA-t, és szinte mindent elfelejtettem a használatáról. Egyébként egy Motronic motorvezérlőhöz lesz a cucc, lesz majd még mellette mindenféle bemenő paraméter (hőmérsékletek, lambdajel, légtömegmérő, stb.) figyelése és logolása is. Most abba ne menjünk bele, hogy ez mire jó, nekem az elektronika a dolgom, az ürge meg úgy állítgat mindent a saját autóján, ahogy akar.
Üdv Mindenkinek!
Komolyabban el akarok merülni az FPGA témában. Az első problémám amiben segítséget szeretnék kérni a következő: ISE-ben gyakoroltam, amikor felmerült a kérdés, hogy lehet-e egy net közvetlen i/o markeres kivezetésének más a neve mint a net-nek? Nekem nem akar sikerülni. Amikor a markert átnevezem, a netet is átnevezi.
A schematic editort felejtsd el... ócska, vacak.
Verilogot vagy VHDL-t tanulj!
Légyszíves segítsetek. Csatoltam egy példa alkalmazást amelynek az órajel osztó része sem szimulátorban nem működik sem pedig valóságban. Az ISE hiba nélkül befordítja. Nem tudom mi kerülhette el a figyelmem.
Link |
Bejelentkezés
Hirdetés |