§ Назначения пинов
- clock Тактовый генератор до 100 Мгц
- data[ 3:0] Самый младший ниббл, шестнадцатеричный
- data[ 7:4] Второй ниббл
- data[ 11:8] Третий ниббл
- data[15:12] Старший
- dot Точки
- hex Восьмисегментный индикатор (+точка)
- en7 Биты активации индикаторов (от младшего к старшему)
§ dyn.v
module dyn
(
input wire clock,
input wire [3:0] dot,
input wire [15:0] data,
output wire [7:0] hex,
output wire [3:0] en7
);
assign en7 = 1'b1 << cnt[17:16];
assign hex[7] = ~dot[ cnt[17:16] ] || cnt[15:13];
assign hex[6:0] = cnt[15:13] ? 7'h7F : (
d4 == 4'b0000 ? 7'b1000000 :
d4 == 4'b0001 ? 7'b1111001 :
d4 == 4'b0010 ? 7'b0100100 :
d4 == 4'b0011 ? 7'b0110000 :
d4 == 4'b0100 ? 7'b0011001 :
d4 == 4'b0101 ? 7'b0010010 :
d4 == 4'b0110 ? 7'b0000010 :
d4 == 4'b0111 ? 7'b1111000 :
d4 == 4'b1000 ? 7'b0000000 :
d4 == 4'b1001 ? 7'b0010000 :
d4 == 4'b1010 ? 7'b0001000 :
d4 == 4'b1011 ? 7'b0000011 :
d4 == 4'b1100 ? 7'b1000110 :
d4 == 4'b1101 ? 7'b0100001 :
d4 == 4'b1110 ? 7'b0000110 :
7'b0001110);
wire [ 3:0] d4 = data >> (4*cnt[17:16]);
reg [17:0] cnt = 1'b0;
always @(posedge clock) cnt <= cnt + 1;
endmodule