| module myram( | |
| input rd_clk, | |
| input [ 7:0] rd_addr, | |
| output reg [17:0] rd_data, | |
| input wr_clk, | |
| input wr_enable, | |
| input [ 7:0] wr_addr, | |
| input [17:0] wr_data | |
| ); | |
| reg [17:0] memory [0:255]; | |
| integer i; | |
| function [17:0] hash(input [7:0] k); | |
| reg [31:0] x; | |
| begin | |
| x = {k, ~k, k, ~k}; | |
| x = x ^ (x << 13); | |
| x = x ^ (x >> 17); | |
| x = x ^ (x << 5); | |
| hash = x; | |
| end | |
| endfunction | |
| initial begin | |
| for (i = 0; i < 256; i = i+1) | |
| memory[i] = hash(i); | |
| end | |
| always @(posedge rd_clk) | |
| rd_data <= memory[rd_addr]; | |
| always @(posedge wr_clk) | |
| if (wr_enable) | |
| memory[wr_addr] <= wr_data; | |
| endmodule |