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