aboutsummaryrefslogtreecommitdiffstats
path: root/1-d.v
blob: 1c952dc2f6c30678e327411e20dbb908af5d696a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
module ram(data_in, address, clock, write_enable, data_out);
	parameter DATA_WIDTH = 8;
	parameter ADDR_WIDTH = 4;
	input [DATA_WIDTH-1:0] data_in;
	input [ADDR_WIDTH-1:0] address;
	input clock, write_enable;
	output [DATA_WIDTH-1:0] data_out;
	reg [DATA_WIDTH-1:0] mem [0:(1 << ADDR_WIDTH)-1];
	always @(posedge clock) begin
		if (write_enable) mem[address] <= data_in;
	end
	assign data_out = mem[address];
endmodule

/*
module test;
	reg [7:0] in;
	reg [3:0] addr;
	reg clock, ddr;
	wire [7:0] out;
	ram r(in, addr, clock, ddr, out);
	
	always #1 clock = ~clock;

	initial begin
		$monitor(out);
		clock = 0;
		addr = 'hA;
		in = 'h69;
		ddr = 1;
		#10 ddr = 0;
		addr = 'hB;
		in = 'hFF;
		#10 ddr = 1;
		#10 ddr=0;
		addr = 'hC;
		in = 'h01;
		#10 ddr=1;
		#10 ddr=0;
		$display("0x9 to 0xD test");
		#10 addr = 'h9;
		#10 addr = 'hA;
		#10 addr = 'hB;
		#10 addr = 'hC;
		#10 addr = 'hD;
	end;
endmodule
*/