KEY IN 7SEG
실습키트의 키의 입력을 받아, 7SEGMENT으로 출력, 출력이 정상적으로 되는지 확인한다.
Keypad
7-Segment
PIN 테이블
| 핀 번호 | 신호 |
|---|---|
| PIN_AA13 | led_out[0] |
| PIN_AA14 | led_out[1] |
| PIN_AA15 | led_out[2] |
| PIN_AA16 | led_out[3] |
| PIN_AA17 | led_out[4] |
| PIN_AA18 | led_out[5] |
| PIN_AA19 | led_out[6] |
| PIN_AA20 | led_out[7] |
| PIN_AB14 | seg[6] |
| PIN_AB15 | seg[5] |
| PIN_AB16 | seg[4] |
| PIN_AB17 | seg[3] |
| PIN_AB18 | seg[2] |
| PIN_AB19 | seg[1] |
| PIN_AB20 | seg[0] |
VHDL 코드
library ieee;
use ieee.std_logic_1164.all;
entity seg_out is
port(
seg : out std_logic_vector(6 downto 0); -- 7-세그 출력 (g~a)
led_out : out std_logic_vector(0 to 7) -- 기존 인덱스(0 to 7)
);
end seg_out;
architecture SegmentDecoder of seg_out is
signal key : integer range 0 to 15 := 5; -- 표시할 숫자 (0~15)
begin
----------------------------------------------------------------
-- with-select: key 값 → seg 패턴 매핑 (VHDL-93 호환)
----------------------------------------------------------------
with key select
seg <=
"100" & "0000" when 0, -- 0
"111" & "1001" when 1, -- 1
"010" & "0100" when 2, -- 2
"011" & "0000" when 3, -- 3
"001" & "1001" when 4, -- 4
"001" & "0010" when 5, -- 5
"000" & "0010" when 6, -- 6
"111" & "1000" when 7, -- 7
"000" & "0000" when 8, -- 8
"001" & "0000" when 9, -- 9
"000" & "1000" when 10, -- A
"000" & "0011" when 11, -- b
"100" & "0110" when 12, -- C
"010" & "0001" when 13, -- d
"000" & "0110" when 14, -- E
"000" & "1110" when 15, -- F
"111" & "1111" when others; -- blank
----------------------------------------------------------------
-- LED 개별 비트 설정: 기존 코드 그대로 유지
----------------------------------------------------------------
led_out(7) <= '1'; -- LED 7번 ON
led_out(6) <= '1';
led_out(5) <= '1';
led_out(4) <= '0'; -- LED 4번 ON
led_out(3) <= '0';
led_out(2) <= '0';
led_out(1) <= '1';
led_out(0) <= '1'; -- LED 0번 ON
end architecture;