5. Timer / GPIO / 7-Segment Peripherals

 

 

[Timer]

) Clock Source : 임베디드 SoC에서 시간을 재거나 특정 Event가 발생했을 때의 시간을 기록하는 용도로 사용하는 것을 Timer라고 하는데, 숫자가 커지거나 줄어드는 Timer가 있고, 선택적으로 증감 방향을 결정하는 Timer가 있습니다. 기본적으로 4가지의 카테고리로 나뉠 수 있는데 Clock Source가 필요한데 이는 기준 신호를 기반으로 해서 시간을 잽니다. 다만, 매우 빠른 속도를 갖습니다. ( 수십 Mhz ~ 수 Ghz 급의 속도를 갖습니다. )

) Prescaler : 빠른 속도를 느리게 만들기 위해 Prescaler를 사용합니다. 느리게 만드는 것을 '분주'라고 한다. 아날로그 회로에서는 PLL이라는 회로로 피드백을 통해 Clock을 분주합니다. 디지털에서는 정교하게 분주하기 보다는 1/2, 1/4, 1/16 수준으로 줄인다고 보면 됩니다. 정리하면 Clock Source는 기본적으로 빠른 속도를 갖기 때문에 이를 활용하기 위해 느리게 만들 필요가 있고, 이 역할을 Prescaler가 한다고 보면 되겠습니다.

) Timer Register : 현재 타이머 가지고 있는 시간을 저장하는 용도이다. Current Register라고도 합니다.

) Compare Register : 코어 입장에서 특정 시간에 도착했음을 확인하기 위해 미리 Load를 해놓는 Load Value를 적는 레지스터이다. 비교의 목적을 위해서 코어가 미리 지정해놓은 초기값이라고 보면 되겠습니다. 초기값을 설정하고 타이머를 동작하고 특정 순간에 Timer Register와 Comparator를 통해 일치할 경우에 Event를 발생시킨다.

) Capture Register :  스탑워치처럼 특정 이벤트가 발생했을 때 기준 시간을 통해 얼마나 시간이 경과되었는지 판단하기 위한 것으로 Capture Register가 있습니다. 즉, 현재 사건까지의 소요 시간을 저장하는 레지스터라고 할 수 있겠습니다.

※ Prescaler가 없이 Timer를 분명 만들 수는 있습니다. 단, 예로 Clock Source가 1Ghz일 때, 클락에 대한 주기는 1ns가 되는 것이고, 1초를 카운트하기 위해서는 2의 9승을 카운트해야 된다는 것입니다. 따라서 Load Value에 대한 값이 커지고, 매 클락 사이클마다 타이머를 증가시켜야 하기 때문에 전력소모에서 극심한 단점을 갖게 된다. 따라서, 레지스터의 Bit Width를 줄이거나 전력소모를 줄이기 위해서 Prescaler를 사용하는 것이 보편적이라 할 수 있겠습니다.

 

[GPIO]

) General Purpose Input Output의 준말

) General  Purpose <-> Special Purpose // 일반적으로 Special Purpose보다는 범용성에 맞춰져 있기 때문에, 최적화가 덜 되어 있어 퍼포먼스에서는 떨어지는 단점이 존재합니다.

) 상대적으로 느린 전송 속도만을 지원합니다.

) Direction Register를 사용해서 해당 비트 라인을 입력으로 사용할지 출력으로 사용할지를 결정합니다.

 

[7-Segment]

) 일반적으로 '0'의 신호를 주었을 때 불이 켜지고, '1'의 신호를 주었을 때 불이 꺼진다.

<Digilent Nexsys 에서 제공하는 입출력 신호 팜플렛>

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

[실습을 위한 이론]

 

[AHB Timer]

) 이전 실습에서 다뤘던 신호와 달리 Timer는 외부로 나가는 신호가 존재하지 않습니다. 단순 시간을 측정하기 위한 용도이라는 것을 명심!

) Load, Value, Control 레지스터가 존재합니다. 

[AHB GPIO]

 

Bit[0] : 0 Read, 1 Write = 0 인풋, 1 아웃풋으로 작동합니다.

 

 

 

[AHB 7-Segment]

 

 

 

 

'IDEC > Cortex - M0' 카테고리의 다른 글

7. VGA Peripheral (2)  (0) 2023.07.24
6. VGA Peripheral (1)  (0) 2023.07.20
4. AHB UART Peripheral  (0) 2023.07.19
3. AMBA 3 AHB-LITE Bus Architecture  (0) 2023.07.14
2. Cortex-M0 Overview / Register  (0) 2023.07.14