템플릿 삽입란에서 이것저것 확인을 해보다가,
type mem is array(RANGE) of std_logic(RANGE);
이러한 구문을 찾았습니다.
그래서,
아키텍쳐에서
type rec is array(9999 downto 0) of std_logic_vector(6 downto 0);
signal key : rec;
이러한 식으로 선언을 해주고,
키패드의 키 검색 이후에,
keypad<=keypadcol&keypadrow;
keycode<=keypadcol&keypadrow;
PROCESS(rclk) BEGIN
if rclk'event and rclk = '1' then
if modesw="00000011" then //녹음 모드
for i in 0 to 9999 loop
key(i)<=keypad;
end loop;
elsif modesw="10000000" then //재생 모드
for i in 0 to 9999 loop
keycode<=key(i);
if keycode="1001000" then -- 1 octave //키패드의 row+col을 하나로 합쳤습니다. 녹음을위해서
if cnt = do then
cnt <= 0;
else
cnt <= cnt+1;
end if;
elsif keycode="1000100" then
if cnt = rep then
cnt <= 0;
else
cnt <= cnt+1;
end if;
(이하는 cnt를 각 음계별로 if문...
이러한 식으로 코드 구성을 했는데, for문이 되는건지 안되는건지 좀 답답한게,
지난번에 조언해주신대로, led를 녹음 모드에서 하나 켜보고
재생모드에서도 다른 led를 켜보되, 특정 버튼 몇개에서는 1번 led를, 다른 버튼에선 2번 led가
켜지게 해놨었습니다.
하지만, 뭔가 문제가 되는지,
녹음모드에서 한참 누르다가
재생모드로 넘어가면 무조건 2번 led (특정 버튼 몇개를 제외한 나머지 상황에서 켜지는 led)만 켜지는데
클럭은 1MHz입니다....
몇일간 고심하다가 내린 결론이었는데,
참 답답할 따름입니다 ㅜㅜ
조언좀 부탁드립니다.... 수고하세요~
|