yayacemu/rng.sv

20 lines
535 B
Systemverilog
Raw Normal View History

2024-02-01 02:57:11 +00:00
module rng (
input wire clk_in,
input wire [15:0] pc,
input bit keyboard [15:0],
input int cycle_counter,
output bit [7:0] rand_bit
);
bit [7:0] last;
always_ff @(posedge clk_in) begin
for (int i = 0; i < 8; i++) begin
rand_bit[i] ^= ~keyboard[i] ? cycle_counter[i] : cycle_counter[7-i];
rand_bit[i] ^= (cycle_counter % 7) == 0 ? pc[i] : ~pc[i];
rand_bit[i] ^= keyboard[i+7] ? ~last[i] : last[i];
end
last = rand_bit;
end
endmodule