OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 28.03.2024, 11:44

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 18 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 28.05.2020, 21:09 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
Ahoj všem,

k vánocům jsem si udělal radost a koupil si hezkou hračku - DE10 Nano board - primárně jako simulátor retro strojů. Ale po nějakém čase jsem si říkal že bych se mohl i něco naučit a začal jsem s prvními pokusy s verologem a postupně se prokousávám dál a dál. Co jsem ale zatím nedokázal je využít SRAM ne DRAM. Určitě to nebude složité, ale zde si již nemohu věc nasimulovat v ModelSimu a nevím co přesně dělám špatně. Chtěl jsem udělat něco jednoduchého, jak třeba nahrát do RAM nějakou 1 barevnou bitmapu (bez formátu jen 0/1) a tu pak nechat vykreslovat na obrazovku, ale nedaří se mi.

Mohl by mi někdo poradit? Nějaký jednoduchý příklad by mi pomohl. Na webu jsem nic jednoduše (pro mě) pochopitelného nenašel.

Díky
Petr

Ještě doplním že se o to snažím v nějakém template přímo od MISTERu, kde již na to mají připraveno něco v základním modulu obalané nějakým frameworkem. Snad by to mělo být jednodušší?


Kód:
//High latency DDR3 RAM interface
      //Use for non-critical time purposes
      output        DDRAM_CLK,
      input         DDRAM_BUSY,
      output  [7:0] DDRAM_BURSTCNT,
      output [28:0] DDRAM_ADDR,
      input  [63:0] DDRAM_DOUT,
      input         DDRAM_DOUT_READY,
      output        DDRAM_RD,
      output [63:0] DDRAM_DIN,
      output  [7:0] DDRAM_BE,
      output        DDRAM_WE,
   
      //SDRAM interface with lower latency
      output        SDRAM_CLK,
      output        SDRAM_CKE,
      output [12:0] SDRAM_A,
      output  [1:0] SDRAM_BA,
      inout  [15:0] SDRAM_DQ,
      output        SDRAM_DQML,
      output        SDRAM_DQMH,
      output        SDRAM_nCS,
      output        SDRAM_nCAS,
      output        SDRAM_nRAS,
      output        SDRAM_nWE,


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 29.05.2020, 00:36 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Bohuzel tato deska je uz hodne slozita a tak trivialnich navodu asi mnoho nenajdes. Ja bych se na tvem miste podival na projekt https://github.com/nhasbun/de10nano_vgaHdmi_chip a kdyz by to fungovalo, tak misto tlacitek bych tam dal nejaky generator znaku a nasledne i zobrazeni ulozeneho obrazku z pameti.

Jinak pocitej s tim ze DDR3 budes muset ovladat pres radic od intelu a nebude to vubec trivialni. Radeji bych na tvem miste radeji zkusil ulozit obrazek do fpga ram. Obecne tem dvou pameti se rika blokova a distribuovana. Distribuovana je ta, co se dela primo z hradel - ale to si krades zdroje a neudelas ji mnoho. Druha blokova je specializovana pamet uvnitr FPGA u tohoto kitu ma velikost "5,570 Kbits embedded memory". Pripravis si data do externiho souboru na disku. Pak vytvoris pres IP pamet a reknes ze ji chces inicializovat. Prekladac vezme (napr. MIF soubor) z tveho disku a presne tento obsah bude mit pamet pri dokonceni inicializaci fpga po zapnuti. Pak logicky tam udelas nejaky citac a budes bitove vycitat pamet a posilat to do video subsystemu.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 29.05.2020, 20:16 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
shark800 píše:
.... Co jsem ale zatím nedokázal je využít SRAM ne DRAM. Určitě to nebude složité, ale zde si již nemohu věc nasimulovat v ModelSimu a nevím co přesně dělám špatně....


Pokazim ti radost. SDRAM su zlozite. Je to najzlozitejsia RAM ktoru mozes mat pripojenu. Quartus ma v sebe nejake kniznice a v ramci nich je tam aj SDram kontroler. (IP manager ci tak nejak sa to v quartuse vola)

Ram ma niekolko stavou medzi ktorimi musis prepinat a ked to nespravit sak zacnu zabudat .... (https://courses.cs.washington.edu/cours ... /SDRAM.pdf Strana 5 pre vystrasenie)

alebo sa pozri na opencores.org (https://opencores.org/projects/ddr3_sdram)

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 30.05.2020, 09:06 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
Díky za odpovědi. A musím přiznat že vystrašený (trochu) jsem a zároveň jsem rád že jsem si s tím začal hrát s použitím toho zmiňovaného frameworku. Z něj na mě totiž kouká již RGB, hodiny, PS2 a snad i něco čím bych mohl se dostat k té RAM. Asi to není tak že by mi to umožnilo (donutilo :D) proniknout víc do hloubky, ale zatím s tím začínám a tohle mi zatím stačí ... Generování pruhů na VGA a HDMI jsem takto již zvládl.

Prozatím zkusím využít distribuovanou paměť. Potřebuji pár kilo a i když mě quartus při prvním pokusu vynadal že je toho moc, tak při probírání jiných zdrojáků jsem zahlídl užití 64k! Asi tam bude někde nějaký přepínač ....

Ještě jednou díky za rady
Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 24.11.2020, 18:29 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
Tak a už jsem tu s tou propadenou pamětí zas. V Quartus 17 jsem si udělal pro desku z číny jednoduchoučký kousek kódu abych to pochopil a odladil.
Mám tu jedny rychlé hodiny (clk) a pak jedny co jsou cca 1Hz (clk_sys). Pak tam mám naklikanou 1-portovou RAM a do ní posílám adresu (trAddress) a přečenou hodnotu (trdDOut) si nechávám spolu s adresou zobrazit na 4x7 segmentovce .

Doteď ok. Pak ale chci když stlačím tlačítko S1 aby se do aktuální buňky paměti zapsala hodnota trDIn a ta je náhodou stejná jako adresa. A čekám že při příštím cyklu už místo nuly uvidím to co jsem tam zapsal, tj. stejnou hodnotu jako je adresa.

ALE NEFUNGUJE MI TO :suicide: Co dělám blbě? Jestli to není poznat z vloženého kousku kódu mohu nasdílet celý projekt.

Jo a ještě podotknu že to dělám v Quartus 17 a někdy se mi zobrazí hlášení "Upgrade IP required" nad tou IP pamětí. Po ťuknutí mě něchá v editoru projet definici paměti, napíše success, ale ta hláška nezmizí. Nemůže to být i tímto?

Díky za jakoukoli pomoc
Petr


Kód:
//---------------------------- testram ----------------------------------

wire trClock = clk;
reg [7:0] trAddress = 1;
wire [7:0] trdDOut;
wire trWrEn = ~s1;   
wire [7:0] trDIn = trAddress;


testRAM testRAM(
   .clock(trClock),
   .address(trAddress),
   .data(trDIn),
   .wren(trWrEn),
   .q(trDOut)
);



assign show = { trAddress, trdDOut };
assign led1 = trCnt[0];
assign led2 = 1;
assign led3 = 1;
assign led4 = trWrEn;
   
always @(posedge clk_sys)
begin
      if (trAddress < 10)
      
         trAddress <= trAddress + 1;
      else
         trAddress <= 0;
end


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 24.11.2020, 21:29 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
Tak aktualizace: Prohledal jsem web a našel update Quartu! Nainstaloval, nechal upgradovat IP a .... stejně to nechodí :cry:


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 24.11.2020, 22:53 
Offline
Pan Štábní

Registrován: 11.11.2013, 10:29
Příspěvky: 1198
Has thanked: 359 times
Been thanked: 304 times
Obavam se, ze rady stylu, ze je to slozite (at uz deska nebo pouziti SDRAM) ti moc platne nebudou. Predpokladam, ze jsi si prosel https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1046&PartNo=4, pokud to je ta deska, co mas? Tam zadny priklad neni? Ja sice neznam Verilog a VHDL jen castecne. Co je na pouziti FPGA uzasne je, ze muzes oba jazyky michat dohromady a potom taky, ze muzes pouzit cizi modul aniz by jsi vedel, co je uvnitr a jak to funguje. Pokud je externi pamet tohoto kitu v nejakem projektu pouzita, tak si ho odtamtud vem a pouzij (rozumej pochop a pouzil) jen jeho rozhrani. Veskera funkcionalita bude schovana uvnitr a nemusis se nechat odradit nejakymi recmi o radicich, refresich, stavovych automatech atd.
U te desky popisuji priklad na kresleni Mandelbrotovych mnozin a tvrdi tam, ze pouziva SDRAM jako buffer na ulozeni obrazovych dat. Daji se najit zdrojove kody? Tam musi byt funkcni pouziti toho bloku. Nebo nejaky jiny priklad primo od Altery/Intelu.
Nebo zkousel jsi proklad "DDR3_RTL"? A funguje to?
Sam jsem to tak vyzkousel na jinem kitu a fungovalo to. IMHO vubec nezalezi na tom, jak je ta externi soucastka slozita.

Pozn.: Nemyslel jsis, ze updatem vyvojoveho prostredi se to podari rozchodit, ze? ;-)

_________________
Sharp MZ-800++, MZ-1500++, MZ-2500++, SM-B-80T, MK-14_replica, HP-85, ZX-80+replica, ZX81, ZX-Spectrum+replica++, PMI-80+replica, SAM coupe++, PMD-85-2A+3, Didaktik-M, SORD-M5, TI-57, TI-59+PC-100, TI99/4A, ZetaV2+ppp, ZX-uno, Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 24.11.2020, 23:09 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
No po pravde jsem chtel zkusit neco jednodussiho - RAM generovanou na chipu pres MEGAFUNKCI. Vsude ji popisuji a jedine cemu se venuji je u dual port ram tak co prectu kdyz na druhem portu se snazim psat na stejnou adresu. Nikde jsem nevidel zadne timing diagramy co by rikaly ze se musi dodrzet nekolik taktu hodin nez se to zapise. Ale i kdyby tak v tom co jsem si udelal jako priklad tak hodiny jsou cca 10 Hz a adresu menim po 10 ti taktech. Casu by snad melo byt hoodne.

No a i desku jsem zmenil na ALTERA Cyclone IV EP4CE6, ale to by melo byt jedno. J

Jo a opravdu jsem doufal ze ta intelovska megafunkce po aktualizaci jejich SWzacne chodit - ale nezacala. Myslel jsem na nejakou jejich chybu v te "knihovne" pro toto zarizeni (Cyclone IV).

Ted to neni o zadnem extra HW mimo samotne FPGA. Melo by to byt to zakladni. Tak zakladni ze se tomu nikde nevenuji. ALE ME TO NECHODI A NEVIM CO DELAM BLBE :cry:

Nema nekdo sanci zkusit zkompilovat ten fragment u sebe a overit jestli to funguje nebo ne?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 25.11.2020, 08:18 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Podivej se na "wire [7:0] trDIn = trAddress;". Ty vlastne prirazujes do trDIn konstantu 1.

Podle mne by jsi mel udelat citac jak se bezne dela, napr.
https://www.intel.com/content/www/us/en ... unter.html
a nasledne dat externe z always "assign trDIn = cnt;" a "assign trAddress = cnt;"

Co se tyce pristupove doby pameti, tak zalezi jak je nastavene prostedi a co vyberes pri generovani ramky. Bezne je 1 takt nebo 2 takty. Osobne bych na tvem miste ale nepouzil tuto definici ale ramku bych generoval genericky. Kazde dobre prostredi to umi samo rozpoznat a pouzije to nejlepsi co muze. Dej si pozor, FPGA nema problem generovat synchronni pamet ale specialne Altera ma pri generovani asynchronni pameti dosti velkou nevyhodu oproti Xilinxu. Muj nazor je delat synchronni zapojeni. Jit cestou vyuzivat vnitrni BRAM. Muzes se inspirovat http://web.mit.edu/6.111/www/f2016/handouts/L12_4.pdf obrazek 12. Vsimni si ze write udelas za jeden takt. Ale cteni z pameti trva minimalne 2 takty. Prvni takt je zadani adresy a druhy tak je vlastni cteni dat.

Moje doporuceni pro pouziti ramky:
1) pouzit generickou ramku. Vyuzit toho ze prekladac ji umi rozpoznat.
2) pouzit BRAM
3) pouzit externi ram. Zde ale pozor. Radic DDR3 je slozity. DDR4 je nechutne slozity. Bohuzel originalni radic od Altery je take slozity. Ono to ma i logiku. Je potreba resit hodne stavu aby bylo mozne udelat treba cache, zprehazet operace atd. Proste pro zacatecnika to neni. Dalsi obrovska nevyhoda je ze nikde neni casova garance do kdy radic odpovi a proto bastliri starych pocitacu to radeji nepouzivaji. Take je nutno vedet ze DDR3 a DDR4 jsou vhodne pro burst prenos a ne pro prenos jednoho bajtu. Ne ze to nejde ale aby jsi precetl treba 128 bajtu a pak pouzil jen jeden, neni to co ocekavas.

Jinak kdyz ti nikdo jiny nepomuze tak napis a probereme to ale i ja nemam moc casu.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 25.11.2020, 09:37 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
Díky za odpověď! Ale vyvstalo mi několik otázek - a omlouvám se pokud jsou triviální, ale učím se to

Jaký je rozdíl mezi zápisy

Kód:
reg [7:0] trAddress = 1;
wire [7:0] trDIn = trAddress;


a
Kód:
reg [7:0] trAddress = 1;
wire [7:0] trDIn;
assign trDIn  = trAddress;


Měl jsem za to že první je jen zkrácená forma toho druhého?

Jinak tu RAM jsem si klikal v prostředí. Quartus nabízí něco čemu říká megafunctions a tam je jako jedna položka 1-port RAM. Je tam na výběr typ (z čeho to udělá), ale o časování tam není ani písmenko. Teda aspoň jsem to tam neviděl. Synchronní se udělat dá, ale se čtením jsem problémy neměl - dokonce se mi povedlo že když tu vygenerovanou paměť nechám naplnit ze souboru (inicializovat) tak to z tý ram normálně přečtu. Ale nic jsem nezapsal.

DDR3 a 4 jsem zatím odložil a zkouším to od jednoduššího.


A ještě jsem so nastudoval co je to BRAM - tedy něco co já si pro sebe nazval memory array. To mi fungovalo. Zapsal jsem do toho a zase přečetl bez problému. Jen mi Quartus toho nedovolil naalokovat 64k. Proto ty testy s altsyncram. A to nemůže být tak těžký, já tam někde musím dělat ukrutnou botu, ale nevidím kde :bang:

Koukám že jsem jako ten Colombo - a ještě k tomu counteru, ten to já mám v tom fragmentu se - podle mě - liší jen o konstantu kterou je inicializovaný. Jinak zbytek se mi **zdá** stejný - porovnání a nulování když ano - a nebo zvýšení o 1. Je ve verilogu takový rozdíl když to dám jako modul než když to hodím vše do jednoho?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 25.11.2020, 11:28 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Ber to tak ze ani v knizkach o Verilogu se nedozvis ze toto jde napsat:
reg [7:0] trAddress = 1;
wire [7:0] trDIn = trAddress;

Duvod je ten, ze ne kazdy prekladac to umi a chape to jako inicializaci REG (registru). U toho WIRE je to jeste horsi, protoze toto maji byt "vodice" a ty je davas na konstantu a tak vlastne zabranujes je menit. To umi jeste mene prekladacu. Spravne se toto ma delat pomoci reset signalu. To je bezne pouziti.

Sice se bezne rika ze "program" se preklada ale realne se mysli ze mas logicky obvod a pro ten delas syntezu a nasledne implementaci a pozdeji nechas udelat bitstream pro vlastni konecny fpga obvod. Zapomen na to co asi bezne delas v C. Treba to "(trAddress < 10)" je spatny zapis. U hradlovych poli by jsi mel pouzivat kombinaci (trAddress == 10-1), ta nema takove
naroky na zdroje.

Co se tyce prirazeni tak to se bezne dela pres assign. Pro zacatecnika je vhodne aby pouzival kod kde je reg_next a reg oddeleny. Az pokrocily uzivatel to muze davat do jednoho ale prijde tim o kontrolu prekladace v pripade ze to napise trosku jinak. Jinak je vhodne pochopit ze se nepise program ale ze prekladac se pokusi pochopit zapsanemu textu a ten prevede na logicke schema. Ne vzdy ale prekladac to bude chapat stejne jako programator - to samozrejme plati pro hodne slozite zapisy. Tim myslim ruzne indexy.

Co se tyce couteru tak https://www.intel.com/content/www/us/en ... unter.html je uz zapis pro pokrocileho programatora. Zacatecnik by mel spravne udelat jeste cnt_next.

Zkus tvuj priklad udelat tak aby jsi pouzil ty 4 prepinace a 8 diod co ma kit (https://cz.mouser.com/new/terasic-techn ... -nano-kit/). Pak nebude problem se na to podivat. Pak by bylo vhodne dat projekt treba do C:\fpga\testshark800 , zabalit a zverejnit. Ja mam nainstalovany "Quartus Prime 17.1".


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 25.11.2020, 11:54 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
Aha, já myslel že je to používaný zápis. Snad jsem ho viděl někde ve zdrojácích i MISTERu.

Na druhou stranu kdyby byl problém tam tak by mi to přeci nečítalo. A já na 7-segmentovce si zobrazuji trAdress a to funguje. A zkoušel jsem mít i trDIn jako registr s konstantou - je mi jedno co do tý buňky paměti zapíši - a stejně se z ní pak četla 0.

S rozdílem <> a == souhlasím, nějaké základy kombinačních obvodů mám ze školy a snad i chápu co se musí vystavět pro takové porovnání. Jen mi to bylo zde jedno , ale že to není dobře souhlasím.

Zkusím to přepsat na diody a přepínače. Sice nemám tuto desku, ale nějakého číňana, ale to je stejně jen kopie. A někde to vystavím a budu rád za radu! Používám Quartus Lite 17.0.

A ještě jsem uvažoval zkusit nainstalovat ještě jinou verzi - jestli jsem nevzal špatné instalační programy nebo něco.... Už skoro taková zoufalost. Něco jako když jsem se snažil udělat si "seriovou linku" - pouze out - a v jednom always bloku jsem dělil i hodiny i tahal za nožičku. A furt jsem přijímal něco jiného než jsem se snažil poslat. Pak jsem teprve poznal že "spagetty-code" se zde trestá vic než v C .... zkrátka jsem nedělil hodiny jak jsem chtěl a měl a zbytek toho porovnání to zpožďoval. Po rozdělení na 2 always to už chodí. Ještě že už jsem šedivej ..... :D


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 25.11.2020, 14:14 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Co se tyce toho zapisu tak vlastni citac je v pohode ale je to psane pro experta, zacatecnik to ma psat jinak.

Aby se ti menily data musis mit "assign trDIn = cnt;"

Co se tyce pameti. Tak trivialni malou pamet muzes udelat pomoci http://web.mit.edu/6.111/www/f2016/handouts/L12_4.pdf strana 3. Tu muzes cist okamzite. To je vlastne co ty ted chces. V realu jsou to pametove registy spojene pres multiplexor. Tato pamet se bezne dela z kombinacni casti FPGA. Pro bezne problemy starych pocitacu je ji zde hodne. Pro zacatecnika uplne idelalni.

Kdyz ale vis ze budes potrebovat vice pameti, tak je lepsi se podivat po te synchronni pameti. Treba ja realne pro to GDG na Sharpa pouzivam https://www.aliexpress.com/item/3296449 ... 82569341.7
Ma to 1,800Kb synchronni pameti (225KB - ale neni to uplne pravda). V te simuluji RAM, EPROM a VRAM. Zapis je okamzity, jak prijdou hodiny. Cteni ale musim udelat tak ze nejdrive musim dat na sbernici adresu, v dalsim taktu muzu cist data. Pri generovani ramky je mozno rici zda na vystupu bude buffer, to samozrejme udela zpozdeni ale soucasne zvetsi maximalni frekvenci hodin.

Treba aktualne podle mne je https://www.aliexpress.com/item/4000170 ... 7fb236oqVB nejlepsi deska na trhu.
Ta ma uz 4,860Kb; vnitrni pameti. Takze zde uz muzes delat hodne blbosti i s videem. Cena 100USD i s dopravou je velmi rozumna.

Co se tyce externi ram. Tak zde je docela problem. Hodne techto desek se pouziva pro Linux a zde je ti jedno jak to funguje. Principialne nekdy dostanes tvoje data ale nikdo ti negarantuje kdy. Pro Linux je jedno zda ti data prijdou treba do 300ns ale ty ve vetsine pripadu potrebujes na 100% dostat data do 120 ns a zde je problem. Proto rada lidi pripojuje jine pameti k FPGA a nevyuziva tyto ?DR. Napr. SDR je pro bastlire jeste pouzitelna ale DDR3 je tak slozita, ze napsat si vlastni radic je skoro nerealne.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 25.11.2020, 15:34 
Offline
Kecálek

Registrován: 28.07.2018, 07:55
Příspěvky: 125
Has thanked: 77 times
Been thanked: 86 times
No po pravdě začal jsem tím že jsem si podloňský (nebo předloňský( stromeček dal DE10 nano pro provozování MISTERu. No a pak jsem chtěl taky si něco zkusit a tak jsem tu.

Zatím jsem byl schopen rozchodit ty části co jsem napsal, ale ani jedna z pamětí (krome BRAM) mě nefungovala. No a protože jsem nevěděl (a zatím stále nevím) co dělám blbě, zkouším to ořezávat na menší a menší části a vymýšlet jak ověřit co že se tam děje. A ta málobyte altsyncram by měla být jednoduchá .....

Připravil jsem ořezaný projekt jen s ledkami a jedním tlačítkem. Hodiny jsou 10Hz pro RAM a dělené 10ti pro generování adresy. První 2 led zobrazují adresu od 0 do 3, další led zobrazuje stlačení tlačítka a tudíž povolení zápisu a poslední led nejnižší bit přečteného byte.

Prosím zkus to otevřít u sebe a asi budeš muset předělat piny dle tvé desky. Jsem moc zvědavej co za blbost mě stála několik dní (a nocí :lol: ).

Díky
Petr


Přílohy:
Test_01.zip [16.6 KiB]
380 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: De10 Nano Verilog a (S/D)RAM
PříspěvekNapsal: 26.11.2020, 10:47 
Offline
Pan Generální

Registrován: 19.07.2013, 15:54
Příspěvky: 2723
Has thanked: 144 times
Been thanked: 422 times
Tak jsem to stahnul. Zkusil zkompilovat. Zde byla prvni vec a to ze jsem nemel definovany Cyclone IV, to nebyl problem stahnout z internetu a doinstalovat. Pak jsem musel jeste kus tveho programu zakomentovat a pak uz jsem to alespon prelozil. Byla to cast ktera se ted nema vyuzivat. Pak nasledovalo to, ze jsem chtel to simulovat. To jsem nevedel ze to bude tak slozite. Musel jsem najit kde v programu to vubec je schovane, zde Xilinx je na tom rozhodne lepe. Po tom co jsem zjistil ze to nemam nainstalovane jsem stahnul instalacku 1GB a po rozbaleni a instalaci to sebralo na disku 4GB. Pak uz jsem jen musel nastavit prostredi, na to jsem nasel inteligentni navod. Nasledne uz v Quartusu jsem pripravil data. V simulatoru jsem to chtel simulovat. Zde jsem ale narazil ze program neni prilis uzivatelsky privetivy. Musel jsem na jedne kanadske universite najit navod a podle neho to udelat. Mezitim jsem zjistil, ze kdyz clovek dela nelogicky uvnitr programu urcite kroky, tak program cely pada. Pak jsem narazil na to ze tvuj zdrojak neni Verilog ale System Verilog a pro ten simulator neumi simulovat TOP modul. Umi jen soubory s priponou v a ne sv. Udelal jsem si vlastni modul a ten uz sel bezproblemove simulovat.

Takze vysledek je ze mam funkcni prostredi kde muzu neco testovat. Ted je otazka jak upravit tvuj kod. Co se mi nelibi je ze "input a output" nemas na zacatku top modulu a ruzne rozhazene v kodu. Take by bylo vhodne zazalohovat projekt a smazat co neni nezbytne nutne aby kod byl citelnejsi. Doporucil bych udelat modul a ten dat do top modulu. Tak by se to lepe simulovalo. Duvod je ten ze bych udelal jiny modul a ten bych dal mezi top modul a tvuj modul. On by generoval signaly. Vstup do meho modulu by byly jen hodiny a samozrejme tvoje signaly. To by nahrazovalo UUT. Nasledne bych v simulaci videl zmeny a kdyz by to davalo smysl, tak mame reseni.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 18 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 9 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz