본문 바로가기
임베디드소프트웨어

인피니언 TC3xx EVADC 개념 정리 - 2편 (Arbitration, Result Handling, Service Request Generation)

by Go! Jake 2023. 5. 9.

지난 시간에 이어 EVADC에 대해 알아본다. 오늘 적을 내용은 중재(Arbitration)과 결과 처리(Result handling)이다. Service Request Generation 내용을 추가하였다.

 

중재(Arbitration)

컨버터는 변환 요구 하나씩 처리할 수 있다. 따라서 변환 요구는 한번에 하나씩 들어올 필요가 있다. 그리고 여러 queue에 저장된 요구 중 어느 것을 먼저 처리할 것인지는 중재자(Arbiter)가 결정하게 된다.

 

변환 요청은 다음과 같다.

- Input 0: Queue 변환 요청(Queued request source) Q0

- Input 1: Queue 변환 요청(Queued request source) Q1

- Input 2: Queue 변환 요청(Queued request source) Q2

- Input 3: Synchronization source

Syncronization source 개념에 대해 설명하면, 각각의 ADC kernel을 Master 또는 Slave로 정의할 수 있다. 이 때 Master가 변환 요청을 수행하는 경우 Slave도 변환 요청한다. 이 때의 요청은 위 Q0, Q1, Q2 비교하여 가장 우선순위가 높다.

 

각각의 Input에 대해 configuration 할 수 있다. 아래 GxARBPR 레지스터를 살펴 보면, PRIO0에 대해서는 Bit 0에서부터 Bit 7에 해당하는 부분과, Bit 24번이 해당하게 된다. 

GxARBPR 레지스터
GxARBPR 레지스터

대략 이러한 내용이다.

PRIO: 각 소스의 우선순위 (input 0, input 1, input 2)

CSM: 변환 시 모드 (Wait-for-start mode: 다른 요청 변환 완료되기 기다렸다가 변환. Cancel-inject-repeat mode: 요청이 우선 순위가 높으면, 진행되고 있던 변환을 멈추고 먼저 들어감.)

ASEN: input의 중재 참여 가능 여부 (해당 input이 중재 과정에 참여할 수 있는지. 참여하지 못하면 변환이 아예 안된다.) 등등의 configuration이 가능하다.

 

변한 결과 처리(Conversion Result Handling)

A/D Converter에서 작업된 결과값은 CPU나 DMA를 통해 가져오게 된다. 여러 처리과정이 있고 그 중 저장 방식과 Data Alignment에 대해 적도록 하겠다.

 

변환 결과 저장 (Storage of Conversion Results)

처리된 결과값은 각각의 그룹별 레지스터나 공용 레지스터에 저장될 수 있다. 그룹 결과 레지스터는 결과 정보와 채널 번호의 정보를 가지고 있고, 공용 결과 레지스터는 결과값과 채널 번호 그리고 그룹 번호를 가지고 있다. 예를 들어 그룹에 할당된 결과 레지스터를 보자. GxRESy라는 레지스터이다. 여기에 x는 Group이 되고, y는 채널이 된다. 각 그룹과 채널마다 결과를 넣을 레지스터를 하나씩 가지고 있는 것이다.

결과 레지스터
결과 레지스터

위 레지스터를 보면 BIT 0번부터 15번까지 RESULT로 나타나 있고 여기에 결과값이 저장된다. 채널 정보는 CHNR에 저장되는 것을 알 수 있다. CRS 값을 통해 어떤 요청을 변환한 결과인지 알 수 있다.

 

데이터 얼라인먼트(Data Alignment)

위에 결과 레지스터에서는 결과값을 저장할 비트가 16개의 BIT가 주어졌지만 실제로는 TC3xx에서는 12BIT로 변환된다. 따라서 아래처럼 Right-Aligned, Left-Aligned 처리할 수 있다. 어플리케이션 소프트웨어에서 다루기 쉽게 설정하면 된다.

데이터 얼라인먼트
데이터 얼라인먼트

Service Request Generation

DMA 내용을 넣고 싶어 내용을 추가하였다. Service Request는 uC에서 특정 동작 수행을 요청하는 것이다. EVADC에는 3가지 종류로 Service Request가 생성된다.

1) 요청 종류(Request source)에 따른 Service Request: 특정 Request source의 변환이 완료되었을 때 Service Request한다. 이후 Application에서 추가적인 액션을 수행할 수 있다.

2) 채널(Channel)에 따른 Service Request: 특정 채널의 변환이 완료된 경우.

3) 결과(Result events)에 따른 Service Request: 새로운 결과값이 결과 레지스터에 들어온 경우, CPU나 DMA에 의해 읽도록 요청한다. ==> 이 때, 미리 지정해두었던 버퍼 주소에 레지스터 결과값을 옮겨 담는다.

 

여기까지로 하고, 다음은 EVADC 주요 레지스터를 살펴보도록 하겠다.

 

댓글