Skip to content

기능정의

동작 정의

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


내 사진


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
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   |
+---------+

입력:
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;