Anoniem
ik wil mijn sram(61LV25616) geheugen op mijn de1 gaan gebruiken
en ik heb de datasheet al doorgelezen maar zou ik nog wat tips kunnen krijgen hoe ik dit moet gaan aanpakken
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Anoniem
datasheet http://www1.cs.columbia.edu/~sedwards/classes/2007/4840/ISSI-IS61LV256…
Julie hoeven niet de code voor te kauwen ik wil alleen wat hulp
iets van een stappen plan
dingen waar ik op moet letten
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
neem het datasheet, en bouw een statemachine die de diverse stadia in het datasheet van de 'read cycle' doorloopt. Idem voor de write.
Op 9 maart 2009 20:50:11 schreef rew:
neem het datasheet, en bouw een statemachine die de diverse stadia in het datasheet van de 'read cycle' doorloopt. Idem voor de write.
Of nog beter, maak de beide cyclussen in dezelfde statemachine waardoor je gelijktijdig kunt lezen en schrijven. Doe je dit correct dan kan binnen je FPGA een applicatie zorgen dat de data in de ram komt (write cyclus) terwijl een 2de aplicatie die data uitleest (readcyclus) om verder te verwerken zoals vb een display functie. Binnen dezelfde statemachine kun je de timingen perfect beheren. Voorwaarde is dat je ram voldoende snel is maar tegenwoordig is dit nog zelden een probleem.
Dit hangt af hoe je de applicatie zelf schrijft maar read2 en write2 zijn de meest voor de hand liggende cyclus zoals ze in de oertijd altijd gebruikt werden.
Maar niets verbied er u de andere methodes te implementeren.
Deze ram laat zowel word als byte acces toe. Ook dit bepaal je weer zelf volgens je toepassing. Maar deze signalen implementeren is gewoon de datasheet volgen. Het zijn allemaal heel goed gedefinieerde signalen die je zelf vooraf kunt simuleren of meten met een scoop of LA.
Anoniem
ik heb iets heel simpel geschreven om te testen en volgens mij werkt het
moet nog veel aan worden veranderd maar dat gaat wel lukken
zie het hier :
module sram (
input clk,
output [7:0] data,
inout [15:0] SRAM_DQ, // SRAM Data bus 16 Bits
output [17:0] SRAM_ADDR, // SRAM Address bus 18 Bits
output SRAM_UB_N, // SRAM High-byte Data Mask 262.144
output SRAM_LB_N, // SRAM Low-byte Data Mask 131.072
output SRAM_WE_N, // SRAM Write Enable
output SRAM_CE_N, // SRAM Chip Enable
output SRAM_OE_N // SRAM Output Enable
);
reg [7:0] cnt1 ;
always @ (posedge clk)begin//1s
case (cnt1)
///////////////////////////////////////////////////////////////////////write
0:begin
SRAM_DQ = 16'b1010101010101010 ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b000000000000000000 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b0 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b1 ;// SRAM Output Enable
cnt1 = 1;
end
1:begin
SRAM_DQ = 16'b1010101010101010 ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b000000000000000000 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b1 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b0 ;// SRAM Output Enable
cnt1 = 2;
end
2:begin
SRAM_DQ = 16'b1010101010101010 ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b000000000000000000 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b0 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b1 ;// SRAM Output Enable
cnt1 = 3;
end
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////write
3:begin
SRAM_DQ = 16'b1111111111111111 ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b000000000000000001 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b0 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b1 ;// SRAM Output Enable
cnt1 = 4;
end
4:begin
SRAM_DQ = 16'b1111111111111111 ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b000000000000000001 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b1 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b0 ;// SRAM Output Enable
cnt1 = 5;
end
5:begin
SRAM_DQ = 16'b1111111111111111 ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b000000000000000001 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b0 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b1 ;// SRAM Output Enable
cnt1 = 6;
end
///////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////// read
6:begin
data = SRAM_DQ ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b0000000000000000000 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b1 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b0 ;// SRAM Output Enable
cnt1 = 7;
end
///////////////////////////////////////////////////////////////////////
7:cnt1 = 8;
8:cnt1 = 9;
/////////////////////////////////////////////////////////////////////// read
9:begin
data = SRAM_DQ ;// SRAM Data bus 16 Bits
SRAM_ADDR = 18'b0000000000000000001 ;// SRAM Address bus 18 Bits
SRAM_UB_N = 1'b0 ;// SRAM High-byte Data Mask 262.144
SRAM_LB_N = 1'b1 ;// SRAM Low-byte Data Mask 131.072
SRAM_WE_N = 1'b1 ;// SRAM Write Enable
SRAM_CE_N = 1'b0 ;// SRAM Chip Enable
SRAM_OE_N = 1'b0 ;// SRAM Output Enable
cnt1 = 10;
end
///////////////////////////////////////////////////////////////////////
endcase
end
endmodule