§ Назначения пинов
- clock Тактовый генератор до 100 Мгц
- data[ 3:0] Самый младший ниббл, шестнадцатеричный
- data[ 7:4] Второй ниббл
- data[ 11:8] Третий ниббл
- data[15:12] Старший
- dot Точки
- hex Восьмисегментный индикатор (+точка)
- en7 Биты активации индикаторов (от младшего к старшему)
§ dyn.v
1module dyn
2(
3 input wire clock,
4 input wire [3:0] dot,
5 input wire [15:0] data,
6 output wire [7:0] hex,
7 output wire [3:0] en7
8);
9
10
14
15assign en7 = 1'b1 << cnt[17:16];
16
17
18assign hex[7] = ~dot[ cnt[17:16] ] || cnt[15:13];
19assign hex[6:0] = cnt[15:13] ? 7'h7F : (
20
21 d4 == 4'b0000 ? 7'b1000000 :
22 d4 == 4'b0001 ? 7'b1111001 :
23 d4 == 4'b0010 ? 7'b0100100 :
24 d4 == 4'b0011 ? 7'b0110000 :
25 d4 == 4'b0100 ? 7'b0011001 :
26 d4 == 4'b0101 ? 7'b0010010 :
27 d4 == 4'b0110 ? 7'b0000010 :
28 d4 == 4'b0111 ? 7'b1111000 :
29 d4 == 4'b1000 ? 7'b0000000 :
30 d4 == 4'b1001 ? 7'b0010000 :
31 d4 == 4'b1010 ? 7'b0001000 :
32 d4 == 4'b1011 ? 7'b0000011 :
33 d4 == 4'b1100 ? 7'b1000110 :
34 d4 == 4'b1101 ? 7'b0100001 :
35 d4 == 4'b1110 ? 7'b0000110 :
36 7'b0001110);
37
38wire [ 3:0] d4 = data >> (4*cnt[17:16]);
39reg [17:0] cnt = 1'b0;
40
41always @(posedge clock) cnt <= cnt + 1;
42
43endmodule