NRZ(Non-Return-to-Zero) to Manchester Signal Transform ◎ NRZ Code와 Manchester Code의 특성 NRZ(noreturn-to-zero)코드에서는 각 비트는 하나의 비트 타임 동안 변화없이 전송되는 반면에 맨체스터(Manchester)코드방법에서는 하나의 0은 비트 타임의 절반 동안 0으로 나머지 절반의 비트 타임 동안 1로 전송된다. 하나의 1은 비트 타임의 절반 동안 1로 나머지 비트 타임의 절반 동안 0으로 전송된다. 따라서 맨체스터로 부호화된 비트는 항상 비트 타임의 중간에서 변한다. ◎ Manchester Code 변환시 주의 점 및 상태 설명 기본 비트 클럭의 두배가 되는 클럭(clock2)을 사용 NRZ비트가 1이면 두개의 clock2 주기 동안 1이 될 것이다. S0 상태에서 시작하면, 입력 시퀀스의 가능 상태는 00과 11이고 출력 시퀀스는 01 과 10 이다. S0에서 0을 받았을 때 회로는 S1상태로 갈 것이고 출력은 0 이다. 두번째 0 을 받았을 때 회로는 S2상태로 가고 출력은 1이다. 1을 받았다면 회로는 S3상태로 가고 출력은 1이고 두번째 1을 받았다면 S0상태로 가고 출력은 0일 것이다. S0가 0의 출력을 가지고 있고 회로가 다른 00 이나 11 시퀀스를 받기를 준비하고 있으므로 S0로 다시 되돌아 가는 것으로 설계 S2에서 00 시퀀스를 받았다면 회로는 S1으로 갈 수도 있고 다시 S2 로 돌아갈 수도 있다. 11 시퀀스를 받았다면 회로는 S3 상태로 간 다음 다시 S0 상태로 간다
본 실험은 ARM7에서 지원하는 Sound함수와 Nosound함수를 이용하여, 본 Training Kit에 장착된 스피커를 통하여 소리를 출력하는 실험이었다. 내부의 트랜지스터 회로 구성으로 인해 입력신호를 주면 그 신호를 증폭하여 스피커를 통하여 우리가 원하는 소리를 낼 수가 있는 것이다. 바로 이곳에서 정확하고 일정한 주파수를 만들어 내기 위해서 타이머가 필요한 것이다. void __irq Tmr0MC(void) rINTPEND&=~BIT_T0MC; // 다른 인터럽트 무시. if(Sound_On) rP0^=(1<<3); // Toggle Speaker else rP0&=~(1<<3); if(Sound_On) rP0^=(1<<3); 는 Sound_On이 '1'이라면 rP0의 3번 Bit를 현재 상태의 반대로 만들어 준다. 즉 현재 3번 Bit가 1이라면 0으로 0이라면 1로 바꾸어 줍니다. 3번 Bit는 GPIO3의 사용 여부를 나타냄으로 이 부분이 지속적으로 변경된다면 출력 신호 역시 1과 0으로 반복됨을 알 수 있다. 만일 Sound_On이 0이라면 else rP0&=~(1<<3); 가 실행 되고 GPIO3은 계속 OFF로 동작하여 신호의 출력이 없을 것이다. 이 같은 방법으로 신호 발생 여부를 제어 하게 되는 것이다.