안녕하세요
한백전자입니다.
문의하신 PIEZO의 경우, 특정 주파수를 전달해 주면 그에 해당하는 음이 나오는 장치입니다.
따라서, PIEZO에 어떤 주파수를 전달해 주느냐는게 PIEZO를 제어하는 핵심이 됩니다.
첨부하신 자료중 7페이지의 내용에서 Constant로 선언된 ra_low, si_low, do, rae, mi, fa는 이 특정 주파수를 출력하기 위한 카운트 값입니다.
장비의 매뉴얼에서 PIEZO 부분에 각 계이름에 대한 주파수 값이 설명되어 있습니다. 낮은 라의 경우 220Hz의 클럭 주파수를 전달해 주면 됩니다.
주어진 예는 클럭 입력을 500kHz의 클럭의 입력일 때의 카운트 값입니다.
낮은 라의 경우를 예로 들어 설명하겠습니다.
500kHz의 클럭을 이용해서 220Hz의 클럭을 생성하려면 아래와 같은 계산이 필요합니다.
500,000 / 220 = 2272.727....
즉 500kHz의 클럭으로 2272.727.. 번을 카운트하면 220Hz의 주기를 나타나게 됩니다.
.727 번을 카운트 할 수는 없기 때문에, 2272번을 카운트하면 220Hz와 거의 비슷한 주기를 생성할 수 있습니다.
또, 이 한 주기에는 0과 1이 각각 포함되어야 하기 때문에 2272번의 절반인 1136번을 카운트해야 합니다.
첨부된 예에서 ra_low를 1135로 설정한 것은 0~1135번까지 1136번을 카운트한다는 의미입니다.
8페이지에서 각 키입력에 따라 카운트하는 숫자를 달리하고 있습니다.
9페이지에서 카운트한 값이 각 1일 때에는 현재의 값의 역을 출력합니다. 즉 0과 1을 반복시켜 주파수를 생성하는 부분입니다.
이상입니다.
많은 도움이 되시길 바랍니다.
좋은 하루 되세요.
>
회사에서 만들어주신 예제 파일들 중
piezo_demo라는게 있습니다.
피에조를 이용하여 소리를 내는건데,
다른건 다 알겠는데,
도대체 어디서 piezo에 값을 전달하는건지요?
piezo에는 클럭에 해당하는 숫자를 입력해야 하는데,
구문 중에는 piezo<=p_clk 라는
아키텍쳐에서 선언한 signal 값인 p_clk를
piezo에 입력하는 구문 이외에는
p_clk에 clock으로 카운터한 cnt 값을 입력하는
그러한 구문이 없습니다.
단지 라이징 엣지일 때 cnt=1이면
컴플리먼트 해주는 것 이외에는요
죄송하지만 piezo 예제파일 한번만 봐주시고
간략하게 설명좀 해주시면 안될까요...
제가 키패드를 이용해서 각 주파수별로 한 옥타브를 입력해서
그걸로 피에조로 표현할 수 있는 전체 옥타브를 표현하려고 하거든요....
피에조 예제를 그대로 입력해서 거기다 옥타브 표현은 쉽게 했는데,
예제는 버튼이 6개라 표현하기엔 좀 무리가 있어서
키패드로 돌리려고 하는데 이게 만만찮네요 ㅡㅡ;
piezo에 p_clk로 도대체 어떻게 음별로 해당하는 주파수를 입력하는지
간략하게나마 설명좀 부탁드릴게요...
그리고 Combo II 유저 매뉴얼에 음계 주파수가 좀 안맞는것 같아요...
인터넷에서 검색할때 어떤 페이지에선 2의 승수에 비례하는 수 (64, 32 등...)가 도 음이라고 하는데
매뉴얼은 뭔가 조금 다르네요...
당연히 제가 듣기에도 서로 다르거니와
뭔가 조금 이상한게...
수고하세요~
|