Fórum témák
» Több friss téma |
Fórum » CPLD, FPGA - Miértek, hogyanok
Persze az rendben, eddig nem volt vele gond. Mondjuk IOSTANDARD-ot nem adok meg, Pinout reportban odaírja, hogy LVCMOS25, a valóságban meg 3.3V jelenik meg...
Szia!
Idézet: „ Pinout reportban odaírja, hogy LVCMOS25, a valóságban meg 3.3V jelenik meg... ” Gondolom a VCCO lábak 3.3V-on vannak. Nem ? Üdv. Zoli
Igen, szóval ez nem gond. A gond az, hogy valamiért nem azt csinálja amit akarok
Sziasztok! Lenne egy kerdesem lecci ha valaki tud segitsen elkezdtem egy 4 bites szamlalot csinalni D flip flop bol de sajnos elakadtam es nem tudom h hogy kossem ossze a dolgokat h jo legyen. Ha valaki ki tudna segiteni nagyon megkoszonnem!
`timescale 1ns / 1ps module counterD (q, d, ck, reset_n); input d, ck, reset_n; output [3:0] q; reg [3:0] q; always @ (posedge ck or negedge reset_n) begin if(~reset_n) q= 0; else q[0]=q[3]; // itt a baj q[1]=q[0]; q[2]=q[1]; q[3]=q[2]; end endmodule
Szia !
Én VHDL-ül értek csak, de amit leírtál az valami shitregiszter akar lenni, csak nincs beírás. A resetre nullázódik, ha jól értem és utána meg csak shiftelgeti a semmit ( nullákat). Egyébként: Google "verilog 4 bit counter" első találat. Üdv. Zoli
Jah en is rajottem h csak egy shiftreg, De akkor hogy csinaljam meg D-kbol h jo legyen. A 4 bites szamlalot meg tudm csinalni csak ugy kene most h D flip flop bol legyen. Ugy gondoltam h 4 D-t ugy kotni ossze h ugy mukodjon mint egy szamlalo. Ebben tudnal segiteni?
Üdv!
always @ (posedge ck or negedge reset_n) begin if(~reset_n) q <= 0; else q <= q + 1'b1; end Imi.>>
Szerintem ez neki valami házi feladat, és az lenne a lényeg, hogy példányosít 4db D ff-ot, mellé logikai kapukat, és azokat összekötögeti.
Konkrét megoldást nem szeretnék adni, mert azzal nem tanulsz, ellenben: 1) Írd fel az állapottábláját ennek a számlálónak az összes állapottal (közepesen sok, de max 2 perc körmölés) (aktuális állapot, következő állapot, bemenet (engedélyezés), D flip-flop bemenetek) 2) Ha mindent jól csináltál egy látványos mintát figyelhetsz meg benne 3) 3 ÉS kapu és 4 NOR kapuval megoldható + a 4 DFF
Üdv !
Ismét tudtam foglalkozni az XC95288XL CPLD-mel. Viszont az ISE szerintem használhatatlan, ilyen nyűgös szoftvert még az életben nem láttam, nem hogy előre mozdítaná az embert inkább feltartja. Működik, de borzalmas sok idő mire megkűzdök az ISE-vel. Nem csoda hogy ingyenes Ezek a kérdéseim lennének: -Van-e más fejlesztőrendszer ami támogatja a XILINX-et és használható is? -Ha nincs van e más gyártó, aminek normális fejlesztőkörnyezete van és beszerezhető magyarországon? -Honnan lehet előre tudni, hogy egy adott feladathoz mekkora CPLD-t válasszak, mibe fog beleférni? ( mert ez a 288 makrocella sem túl sok nagyobb meg nincs, bár kezdő vagyok.) - Van e valami bevezető kezdőknek VHDL nyelvbe, lehetőleg magyarul? Válaszokat előre is köszönöm.
1) Van ilyen fejlesztőrendszer, de fizetős, és nem tudod letölteni
2) Altera pl... de az sem jobb Az összes EDA szoftver egy bughalmaz 3) Onnan tudod, hogy megírod a HDL kódod, leszintetizálod és látod, hogy belefér-e vagy sem 4) Van, de nem fogsz belőle megtanulni VHDL-ül
Igen, gondoltam, hogy fizetősbe van normális fejlesztőrendszer.
Azért akarom a VHDL-t mert a shematic-nak nagyon rossz a kezelőfelülete, pl ha egy jelvezetékre rákötök valamit ott csinál egy csomópontot, de azt már szétszedni nem lehet, csak az egészet törölni. Valahogy csak meg lehet tanulni, ennyi erővel semmit nem tanulna meg az ember. Én találtam VHDL leírásokat, de nem komplett egyiksem, csak bele-belekapnak a dolgoba. Valószínüleg haladóknak készült. Gyanítom nem a shematic ban kell fejleszteni, az csak azért van hogy legyen. Pl.: a megírt blokkokat egy top modul szinten összeköti az ember és kész, szerintem erre elég a shematic, de mindent azzal megcsinálni idegtépő.
Ha tényleg ezzel szeretnél foglalkozni, akkor angoltanulást és angol tutorialok olvasását javaslom.
Pl: http://www.doulos.com/knowhow/vhdl_designers_guide/ http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html www.opencores.org IP core-ok forrásának nézegetéséből is rengeteg hasznos dolgot lehet tanulni. Schematic-ot meg el kell felejteni, az csak játékra jó, ezért nem is fejlesztik.
Van valakinek ötlete, hogy az ISE szintézis miért száll el "INTERNAL_ERROR:Xst:cmain.c:3464:1.56"?
A forrás egy AVR regiszter file-nak készül, kicsit el lett rondítva, hogy az ISE ne warningoljon (de nem az volt a baj). ghdl-el szimulálva az alap funkciói működnek.
Hali!
Milyen oprencer ? Windows ? Linux ? Hányas ISE verzió ? A "types_pkg" merre található ? Üdv. Zoli
Helló. Linux. 13.1-es ISE. De már megvan a hiba. Nem tetszett neki a rise() függvény. Beinline-oltam a tartalmát a processbe és mostmát jó...
FPGA-át tönkre lehet tenni hibás konfigurálással? Pl. két belső tri-state buffert összekötök és mindkettőt outputra állítom, az egyikre 0-át a, másikra 1-et teszek. Ilyenkor nem füstöl el odabent valami?
Na ez engem is erdekelne. Bar ha a cimbusz segitsegevel tiltod a buszmeghajtokat, akkor biztos nem lehet gond. Viszont multi-master kornyezetben valoban erdekes kerdes.
Még talán olyankor is előfordulhat, hogy a jelek különböző késleltetési sebességei miatt a portok pár nano-piko másodpercig rövidre vannak zárva, vagy nem?
Sziasztok!
Lenne egy nagy kérdésem, így újoncként Verilog témában. Szóval a kérdésem, hogy egy modulban létre hoztam egy regiszert, amit egy always blokkban állítok át. Viszont egy másik always blokkban a regiszter értékének függvényében van egy feltétel vizsgálat. Viszont itt fordítás közben kiír egy olyat, hogy az adott jel több meghajtóra is be van kötve. Hogy lehet ezt kiküszöbölni? Van egyáltalán sima változó ebben a nyelvben?
Üdv!
Kétféle "változó" van, reg és wire. A reg-nek always blokkban (egy always blokkban lehet csak értéket adni neki, de bárhol felhasználható az értéke), a wire-nek pedig a deklarációnál, vagy az assign-nal lehet értéket adni. Az, hogy egy változó reg, nem jelenti automatikusan azt, hogy tárolós lesz, ez függ a leírástól. Ha élérzékeny az always blokkod, akkor az lesz, ha pedig felsorolod az összes a blokkon belüli változót az érzékenységi listában, vagy egyszerűen '*'-ot írsz, akkor wire lesz az is. Minden wire (vagy azzá változott) változó gyakorlatilag egy kombinációs hálózat kimenete. Ezeknek a kombinációs hálózatoknak "egyértelműeknek" kell lenniük, tehát nem hagyható el az "else" az "if"-ből, és a "default" a "case"-ből. Ha elhagyod, jönnek a "found latch" üzenetek. Tárolós változók esetén természetesen elhagyható az "else". Namost amit leírtál, az elvileg jó, mert egy always-ban adtál neki értéket, egy másikban pedig figyeled az értékét. Ez rendben van, idézd be a kódodat teljes egészében, úgy könnyebb segíteni. Imi.
Szervusz!
Közben rájöttem, hogy nem tesz eleget a kódom annak a kritériumnak, amit mondtál, mivel egyszer egy vizsgálatnál nézem az értékét, majd a blokk végén lenullázom az értéket, és egy másik blokkban is adok neki értéket.
Üdv!
Igen, ez így nem jó. Minden REG változó csak egy always blokkban kaphat értéket, de bárhol felhasználható az értéke. Imi.
Értem. Akkor kérdeznék egy mást.
Hogy oldanád meg azt, hogy amikor egyszer megnyomom a gombot, akkor egyszer fusson le a blokk. Mert úgy, hogy egy blokk az órajelre fut le, és van benne egy if (gomb), akkor az ugye minden periódusban lefut. Viszont ha azt írom be, hogy a blokk a gomb megnyomására induljon meg (ez lenne az értelem szerű), akkor valami olyasmit ír ki a fordító, hogy a clock IOB nem a megfelelő IOB-be van. Sajnos ez nem tudom mit jelent, ha számít akkor megpróbálom produkálni ezt a hibát és elküldöm a kódot.
"ERRORlace:1018 - A clock IOB / clock component pair have been found that are not placed at an optimal clock IOB /"
Ezt írja. A kódot pedig újra írtam:
Üdv!
1. Minden külső jelet először szinkronizálni kell a belső órajelhez (Tsetup, Thold miatt), nehogy metastabil állapotba kerüljön 2. Majd pergésmentesíteni kell 3. Ezután neked az kell, hogy "amikor lenyomták", ez pedig akkor van, ha: jelenleg nyomva van, az előző ciklusban pedig nem volt nyomva. Ez a kód egy led-et invertál minden egyes gomb lenyomásra. Tehát a led csak akkor invertálódik, ha megnyomod a gombot, előtte, nyomvatartás alatt, elengedéskor, illetve utána nem történik semmi.
Bocs ez lemaradt: a rot_c a nyomógomb ucf-ből, a led1 pedig a kimenet. Imi.
Köszönöm, meg fogom nézni!
Akkor még egy utolsó kérdés: hol tanultad meg -illetve miből- a nyelvet? Sajnos nekem nincs semmi referenciám, így nagyon lassan megy. |
Bejelentkezés
Hirdetés |