spartanski 3 RAM

A

amirintisar

Guest
Halo svi, ja sam jako novi u FPGA desing te ga pronaći malo teško shvatiti neke terminologije u spartanski 3 (XC3S200) SRAM odjel .... Uglavnom Blokiraj Ovan i distribuirati.

Uglavnom imam 16 bita digitalnih podataka dolazi iz ADC i želim da ga pohraniti u (256K x 16 bita SRAM) x 2.ADC podataka dolazi se na vrlo sporo sat (mikro svaki drugi) tako da sve ja želim učiniti je crijep podataka u memoriju kao što dolazi u, počevši od memorijske adrese 0.Kad je memorija puna želim pročitati podatke van na računalo.

Želim initialise RAM-a na mom verilog program, ali ja dont znati kako vremenskih korištenje bloka RAM, distribuirana RAM-a, jedan port ili dual port.Za zadatka pri ruci bilo tko može predložiti najbolju strategiju i objasniti što to znači?

Hvala momci !!!!!!!!

 
Dobro došli na FPGA klub!

Vi želite 1Kx18 blok Odaberite RAM-a.Oni su zgodan i obilan.Vjerojatno ne želi distribuirati RAM-a za ove aplikacije, jer pojesti pravilan logika tkanina.

Single-port ili dual-port?Pa, to ovisi o tome kako točno želite pristupiti RAM, dual-port ali obično je vrlo korisna.Možete pisati na jednu stranu, a istovremeno čitanje s druge strane.

Ako ste koristeći ISE's XST sintetizirati, a najlakši (i većina prenosiv) pristup je slijediti Xilinx predložen Verilog stila kodiranja, pa XST može zaključiti blok RAM-a (to znači da automatski će pretvoriti vaše Verilog Registrirajte se razvrstati na bilo jedno - port ili dual-port blok RAM).Pretražujte ISE priručnik "Sinteza i verifikacija Design Guide" za "inferring Blokiraj SelectRAM".

Neki ljudi vole da eksplicitno instantiate OVAN modul u njihov HDL.To utvrde prekid previše, ali mislim da to čini HDL teže čitati, a kod postaje manje prenosiv na različite tipove FPGA.

Vi vjerojatno ne treba inicijalizirati RAM-a.OVAN htijenje propust to sveništični početne vrijednosti.Možda vam znači "instantiate" umjesto.

Sretno na vašem projektu.

 
Bok, hvala za brz odgovor, ja je pogledati "Sinteza i dizajn verifikacija vodič" ... dobre stvari.

Što mislite pod 1K x 18 bita bloka RAM-a?.Da li to znači ja sam ograničen na 1000 18 bit vrijednosti?.Ja sam skladištenje vrlo visoke rezolucije CCD slike koje će trebati koristiti sve 512K memorije lokacije, tako da mi je potrebno puno više od 1000 lokacija memorije.

Ako ja zaključiti RAM-a, ne mogu ja onda samo popuštanje RAM meory lokaciji, podatke i druge pojedinosti (cs, lb, mi ...) i to će ih pohraniti u memoriju.Onda svi ja morati obaviti je Chanel memorijska adresa i podaci sljedeći put pišem na njega.Je li to točno?

Tu je i 100MHz SRAM vs 50 MHz FPGA sat vremena problem, koji ja će se baviti kada sam shvatiti kako to pisati na RAM-u.

Hvala!

 
Ups sorry!Ja previdjeti "K" u Vašoj poruci.Horrible pogreška.

<img src="http://www.edaboard.com/images/smiles/icon_redface.gif" alt="Zbunjen" border="0" />Trebate 2 * 256K * 16 = 8 megabita.Samo čudovište Xilinx FPGAs sadrži toliko memorije, a ne želite znati njihovu cijenu.Trebate vanjske pločice RAM-a, kao što je jeftin SRAMs na Xilinx spartanski 3 development board.Možete preuzeti njegov shematski i docs vidjeti kako to rade.

Kada se zaključiti blok RAM-a, to je samo velika HDL registrirati polja, tako da ćete pisati i čitati iz njega kao i svaka druga Verilog registrirati polja.Ako želite raditi na velikim brzinama, tada cjevovod pitanja postaju važna.Međutim, čitanje CCD predodžba senzor je obično spor udobno na FPGA.

Ne razumijem Vašu zabrinutost SRAM 100 MHz i 50 MHz clock.Jeste li se odnose na vanjske SRAM?Vi ste slobodni da promijenite FPGA i SRAM sat stope na druge prikladne vrijednosti.Oni ne um izvodi sporije.Napravite ih oboje 25 MHz ako je to pojednostavljuje vaš dizajn.Možete sintetizirati različite stope sat koristeći jednostavan brojač ili DCM.

CCD - are you doing astronomija?I'm zgrada hobi projekt FPGA sučelje na 1024x1024 16-bitni kamera.Ovdje je jednostavan primjer inferring i koristeći dvojan-RAM luka blok.To će ići oko 200 MHz u spartanski 3.
Šifra:

/ / Delay tampon.
Xilinx ISE treba zaključiti FPGA dual-port Blokiraj RAM.

modul delay_buffer (CLK, idata, odata);

parametar desired_delay = 0;

CLK ulaz;

input [17:0] idata;

reg [9:0] Waddr = desired_delay - 3;

reg [17:0] Wdata;

reg [17:0] ovan [0:1023];

reg [9:0] Raddr = 0;

reg [17:0] Rdata;

izlaz reg [17:0] odata;Uvijek @ (posedge CLK) počinju

/ / Write data u jednu stranu dual-port RAM

Wdata <= idata; / / cjevovod za brzinu

ovan [Waddr] <= Wdata; / / pisati RAM

Waddr <= Waddr 1; / / pokraj adrese

/ / Pročitajte kašnjenja podataka s druge strane dual-port RAM

Rdata <= ram [Raddr]; / / read from OVAN

odata <= Rdata; / / cjevovod za brzinu

Raddr <= Raddr 1; / / pored adrese (ili Raddr <= Waddr - desired_delay 4)

kraj

endmodule/ / Pokazati tampon kašnjenje.

modul vrh (CLK, odata);

CLK ulaz;

reg [17:0] idata = 10.000;

izlaz [17:0] odata;delay_buffer # (. desired_delay (15)) u1 (CLK, idata, odata);Uvijek @ (posedge CLK) počinju

idata <= idata 1; / / generirati neke podatke

kraj

endmodule
 
Pozdrav, SOS za kasni odgovor, bio sam daleko.Radim za grupu koja koriste CCD za znanstvene programe poput x-zraka snimanje i moj projekt uključuje x - ray diffraction pomoću CCD.Vaš hobi projekt je vjerojatno vrlo sličan posao radim.Ja sam koristeći FPGAs presresti 16 bita podataka dolazi iz CCD (preko 200Khz ASIC).Imam koristi različite rezolucije CCD, kao i 512 x 512, 1024 x 1024,2048 x 256.Već sam napravio nekoliko programa poput generiranja histograms, filtriranje podataka za uklanjanje tamna struja i pozadinske buke, ali ovo je malo SRAM trickier.

Hvala za jedan dan kod mene vam je dao.Sve ja želim učiniti je uzeti 16 bita koji dolaze iz ADC (ASIC) te ih pohraniti u RAM-u položaj 1, a zatim povećajte adrese (kao što ste učinili), onda pohraniti vrijednost piksela, i tako dalje.Nakon što je to sve učinio želim vratiti na početak memorije locatoin 1, i pročitajte sve podatke.Ono što sam htio znati je kako mogu dodijeliti "[17:0] ovan [0:1023]" za spartanski 3 adresu data_in igle i igle.

Ja obično imaju poseban adresa ([9:0] inaddr) koja ja dodijeliti adresu igle ovna, a druga inout podataka ([15:0] data_inout) koja ja dodijeliti do igle SRAM podataka.

Ovdje je ovo malo moj broj .. Ja sam težak to priče "adcin" podatke na memorijsku adresu 1 i vrijednosti piksela u memoriju iznad nje.

if (record) begin
mi <= 1'b0; / / aktivnih 0
OE <= 1'b1; / / okret Izlaz off
memorija <= inaddr; / / npr. inaddr = 1
store_pixel <= 1'b1; / / pohraniti broj piksela
rekord <= 1'b0; / / okret rekord off

kraj

if (store_pixel) begin
mi <= 1'b0;
OE <= 1'b1;
memorija <= inaddr 1; / / inaddr = 2
store_pixel <= 1'b0;
kraj

dodijeliti data_inout = (zapis)?adcin: 16'bz;
dodijeliti data_inout = (store_pixel)?pixel: 16'bz;inaddr <= inaddr 2; / / jednom vrijednosti su pohranjeni ja htijenje
/ / Prirast inaddr by 2.Nadam se da to nekog smisla, ja sam prilično nova na FPGA programiranje pa slobodno anialate moj broj.Učinio sam sasvim malo čitanja jer moj zadnji post, a sada shvatiti kako glupo moje pitanje je bilo sat i razumjeti koliko blok ovan spartan3 ima za ponuditi.

be needing more off-board ram.Anyway, sorry for the size of this installment.

12 x 16.000, tako da će
se trebaju više off-board ram.Anyway, ispričavam za veličinu ove rate.

Hvala Mate!

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
Kada razgovarati s vanjske nesinkroni SRAM čip, morate generirati adresu i podatke sami signala.Ne možete preraspodijeliti polja Verilog registrirati.

Morat ćete napraviti neki dizajn vremena kako bi provjerili da li zadovoljava sve SRAM u setup i držite zahtjeve, te da se izbjegne tvrdnja sabirnica podataka pri prebacivanju između čitati i pisati.

Ovdje je primjer vrlo jednostavno vrijeme da se razgovara s tipičnim vanjskim async SRAM.To neefikasan, ne prirodan tok zračne struje za bilo koji određeni projekt.To je također neprovjeren, pa čuvaj se bugova.Sat je 50 MHz."Top" modul piše osam riječi "wdata" za vanjske SRAM, onda ih navodi se natrag u "rdata".Test klupa sadrži "sram" modul koji grubo simulira 50ns SRAM čip.(Vaš SRAM proizvođač web svibanj imati lijepo Verilog module koji točno simuliraju određenu čip.)

Šifra:

/ / Sinteza translate_off

`rokove 1 ns / 1 ps

modul test ();

reg CLK;

žica OEn, Wen;

žice [14:0] adr;

žice [15:0] PODATAKA;početna begin CLK = 0; # 10 forever begin # 10 CLK = 1; # 10 CLK = 0; end endna vrh na vrh (. CLK (CLK),. OEn (OEn),. Wen (Wen),. adr (adr),. PODATAKA (DATA));

sram sram (. OEn (OEn),. Wen (Wen),. adr (adr),. PODATAKA (DATA));

endmodulemodul sram (OEn, Wen, adr, data); / / 32Kx16 async SRAM

ulaz OEn, Wen;

input [14:0] adr;

inout [15:0] PODATAKA;

reg [15:0] d;

reg odrive = 0;

reg [15:0] ovan [0:32767];dodijeliti DATA = odrive?
d: 'BZ;Uvijek @ (posedge Wen)

ovan [adr] <= PODATAKA; / / spremanje podataka

Uvijek @ (adr) begin

d <= # 10 'BX;

d <= # 50 ovan [adr]; / / čitanje pristupno kašnjenje

kraj

Uvijek @ (OEn)

odrive <= # 10 ~ OEn; / / izlaz omogućuju kašnjenje

endmodule

/ / Sinteza translate_onmodul vrh (CLK, OEn, Wen, adr, data);

CLK ulaz;

reg [1:0] cycle = 0; / / četiri ura po RAM-ciklus

reg [9:0] count = 0; / / 8 piše, onda piše 8, ...

žica pisati, čitati;

reg [15:0] wdata;

izlaz reg [14:0] adr;

inout [15:0] PODATAKA;

reg odrive = 0;

izlaz reg. Wen = 1, OEn = 1;

reg [15:0] rdata;dodijeliti pisati = ~ count [3]; / / napisati ciklus

dodijeliti pročitajte count = [3]; / / čitanje ciklus

dodijeliti DATA = odrive?
wdata: 'bz; / / izlaz podataka u RAMUvijek @ (posedge CLK) počinju

ciklus <= krug 1; / / četiri ura po ciklusu memorije

count <= count (ciklus == 3);

odrive <= & pisati (ciklus! = 0); / / omogućiti izlaz vozač

OEn <= ~ (read & (ciklus! = 0));

Wen <= ~ (napišite & ^ ciklus); / / uskim pisati pulsno

Adr <count = [2:0];

wdata <= pisati?
500 count: 'bx; / / pisati nešto

rdata <= ciklus! = 0?
rdata: ~ OEn?
PODACI: 'BX;

kraj

endmodule
 
Hello all,
Happy New Year !!!!!!!!!!!!!!!!!!!!
Ja sam suočava s problemom Digilent Spartan3 Board.I 'm ne u mogućnosti to čitanje ili pisanje na vanjske SRAM.I pokušao nekoliko kodova moje vlastite i neke primjere koda iz website.But ništa smislili.
Može bilo tko pomoć mene riješiti ovaj problem?

 
Budite sigurni da koristite ispravnu FPGA pin brojeve za SRAM signale.
Budite sigurni da niste ništa priključena na A1 Ekspanzija konektora, jer dijeli mnoge SRAM signale.

 
Hiiiiiii,
Hvala za reply.Pin veze čini se da ispraviti kao što sam to prepisali iz nečeg podatkovne tablice.
Im 'koristeći on board SRAM (ISSI 61LV25616AL).

 
Pokušajte pokrenuti "Default Board Test Design".To uključuje način SRAM test.
http://www.xilinx.com/products/boards/DO-SPAR3-DK/reference_designs.htm

 

Welcome to EDABoard.com

Sponsor

Back
Top