[전기공학실험3] [ARM7] 결과6 (ADC/DAC)
- 최초 등록일
- 2002.12.25
- 최종 저작일
- 2002.12
- 32페이지/ MS 워드
- 가격 1,000원
소개글
전기공학실험3 (ARM7 코어 프로그래밍)
서울대학교 전기공학부
성원용 교수님 강좌
2002년 2학기
정답이 아닐 수 있으니 참고만 하세요.
목차
1. 실험 결과 보고를 시작하며
(1) 보고서 종이에 대한 소고(小考)
(2) 보드 불량으로 인한 실험 실패 및 보고서 delay 해명
(3) 실험을 통해 얻은 것
(4) 결과 보고서에서 다루는 내용
2. [요구사항 1] DAC를 통하여 임의의 주파수를 가지는 사인파를 출력하는 프로그램
3. [요구사항 2] 요구사항 1에서 작성한 프로그램을 이용하여, 출력단의 low-pass filter 주파수 특성을 실험한 그래프를 그리고 분석합니다.
4. [요구사항 3] 입력 sampling rate와 출력 sampling rate가 같은 상태에서, 10초간 ADC로 입력 받아 녹음한 후에 10초간 DAC로 출력을 내보내는 프로그램
5. [요구사항 4] ADC를 38KHz로 over-sampling한 후에, anti-aliasing filter와 4:1 decimation을 거쳐서, 9.7KHz로 DAC로 혹은, ADC를 32KHz로 over-sampling 한 후에 anti-aliasing filter와 2:1 decimation을 거쳐서 16KHz로 내보내는 프로그램
6. 참고 문헌
본문내용
void decimation(short *buf, unsigned long size, unsigned short width)
{
int i, j;
int siz8=size/8; // stereo이므로 2로 나눈 index를 사용할 수 있고, 4:1 decimation이므로 다시 4로 나눈다.
for(i=0, j=0; i<size; i+=2*width, j++)
{
buf[j*2]=buf[i]; // stereo coding
buf[j*2+1]=buf[i]; // stereo coding
// 4:1 decimation이지만, 사실상 buf[j*2]와 buf[j*2+1]은 stereo로 항상 같은 데이타가 저장되어 있다.
// 따라서 index로는 8만큼 증가시켜야 정확한 4:1 decimation을 구현할 수 있다.
// 4:1 decimation에서도 stereo가 성립하도록 인접한 2개의 주소에 같은 값을 할당한다.
}
// 이 for loop이 끝나면 전체 size의 1/4에 4:1 decimation된 결과가 기록된다.
// 그런데 이 뒷부분의 공간 3/4가 미처리된 상태로 남아 있으므로,
// 4:1 decimation된 결과를 4번 반복하여 기록해 보았다.
if (width==4)
{
for(i=0; i<siz8; i++)
{
for(j=1; j<4; j++) // 0~1/4 구간에 저장된 데이타를 1/4~2/4 구간과 2/4~3/4 구간, 3/4~4/4 구간에 복제한다.
{
buf[(j*siz8+i)*2]=buf[i*2]; // stereo coding
buf[(j*siz8+i)*2+1]=buf[i*2+1]; // stereo coding
}
}
}
// 솔직히 이 함수에는 unsigned short width를 parameter로 받을 이유가 없다 -.-;;
}
참고 자료
서울대학교 전기공학부, <3학년 실험>
서울대학교 전기공학부, <3학년 실험 매뉴얼>
http://soee.net/
Oppenheim, <Signals and Systems>