system clock 설정
CPU는 clock을 기준으로 동작하므로 반드시 Clock 인가가 필요하다.
주파수 생성 회로는 용도, 정밀도, 주파수 범위 등에 따라서 매위 많은 회로가 있다.
CPU에서는 흔히 사용하는 주파수 발생 방법은 다음 3가지
Resonator : RLC 회로를 이용하여 만드는 저가 발전기 -> 저정밀, 저주파
X-TAL 발진기: Crystal을 이용하여 만드는 발진기 -> 고정밀,고주파 (크리스탈을 깎은건데 전류를 보내면 전류가 진동한다고 한다. 단점은 강한 충격을 가하면 쉽게 망가질 수 있다는 단점)
Oscillator : X-TAL과 특정은 유사하나 X-TAL과 달리 부가 회로가 불필요하다. 크리스탈에 발진회로까지 넣은 것이다. 전원만 넣어주면 주파수가 생성된다.
X-TAL은 크리스탈 가공의 한계로 인해 원하는 주파수를 얻을 수 없다. 고주파로 갈수록 얇게 가공해야 해서 생산이 어렵다.
일반적으로 80MHz 이상은 수율이 떨어지게 되고 가격도 비싸지게 된다.
프로세서에 내장된 내부 PLL 회로로 주파수를 증폭시켜서 사용하고 있는 것이다.
낮은 주파수를 이용하여 원하는 고주파를 얻기 위하여 PLL회로를 사용하는 것이다. 주파수를 원하는 높은 주파수로 합성해 낼 수 있는 장치이다. 사실 원래 PLL은 주파수의 틀어짐을 보정하여 정확한 주파수가 유지될 수 있도록 해주는 장치이다. 대게 마이크로 프로세서들은 내부 PLL을 내장하고 있다.
PLL은 대신에 안정된 주파수가 출력될 때까지 시간이 필요하다. -->> LOCK Time이라 한다.
즉, X-TAL -> OSC회로와 연계되서 clock이 발생하는 것이다. 이것이 PLL을 거쳐서 내가 원하는 고주파 신호로 변환 될 수 있는 것이다. 경우에 따라서 OSC를 그대로 사용해도 되고, PLL을 통해 변환된 고주파를 사용해도 되는 것이다. (ex) PLL_SHARED0)
clock 회로를 보면 nominal이라고 해서 최대 output으로 줄 수 있는 Clock이 정해져 있다. 이부분 주의 해야 한다.
Clock을 사용하는 시퀀스는 HSI, HSE(X-TAL의 일종, 내부클럭인지 외부클럭인지의 차이) ON -> PLL ON -> PLL LOCK 대기 순으로 사용된다.
최종적으로 Clock enable sfr을 확인해서 사용이 가능한지 확인하는 과정이 필요할 것이다.
CPU의 메모리 AccessTime
cpu 메모리 버스의 타이밍은 cpu 클럭을 기준으로 동작한다.
access time은 메모리 읽기 요청시간부터 실제 데이터 출력까지 긴 시간이 소요되는 데 이것을 의미한다. 일반적으로 메모리마다 시간이 다 다르다. 따라서 CPU가 제대로 메모리를 접근하려면 CPU 타이밍을 조절해야한다.
메모리 속도를 맞추기 위한 Wait 신호가 있다. CPU버스는 WAIT 라는 입력신호를 두고 있고, 이 신호로 메모리 속도를 조절한다. 즉, 느린 메모리를 접속할 때는 외부의 회로가 접속하는 메모리를 인지하고 WAIT를 제어한다.
일반적으로 SRAM은 빠르지만 ROM memory가 느려서 wait 신호가 발생한다고 한다.
GPIO 입력 제어
0도 아니고 1도 아닌 애매한 상태를 3-state 상태라고 한다. 디지털은 인식하지 못한다. (0일수도 1일수도 있다.)
다른 이름으로는 하이 임피던스상태이다. 따라서 이런 상태를 만들면 프로세서가 외부 입력 상태를 정확히 판단할 수가 없게 된다.
하이임피던스때문에 저항을 연결하여 안정된 레벨로 만든다. (다이렉트로 그라운드, 3.3v를 만들면 스위치를 눌렀을 때, short가 발생하게 된다.)
pull down, up 으로 이를 해결할 수 있다. 0V을 연결했음 pull up, 3.3v를 연결했으면 풀다운 저항이 필요한 것이다.
chattering
스위치는 스프링의 기계적인 동작에 의하여 접점이 붙거나 떨어진다.
이로 인해 스위치를 누르거나 뗄 때 많은 기계적 진동이 발생한다.
이런 상태가 디지털회로에 입력되면 빠르게 0,1이 변화하는 것으로 인식된다.
Chattering을 제거하기 위한 H/W적인 방법: Low Pass Filter를 설치해서 고주파 진동을 제거하는 방법이 있다.
PCB 면적 증가, 비용 증가 -> 고주파 진동만 제거가 가능하고 저주파는 불가능하다.
S/W적인 방법 : 비용은 절감되나 소프트웨어의 부하가 증가한다. 입력신호를 여러 번 읽어서 계속 같은 값일 때 정확한 논리 값을 판단하는 방법 사용 판정 횟수는 노이즈 환경이나 스위치 종류, 소프트웨어 특성에 따라 달라진다.
디바운스 회로 : 대표적으로 RC 필터가 있다. RC회로의 충방전 곡선을 이용한 회로로 R, C값이 클수록 제거효과는 커진다. 다만 R, C가 너무 크면 늘어지게 되기 때문에 적절한 값을 찾아야 한다.
슈미트 트리거 input : 0V ~ 0.5V를 0으로 인식, 2.5V ~ 5V를 1로 인식한다. 슈미트 트리거는 L->H, H->L로 변화되는 시점을 다르게 설정한다. chattering에 덜 민감하게 값을 조정하는 것이다. 즉, 1v 이하로 확실하게 떨어지기 전까진 계속 high로 유지해주는 기법 같은 것이다. 즉, 하이 임피던스 상태를 위한 접근 방식이다.
'임베디드' 카테고리의 다른 글
임베디드 시스템 디바이스 제어 프로그래밍 (5) (0) | 2025.07.02 |
---|---|
임베디드 시스템 디바이스 제어 프로그래밍 (4) (0) | 2025.07.01 |
임베디드 시스템 디바이스 제어 프로그래밍 (2) (0) | 2025.06.30 |
임베디드 시스템 디바이스 제어 프로그래밍 (1) (0) | 2025.06.30 |