기능정의
동작 정의
키를 입력하면 해당하는 동작을 하도록 한다.

| KEY 입력 | LED 동작 |
|---|---|
| KEY0 = 1 | LED OFF |
| KEY1 = 1 | 느리게 깜빡임 |
| KEY2 = 1 | 보통 속도 |
| KEY3 = 1 | 빠르게 깜빡임 |
| 아무 KEY 없음 | 이전 상태 유지 |
핵심은 LED 상태를 바로 결정하는 것이 아니라, 현재 동작 모드를 레지스터에 저장하는 것입니다.
KEY 입력
↓
동작 모드 저장 레지스터
↓
Blink 속도 선택
↓
Counter
↓
LED 출력

모드값 정의
모드에 따른 속도 정의
MODE_OFF = 0
MODE_SLOW = 1
MODE_NORMAL = 2
MODE_FAST = 3
KEY 처리 논리
if KEY0 = 1
mode = OFF
elseif KEY1 = 1
mode = SLOW
elseif KEY2 = 1
mode = NORMAL
elseif KEY3 = 1
mode = FAST
else
mode = mode 유지
end
Simulink 블록 구성
KEY0 ─┐
KEY1 ─┤
KEY2 ─┤→ Mode Select Logic → Unit Delay → mode
KEY3 ─┘
mode → Period Select → Counter → Compare → LED
MTLAB BLOCK 작성
필요한 블록은 직접 MATLAB 코드 블록으로 작성하여 추가하도록 한다.
+---------+
| KEY[3:0]|
+---------+
|
v
+----------------+
| MATLAB Function|
| key_led_blink |
+----------------+
|
v
+---------+
| LED |
+---------+
Simulink 입출력
입력:
key[4] : Boolean 또는 uint8 벡터
출력:
led : Boolean
VHDL 코드 생성
entity key_led_blink is
port(
clk : in std_logic;
reset : in std_logic;
key : in std_logic_vector(3 downto 0);
led : out std_logic
);
end entity;