| 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 |