Fórum témák

» Több friss téma
Fórum » CPLD, FPGA - Miértek, hogyanok
Lapozás: OK   26 / 49
(#) lenart.j válasza dpeti hozzászólására (») Ápr 5, 2011 /
 
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...
(#) eltexto válasza lenart.j hozzászólására (») Ápr 5, 2011 /
 
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
(#) lenart.j válasza eltexto hozzászólására (») Ápr 5, 2011 /
 
Igen, szóval ez nem gond. A gond az, hogy valamiért nem azt csinálja amit akarok
(#) dpeti válasza lenart.j hozzászólására (») Ápr 5, 2011 /
 
chipscope?
(#) lehell hozzászólása Ápr 19, 2011 /
 
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
(#) eltexto válasza lehell hozzászólására (») Ápr 19, 2011 /
 
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
(#) lehell válasza eltexto hozzászólására (») Ápr 22, 2011 /
 
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?
(#) jym válasza lehell hozzászólására (») Ápr 22, 2011 /
 
Üdv!

always @ (posedge ck or negedge reset_n)
begin
if(~reset_n)

q <= 0;

else

q <= q + 1'b1;

end

Imi.>>
(#) dpeti válasza jym hozzászólására (») Ápr 22, 2011 /
 
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
(#) ciw hozzászólása Máj 4, 2011 /
 
Ü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.
(#) dpeti válasza ciw hozzászólására (») Máj 4, 2011 /
 
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
(#) ciw válasza dpeti hozzászólására (») Máj 4, 2011 /
 
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ő.
(#) dpeti válasza ciw hozzászólására (») Máj 4, 2011 /
 
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.
(#) ciw válasza dpeti hozzászólására (») Máj 4, 2011 /
 
Köszi ez jó lesz!
(#) dpeti válasza ciw hozzászólására (») Máj 4, 2011 /
 
még ezt a honlapot ajánlom, rengeteg leírás és példa van rajta:

http://www.asic-world.com/
(#) endree hozzászólása Jún 11, 2011 /
 
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.
(#) eltexto válasza endree hozzászólására (») Jún 11, 2011 /
 
Hali!

Milyen oprencer ? Windows ? Linux ? Hányas ISE verzió ? A "types_pkg" merre található ?

Üdv. Zoli
(#) endree válasza eltexto hozzászólására (») Jún 11, 2011 /
 
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ó...
(#) endree hozzászólása Jún 21, 2011 /
 
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?
(#) Reggie válasza endree hozzászólására (») Jún 23, 2011 /
 
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.
(#) endree válasza Reggie hozzászólására (») Jún 29, 2011 /
 
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?
(#) Carlen hozzászólása Jún 29, 2011 / 1
 
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?
(#) jym válasza Carlen hozzászólására (») Jún 30, 2011 /
 
Ü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.
(#) Carlen válasza jym hozzászólására (») Jún 30, 2011 /
 
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.

  1. module top(
  2.     input button1,
  3.          input button2,
  4.          input clk,
  5.          
  6.          output reg e,
  7.          output reg [7:0] data
  8.         // output reg [3:0] control
  9.          );
  10.  
  11. reg button1_indicator;
  12. reg button2_indicator;
  13.  
  14. reg [2:0] status;
  15.  
  16. always @ (posedge clk)
  17.         begin
  18.         if (button1_indicator)
  19.                 begin
  20.                         if (!e)
  21.                                 e <= 1;
  22.                         else
  23.                                 e <= 0;
  24.                 button1_indicator = 0;
  25.                 end
  26.         else if (button2_indicator)
  27.                 begin
  28.                         case (status)
  29.                                 0: data <= 8'b00000001;
  30.                                 1: data <= 8'b00000010;
  31.                                 2: data <= 8'b00000100;
  32.                                 3: data <= 8'b00001000;
  33.                                 4: data <= 8'b00010000;
  34.                                 5: data <= 8'b00100000;
  35.                                 6: data <= 8'b01000000;
  36.                                 7: data <= 8'b10000000;
  37.                         endcase
  38.                 button2_indicator = 0;
  39.                 end
  40.         end
  41.        
  42. always @ (posedge button1)
  43.         button1_indicator <= 1;
  44.  
  45. always @ (posedge button2)
  46.         button2_indicator <= 2;
  47.                
  48. endmodule
(#) jym válasza Carlen hozzászólására (») Júl 1, 2011 /
 
Ü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.
(#) Carlen válasza jym hozzászólására (») Júl 1, 2011 /
 
É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.
(#) Carlen válasza jym hozzászólására (») Júl 1, 2011 /
 
"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:

  1. module top(
  2.    input button,
  3.         input button2,
  4.                
  5.         output reg [7:0] data,
  6.         output reg [2:0] control,
  7.         output reg e
  8.         );
  9.  
  10. reg button_indicator = 0;
  11. reg random;
  12.  
  13. always @ (posedge button)
  14.         begin
  15.                 case (button_indicator)
  16.                         0: data <= 8'b00111111;
  17.                         1: data <= 8'b01010101;
  18.                         2: data <= 8'b10101010;
  19.                         3: data <= 8'b00001111;
  20.                         4: data <= 8'b11110000;
  21.                         5: data <= 8'b11001100;
  22.                 endcase
  23.                
  24.                 if (button_indicator == 5)
  25.                         button_indicator <= 1;
  26.                 else    
  27.                         button_indicator <= button_indicator + 1;
  28.         end
  29.        
  30. always @ (posedge button2)
  31.         begin
  32.                 if (!e)
  33.                         e <= 1;
  34.                 else
  35.                         e <= 0;
  36.         end
  37. endmodule
(#) jym válasza Carlen hozzászólására (») Júl 1, 2011 /
 
Ü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.

  1. // ebben synceljuk a kulso gombot a belso orajelhez
  2. reg [1:0] button_sync;
  3.  
  4. // ebben taroljuk a gomb aktualis,
  5. // szinkronizalt es pergesmentesitett allapotat
  6. reg button_actual;
  7.  
  8. // ebben taroljuk a gomb elozo allapotat
  9. reg button_prev;
  10.  
  11. // a pergesmentesiteshez
  12. reg [17:0] PB_cnt;
  13.  
  14. // a pergesmentesiteshez
  15. wire PB_idle = (button_actual == button_sync[1]);
  16. wire PB_cnt_max = (PB_cnt == 18'd150000); // 3 msec
  17.  
  18. // button sync to clock
  19. always @(posedge clk)
  20. begin
  21.         button_sync <= {button_sync[0], rot_c};
  22. end
  23.  
  24. // ez a pergesmentesito
  25. always @(posedge clk)
  26. begin
  27.         if (PB_idle == 1)
  28.                 PB_cnt <= 0;
  29.         else begin
  30.                 PB_cnt <= PB_cnt + 1;
  31.                 if (PB_cnt_max == 1)
  32.                 begin
  33.                         PB_cnt <= 0;
  34.                         button_actual <= ~button_actual;
  35.                 end
  36.         end
  37. end
  38.  
  39. always @(posedge clk)
  40. begin
  41.         // itt a lenyeg, vagyis jelenleg nyomva van, elozoleg pedig nem volt
  42.         if (button_actual && ~button_prev)
  43.                 led1 <= ~led1;
  44.  
  45.         // mentjuk a jelenlegit a prev-be
  46.         button_prev <= button_actual;
  47. end


Bocs ez lemaradt: a rot_c a nyomógomb ucf-ből, a led1 pedig a kimenet.

Imi.
(#) Carlen válasza jym hozzászólására (») Júl 1, 2011 /
 
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.
(#) jym válasza Carlen hozzászólására (») Júl 1, 2011 /
 
Üdv!

Beírod google-be: verilog, majd magyar nyelvű oldalak, van néhány pdf, kezd azokkal.

Néhány oldal még:
fpga4fun
asics.ws és itt a free IP cores
opencores

Ez nagyon sokat segít az FSM-ek megértésében:
rs232_syscon

Imi.
Következő: »»   26 / 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