Fórum témák

» Több friss téma
Fórum » CPLD, FPGA - Miértek, hogyanok
Lapozás: OK   30 / 49
(#) Reggie válasza cassis hozzászólására (») Jún 6, 2012 /
 
Az initben a testbenchben levo regiszterek kezdoerteket kell beallitani. Ha ezt nem teszed meg, akkor a szimulacio hatarozatlan ertekrol indul.

WEBPack license eseten a szimulator sebessege vissza van fogva, erre figyelmeztet teged.
(#) cassis válasza Reggie hozzászólására (») Jún 7, 2012 /
 
automatikusan megkapom a regiszterek initjének megfelelő kódot.
  1. // Verilog test fixture created from schematic C:\Documents and Settings\Developer\example\fulladd.sch - Sat Jun 02 14:23:36 2012
  2.  
  3. `timescale 1ns / 1ps
  4.  
  5. module fulladd_fulladd_sch_tb();
  6.  
  7. // Inputs
  8.    reg CLK;
  9.    reg B;
  10.    reg A;
  11.  
  12. // Output
  13.    wire Cout;
  14.    wire SUM;
  15.  
  16. // Bidirs
  17.  
  18. // Instantiate the UUT
  19.    fulladd UUT (
  20. .CLK(CLK),
  21. .B(B),
  22. .A(A),
  23. .Cout(Cout),
  24. .SUM(SUM)
  25.    );
  26. // Initialize Inputs
  27.    `ifdef auto_init
  28.        initial begin
  29. CLK = 0;
  30. B = 0;
  31. A = 0;
  32.    `endif
  33. endmodule

Ha jól sejtem ez kell hozzá. Mégsem megy a szimuláció.
(#) El_Pinyo válasza cassis hozzászólására (») Jún 7, 2012 / 2
 
Szia!
Előrebocsájtom, hogy nem volt időm sokáig nézegetni a kódot, de gyanítom, hogy hiányolja az órajelet.
Az "endmodule" kulcsszó fölé illeszd be az alábbi kódot:
always #5 CLK <= ~CLK;
Ez a sor 5 timescale egységenként invertálja a CLK jelet (periódusidő a kódod esetén: 10*timescale = 10ns)
Az initial blokk 'endif kulcsszava fölé én tennék még egy end kulcsszót, hogy az initial blokk le legyen zárva.>
(#) El_Pinyo válasza El_Pinyo hozzászólására (») Jún 7, 2012 /
 
Még annyival kiegészíteném a korábbi hozzászólásomat, hogy ha valami működést is akarsz látni, akkor az A és B bemeneteknek is kell valami értékeket adni, mert így minden órajelnél az A = 0 és B = 0 bemenetekhez tartozó kimenetet fogja generálni. Ha kiegészíted a kódot ezzel:
reg [1:0] cnt = 2'b0;
always@(posedge CLK)
begin
cnt <= cnt + 1'b1;
A <= cnt[0];
B<= cnt[1];
end
Akkor talán még az összeadást is lehet ellenőrizni.
(A fenti kódot természetesen az endmodule kulcsszó fölé kell beilleszteni)>>>
(#) cassis válasza El_Pinyo hozzászólására (») Jún 14, 2012 /
 
Köszi a válaszokat, sajnos nem nagyon volt időm ezidáig belemélyedni a kérdésbe. Az rendben van, hogy legalább egy always #5 CLK <= ~CLK; hiányzott. Ha ezt az általad javasolt módon hozzáadom akkor sem látom billegni CLK -t.
  1. // Inputs
  2.    reg B;
  3.    reg A;
  4.    reg CLK;
  5.  
  6. // Output
  7.    wire Sum;
  8.    wire Cout;
  9.  
  10. // Bidirs
  11.  
  12. // Instantiate the UUT
  13.    kapcsolas UUT (
  14. .B(B),
  15. .A(A),
  16. .CLK(CLK),
  17. .Sum(Sum),
  18. .Cout(Cout)
  19.    );
  20. // Initialize Inputs
  21.    `ifdef auto_init
  22.        initial begin
  23. B = 0;
  24. A = 0;
  25. CLK = 0;
  26.    `endif
  27.  
  28.     always #5 CLK <= ~CLK;
  29.  
  30. endmodule


Az, hogy A = 0 és B = 0 bemenetekhez tartozó kimenetet látnék folyamatosan egyenlőre nem zavarna, ha látnám CLK -t órajelként működni.
Másik kérdésem volna, hogy ugyan automatikusan hozza létre a bemásolt .v file -t, mit jelent benne az UUT block?
Másik dolog, ha a javasolt end -et beszúrom hibát kapok.
(#) Reggie válasza cassis hozzászólására (») Jún 15, 2012 / 1
 
Az UUT jelentese benne van az altalad linkelt doksiban is, az Unit Under Test roviditese, magyarul azt jelenti, hogy az az egyseg amit tesztelsz.

A CLK-t szerintem azert nem latod billegni, mert tul rovid ideig futtatod a szimulaciot.
(#) El_Pinyo válasza cassis hozzászólására (») Jún 15, 2012 / 1
 
Nem láttam, hogy írtad volna, így feltételezem az ISE beépített ISim szimulátorát használod nem a ModelSim-et. Nálam időnként előfordul, hogy rossz forrást próbálok szimulálni, ekkor tipikusan nem történik semmi, illetve piros logikai jelek jelennek meg a szimulációs ablakban. Ez amiatt van, hogy a rossz forrásfájlt akarom szimulálni. Ebben az értelemben a rossz azt jelenti, hogy az eredeti modul van kiválasztva és nem a testbench. Tehát először rá kell kattintani a testbench filera a projekt navigátorban, aztán pedig már lehet a szimulátort indítani. Ha nem ez a hiba forrása, akkor légy szíves tedd fel a verilog forrást, amit szimulálni szeretnél, készítek hozzá testbenchet.
(#) pajti2 hozzászólása Jún 16, 2012 /
 
Sziasztok,

Érdeklődnék, hogy kaphatóak-e cpld/fpga modulok ddram + spi busz kezelésre (szerelve, programozva, leírással, egyszóval éppen álmodozom). Ha ilyesmit szeretnék, mi a vélhetően legjobb esélyem?
(#) cassis válasza El_Pinyo hozzászólására (») Jún 17, 2012 /
 
Szia! A hétvégén távol voltam, de mostantól rákapcsolok a dologra. Az ISE szimulátorát használom. Mellékelem a 3 filét.
Reggie válaszát is köszönöm, de nem az UUT jelentésével volt gondom, hanem a kapcsolás blokk jelentésével:
  1. kapcsolas UUT (
  2. .B(B),
  3. .A(A),
  4. .CLK(CLK),
  5. .Sum(Sum),
  6. .Cout(Cout)
  7.    );

A javított tesztbrench (javitott tesztbrench.jpg) egy leírás szerinti javaslat, de nem világos a ciklusban pontosan mi történik, és miért jobb, mint a fordító által generált verzió.
(#) El_Pinyo válasza cassis hozzászólására (») Jún 18, 2012 /
 
Szia!
Nem tudom mit ronthattál el, nálam megy a szimuláció. Mondjuk az elején kicsit szenvedős volt a dolog, mert nem tudta a schematic-ba rajzolt verilog példányokat elérni, ezért újra kellett generáltatnom a schematic symbol-umokat, az implementation rádiógombbal való váltás után. Aztán fogtam és az XST szintézerrel szintetizáltam a design-t, majd átváltottam Simulation módba. Ekkor testbench hozzáadása után, amelyet a kapcsolas.sch- hoz generáltattam, meg lehet kezdeni a szimulációt. Természetesen ekkor a Design fülön belül a projekt hierarchiában ki kell választani a legfelső szintet, a testbench szintjét és csak ezután lehet a Process-ek közül rábökni a Simulate Behavior Model parancsra. Szerintem Neked ez a lagutolsó hiányzott. Felteszem a szimulációs eredményt, meg a testbenchet is. Egyébként van valami komolyabb oka, hogy a top level szinten kapcsolási rajzzal dolgozol HDL helyett?
(#) cassis válasza El_Pinyo hozzászólására (») Jún 18, 2012 /
 
Átgondolom amit írtál. az utolsó sorban lévő kérdésedre nem tudom a választ, mert az sem világos mit kell érteni top level szinten. A leírások csupán azt mondják válaszd ..ezt. Végeredményben csupán követtem ezen a téren a leírást.
(#) El_Pinyo válasza cassis hozzászólására (») Jún 18, 2012 /
 
A TOP level, mint azt a neve is sugallja a design hierarchia legfelsőbb szintje. Az egész hardver konfiguráció hierarchikus szervezésű. A modulok példányosíthatnak más modulokat és őket is példányosíthatják a magasabb szinten levő modulok. A top level modult nem példányosítjuk, kivéve testbench használatakor. A top szinten a moduldeklaráció jelei összhangban vannak az UCF file-ban levő NET-ekkel is, amely végső soron az FPGA kimeneteivel való összeköttetést biztosítja.
(#) Reggie válasza pajti2 hozzászólására (») Jún 19, 2012 /
 
Nem nagyon erheto, hogy mit szeretnel.
(#) Ven hozzászólása Jún 20, 2012 /
 
Sziasztok!

Most tettem fel a Webpack ISE 14.1-et SUSE linuxra. Generáltattam license file-t, rámutattam az XLCM-ben, ennek ellenére még mindig license hibát ír ki az Implement Design-nál (SPARTAN 3 es SPARTAN 3E-vel is próbálkoztam).
Error: Security:9c - No 'ISE' nor 'WebPack' feature version 2012.04 was available for part 'xc3s200'.
Mit nem csinálok jól?
(#) Reggie válasza Ven hozzászólására (») Jún 22, 2012 /
 
Kisebb meretu FPGA eseten is? Nezegettem forumokat, es irtak hasonlo hibarol, de mindenhol az volt a viszontvalasz, hogy a license telepitesevel lehet gond: Bővebben: Link
(#) Ven válasza Reggie hozzászólására (») Jún 22, 2012 /
 
Azt az infót kaptam, hogy 14.1 webpack nem támogatja a Spartan 3 családot. Amit nem egészen értek, mert régen, mikor még "komolyabban" foglalkoztam vele, akkor a 11.1 még támogatta.
(#) Ven válasza Reggie hozzászólására (») Jún 22, 2012 /
 
A license beállítást szerintem jól csináltam. A license HOST=ANY zavart ezért generáltattam még párat. Hiába adtam meg neki a host mac címét, azzal nem engedte generáltatni csak ANY-re.
(#) Reggie válasza Ven hozzászólására (») Jún 25, 2012 /
 
A 13.x meg tamogatja.
(#) Horv hozzászólása Júl 14, 2012 /
 
Sziasztok!
Nem rég kezdtem FPGA-val foglalkozni, és gondoltam neki kezdtek egy egyszerű 4bites ALUnak.
De valami nem akar rendesen működni, valamiért a kimenet 5. bitje mindig 1 és nem tudom mi lehet a probléma. Itt a kód eleje:
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. use IEEE.STD_LOGIC_ARITH.ALL;
  4. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  5.  
  6. entity main is
  7. port (
  8. nibble1, nibble2: in std_logic_vector(4 downto 0); -- Két 4-bites bementet
  9. muvelet: in std_logic_vector(3 downto 0); -- muvelet
  10. result: out std_logic_vector(4 downto 0)
  11. );
  12. end main;
  13.  
  14. architecture Behavioral of main is
  15. signal tmp: std_logic_vector(4 downto 0) := "00000";
  16. begin
  17.  
  18. ALU: process(nibble1, nibble2, muvelet, tmp) begin
  19. case muvelet is
  20.      when "0000" =>
  21.           tmp <= nibble1;
  22.           result <= tmp;
  23.      when "0001" =>
  24.           tmp <= nibble1 + nibble2;
  25.           result <= tmp;
  26.           result(4) <= tmp(4);
  27.      when "0010" =>
  28.           if nibble1 >= nibble2 then
  29.                tmp <= nibble1 - nibble2;
  30.                result <= tmp;
  31.           else
  32.                tmp <= nibble2 - nibble1;
  33.                result <= tmp;
  34.           end if;
  35.           result <= tmp;
  36.                                  -- logikai műveletek a két bemenettel, shift, stb..
  37.  
  38.      when others => result <= tmp;
  39.      end case;
  40. end process;
  41.  
  42. end Behavioral;


Tudnátok segíteni hol lehet a hiba?

Köszönöm előre
Üdv. Horv
(#) m.joco hozzászólása Júl 17, 2012 /
 
Hello

Egy 4 bites ALU kódját olvasgatom, de ezt a sort nem nagyon értem:
  1. -- res = nib1 + nib2 + 1, flag = 0
  2. Temp   <= std_logic_vector((unsigned("0" & Nibble1) + unsigned(not Nibble2)) + 1);

Nem értem, hogy ez ("0" & Nibble1) mit eredményez.
Üdv.
(#) v_zsolt válasza m.joco hozzászólására (») Aug 26, 2012 /
 
m.joco

A Temp hozzárendelő utasítás egy kivonást ad meg (kivonás egyik lehetséges módja a bit-szintű helyiértékes kivonás mellett).
A - B = (felírható) = A + (- B) ahol
a -B = 2's komplemens (B) = not (B) + 1 (LSB)
a not (B)-t szokás 1's kompelmens(B) nek is nevezni.
Azaz
A-B = A + not(B) + 1.

A fenti összefüggésben:
A:= nibble1
B:= nibble2

ahol Nibble1, Nibble2 std_logic vector típusok. Rajtuk a logikai műveletek igen, de aritmetikai műveletek nincsenek értelmezve (érdemes egy VHDL könyvet megnézned az adattípusokról. pl Aschenden.)

("0" & Nibble1) biztosítja azt, hogy előjel kiterjesztéssel Nibble1 biztosan pozitív legyen.
Mivel az aritmetikai összeadás integer tipusokon van értelmezve, ezért cast unsignedre történik először
Majd pedig az összeadás után, mivel Temp std_logic_vector alakú (én annak értelmezem), helyesen vissza kell cast-olni std_logic_vector típussá a teljes összeadott kifejezést.)

(x).
(#) v_zsolt válasza Horv hozzászólására (») Aug 26, 2012 /
 
Sziasztok,

Horv.
Nálad is kb. ott van a hiba, ahol az m.joco kerdese volt.
Aritmetikai muveleteknel integer tipus hasznalatos.
Tehát akár a feltételtől függően összeadsz, kivonsz stb. ott kell a cast-olás std_logic_vector(unsigned(nibble1) + unsigned (nibble2).
(érdemes megnézni a VHDL szintaktikájával, bevezetésével, szimulációval foglalkozó könyvet pl. Peter.J.Aschenden :
Bővebben: Link)

Aki viszont szintetizálható kódot is akar, tehát "nemcsak szimulálgatni", hanem ténylegesen FPGA-val dolgozni, annak a következő könyvet ajánlanám:
Bővebben: Link
Nálam bevált. Van VHDL, Verilog változata is.

(x)
(#) v_zsolt válasza Ven hozzászólására (») Aug 26, 2012 /
 
Ha sima Spartan III-as FPGA-t használsz akkor az alábbi doksi szerint 14.X alatt már nem támogatott.
(#) v_zsolt válasza Ven hozzászólására (») Aug 26, 2012 /
 
VEN
No mégegyszer valahova félrement.
Az alábbi doksi szeirnt, ha sima Spartan III_asat használsz, akkor ISE 14.x alatt már nem támogatott.
Bővebben: Link

a xc3s1500, illetve xc3s50 az Spartan III (ha a végén van 'e' pl. xc3s500e, akkor az már Spartan 3E-s, és támogatott).

Hogy miért. Kérdezni kell a Xilinx-et. Egyrész politika, az újabb pl. Spartan6 eszközeiknek eladása végett, másrész a telepítő csomag mérete csökkenhet, ha kiveszenek régi eszközöket, vagy inkább nem-változik, ha betesznek a régi FPGA-k helyett újakat.)

(x)
(#) Ven válasza v_zsolt hozzászólására (») Aug 27, 2012 /
 
Spartan 3E-t használok.
Még akkor írtam levelet a supportnak és ők válaszoltak, hogy a S3E nem is támogatott a Webpack-ban. Kicsit gyanús volt, mert még anno az egyetemen a webpack 11-et használtuk és az simán ment vele.
Na mindegy azóta innen segített nekem valaki, szóval működik.
(#) Ven hozzászólása Aug 27, 2012 /
 
Nézegettem Altera FPGA-kat és fejlesztő paneleket. Gyakorlatilag fele-, vagy harmad áron lehet beszerezni, mint a Xilinx eszközöket. Van valakinek tapasztalata Alterával kapcsolatban? Érdemes lehet megfontolni az áttérést?
(#) m.joco hozzászólása Aug 28, 2012 /
 
Hello
Xilinx ISE-ben történő szintetizáláskor úgy tudom ignorálva vannak a process-ek érzékenységi listái. Ez azt jelenti, hogy azt kell feltételezni, hogy a process-ben lévő összes olvasott jel változása beindíthatja a process-t?
Üdv.
(#) v_zsolt válasza Ven hozzászólására (») Aug 28, 2012 / 1
 
szia Ven,

KB 1.5 éve használok Altera FPGA-kat is (kizárólag Cyclone III, Cyclone IV sorozatokat). Áruk ahogy én látom kedvezőbb a Xilinx-énál, viszont a technológiát tekintve kisebb lemaradásban vannak általában (pl. az ARM hard-proc maggal integrált Cyclone V-ös eszközök később jöttek ki, mint a Xilinx Zync EPP platformok).

Áttérésnél érdemes először megvizsgálni, mire is akarod használni.

HW:
Tanuló, hobbi szinthez található több kártya is. Egy kis, kompakt kártya pl:
BeMicro néven. Nem kell elájulni tőle, de ami az ismerkedéshez kell van rajta. Ráadásul Ethernettel. És nem kell külső programozó eszköz sem, csak a programozó SW.
Bővebben: Link

Komolyabb feladatokra, esetleg fejlesztési célra érdemesebb nagyobb kártyát (ha lehet inkább Cyclone IV-et a III-as sorozat helyett) választani. Az Arria IV, Stratix IV FPGA sorozatok viszont meglehetősen drágák, de már kaphatóak a V.-ös változatok is mindegyikből).

Nagyon sok kártyánál van szabványos csatlakozójú külső bővítési lehetőség, pl. HSMC foglalattal.
Tehát ha a kívánt funkció még sincs a választott kártyán, akkor egy HSMC add-on board-al, vagy saját HSMC csatlkakozójú PCB-vel minden megoldható
Boardok:
Bővebben: Link

SW:
Quartus II fejlesztő rendszer. Teljes változata: Subscription Edition Software néven fut.
Van 30-napos trial valtozata, és Student változata is Web Edition néven.
A legnagyobb erőssége a moduláris-hierarchikus tervezés, amely 2 verzióval korábban (10.0-s változatban) QSys néven jött be. Ebben a Xilinx nagy elmaradásban van (bár úgy tudom Xiilinx Vivado-ban történik ez irányban lépés)

ModelSim: szerencsére a ModelSim Altera változat is megtalálható, sőt van ModelSim Starter változat is, oktatási, tanulási célokra.

IP core:
Az Altera esetén is sok ingyenesen elérhető IP core van, és talán valamivel jobban is állnak (CoreGen-hez hasonló generálható MegaFunction néven, vagy Xilinx EDK IP hez hasonló QSys IP-ként).
pl. Alteránál komplett Video feldolgozó lánc már régóta beépíthető, amelyre a Xilinx még csak 3-4 modult adott ki a legújabb rendszerében.

DOC:
Altera specifikációk általában megfelelőek, sok esetben viszont meglehetősen régiek, vagy elavultak. A Xilinx ebben sztem jobb.


Összességében a legjobb lenne Xilinx alapú eszközökkel Altera Quartus-Qsys-ben tervezni Xilinx dokumentációk alapján

Zs

(x)
(#) dpeti válasza v_zsolt hozzászólására (») Aug 28, 2012 /
 
"Összességében a legjobb lenne Xilinx alapú eszközökkel Altera Quartus-Qsys-ben tervezni Xilinx dokumentációk alapján"

Igen, ez egy jó meglátás

+A P&R algoritmusaikat is lassan portolhatnák GPU-ra valamilyen módon, biztosan lehetne benne találni olyan gyakran végrehajtott párhuzamosítható kódrészleteket, amivel a pár órás routolást le lehetne csökkenteni.
(#) Ven válasza v_zsolt hozzászólására (») Aug 29, 2012 /
 
Üdv!
Köszi a felvilágosítást.
Amit egyelőre nézegettem az a Cyclone 2-4 és csupán hobbi célra használnám.
Igazából, amire tényleg akarom használni, teljesen mindegy, hogy Spartan vagy Cyclone. Azt nem tudom eldönteni, hogy átállásra befektetett idő mennyire térülne meg az ár különbségben.
Következő: »»   30 / 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