PLL 졸업작품 최종보고서
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

PLL 졸업작품 최종보고서에 대한 보고서 자료입니다.

목차

1. PLL소개
2. PLL의 구조와 각 Part의 기능
3. C++ Programing, API(Application Programing Interface)

본문내용

ence와 feedback 되서 divider를 거쳐 들어오는 두 주파수의 차이만 비교하는게 목적이다. 따라서 굳이 힘들게 높은 주파수에서 비교할
필요가 없다. 출력결과를 따온 feedback 신호의 주파수를 정확하게 일정비율의
주파수로 낮추어서 공급할 수 있다면 P/D에서도 원래 주파수보다 같은 비율로 낮은 주파수를 기준주파수로하여 비교할 수 있을 것이다.
분주기 회로를 이용하여 정확하게 특정 배율만큼 주파수를 낮추면 굳이 높은 기준주파수를 쓸 필요가 없게 되며, 그때는 크리스탈류와 같이 아주 정교하게 안정된 기준주파수원을 사용할 수 있게 된다.
이런 이유 때문에 PLL에서는 Divider가 필요하다.
위 그림을 보면 Divider 역할을 이해할 수 있다.
(1) 주파수를 낮춘다는 의미는 말 그데로 주파수를 정확한 비율로 나눈다는 의미 이다. 이렇게 주파수를 낯추면 Resolution, 즉 분해능이 떨어지게 된다.
만약 분주하기 전이라면 1Hz 단위로 정교하게 조절될 것 같지만, 예를 들어 이걸 1/100으로 나누면 100Hz 단위로 조절되기 때문에 분해능(정밀도)이 떨어지는 것은 막을 수가 없다.
하지만 중요한건 어차피 우리는 수 Hz 단위로 정교하게 주파수 세팅을 하지도
않고, 하기도 무척 어렵다는 점이다. 예를 들어 대역폭이 1.25MHz인 신호의 중심 주파수가 100Hz 정도 틀어진다는 것은, 1/ 12500 정도 오차가 있다는 것인데 이 정도는 충분히 감안할 수 있다는 오차이다.
실제로는 divider 부분이 이런 정밀도가 떨어질 것처럼 보이는 문제까지도 해결 가능하도록 복잡한 비율로 다중 분조 되도록 설계가 된다.
우리는 이런 정밀한 divdier가 아니라 주파수를 낯춘다는 개념으로 coding 하였다.
우리가 원하는 주파수를 뽑아내기 위해서는 divider의 분주비를 바꾸어주면 된다.
아래 그림과 같이 분주비를 100에서 99로 변경하면 출력 Frequency가 바뀌게된다. 결국 우리가 원하는 주파수는 기준 Reference에 분주비를 곱해서 나오는값이라고 할 수 있다.
출력에서 나온 792MHz가 divider를 거치면서 99로 나뉘면 결국 8MHz의 출력이 나와 버리게 된다 그러면 P/D에서 다시 똑같은 주파수를 비교하게 되어 별다른 펄스를 내보내지 않게 되고, Charge pump 의 상태를 그 상태에서 안정화 시켜버린다. 그렇게 되면 결국 이 시스템은 792MHz라는 전혀 다른 주파수에서 안정화 되면서 divider를 이용해서 원하는 주파수를 뽑을수 있다는 것을 알수 있다.
실제로 현대적 이동 통신에서는 divider 부분이 가장 복잡하다. 절묘한 비율변화로 주파수를 바꾸어야 하기 때문에 다단게 다중경로로 출력주파수를 분주하며, 소위 PLL IC라 불리우는 것을 통해 S/W 적으로 분주비를 바꾸면서 최종적으로 나오는 출력주파수를 바꿀 수 있게 되어 있다.
4.1 C++ Programing, API(Application Programing Interface)
구현 Compiler 중 우리는 C++을 택해서 했다. PLL이 각 Part별로 구성되어 있기 때문에 역할 분담을 해서 구현 하기에 C++ 의 Class 개념을 쓰는게 좋다고 생각해서이다.
전체적인건 C++의 Class 개념( 객체를 만들기 위한 틀이나 모형을 의미한다.)을 사용하고 각 Part의 내용은 거의 C의 기본 함수로 구현하였다.
우리가 사용한 Class의 개념을 간단히 언급할까 한다.
C 언어에는 흩어진 데이터를 한곳에 모아 두는 기능만을 갖고 있는 struct가 있는데 이것은 곧 데이터를 처리하기 위해 별도의 함수들을 외부에 따로 작성해두어야 한다.
따라서 데이터를 처리하기 위해 매번 외부의 함수 등을 호출해야 하기 때문에 함수를 호출하는데 걸리는 시간(over head times)과 무엇보다도 데이터의 안정성과 보호에 큰 영향이 미칠 것이다.
즉 구조형은 데이터들이 외부로부터 항상 개방되어 있기 때문에 언제 어떤 함수가 데이터에 접근해서 변경하는 것인지 통제하기가 어렵기 때문이다.
이와 같이 구조형이 각기 다른 데이터 항목들의 기능(속성)만을 갖는 집합된 대표 이름만 갖는다면, 클래스는 구조형이 갖는 기능( 흩어진 데이터를 한 곳에 모아둠)외에도 각 데이터 항목들을 움직이게 하는 처리절차, 즉 행위라고 하는 함수를 클래스 내에 같이 포함시킨 데이터 구조라 할 수 있다.
또 클래스는 구조형과는 달리 자료 구조가 복잡하고 난해한 자료 구조들을 보다 쉽게 정의하는 것은 물론, 외부로부터 각 데이터 멤버들을 더욱 안전하게 보호하거나 클래스 밖으로부터 데이터 멤버의 접근 방법을 제어한다.
클래스 = 데이터 멤버 + 멤버함수
( 데이터 멤버는 데이터를 기억하기 위한 변수, 멤버 함수는 데이터 멤버에 접근해서 데이터를 다루는 함수 )
PLL이 각 Part를 지나면서 신호의 형태를 변화시키고 feedback 되서 수렴할 때 까지 반복하기에, 각 Part를 link시키고 Part 마다의 state를 update 시킬 필요가 있다. 이를 감안해서 comp라는 class를 만들어서 각 part를 포인터의 개념을 이용해서 Link 시키고 각 Part에서 일어난 state를 매번 update 시킬 필요없이 한번에 update가 이루어질수 있도록 구현하였다.
바로 comp class가 우리 Coding의 가장 핵심이라 할 수 있다.
comp class가 보드의 역할을 하고 PLL 각 part (Ref,Dfliflop and so on)
class가 보드에 연결되는 chip의 개념에 해당하고 마지막 main 함수는 각 class를 선언함으로써 chip을 연결하는 전선의 역할을 한다.
이렇게 구현된 것을 사용자가 각 parameter를 손쉽게 바꾸면서 파형의 변화를 볼수 있도록 하기 위해서 API를 이용하였다.
- C++의 Class 개념을 이용한 우리의 coding 구성
Dflipflop , NAND, Vdd 가 Phase Detecter역할을 하고, pump에 LPF가 들어
있다. Globals 폴더에서 전체class를 Control 하게 되고,
1. 주파수원이 흔들리지 않도록 고정시킨다.

키워드

  • 가격2,500
  • 페이지수14페이지
  • 등록일2004.12.27
  • 저작시기2004.12
  • 파일형식한글(hwp)
  • 자료번호#280339
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니