Fórum témák

» Több friss téma
Fórum » CPLD, FPGA - Miértek, hogyanok
Lapozás: OK   35 / 49
(#) lenart.j hozzászólása Ápr 12, 2013 /
 
Fejlemény van. Szivat engem ez a Nexys2. Sikerült végre meghajtanom a vonalCCD-t, sikerült "képet" kicsalni belőle (igaz egyelőre csak a szkópon látom, de már jó), sőt, egy megfelelő optikával sikerült képet is fókuszálnom rá és tökéletes, jobban működik, mint a 3000EUR-os gyári vonalkamera
Simán kihagytam a szintillesztőt és az FPGA 3.3 V-os jeleit raktam a CCD-re és működik így is (bár az adatlap szerint a 'H' szint min. 4.5 V kéne hogy legyen).
Viszont, hogy ne legyen teljes az örömöm, újabb hiba van. Úgy tűnik a Nexys2-őn levő Flash (xcf04s) meghalt. Impact-ból az FPGA-t tudom programozni, működik is a program, viszont a platform flash-re nem tudok tölteni semmit. Ha "Program"-ot nyomok rá, akkor az "Erasing" és a "Programming" lefut, aztán a "Verifying" hibát dob (Verifying device...Failed at address, 0) (próbáltam több különböző .mcs filet is, tehát nem a file rossz). Az is érdekes, hogy először csak nem sikerült a feltöltés, rányomtam mégegyszer akkor megcsinálta. Aztán már csak ötödszörre, aztán mostmár egyáltalán nem.
Ilyen létezik ?
A hozzászólás módosítva: Ápr 12, 2013
(#) eltexto válasza lenart.j hozzászólására (») Ápr 12, 2013 /
 
S3 board-nál nálam akkor volt ilyen, amikor a mode jumperek nem megfelelően álltak. Látta mindkét eszközt, de hibásan írta az FPGA-t. De, gondolom a jumpert átállítottad.

Üdv. Zoli
(#) lenart.j hozzászólása Ápr 17, 2013 /
 
Sziasztok! Kicsit OFF a dolog, de végülis az FPGA+vonalCCD projekthez kell. Van végre rendes kimenő jelem a vonalCCDről. A kimenet egy analóg jel, fekete pixelnél kb. 5.2V, fehérnél kb. 2.2V. Mivel engem csak a fekete és fehér pixelek érdekelnek, azt találtam ki, hogy megspórolom a gyors ADC-t (7.5 MHz a képpontfreki) és ebből a jelből csinálok olyat amit az FPGA 3.3V-os logikai jelnek vehet, vagyis a magas szintet 2.0-3.3V közé, az alacsonyat 0.8V alá kéne csökkenteni. Ez szerintetek működhet ? Mivel még mindig nem vagyok villamosmérnök érdekelnének ötletek, hogy ezt hogyan tudnám egyszerűen elérni. Első próbának sorbakötöttem vele diódát (1N4148 volt kéznél) a jelszinten nem sokat csökkentett, viszont kisimította a jelet. Két LED után már egész jó a helyzet, 1.8V és 1.2V, viszont az 1.8V kevés magasnak, az 1.2 meg sok alacsonynak (és "laposodik" is a jel), de egy próbának jó volt.
(#) tursaba válasza lenart.j hozzászólására (») Ápr 17, 2013 /
 
Van negatív feszültséged a szinteltoláshoz ?
(#) lenart.j válasza tursaba hozzászólására (») Ápr 17, 2013 /
 
Nincsen sajnos. Legfeljebb csinálok valahogy.
(#) jule78 hozzászólása Ápr 18, 2013 /
 
szaisztok!
az lenne a kérdésem hogy valaki foglalkozik(ott) FPGA Bitcoin mining-el?épített valaki bitcoin bányászatra való fpga-t?mennyire reális egy ilyet megépíteni?

vmi ilyenre gondolok:
http://www.ztex.de/usb-fpga-1/usb-fpga-1.15y.e.html

minden segítséget előre köszönök!

Üdv. Gyuszi
(#) _vl_ válasza jule78 hozzászólására (») Ápr 18, 2013 /
 
Abszolút reális.
Elsétálsz egy profi gyártóhoz, elkészítteted velük a 8-10-12 rétegű NYÁK-ot (szerintem a panel méretei alapján kb. 300-800EUR lesz, ha csak egy darabot kérsz), veszel a darabonként vagy 200-300EUR árú Spartan6-osból négyet, majd keresel BGA forrasztására berendezkedett céget, aki a fentiekhez képest valószínűleg már potom pénzért felforrasztja neked a négy BGA tokot. A többi sallang végülis ezekhez képest már semmiség.
Szerintem a hülyének is megéri
(#) jule78 válasza _vl_ hozzászólására (») Ápr 18, 2013 /
 
én vmi low-cost-ra gondoltam,amit egy hozzáértő szakember megépítene.

egy példa:
https://bitcointalk.org/index.php?topic=44891.0

ha valakit mégis érdekelne a téma kérem keresen meg!

Üdv. Gyula
(#) tursaba hozzászólása Máj 15, 2013 /
 
Sziasztok !
Mivel nem szerettem volna blindre kicserélni a Xc95144XL-t, így csináltattam egy próbanyákot a kísérletezéshez.
Amihez segítséget szeretnék kérni : látszólag kommunikál a JTAG-on keresztül az XC, de valami nem jó.
Mellékelem a programozó képet és a szkóp ábrákat.
A programozó képen a Device ID code mást kap, mint amit vár.
Mi lehet a probléma ? A kommunikáció megy.
Köszönök minden segítséget.
Üdv.: Sanyi
(#) tursaba hozzászólása Máj 15, 2013 /
 
A képek nem mentek át.
Az egyik.

Üdv.: Sanyi
(#) tursaba válasza tursaba hozzászólására (») Máj 15, 2013 /
 
A file kiterjesztést elfelejtettem.
Üdv.: Sanyi
(#) lenart.j hozzászólása Máj 23, 2013 /
 
Egy szimpla állapotautomatával meggyűlt a bajom, pedig láttam már néhány dolgot, lehet hogy csak az ISE szórakozik ? Már totál leegyszerűsítettem, hogy kiszűrjem mi a gond, de még mindig nem azt csinálja amit akarok.
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3.  
  4. entity fsm1 is
  5.     Port ( BTN0 : in  STD_LOGIC;
  6.            BTN1 : in  STD_LOGIC;
  7.            BTN2 : in  STD_LOGIC;
  8.            BTN3 : in  STD_LOGIC;
  9.            WR : out  STD_LOGIC;
  10.            CLK : in  STD_LOGIC;
  11.            D : out  STD_LOGIC_VECTOR (7 downto 0);
  12.            LED : out  STD_LOGIC_VECTOR (7 downto 0));
  13. end fsm1;
  14.  
  15. architecture Behavioral of fsm1 is
  16. type state_type is (IDLE, SETUP, DATA_IN, BUSY, DATA_OUT, WRITEOUT);
  17. signal CUR_STATE: state_type := IDLE;
  18. signal NEXT_STATE: state_type := IDLE;
  19.  
  20. begin
  21.         process(CLK)
  22.         begin
  23.                 if rising_edge(CLK) then
  24.                         CUR_STATE <= NEXT_STATE;
  25.                         case CUR_STATE is
  26.                                 when IDLE =>
  27.                                         LED(0)<='1';
  28.                                         if BTN0 = '1' then
  29.                                                 NEXT_STATE <= SETUP;
  30.                                         end if;
  31.                                 when SETUP =>
  32.                                         LED(1) <= '1';
  33.                                         if BTN1 = '1' then
  34.                                                 NEXT_STATE <= DATA_IN;
  35.                                         end if;
  36.                                 when DATA_IN =>
  37.                                         LED(2) <= '1';
  38.                                         if BTN2 = '1' then
  39.                                                 NEXT_STATE <= BUSY;
  40.                                         end if;
  41.                                 when BUSY =>
  42.                                         LED(3) <= '1';
  43.                                         if BTN3 = '1' then
  44.                                                 NEXT_STATE <= DATA_OUT;
  45.                                         end if;
  46.                                 when DATA_OUT =>
  47.                                         LED(4) <= '1';
  48.                                         NEXT_STATE <= WRITEOUT;
  49.                                 when WRITEOUT =>
  50.                                         LED(5) <= '1';
  51.                                         NEXT_STATE <= IDLE;
  52.                                 when others =>
  53.                                         NEXT_STATE <= IDLE;
  54.                 end case;
  55.                 end if;
  56.         end process;
  57. end Behavioral;


BTN(0,1,2,3) nyomógomb, LED(7:0) 8 db. LED. Az hogy CLK-ra szinkron az csak azért van, mert majd a végleges helyén is úgy lesz.
Az eredmény: indulás után azonnal világít a LED0,1,2,4,5. De pl. a LED3 nem... és egyik gombra sem reagál.
Nem látom a fától az erdőt ?
(#) lenart.j válasza lenart.j hozzászólására (») Máj 23, 2013 /
 
UPDATE: az hogy a LED3 nem ment az egy elírás volt az ucf-ben, gombokra mostmár reagál, viszont bekapcsoláskor minden LED világít, vagyis minden állapoton végigfut, nem vár a gombokra. Utána már úgy működik ahogy kell, de induláskor miért fut végig ?
(#) Sasmadár válasza lenart.j hozzászólására (») Máj 23, 2013 /
 
Szia!
A nyomógombok alaphelyzetben milyen szinten vannak? Ha bekapcsolás után minden LED világít honnan tudod, hogy utána jól működik a gombokra? Nem látom hol kapcsolod ki a LED-eket.
(#) El_Pinyo válasza lenart.j hozzászólására (») Máj 23, 2013 /
 
A LED regiszter nincs inicializálva, szerintem ez okozhatja a hibás indulási állapotot. A másik dolog, hogy nem tudom szándékos-e, de minden állapotban minimum 2 órajelciklust tölt az állapotgép.
(#) lenart.j válasza Sasmadár hozzászólására (») Máj 24, 2013 /
 
A nyomógombok alaphelyzetben 0 szinten vannak (van lehúzó ellenállás a panelen). Onnan tudom, hogy utána működik, hogy kicsit változtattam a kódon, DATA_OUT állapotban kikapcsolja mindet.
(#) lenart.j válasza El_Pinyo hozzászólására (») Máj 24, 2013 /
 
Én is gondoltam erre, de egyrészt úgy tudom 0-ra inicializálódik, másrészt csak azok a LED-ek világítanak, amiket valamelyik állapotban felkapcsolok, a többi nem.
A másik dolgon elgondolkodtam. Miért is tölt mindenhol min. 2 ciklust ?
(#) El_Pinyo válasza lenart.j hozzászólására (») Máj 24, 2013 /
 
Mert az FPGA-ban nem szekvenciális a végrehajtás, hanem parallel. Illetve megoldható, hogy egy értékadás blokkoló legyen, de Te nem azt használtad és nem is nagyon ajánlott a blokkoló értékadás használata. Elmagyarázni elég nehézkes, de szimulációval magad is kiderítheted. Azért leírom, talán érthető lesz. Tegyük fel, hogy mindegyik kapcsoló logikai magas szintet ad (if ágak aktívak). Ekkor a kezdetben IDLE állapotban levő CUR_STATE regiszter az órajel felfutó élének hatására meg fogja kapni a NEXT_STATE IDLE állapotát, ezzel párhuzamosan az IDLE case ágban a NEXT_STATE megkapja a SETUP állapotot. Ekkor az IDLE ág egyszer lefutott. A következő órajelre a CUR_STATE még mindig IDLE állapotban van, de SETUP-ba fog kerülni, de mivel IDLE a kiiindulása, ezért újra belemegy az IDLE case ágba. Csak a következő felfutó élnél lesz SETUP-ba. A többi állapotnál ugyanez. Kikerülhető a probléma, ha a NEXT_STATE helyett a CUR_STATE regiszter értékét módosítod a case ágakban.
(#) lenart.j válasza El_Pinyo hozzászólására (») Máj 24, 2013 /
 
Köszönöm, igaz. Pedig már egész jól haladtam a szekvenciális gondolkodás felülírásában, csak most megint mikrovezérlővel is kell foglalkoznom FPGA mellett és keveredik.
(#) El_Pinyo válasza lenart.j hozzászólására (») Máj 24, 2013 /
 
Igen, számomra is ismerős ez az érzés
(#) lenart.j hozzászólása Máj 28, 2013 /
 
Sziasztok! FFT-t csinált már valaki Xilinx környezetben ? Konkrétan: Xilinx LogiCORE Fast Fourier Transform v7.1, Spartan 3E, de ha bármi hasonlóval van tapasztalat, jöhet. Tesztadatokat már sikerült megetetni vele, az eredmény is kijött, csak fura.
(#) lenart.j válasza El_Pinyo hozzászólására (») Máj 28, 2013 /
 
Továbbra is fennáll, hogy induláskor úgy tűnik minden case ág "lefut". Ez hogy lehet ?
(#) El_Pinyo válasza lenart.j hozzászólására (») Máj 28, 2013 /
 
Korábban már említettem, hogy a LED regisztert inicializálni kellene. Nem tudom, hogy ezt megtetted-e, vagy egyáltalán segítene-e a gondon. Milyen hardveren próbálkozol? Amit még meg lehet tenni, hogy szimulátorral (ISim - WebPack ISE tartalmazza) meglesni a jeleket, hátha könnyebben rálelsz a hibára, esetleg egy ChipScope IP-t fordítani a projektbe és azzal leskelődni. (Én főleg Verilogban szoktam kódolni, annyira nem ismerem a VHDL-t)
(#) gtk hozzászólása Máj 29, 2013 /
 
Sziasztok !

Cpld -t (xc9572xl) szeretnek programozni regebben epitett lpt -s jtag kabellal es sajnos nem mukodik.

A JTAG kabel eseten, amikor a "cable setupra" megyek az impact -ban, akkor a csatlakozon levo osszekoteseket (mint visszacsatolas?) figyeli a szoftver, vagy mar kommunikal is a cpldvel?

Sajnos a cable setupnal elakad a dolog. Termeszetesen regebben mukodott.

JTAG kabel: Bővebben: Link
A hozzászólás módosítva: Máj 29, 2013
(#) lenart.j válasza El_Pinyo hozzászólására (») Máj 29, 2013 /
 
Próbáltam, nem segít. A hardver egy Digilent Nexys2, Spartan 3E-1200k FPGA-val. Kicsit változtattam a kódon és fura dolog látszik. A kód:
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. entity fsm1 is
  4.     Port ( BTN0 : in  STD_LOGIC;
  5.            BTN1 : in  STD_LOGIC;
  6.            BTN2 : in  STD_LOGIC;
  7.            BTN3 : in  STD_LOGIC;
  8.            CLK : in  STD_LOGIC;
  9.            LED : out  STD_LOGIC_VECTOR (7 downto 0));
  10. end fsm1;
  11.  
  12. architecture Behavioral of fsm1 is
  13. type state_type is (IDLE, SETUP, DATA_IN, BUSY, DATA_OUT, WRITEOUT);
  14. signal CUR_STATE: state_type := IDLE;
  15. signal cnt1: integer := 0;
  16.  
  17. begin
  18.         process(CLK)
  19.         begin
  20.                 if rising_edge(CLK) then
  21.                    if cnt1 > 50000000 then
  22.                         case CUR_STATE is
  23.                                 when IDLE =>
  24.                                         LED(0)<='1';
  25.                                         if BTN0 = '1' then
  26.                                                 CUR_STATE <= SETUP;
  27.                                         end if;
  28.                                 when SETUP =>
  29.                                         LED(1) <= '1';
  30.                                         if BTN1 = '1' then
  31.                                                 CUR_STATE <= DATA_IN;
  32.                                         end if;
  33.                                 when DATA_IN =>
  34.                                         LED(2) <= '1';
  35.                                         if BTN2 = '1' then
  36.                                                 CUR_STATE <= BUSY;
  37.                                         end if;
  38.                                 when BUSY =>
  39.                                         LED(3) <= '1';
  40.                                         if BTN3 = '1' then
  41.                                                 CUR_STATE <= DATA_OUT;
  42.                                         end if;
  43.                                 when DATA_OUT =>
  44.                                         LED(4) <= '1';
  45.                                         CUR_STATE <= WRITEOUT;
  46.                                 when WRITEOUT =>
  47.                                         LED(0) <= '0';
  48.                                         CUR_STATE <= IDLE;
  49.                                 when others =>
  50.                                         CUR_STATE <= IDLE;
  51.                          end case;
  52.                
  53.                     else
  54.                         cnt1 <= cnt1 + 1;
  55.                     end if; --cnt1
  56.                 end if; --rising_edge(clk)
  57.         end process;
  58. end Behavioral;

Ami történik: induláskor világít a LED1-4 (a 0. nem), vagyis olyan mintha minden case ág lefutott volna, aztán 1 mp. (50M óraciklus) elteltével a 0. is bekapcsol. Szóval induláskor minden case végrehajtódik, pedig a "cnt1>50000000" elvileg nem igaz. Induláskor egy pillanatig minden logikai feltétel igaz ? Ha az elején cnt1 = 50000000 a feltétel akkor is úgyanaz történik. Szimulátorral majd este próbálkozok.
A hozzászólás módosítva: Máj 29, 2013
(#) gtk hozzászólása Jún 2, 2013 /
 
Sziasztok !

Sehogy sem tudom elinditani a korabban korrektul mukodo lpt-s JTAG interfeszt (HC125).
Arra emlekszem hogy az lpt port szama korul volt valami problema evekkel ezelott, ezt most is kulso valtozoval atirtam 378h-ra, de nem oldotta meg a problemam.
Valaki foglalkozik meg ilyesmivel ? Van meg valami rejtely XP alatt esetleg amiert nem mukodhet ?
(#) dpeti válasza gtk hozzászólására (») Jún 2, 2013 /
 
hogyan próbálod elérni?
elvileg xp-alatt már nem elérhető direkt címen, hanem kernel-mode driver kell hozzá... ehhez van 1-2 3rd party dll, amint tudsz includeolni, de javítsatok ki, ha tévednék... (elég régen volt már ez )

szerk: itt irnak rola:http://www.lvr.com/parport.htm
A hozzászólás módosítva: Jún 2, 2013
(#) gtk hozzászólása Jún 2, 2013 /
 
Szia ! Alabb az impact kimenete (ise webpack).

Idézet:
„// *** BATCH CMD : setCable -port lpt1
Connecting to cable (Parallel Port - LPT1).
Checking cable driver.
Driver windrvr6.sys version = 8.1.1.0. WinDriver v8.11 Jungo (c) 1997 - 2006 Build Date: Oct 16 2006 X86 32bit SYS 12:35:07, version = 811.
LPT base address = 0378h.
ECP base address = FFFFFFFFh.
Cable connection failed.”


Mar ket cpld-vel probalkoztam, kizart hogy mindketto rossz legyen, sot biztos hogy egyik sem hibas. A jtag is ESD mentes helyen volt tarolva.
(Toroltem az lpt portszamra vonatkozo globalis valtozot, mert anelkul is rendben van a portszam.)
A hozzászólás módosítva: Jún 2, 2013
(#) dpeti válasza gtk hozzászólására (») Jún 2, 2013 /
 
ja értem. Előző hozzászólásom akkor tárgytalan, mert a windriver lpt az kernel-mode.
még gondolkozom...
(#) eltexto válasza gtk hozzászólására (») Jún 3, 2013 /
 
Szia!

Valami nem jó. Az ECP-n is kell valami értelmes IO címnek lennie. Ugyanaz a géped mint régen? BIOS-t nem nézted, jó az LPT beállítása? Hányas ISE ? Nekem most valami ilyen van:

Idézet:
„Connecting to cable (Parallel Port - LPT1).
Checking cable driver.
Driver windrvr6.sys version = 10.2.1.0. WinDriver v10.21 Jungo (c) 1997 - 2010 Build Date: Aug 31 2010 X86 32bit SYS 14:35:41, version = 1021.
LPT base address = 0378h.
ECP base address = 0778h.”


Eszkökezelőben kiírja hogy ECP Printer Port(LPT1) ?

Üdv. Zoli
Következő: »»   35 / 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