blob: 4129d95813777512a6e6ac18ddaf1d4c05442fc3 [file] [log] [blame]
module multiclock_reader_writer(
clock_reader_head,
clock_writer_head,
in,
out,
);
//INPUT
input clock_reader_head;
input clock_writer_head;
input in;
//OUTPUT
output out;
reg [2:0] reader_head;
reg [2:0] writer_head;
reg [7:0] register;
always @(posedge clock_reader_head)
begin
case (reader_head)
0: register[0] <= in;
1: register[1] <= in;
2: register[2] <= in;
3: register[3] <= in;
4: register[4] <= in;
5: register[5] <= in;
6: register[6] <= in;
7: register[7] <= in;
endcase
if(reader_head == 7)
reader_head <= 0;
else
reader_head <= reader_head +1;
end
always @(posedge clock_writer_head)
begin
case (writer_head)
0: out <= register[0];
1: out <= register[1];
2: out <= register[2];
3: out <= register[3];
4: out <= register[0];
5: out <= register[1];
6: out <= register[2];
7: out <= register[3];
endcase
if(writer_head == 7)
writer_head <= 0;
else
writer_head <= writer_head +1;
end
endmodule