Logic2_to_FPGA/pattern_rom.v
2026-06-01 16:41:22 +03:00

70 lines
2.4 KiB
Verilog

// Автогенерация из CSV: digital_cut_50.csv
// F_CLK_HZ = 48000000
// Количество сегментов (DEPTH) = 50
module pattern_rom #(
parameter TICKS_WIDTH = 32,
parameter DEPTH = 50
) (
input wire [$clog2(DEPTH)-1:0] addr,
output reg [TICKS_WIDTH:0] data // {level[MSB], ticks[LSB:0]}
);
// Простейший ROM на case по адресу
always @* begin
case (addr)
0: data = {1'b0, 32'd4096};
1: data = {1'b1, 32'd14};
2: data = {1'b0, 32'd10};
3: data = {1'b1, 32'd8};
4: data = {1'b0, 32'd20};
5: data = {1'b1, 32'd8};
6: data = {1'b0, 32'd20};
7: data = {1'b1, 32'd8};
8: data = {1'b0, 32'd22};
9: data = {1'b1, 32'd20};
10: data = {1'b0, 32'd8};
11: data = {1'b1, 32'd20};
12: data = {1'b0, 32'd10};
13: data = {1'b1, 32'd8};
14: data = {1'b0, 32'd20};
15: data = {1'b1, 32'd8};
16: data = {1'b0, 32'd20};
17: data = {1'b1, 32'd20};
18: data = {1'b0, 32'd10};
19: data = {1'b1, 32'd20};
20: data = {1'b0, 32'd8};
21: data = {1'b1, 32'd20};
22: data = {1'b0, 32'd10};
23: data = {1'b1, 32'd8};
24: data = {1'b0, 32'd20};
25: data = {1'b1, 32'd20};
26: data = {1'b0, 32'd8};
27: data = {1'b1, 32'd8};
28: data = {1'b0, 32'd22};
29: data = {1'b1, 32'd8};
30: data = {1'b0, 32'd20};
31: data = {1'b1, 32'd8};
32: data = {1'b0, 32'd22};
33: data = {1'b1, 32'd18};
34: data = {1'b0, 32'd10};
35: data = {1'b1, 32'd20};
36: data = {1'b0, 32'd8};
37: data = {1'b1, 32'd8};
38: data = {1'b0, 32'd22};
39: data = {1'b1, 32'd8};
40: data = {1'b0, 32'd20};
41: data = {1'b1, 32'd20};
42: data = {1'b0, 32'd10};
43: data = {1'b1, 32'd18};
44: data = {1'b0, 32'd10};
45: data = {1'b1, 32'd20};
46: data = {1'b0, 32'd8};
47: data = {1'b1, 32'd8};
48: data = {1'b0, 32'd20};
49: data = {1'b1, 32'd28};
default: data = {1'b0, {TICKS_WIDTH{1'b0}}};
endcase
end
endmodule