firstcommit

This commit is contained in:
rco
2026-06-09 21:42:12 +09:00
commit efaf6574f4
198 changed files with 35006 additions and 0 deletions
+133
View File
@@ -0,0 +1,133 @@
# 기능정의
## 동작 정의
키를 입력하면 해당하는 동작을 하도록 한다.
---
![내 사진](imgs/key4.png)
---
| KEY 입력 | LED 동작 |
| --------- | -------- |
| KEY0 = 1 | LED OFF |
| KEY1 = 1 | 느리게 깜빡임 |
| KEY2 = 1 | 보통 속도 |
| KEY3 = 1 | 빠르게 깜빡임 |
| 아무 KEY 없음 | 이전 상태 유지 |
핵심은 LED 상태를 바로 결정하는 것이 아니라, 현재 동작 모드를 레지스터에 저장하는 것입니다.
```
KEY 입력
↓
동작 모드 저장 레지스터
↓
Blink 속도 선택
↓
Counter
↓
LED 출력
```
---
![내 사진](imgs/ledonoff.png)
---
## 모드값 정의
모드에 따른 속도 정의
```
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;
```