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

En waar moeten we beginnen met denken? Welke signalen aansluiten? Hoe de vhdl te maken? timing?

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

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.

welke cycle moet ik nemen uit de datasheet ???
read cycle 1 of 2
write cycle 1,2,3 of 4

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.

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