工學碩士學位論文 - inha dspace: home · 2010-10-16 · 롤러를 항공용 데이터...

65

Upload: buidung

Post on 18-Jun-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

工學碩士學位論文

버퍼공유기법을 사용한 멀티채널

네트워크 컨트롤러 구현

Implementation of the multi-channel

network controller using buffer sharing mechanism

2007年 2月

仁荷大學校 大學院

情報通信工學科

李 泰 樹

工學碩士學位論文

버퍼공유기법을 사용한 멀티채널

네트워크 컨트롤러 구현

Implementation of the multi-channel

network controller using buffer sharing mechanism

2007年 2月

指導敎授 朴 宰 賢

이 論文을 工學碩士學位 論文으로 提出함

仁荷大學校 大學院

情報通信工學科

李 泰 樹

本 論文을 李 泰 樹 의 工學碩士學位 論文으로 認定함

2007年 2月

主審

副審

委員

I

요약

이 논문을 통하여 네트워크 장치 내의 통신 버퍼에서 발생되는 오버플

로우 문제를 개선할 수 있는 새로운 구조의 네트워크 컨트롤러를 제시한다

네트워크 시스템의 각 수신 채널은 각각의 통신 버퍼를 이용하여 수신된

데이터를 저장한다 한 장치 내에 여러 수신채널이 내장된 구조에서 다른

채널에 비해 상대적으로 많은 데이터가 수신되는 채널의 통신 버퍼에서 오

버플로우 문제가 발생될 수 있다

본 논문에서는 모든 채널로부터 수신되는 데이터를 하나의 공유메모리

에 저장하는 네트워크 컨트롤러를 제안한다 새로운 구조의 네트워크 컨트

롤러를 항공용 데이터 버스인 ARINC-429통신에 적용한다 버퍼공유기법

을 적용한 ARINC-429통신 컨트롤러를 Verilog를 이용하여 구현하고 구

현한 컨트롤러의 기능을 검증하고 테스트 하기 위하여 하드코어 프로세서

인 PPC405블록이 내장된 Xilinx의 Virtex-4를 사용하였다 구현된

ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리를 사용하

는 통신 컨트롤러가 각 통신 채널이 FIFO를 사용하는 구조보다 메모리를

효율적으로 사용하는 것을 확인하였다

II

Abstract

This paper presents an implementation of a new type of architecture

to improve an overflow problem on the network buffer Each receiver

channel of network system stores the message in its own buffer If

some receiver channel receives many messages buffer overflow

problem may occur for the channel

This paper proposes a network controller that implements receiver

channel with shared-memory to save received message which came

from the all of the channel A new type of architecture is applied to

ARINC-429 that kind of avionics databus The ARINC-429 controller

which was designed based on SOPC platform by using Verilog targeting

to Xilinx Virtex-4 with a built-in PPC405 core for testing and verifying

It is confirmed that to use a communication controller using a shared-

memory data buffer through implemented ARINC-429 communication

controller is more efficient than using FIFO

III

제목 차례

1 서론 1

11 연구 배경 1

12 연구 내용 및 논문 구성 3

2 버퍼공유기법의 네트워크 컨트롤러 4

21 버퍼공유기법의 네트워크 컨트롤러의 구조 4

22 공유메모리 제어기 5

23 공유메모리 제어 알고리즘 6

231 공유메모리 탐색 6

232 데이터 저장 8

233 데이터 로드 9

3 ARINC-429통신10

31 ARINC-429통신의 소개 및 특징 10

311 ARINC-429 네트워크 토폴로지 10

312 전기적 특징 12

313 ARINC-429메시지 형식 14

32 ARINC-429통신 전송채널 16

321 전송채널의 기능 16

322 전송채널 블록 16

33 ARINC-429통신 수신채널 17

331 수신채널의 기능 17

332 수신채널 블록 18

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러 20

41 ARINC-429 IP의 특징 20

42 ARINC-429 TOP IP 21

43 ARINC-429 IP 레지스터 23

431 전송채널 상태-제어 레지스터(00H) 23

IV

432 수신채널 상태-제어 레지스터(01H) 24

433 전송버퍼 레지스터(02H-03H) 25

434 수신버퍼 레지스터(04H-07H) 25

435 인터럽트 제어 레지스터(08H) 25

44 ARINC-429 전송채널 26

441 전송채널 Serializer IP 26

442 ARINC-429 전송채널 IP 28

45 ARINC-429 수신채널 30

451 수신채널 De-serializer IP 30

452 수신채널 Label controller IP 33

453 수신채널 Controller IP 35

454 ARINC-429 수신채널 IP 38

5 성능 평가41

51 XILINX VIRTEX-4 FX12 41

52 OPB 41

53 하드웨어 플랫폼 44

54 버퍼공유기법을 사용한 통신 컨트롤러 검증 46

541 정상적인 메시지 처리 실험 46

542 오버플로우 에러 발생 실험 47

543 쓰레스홀드 인터럽트 실험 48

6 결론 49

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 2: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

工學碩士學位論文

버퍼공유기법을 사용한 멀티채널

네트워크 컨트롤러 구현

Implementation of the multi-channel

network controller using buffer sharing mechanism

2007年 2月

指導敎授 朴 宰 賢

이 論文을 工學碩士學位 論文으로 提出함

仁荷大學校 大學院

情報通信工學科

李 泰 樹

本 論文을 李 泰 樹 의 工學碩士學位 論文으로 認定함

2007年 2月

主審

副審

委員

I

요약

이 논문을 통하여 네트워크 장치 내의 통신 버퍼에서 발생되는 오버플

로우 문제를 개선할 수 있는 새로운 구조의 네트워크 컨트롤러를 제시한다

네트워크 시스템의 각 수신 채널은 각각의 통신 버퍼를 이용하여 수신된

데이터를 저장한다 한 장치 내에 여러 수신채널이 내장된 구조에서 다른

채널에 비해 상대적으로 많은 데이터가 수신되는 채널의 통신 버퍼에서 오

버플로우 문제가 발생될 수 있다

본 논문에서는 모든 채널로부터 수신되는 데이터를 하나의 공유메모리

에 저장하는 네트워크 컨트롤러를 제안한다 새로운 구조의 네트워크 컨트

롤러를 항공용 데이터 버스인 ARINC-429통신에 적용한다 버퍼공유기법

을 적용한 ARINC-429통신 컨트롤러를 Verilog를 이용하여 구현하고 구

현한 컨트롤러의 기능을 검증하고 테스트 하기 위하여 하드코어 프로세서

인 PPC405블록이 내장된 Xilinx의 Virtex-4를 사용하였다 구현된

ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리를 사용하

는 통신 컨트롤러가 각 통신 채널이 FIFO를 사용하는 구조보다 메모리를

효율적으로 사용하는 것을 확인하였다

II

Abstract

This paper presents an implementation of a new type of architecture

to improve an overflow problem on the network buffer Each receiver

channel of network system stores the message in its own buffer If

some receiver channel receives many messages buffer overflow

problem may occur for the channel

This paper proposes a network controller that implements receiver

channel with shared-memory to save received message which came

from the all of the channel A new type of architecture is applied to

ARINC-429 that kind of avionics databus The ARINC-429 controller

which was designed based on SOPC platform by using Verilog targeting

to Xilinx Virtex-4 with a built-in PPC405 core for testing and verifying

It is confirmed that to use a communication controller using a shared-

memory data buffer through implemented ARINC-429 communication

controller is more efficient than using FIFO

III

제목 차례

1 서론 1

11 연구 배경 1

12 연구 내용 및 논문 구성 3

2 버퍼공유기법의 네트워크 컨트롤러 4

21 버퍼공유기법의 네트워크 컨트롤러의 구조 4

22 공유메모리 제어기 5

23 공유메모리 제어 알고리즘 6

231 공유메모리 탐색 6

232 데이터 저장 8

233 데이터 로드 9

3 ARINC-429통신10

31 ARINC-429통신의 소개 및 특징 10

311 ARINC-429 네트워크 토폴로지 10

312 전기적 특징 12

313 ARINC-429메시지 형식 14

32 ARINC-429통신 전송채널 16

321 전송채널의 기능 16

322 전송채널 블록 16

33 ARINC-429통신 수신채널 17

331 수신채널의 기능 17

332 수신채널 블록 18

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러 20

41 ARINC-429 IP의 특징 20

42 ARINC-429 TOP IP 21

43 ARINC-429 IP 레지스터 23

431 전송채널 상태-제어 레지스터(00H) 23

IV

432 수신채널 상태-제어 레지스터(01H) 24

433 전송버퍼 레지스터(02H-03H) 25

434 수신버퍼 레지스터(04H-07H) 25

435 인터럽트 제어 레지스터(08H) 25

44 ARINC-429 전송채널 26

441 전송채널 Serializer IP 26

442 ARINC-429 전송채널 IP 28

45 ARINC-429 수신채널 30

451 수신채널 De-serializer IP 30

452 수신채널 Label controller IP 33

453 수신채널 Controller IP 35

454 ARINC-429 수신채널 IP 38

5 성능 평가41

51 XILINX VIRTEX-4 FX12 41

52 OPB 41

53 하드웨어 플랫폼 44

54 버퍼공유기법을 사용한 통신 컨트롤러 검증 46

541 정상적인 메시지 처리 실험 46

542 오버플로우 에러 발생 실험 47

543 쓰레스홀드 인터럽트 실험 48

6 결론 49

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 3: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

本 論文을 李 泰 樹 의 工學碩士學位 論文으로 認定함

2007年 2月

主審

副審

委員

I

요약

이 논문을 통하여 네트워크 장치 내의 통신 버퍼에서 발생되는 오버플

로우 문제를 개선할 수 있는 새로운 구조의 네트워크 컨트롤러를 제시한다

네트워크 시스템의 각 수신 채널은 각각의 통신 버퍼를 이용하여 수신된

데이터를 저장한다 한 장치 내에 여러 수신채널이 내장된 구조에서 다른

채널에 비해 상대적으로 많은 데이터가 수신되는 채널의 통신 버퍼에서 오

버플로우 문제가 발생될 수 있다

본 논문에서는 모든 채널로부터 수신되는 데이터를 하나의 공유메모리

에 저장하는 네트워크 컨트롤러를 제안한다 새로운 구조의 네트워크 컨트

롤러를 항공용 데이터 버스인 ARINC-429통신에 적용한다 버퍼공유기법

을 적용한 ARINC-429통신 컨트롤러를 Verilog를 이용하여 구현하고 구

현한 컨트롤러의 기능을 검증하고 테스트 하기 위하여 하드코어 프로세서

인 PPC405블록이 내장된 Xilinx의 Virtex-4를 사용하였다 구현된

ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리를 사용하

는 통신 컨트롤러가 각 통신 채널이 FIFO를 사용하는 구조보다 메모리를

효율적으로 사용하는 것을 확인하였다

II

Abstract

This paper presents an implementation of a new type of architecture

to improve an overflow problem on the network buffer Each receiver

channel of network system stores the message in its own buffer If

some receiver channel receives many messages buffer overflow

problem may occur for the channel

This paper proposes a network controller that implements receiver

channel with shared-memory to save received message which came

from the all of the channel A new type of architecture is applied to

ARINC-429 that kind of avionics databus The ARINC-429 controller

which was designed based on SOPC platform by using Verilog targeting

to Xilinx Virtex-4 with a built-in PPC405 core for testing and verifying

It is confirmed that to use a communication controller using a shared-

memory data buffer through implemented ARINC-429 communication

controller is more efficient than using FIFO

III

제목 차례

1 서론 1

11 연구 배경 1

12 연구 내용 및 논문 구성 3

2 버퍼공유기법의 네트워크 컨트롤러 4

21 버퍼공유기법의 네트워크 컨트롤러의 구조 4

22 공유메모리 제어기 5

23 공유메모리 제어 알고리즘 6

231 공유메모리 탐색 6

232 데이터 저장 8

233 데이터 로드 9

3 ARINC-429통신10

31 ARINC-429통신의 소개 및 특징 10

311 ARINC-429 네트워크 토폴로지 10

312 전기적 특징 12

313 ARINC-429메시지 형식 14

32 ARINC-429통신 전송채널 16

321 전송채널의 기능 16

322 전송채널 블록 16

33 ARINC-429통신 수신채널 17

331 수신채널의 기능 17

332 수신채널 블록 18

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러 20

41 ARINC-429 IP의 특징 20

42 ARINC-429 TOP IP 21

43 ARINC-429 IP 레지스터 23

431 전송채널 상태-제어 레지스터(00H) 23

IV

432 수신채널 상태-제어 레지스터(01H) 24

433 전송버퍼 레지스터(02H-03H) 25

434 수신버퍼 레지스터(04H-07H) 25

435 인터럽트 제어 레지스터(08H) 25

44 ARINC-429 전송채널 26

441 전송채널 Serializer IP 26

442 ARINC-429 전송채널 IP 28

45 ARINC-429 수신채널 30

451 수신채널 De-serializer IP 30

452 수신채널 Label controller IP 33

453 수신채널 Controller IP 35

454 ARINC-429 수신채널 IP 38

5 성능 평가41

51 XILINX VIRTEX-4 FX12 41

52 OPB 41

53 하드웨어 플랫폼 44

54 버퍼공유기법을 사용한 통신 컨트롤러 검증 46

541 정상적인 메시지 처리 실험 46

542 오버플로우 에러 발생 실험 47

543 쓰레스홀드 인터럽트 실험 48

6 결론 49

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 4: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

I

요약

이 논문을 통하여 네트워크 장치 내의 통신 버퍼에서 발생되는 오버플

로우 문제를 개선할 수 있는 새로운 구조의 네트워크 컨트롤러를 제시한다

네트워크 시스템의 각 수신 채널은 각각의 통신 버퍼를 이용하여 수신된

데이터를 저장한다 한 장치 내에 여러 수신채널이 내장된 구조에서 다른

채널에 비해 상대적으로 많은 데이터가 수신되는 채널의 통신 버퍼에서 오

버플로우 문제가 발생될 수 있다

본 논문에서는 모든 채널로부터 수신되는 데이터를 하나의 공유메모리

에 저장하는 네트워크 컨트롤러를 제안한다 새로운 구조의 네트워크 컨트

롤러를 항공용 데이터 버스인 ARINC-429통신에 적용한다 버퍼공유기법

을 적용한 ARINC-429통신 컨트롤러를 Verilog를 이용하여 구현하고 구

현한 컨트롤러의 기능을 검증하고 테스트 하기 위하여 하드코어 프로세서

인 PPC405블록이 내장된 Xilinx의 Virtex-4를 사용하였다 구현된

ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리를 사용하

는 통신 컨트롤러가 각 통신 채널이 FIFO를 사용하는 구조보다 메모리를

효율적으로 사용하는 것을 확인하였다

II

Abstract

This paper presents an implementation of a new type of architecture

to improve an overflow problem on the network buffer Each receiver

channel of network system stores the message in its own buffer If

some receiver channel receives many messages buffer overflow

problem may occur for the channel

This paper proposes a network controller that implements receiver

channel with shared-memory to save received message which came

from the all of the channel A new type of architecture is applied to

ARINC-429 that kind of avionics databus The ARINC-429 controller

which was designed based on SOPC platform by using Verilog targeting

to Xilinx Virtex-4 with a built-in PPC405 core for testing and verifying

It is confirmed that to use a communication controller using a shared-

memory data buffer through implemented ARINC-429 communication

controller is more efficient than using FIFO

III

제목 차례

1 서론 1

11 연구 배경 1

12 연구 내용 및 논문 구성 3

2 버퍼공유기법의 네트워크 컨트롤러 4

21 버퍼공유기법의 네트워크 컨트롤러의 구조 4

22 공유메모리 제어기 5

23 공유메모리 제어 알고리즘 6

231 공유메모리 탐색 6

232 데이터 저장 8

233 데이터 로드 9

3 ARINC-429통신10

31 ARINC-429통신의 소개 및 특징 10

311 ARINC-429 네트워크 토폴로지 10

312 전기적 특징 12

313 ARINC-429메시지 형식 14

32 ARINC-429통신 전송채널 16

321 전송채널의 기능 16

322 전송채널 블록 16

33 ARINC-429통신 수신채널 17

331 수신채널의 기능 17

332 수신채널 블록 18

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러 20

41 ARINC-429 IP의 특징 20

42 ARINC-429 TOP IP 21

43 ARINC-429 IP 레지스터 23

431 전송채널 상태-제어 레지스터(00H) 23

IV

432 수신채널 상태-제어 레지스터(01H) 24

433 전송버퍼 레지스터(02H-03H) 25

434 수신버퍼 레지스터(04H-07H) 25

435 인터럽트 제어 레지스터(08H) 25

44 ARINC-429 전송채널 26

441 전송채널 Serializer IP 26

442 ARINC-429 전송채널 IP 28

45 ARINC-429 수신채널 30

451 수신채널 De-serializer IP 30

452 수신채널 Label controller IP 33

453 수신채널 Controller IP 35

454 ARINC-429 수신채널 IP 38

5 성능 평가41

51 XILINX VIRTEX-4 FX12 41

52 OPB 41

53 하드웨어 플랫폼 44

54 버퍼공유기법을 사용한 통신 컨트롤러 검증 46

541 정상적인 메시지 처리 실험 46

542 오버플로우 에러 발생 실험 47

543 쓰레스홀드 인터럽트 실험 48

6 결론 49

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 5: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

II

Abstract

This paper presents an implementation of a new type of architecture

to improve an overflow problem on the network buffer Each receiver

channel of network system stores the message in its own buffer If

some receiver channel receives many messages buffer overflow

problem may occur for the channel

This paper proposes a network controller that implements receiver

channel with shared-memory to save received message which came

from the all of the channel A new type of architecture is applied to

ARINC-429 that kind of avionics databus The ARINC-429 controller

which was designed based on SOPC platform by using Verilog targeting

to Xilinx Virtex-4 with a built-in PPC405 core for testing and verifying

It is confirmed that to use a communication controller using a shared-

memory data buffer through implemented ARINC-429 communication

controller is more efficient than using FIFO

III

제목 차례

1 서론 1

11 연구 배경 1

12 연구 내용 및 논문 구성 3

2 버퍼공유기법의 네트워크 컨트롤러 4

21 버퍼공유기법의 네트워크 컨트롤러의 구조 4

22 공유메모리 제어기 5

23 공유메모리 제어 알고리즘 6

231 공유메모리 탐색 6

232 데이터 저장 8

233 데이터 로드 9

3 ARINC-429통신10

31 ARINC-429통신의 소개 및 특징 10

311 ARINC-429 네트워크 토폴로지 10

312 전기적 특징 12

313 ARINC-429메시지 형식 14

32 ARINC-429통신 전송채널 16

321 전송채널의 기능 16

322 전송채널 블록 16

33 ARINC-429통신 수신채널 17

331 수신채널의 기능 17

332 수신채널 블록 18

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러 20

41 ARINC-429 IP의 특징 20

42 ARINC-429 TOP IP 21

43 ARINC-429 IP 레지스터 23

431 전송채널 상태-제어 레지스터(00H) 23

IV

432 수신채널 상태-제어 레지스터(01H) 24

433 전송버퍼 레지스터(02H-03H) 25

434 수신버퍼 레지스터(04H-07H) 25

435 인터럽트 제어 레지스터(08H) 25

44 ARINC-429 전송채널 26

441 전송채널 Serializer IP 26

442 ARINC-429 전송채널 IP 28

45 ARINC-429 수신채널 30

451 수신채널 De-serializer IP 30

452 수신채널 Label controller IP 33

453 수신채널 Controller IP 35

454 ARINC-429 수신채널 IP 38

5 성능 평가41

51 XILINX VIRTEX-4 FX12 41

52 OPB 41

53 하드웨어 플랫폼 44

54 버퍼공유기법을 사용한 통신 컨트롤러 검증 46

541 정상적인 메시지 처리 실험 46

542 오버플로우 에러 발생 실험 47

543 쓰레스홀드 인터럽트 실험 48

6 결론 49

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 6: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

III

제목 차례

1 서론 1

11 연구 배경 1

12 연구 내용 및 논문 구성 3

2 버퍼공유기법의 네트워크 컨트롤러 4

21 버퍼공유기법의 네트워크 컨트롤러의 구조 4

22 공유메모리 제어기 5

23 공유메모리 제어 알고리즘 6

231 공유메모리 탐색 6

232 데이터 저장 8

233 데이터 로드 9

3 ARINC-429통신10

31 ARINC-429통신의 소개 및 특징 10

311 ARINC-429 네트워크 토폴로지 10

312 전기적 특징 12

313 ARINC-429메시지 형식 14

32 ARINC-429통신 전송채널 16

321 전송채널의 기능 16

322 전송채널 블록 16

33 ARINC-429통신 수신채널 17

331 수신채널의 기능 17

332 수신채널 블록 18

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러 20

41 ARINC-429 IP의 특징 20

42 ARINC-429 TOP IP 21

43 ARINC-429 IP 레지스터 23

431 전송채널 상태-제어 레지스터(00H) 23

IV

432 수신채널 상태-제어 레지스터(01H) 24

433 전송버퍼 레지스터(02H-03H) 25

434 수신버퍼 레지스터(04H-07H) 25

435 인터럽트 제어 레지스터(08H) 25

44 ARINC-429 전송채널 26

441 전송채널 Serializer IP 26

442 ARINC-429 전송채널 IP 28

45 ARINC-429 수신채널 30

451 수신채널 De-serializer IP 30

452 수신채널 Label controller IP 33

453 수신채널 Controller IP 35

454 ARINC-429 수신채널 IP 38

5 성능 평가41

51 XILINX VIRTEX-4 FX12 41

52 OPB 41

53 하드웨어 플랫폼 44

54 버퍼공유기법을 사용한 통신 컨트롤러 검증 46

541 정상적인 메시지 처리 실험 46

542 오버플로우 에러 발생 실험 47

543 쓰레스홀드 인터럽트 실험 48

6 결론 49

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 7: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

IV

432 수신채널 상태-제어 레지스터(01H) 24

433 전송버퍼 레지스터(02H-03H) 25

434 수신버퍼 레지스터(04H-07H) 25

435 인터럽트 제어 레지스터(08H) 25

44 ARINC-429 전송채널 26

441 전송채널 Serializer IP 26

442 ARINC-429 전송채널 IP 28

45 ARINC-429 수신채널 30

451 수신채널 De-serializer IP 30

452 수신채널 Label controller IP 33

453 수신채널 Controller IP 35

454 ARINC-429 수신채널 IP 38

5 성능 평가41

51 XILINX VIRTEX-4 FX12 41

52 OPB 41

53 하드웨어 플랫폼 44

54 버퍼공유기법을 사용한 통신 컨트롤러 검증 46

541 정상적인 메시지 처리 실험 46

542 오버플로우 에러 발생 실험 47

543 쓰레스홀드 인터럽트 실험 48

6 결론 49

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 8: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

V

표 차례

표 1 메모리 제어 레지스터 6

표 2 민간 항공기 데이터 버스 10

표 3 ARINC-429 특징 15

표 4 ARINC-429 IP의 구성 자원 21

표 5 ARINC-429 TOP IP의 핀 할당 22

표 6 전송채널 레지스터 설명 23

표 7 수신채널 레지스터 설명 24

표 8 인터럽트 제어 레지스터 26

표 9 전송채널 SERIALIZER IP의 핀 할당 27

표 10 ARINC-429 전송채널 IP의 핀 할당 29

표 11 수신채널 DE-SERIALIZER IP의 핀 할당 32

표 12 수신채널 LABEL CONTROLLER IP의 핀 할당 34

표 13 수신채널 CONTROLLER IP의 핀 할당 37

표 14 ARINC-429 수신채널 IP의 핀 할당 39

표 15 VIRTEX-4 FX12의 특징 41

표 16 인터럽트 우선 순위 45

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 9: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

VI

그림 차례

그림 1 XILINX FPGA기반 시스템 디자인 과정 2

그림 2 공유메모리 방식의 수신장치 4

그림 3 공유메모리 탐색 7

그림 4 데이터 저장 8

그림 5 데이터 로드 9

그림 6 ARINC-429 버스형 토폴로지 11

그림 7 ARINC-429 성형 토폴로지 11

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성 12

그림 9 ARINC-429의 장치연결 13

그림 10 ARINC-429 BRZ 신호특성 13

그림 11 ARINC-429 메시지 형식 14

그림 12 ARINC-429 전송채널 블록 17

그림 13 ARINC-429 수신채널 블록 19

그림 14 ARINC-429 TOP IP 심볼 21

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과 22

그림 16 전송채널 레지스터 23

그림 17 수신채널 레지스터 24

그림 18 전송버퍼 레지스터 25

그림 19 수신버퍼 레지스터 25

그림 20 인터럽트 제어 레지스터 26

그림 21 전송채널 SERIALIZER IP 심볼 27

그림 22 전송채널 SERIALIZER IP의 시뮬레이션 결과 28

그림 23 ARINC-429 전송채널 IP 심볼 29

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과 30

그림 25 수신채널 DE-SERIALIZER IP 심볼 31

그림 26 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(1) 32

그림 27 수신채널 DE-SERIALIZER IP 시뮬레이션 결과(2) 33

그림 28 수신채널 LABEL CONTROLLER IP 심볼 34

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 10: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

VII

그림 29 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(1) 35

그림 30 수신채널 LABEL CONTROLLER IP 시뮬레이션 결과(2) 35

그림 31 수신채널 CONTROLLER IP 심볼 36

그림 32 수신채널 CONTROLLER IP시뮬레이션 37

그림 33 ARINC-429 수신채널 IP 심볼 38

그림 34 수신채널 IP의 시뮬레이션 결과 40

그림 35 OPB 메모리 모델 READ 타이밍 42

그림 36 OPB 메모리 모델 WRITE 타이밍 42

그림 37 USER_LOGIC IP 심볼 43

그림 38 MEMEC VIRTEX-4 FX12 MINI-MODULE보드 44

그림 39 디자인 블록다이어그램 45

그림 40 정상적인 메시지 처리 실험의 결과 46

그림 41 오버플로우 에러 발생 실험의 결과 47

그림 42 쓰레스홀드 인터럽트 실험 결과 48

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 11: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

1

1 서론

11 연구 배경

반도체 제조공정과 집적회로 기술이 발전으로 임베디드 시스템을 구성하

는 IC(Integrated Circuit)의 성능과 가격 경쟁력이 향상되고 크기가 작아

지면서 그 활용범위가 해를 거듭할수록 광범위해 지고 있다 반도체가 과거

소품 종 대량생산 체제에서 다품종 소량생산 제로 전환해 가는 추세에 맞

추어 SoC(System On a Chip)개념이 등장하였다

SoC란 하나의 시스템을 하나의 칩 안에 집적시키는 기술로 SoC기반의

시스템은 다음과 같은 장점을 갖고 있다[1][2]

고속 동작하는 시스템 구축에 용이하다

여러 기능의 구성 품이 단일 칩에 안에 집적되어 시스템의 부피가

줄어든다

시스템의 신뢰도가 증가한다

시스템이 단일 칩으로 구성되기 때문에 유지 보수가 용이하다

ASIC(Application Specific Integrated Circuit)의 집적도와 성능의 향상

으로 칩 내부에 대용량의 메모리를 내장할 수 있게 되면서 새로운 어플리

케이션의 등장으로 과거의 SoC는 ASIC을 기반으로 구현되었다 하지만 현

재 PLD(Programmable Logic Device)의 가격 하락과 집적되는 게이트 수

의 비약적인 증가로 PLD기반의 SoC가 주류를 이루게 되었다

PLD기반의 SoC인 SOPC(System On a Programmable Chip)를 기반으

로 시스템을 설계할 경우 성능이 검증된 IP(Intelligent Property)를 사용함

으로써 설계시간을 단축할 수 있고 시스템의 수정보완이 용이한 장점이 있

다 표준이나 인터페이스 방식이 확정되지 않은 시스템 또는 미리 알려지

지 않은 요구조건을 충족시키기 위한 시스템을 설계하게 될 경우 PLD기반

의 플랫폼에서 개발을 한다면 변경된 인터페이스나 요구조건에 맞춰 수정

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 12: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

2

과 보완이 가능하다 그림 1은 Xilinx FPGA기반의 시스템의 디자인 과정을

나타낸다[3]

그림 1 Xilinx FPGA기반 시스템 디자인 과정

이러한 SOPC의 장점을 통신시스템 설계에 적용할 경우 기존에 검증되

었던 IP를 활용하여 시스템의 설계 시간을 단축할 수 있고 시스템의 신뢰

도를 높일 수 있다 이에 따른 개발 비용 절감효과 또한 얻을 수 있다 표

준이나 인터페이스가 변경되는 경우에도 시스템 전체를 재설계 할 필요 없

이 최소의 시간과 비용만 투자하여 PLD의 구조를 변경함으로써 새로운 환

경에 적용 가능한 시스템 설계가 가능하다 이러한 SOPC의 장점을 이용하

여 FPGA기반에서 Xilinx사의 소프트 코어 프로세서인 MicroBlaze를 이용

한 네트워크 SoC가 제안되었다[4]

고속으로 동작되는 네트워크의 특징으로 인하여 데이터의 버퍼링은 모든

통신 네트워크에서 사용되는 기본적인 기법이다[5] 통신의 성능을 향상시

키기 위하여 데이터 버퍼를 효율적으로 관리하는 기법에 관한 연구가 진행

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 13: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

3

되고 있다[6][7][8] 일반적으로 통신시스템은 수신되는 데이터를 관리하

기 위하여 FIFO를 사용하는 구조로 설계되었다 하나의 네트워크 장치 내

에 여러 수신채널이 있는 구조에서 각 채널은 수신된 데이터를 저장하기

위하여 각각의 FIFO를 사용한다 이러한 구조의 네트워크 장치에서 특정

채널로 데이터가 집중되는 경우 FIFO의 한계보다 많은 데이터가 수신되어

네트워크의 성능을 저하시키는 문제가 발생될 수 있다 이런 문제가 발생되

는 상황에서 다른 채널의 FIFO를 사용하여 데이터를 처리할 수 있게 되면

전체 통신시스템의 안정성을 향상시킬 수 있다 SoC설계 기법 중

NOP(Network-on-Chip)구조를 위하여 FIFO를 사용하는 경우에 발생되는

HOL(Head of Line)문제를 개선하기 위한 방안으로 공유메모리를 사용하는

방법이 제안되었다[9] 공유메모리를 사용하는 기본 개념을 멀티채널 통신

시스템의 데이터 버퍼로 확대하여 각 채널의 FIFO를 하나의 대용량 공유메

모리로 대체하는 구조의 네트워크 장치를 제안하여 통신의 성능을 향상시

키고자 한다

12 연구 내용 및 논문 구성

본 논문에서는 네트워크를 구성하는 한 장치내의 수신채널이 데이터를

관리하기 위하여 공유메모리를 사용하는 구조를 제안하고 이를 민간 항공

기용 데이터버스인 ARINC-429통신에 적용하여 제안한 구조의 성능을 검

증하는 내용을 다룬다 공유메모리 방식의 ARINC-429통신 컨트롤러를

HDL을 이용하여 설계하고 이를 검증하기 위하여 SOPC기반 플랫폼에 적용

하여 그 성능과 기능을 검증하였다

서론에 이어서 2장에서는 버퍼공유기법의 통신 컨트로러의 구조와 제안

하는 알고리즘에 대하여 설명하고 3장에서는 제안하는 구조를 적용할

ARINC-429통신과 ARINC-429통신 컨트롤러의 구조에 대하여 설명한다 4

장에서는 공유메모리 제어기가 적용된 ARINC-429통신 컨트롤러의 설계와

시뮬레이션에 관한 내용을 다룬다 5장에서는 설계된 ARINC-429통신 컨트

롤러의 기능을 검증하고 6장을 통해 결론을 제시하여 논문을 끝맺는다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 14: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

4

2 버퍼공유기법의 네트워크 컨트롤러

21 버퍼공유기법의 네트워크 컨트롤러의 구조

단방향 데이터 전송방식을 사용하는 장치들로 구성된 네트워크에서 다른

장치들과 양방향 통신을 위해서는 개별적인 수신 경로를 필요로 하게 된다

이러한 네트워크 구조로 인하여 하나의 장치 내에는 여러 수신채널들이 존

재하면서 수신되는 데이터를 처리한다 일반적인 네트워크 장치의 경우

각 수신채널은 수신된 데이터를 관리하기 위하여 개별적인 버퍼를 사용한

다 이러한 구조의 수신채널에서 발생될 수 있는 메모리 오버플로우 문제를

개선하여 통신의 안정성을 높이기 위한 방법으로 본 논문에서는 한 장치내

의 수신채널들이 하나의 대용량 수신메모리를 공유하도록 하여 메시지 수

신이 집중되는 채널에서 발생될 수 있는 메모리 오버플로우 문제를 보완하

고 통신의 안정성을 높이는 구조를 제안한다

공유메모리 방식의 수신 장치를 내장한 수신 시스템은 그림 2와 같은

구조를 갖는다 장치내의 여러 수신 채널로부터 수신된 데이터들은 하나의

공유메모리에 저장되어 관리된다 각 수신채널은 공유메모리 제어기(SMC

Shared-Memory Controller)에게 수신된 데이터를 전달하고 저장을 요청한

그림 2 공유메모리 방식의 수신장치

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 15: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

5

22 공유메모리 제어기

네트워크를 구성하는 장치의 각 수신채널이 수신한 메시지를 저장하기

위해서 각 채널과 연결된 FIFO를 사용하는 경우 처음으로 수신된 메시지부

터 차례로 FIFO에서 출력되기 때문에 가장 먼저 수신되었던 메시지를 프로

세서에게 전달할 수 있다 이러한 수신채널의 기능을 유지하면서 각 채널

과 연결된 FIFO를 하나의 공유메모리로 대체하기 위한 메모리 제어기는 다

음과 같은 조건을 만족해야 한다

첫째 메모리에 저장되어 있는 메시지와 관련된 수신채널과의 연결을 유

지해야 한다

둘째 여러 수신채널에서의 메시지 저장 요청을 처리할 수 있어야 한다

셋째 메모리영역 중 사용되지 않는 영역을 찾아 메시지를 저장할 수 있

어야 한다

넷째 수신 제어기에게 메시지 요구 시에 지연 없이 메모리의 저장되어

있는 메시지 중에서 해당채널과 관련 있는 가장 먼저 수신되었던 메시지를

전달 해주어야 한다

공유메모리 제어기는 수신채널의 데이터 저장 요청과 메인 프로세서의

데이터 요청을 처리하며 공유메모리를 제어하는 역할을 한다 공유메모리

제어기는 각 채널로 저장된 데이터들의 연결을 관리하기 위하여 FAP(First

Address Pointer)와 LAP(Last Address Pointer) NAP(Next Address

Pointer)를 사용한다 각 수신채널에게 할당된 FAP는 해당 채널로 수신되

어 현재 공유메모리에 저장되어있는 데이터 중에서 가장 먼저 저장되었던

데이터의 주소를 나타낸다 LAP는 해당 채널과 관련되어 가장 마지막에 저

장되었던 데이터의 주소를 나타낸다 공유메모리 제어기는 FAP와 LAP를

이용하여 채널 데이터 연결의 처음과 끝을 생성한다 공유메모리에 저장되

어있는 데이터들 사이의 연결을 유지하기 위하여 공유메모리의 주소들과

대응되는 하나의 NAP가 존재한다 NAP는 공유메모리 저장된 데이터의 다

음 데이터를 나타내는 주소로 채널 데이터들 간의 연결을 유지시키는 역할

을 한다 공유메모리 제어기는 수신된 데이터를 저장하기 위하여 공유메모

리 영역 중에 현재 데이터가 저장되어 있지 않은 영역을 알 수 있어야 한

다 공유메모리 제어기는 MST(Memory Status Table)를 사용하여 공유메

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 16: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

6

모리의 상태정보를 관리 한다

표 1 메모리 제어 레지스터

레지스터 이름 기능

MSP 공유메모리 상태를 나타냄

FAP 가장 먼저 수신된 메시지의 주소

LAP 마지막으로 수신된 메시지의 주소

NAP 다음 메시지가 저장되어있는 주소

CAP 현재 탐색중인 메모리의 주소

23 공유메모리 제어 알고리즘

본 논문에서 제안하는 공유메모리 제어기는 3가지의 동작 상태를 갖는

다 공유메모리에 데이터를 저장하는 동작 상태와 공유메모리에 있는 데이

터를 로드하는 동작 상태 그리고 공유메모리에 데이터를 저장하기 위하여

사용 가능한 메모리 영역을 검색하는 동작 상태로 나눠진다 3가지 동작 상

태를 설명하는 그림 345는 4개의 수신채널로부터 수신되는 데이터를 관리

하기 위한 공유메모리 제어기를 나타낸 것이다

231 공유메모리 탐색

여러 채널이 하나의 메모리를 공유하는 구조의 수신 제어기에서 수신된

메시지를 저장하기 위해서 메모리 영역 중에서 현재 메시지가 저장되어 있

지 않은 영역을 찾아 메시지를 저장해야 한다 그림 3은 공유메모리의 영역

중에서 데이터가 저장되어 있지 않은 영역을 찾는 과정을 보여준다 공유메

모리 제어기는 메모리에 데이터를 저장하거나 메모리로부터 데이터를 로드

하지 않는 동안 MST를 이용하여 메모리의 상태를 확인한다 CAP(Current

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 17: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

7

Address Pointer)는 MST와 대응되는 공유메모리의 주소를 나타낸다 공유

메모리 제어기는 CAP가 현재 사용되지 않는 메모리 영역을 가리킬 때까지

MST를 검색하는 동작을 반복하면서 사용 가능한 메모리 영역을 찾게 된다

그림 3 공유메모리 탐색

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 18: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

8

232 데이터 저장

메시지가 정상적으로 수신되고 메시지가 저장될 주소를 할당 받은 경우

수신 제어기는 메모리 제어기에게 메시지의 저장을 요청한다 그림 4는 수

신된 데이터를 공유메모리에 저장하는 과정을 보여준다 공유메모리 제어기

는 데이터의 저장을 요청한 채널의 LAP와 LAP가 가리키는 주소의 NAP를

수신된 메시지를 저장할 주소인 CAP로 설정하여 마지막으로 저장되었던

데이터와 현재 저장하려는 데이터의 연결을 생성한다 CAP가 가리키는 주

소에 수신된 데이터를 저장하고 MST를 재설정 한다 공유메모리에 해당

채널과 관련된 데이터가 없는 경우 FAP를 CAP로 설정한다

그림 4 데이터 저장

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 19: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

9

233 데이터 로드

프로세서는 특정 채널로 수신된 메시지를 처리하기 위해 채널의 상태비

트를 체크하여 메모리에 해당 채널 메시지가 있는 경우 수신제어기에게 메

시지를 요청한다 그림 5는 공유메모리로부터 데이터를 로드하는 과정을 보

여준다 저장된 데이터의 로드 요청이 발생하면 공유메모리 제어기는 해당

채널의 FAP가 가리키는 공유메모리 주소의 데이터를 로드하고 MST를 재

설정 한다 FAP와 LAP가 같은 주소를 가리키게 되면 현재 로드한 데이터

가 해당 채널의 마지막 데이터임을 의미하고 FAP와 LAP가 서로 다른 주

소를 가리키는 경우 데이터들의 연결을 유지하기 위하여 FAP를 FAP의

NAP로 재설정한다

그림 5 데이터 로드

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 20: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

10

3 ARINC-429통신

31 ARINC-429통신의 소개 및 특징

민간 항공기의 데이터 버스로 널리 알려진 ARINC-429통신은 항공기내

장치와 시스템을 제어하기 위한 목적으로 사용되는 네트워크 프로토콜이다

ARINC-429통신 버스는 공식적으로 Mark 33 DITS(Digital Information

Transfer System)규정으로 알려져 있다[10] 쌍꼬임선(Twisted Shielded

Pair)을 통해 서로 연결되어 있는 항공기내 장치와 시스템들은 ARINC-429

통신 규정에 정의된 특성과 프로토콜에 따라 메시지를 전송한다 ARINC-

429통신 데이터 버스는 1980년대에 설계된 민간 항공기인 보잉 757 767

과 에어버스 A300 A310 및 A320 등에 사용되고 있다

ARINC-629의 경우 제어 장치가 모두 전자화된 보잉 777을 개발하면서

기존에 사용되던 ARINC-429의 성능을 향상시키기 위한 개량형으로 보잉

사 주도로 개발되었다 현재 보잉 777에 적용되어 사용되고 있다[11] 표

2는 민간항공기에 사용되는 데이터 버스를 나타낸다[12]

표 2 민간 항공기 데이터 버스

항공기 데이터 버스

보잉 747 757 767 ARINC-429

보잉 737 ARINC-429 CSDB

에어버스 310 320 ARINC-429

맥도널드 더글라스-11 ARINC-429

보잉 777 ARINC-629

311 ARINC-429 네트워크 토폴로지

ARINC-429통신은 단방향 데이터 전송 방식으로 규정되어 있다 장치간

의 개별 통신 선이 연결되어 있으므로 버스의 데이터 흐름을 제어하는 버

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 21: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

11

스 제어기가 필요하지 않다 한 버스 내에 최소 하나의 수신 장치가 있어야

하며 최대 20개의 수신 장치가 연결되어 네트워크를 구성할 수 있다 브로

드케스트 방식으로 구현되는 ARINC-429통신 버스는 버스형과 성형의 토

폴로지로 네트워크 구현이 가능하다[13] 그림 6과 그림 7은 버스형 토폴

로지와 성형 토폴로지를 나타낸다[14]

그림 6 ARINC-429 버스형 토폴로지

그림 7 ARINC-429 성형 토폴로지

성형 토폴리지방식으로 네트워크를 구성하였을 경우 전송장치로부터 수

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 22: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

12

신장치까지의 연결이 독립적으로 구성되기 때문에 버스형의 토폴리지 보다

안정적인 네트워크의 구성이 가능하다 하지만 버스형보다 많은 연결을 필

요로 하는 단점을 갖고 있다[14]

ARINC-429통신은 단방향 방식을 통신버스이기 때문에 장치간의 양방

향 통신을 위해서는 전송과 수신에 각각 다른 버스선을 필요로 한다 전송

채널은 전송선을 통해 데이터를 전송할 수 있고 수신채널은 수신선을 통해

데이터를 수신할 수 있다 이러한 구조 때문에 ARINC-429통신 네트워크에

장치가 추가되는 경우 통신선의 양이 급증하는 단점이 있다 반면 ARINC-

629통신 네트워크는 반이중 방식을 채택하고 있기 때문에 통신선이 급증하

는 문제점을 갖고 있지 않다 그림 8은 양방향 통신을 위한 ARINC-429네

트워크 구성을 보여준다

그림 8 ARINC-429 양방향 통신을 위한 네트워크 구성

312 전기적 특징

ARINC-429통신 버스는 전송 매체로 78옴의 임피던스의 쌍꼬임선을 사

용한다 쌍꼬임선 버스의 한쪽 끝은 데이터의 전송장치가 연결되고 다른 한

쪽은 데이터의 수신 장치가 연결된다 그림 9는 ARINC-429의 통신선 연

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 23: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

13

결 회로를 보여준다[11]

그림 9 ARINC-429의 장치연결

ARINC-429통신 버스는 32비트의 데이터를 전송하기 위해서 양의 값과

음의 값을 나타내는 두 개의 전송라인을 사용한다 각 전송라인을 통해 -

5V에서+5V 사이의 값을 갖는 BRZ(Bipolar Return to Zero)신호를 전송하

여 결과적으로 -10V에서 +10V의 값을 갖는 BRZ신호로 전송한다 버스를

통해 전달되는 ARINC-429통신의 신호는 ldquoHIrdquo ldquoNULLrdquo 그리고 ldquoLOWrdquo 3

가지의 상태를 갖는다 그림 10은 ARINC-429 BRZ신호의 전기적 특성을

보여준다

그림 10 ARINC-429 BRZ 신호특성

ARINC-429통신의 전송속도는 저속일 경우 12KHz(125 ndash 145KHz)

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 24: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

14

고속일 경우 100KHz로 규정하고 있다 전송되는 메시지 사이에는 최소 4

비트의 데이터 비트 전송 시간만큼의 NULL(zero voltage)상태를 필요로

한다[14]

313 ARINC-429메시지 형식

ARINC-429통신의 메시지는 32비트 구성되어있다 최하위비트인 LSB

의 비트 번호를 1 최상위비트인 MSB의 비트번호를 32로 규정한다 32비

트의 데이터를 역할에 따라 Label SDI DATA SSM P 총 5개의 필드로

구분한다[15] 그림 11은 ARINC-429의 메시지 형식을 나타낸다

그림 11 ARINC-429 메시지 형식

Label필드는 8비트로 구성되어있고 32비트의 ARINC-429 데이터 중 비

트 1-8에 할당 되어 3자리의 8진수로 표기된다 Label 필드는 수신된 메시

지의 데이터 유형을 나타내고 있기 때문에 메시지를 해석하는데 사용되어

수신장치에서 메시지의 수신여부를 판단하는 목적으로 사용된다 Label필드

는 비트번호 1이 MSB이고 비트번호 8이 LSB이다

SDI(SourceDestination Identifier)필드는 2비트로 구성되어 있고 선택

적으로 사용 가능하다 32비트의 데이터 중에 9번과 10번 비트에 해당되며

사용될 경우 멀티시스템에서 전송장치와 수신장치를 나타내기 위해 사용될

수 있다 경우에 따라서는 데이터 비트로 사용되기도 한다

SSM(SignStatus Matrix)필드는 30 31번 비트에 할당되어 상태정보로

써 기능을 할 경우에는 하드웨어 장치의 상태 또는 동작 모드 데이터의 유

용성 등을 나타내고 부호로써 기능을 할 경우에는 방향 부호 등을 나타낸

P(Parity)비트는 ARINC-429메시지 중 32번째 비트에 할당되어 메시지

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 25: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

15

의 에러 유무를 판단하는 목적으로 사용된다 일반으로 Odd parity로 설정

된다

Data필드는 32비트 중 11번에서 29번 비트에 할당된 값으로 총 19비트

가 데이터를 나타내는 목적으로 사용된다 SDI필드가 본래의 기능으로 사용

되지 않을 경우 데이터 비트는 31번 비트까지 확장되어 사용될 수 있다

[13][15] 표 3은 ARINC-429통신의 특징을 나타낸다[14]

표 3 ARINC-429 특징

ARINC-429 특징

전송 매체 트위스트 페어 케이블

라인 임피던스 75+5Ohms

신호 방식 BRZ

전송 방향 단방향

전송 방식 비동기 브로드케스트

전송 순서 LBS

전송 속도 12-145Khz 100Khz

오류 검출방식 오드패러티

워드 크기 32비트

데이터 크기 19비트

전송메시지 간격 최소 4비트 시간

데이터의 전송은 Label필드의 최하위부터 페리티 비트까지 순차적으로

전송되며 다음과 같은 비트 순서를 갖는다[15]

87654321910111213 hellip 32

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 26: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

16

32 ARINC-429통신 전송채널

321 전송채널의 기능

ARINC-429통신에서 전송채널은 ARINC-429통신 시스템의 프로세서에

서 전송을 위해 보내온 메시지를 전송버퍼에 저장하고 데이터 전송이 가능

하게 되면 ARINC-429통신 규정의 BRZ코드로 변환하여 버스로 전송하는

역할을 한다

322 전송채널 블록

전송채널을 구성하는 블록들은 그 역할에 따라 크게 4가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 Serializer로부터 전송되는 RZ코드

의 데이터 스트림을 ARINC-429규정의 BRZ코드 데이터로 변환하여 버스

로 전송하는 역할을 한다 각각 양과 음을 나타내는 -5V에서 +5V의 값을

갖는 두 개의 BRZ신호를 버스로 전송한다

둘째 Serializer는 전송버퍼로부터 32비트로 구성된 ARINC-429데이터

를 전달받아 Label 필드부터 패리티비트까지 전송비트 순서에 맞추어 라인

드라이버로 전송한다 32번째 비트인 패리트 비트는 Serializer에서 자동으

로 만들어서 전송하게 된다 전송되는 메시지 사이에는 최소 4비트 사이클

의 시간 간격이 필요하다

셋째 전송버퍼는 프로세서로부터 전송을 위해 보내진 메시지를 임시 저

장한다 Serializer가 전송을 마친 후 4비트 사이클 후에 데이터를 요청하게

되면 전송버퍼의 저장된 메시지가 Serializer로 전달되어 전송되게 된다

넷째 전송제어기는 전송채널과 관련된 상태제어 레지스터와 전송버퍼

관리 프로세서와의 인터페이스를 제공한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 27: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

17

그림 12 ARINC-429 전송채널 블록

33 ARINC-429통신 수신채널

331 수신채널의 기능

ARINC-429통신에서 수신채널은 전송채널에서 전송한 32비트의 BRZ코

드의 데이터 스트림을 수신하여 하나의 메시지로 만들어 수신 버퍼에 저장

하고 프로세서가 메시지를 요청할 때 프로세서에게 메시지를 전달하는 역

할을 한다 수신채널은 처음 수신된 8개의 데이터 비트들 즉 Label필드의

데이터를 참조하여 현재 수신된 데이터가 현재 채널에서 수신하고자 하는

메시지의 데이터인지를 판별하게 되고 수신된 데이터의 패리티비트를 검사

하여 최종적으로 메시지를 수신버퍼에 저장한다

수신버퍼의 크기가 하나의 메시지만을 저장할 수 있는 경우 ARINC-

429시스템의 메시지 요구 시간 간격에 따라서 수신버퍼의 버퍼 오버플로우

문제가 발생될 수 있다 때문에 이러한 문제점을 개선하기 위해서 다수의

메시지를 저장할 수 있는 메모리 영역을 수신 버퍼로 사용하게 된다

ARINC-429시스템이 수신채널로부터 수신된 메시지를 처리하기 위해

수신채널에게 메시지 읽기를 요청하게 되면 수신채널은 수신버퍼에 저장되

어있는 메시지 중에서 가장 먼저 수신되었던 메시지부터 차례로 프로세서

에게 전송해야 한다 이러한 기능을 쉽게 구현하기 위해서 일반적으로 수신

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 28: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

18

버퍼로 FIFO를 사용한다

332 수신채널 블록

수신채널을 구성하는 블록들을 그 역할에 따라 크게 5가지로 나눌 수

있다

첫째 ARINC-429 라인 드라이버는 전송채널에서 전송한 ARINC-429통

신 규정의 BRZ코드 데이터를 RZ코드로 변경하여 수신채널에서 받아들일

수 있는 규격으로 변환시키는 기능을 한다

둘째 De-serializer는 라인 드라이버로부터 전송되는 RZ비트 스트림을

수신하여 하나의 32비트 ARINC-429 메시지로 만드는 기능을 한다 이 과

정에서 De-serializer은 32비트의 데이터가 모두 수신되었는지를 확인하며

현재 수신된 메시지가 채널에서 수신해야 하는 메시지인지를 판단하기 위

해 처음 8비트의 Label 필드 값을 Label제어기로 전송하여 수신해야 하는

메시지인지 아닌지를 판단한다 마지막으로 패러티비트의 값을 사용하여 메

시지의 에러의 유무를 판단한 후 정상적인 메시지의 수신으로 확인되면 해

당 채널의 FIFO에 메시지를 저장한다

셋째 Label제어기는 1비트 x 256로 구성된 Label메모리를 제어하는 역

할을 한다 Label메모리에는 미리 프로세서 블록으로부터 전송 받은 수신해

야 하는 Label목록을 주소로 하여 해당 영역에 값 1을 저장하고 있다 De-

serializer로부터 수신된 메시지의 Label필드의 값이 전달되면 8비트의

Label값을 주소로 하여 Label메모리로부터 해당 주소의 값이 0인지 1인지

를 De-serializer에게 전송한다

넷째 수신된 메시지를 저장하기 위한 메모리로써 FIFO를 사용한다 수

신채널은 FIFO를 사용하여 메시지가 수신되었던 순서로 쉽게 메시지를 프

로세서에게 전달 할 수 있다

다섯째 수신 제어기는 수신채널과 관련된 상태-제어 레지스터와 FIFO

를 관리하고 프로세서와의 인터페이스를 제공한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 29: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

19

그림 13 ARINC-429 수신채널 블록

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 30: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

20

4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러

41 ARINC-429 IP의 특징

본 논문을 통해서 소개한 ARINC-429 IP는 1Mhz의 동작주파수를 갖는

다 내부에 수신채널과 전송채널의 상태-제어 레지스터와 Label 메모리영

역을 액세스하기 위해 9비트의 어드레스와 32비트의 데이터 버스를 갖는다

000H-008H영역은 상태-제어를 위한 레지스터 영역이고 100H-1FFH는

Label메모리 영역으로 할당되어 있다 2개의 전송채널과 4개의 수신채널을

포함하며 각 채널이 독립적인 전송완료 인터럽트와 수신완료 인터럽트의

소스가 된다 공유메모리에 저장된 데이터가 공유메모리의 반을 넘게 되면

메모리 쓰레스홀드 인터럽트가 발생된다 전송채널과 수신채널은 각각

125Kbps와 100Kbps의 통신 속도를 지원한다 구현된 ARINC-429 IP의

특징은 다음과 같다

동작 주파수 1Mhz

32비트의 데이터 버스

9비트의 어드레스 버스

독립적인 2개의 전송채널

독립적인 4개의 수신채널

125Kbps 100Kbps통신 속도 지원

64 x 32비트의 수신 메모리

7개의 인터럽트 소스(상승 에지 인터럽트)

i 2개의 전송채널 전송완료 인터럽트

ii 4개의 수신채널 수신완료 인터럽트

iii 공유메모리 쓰레스홀드 인터럽트

Xilinx ISE8103i를 사용하여 설계한 ARINC-429IP의 구성자원은 표 4

와 같다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 31: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

21

표 4 ARINC-429 IP의 구성 자원

Slices 2103(38)

RAMB16s 1(2)

Equivalent Gate 42797

42 ARINC-429 TOP IP

ARINC-429 TOP IP는 최상위 모듈로서 수신채널과 전송채널을 관리하

며 외부와의 인터페이스를 제공한다 동작 클락으로 1MHz를 입력 받아 사

용한다 32비트의 데이터 버스와 9비트의 어드레스 버스를 갖고 있으며

ReadWrite사이클이 종료되면서 버스상에 유효한 데이터가 있음을 알리기

위해 ack신호를 생성한다 ARINC-429의 IP심볼은 그림 14와 같다

그림 14 ARINC-429 TOP IP 심볼

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 32: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

22

표 5 ARINC-429 TOP IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

CS 입력 Chip select

RnW 입력 ReadWrite

address[80] 입력 어드레스

data_in[310] 입력 데이터 입력

dh_in[30] 입력 양의 RZ데이터 입력

dl_in[30] 입력 음의 RZ데이터 입력

ack 출력 acknowledgment

data_out[310] 출력 데이터 출력

dh_out[10] 출력 양의 RZ데이터 출력

dl_out[10] 출력 음의 RZ데이터 출력

txn_transmit_complete_intr 출력 채널n 전송완료 인터럽트

rxn_receive_complete_intr 출력 채널n 수신완료 인터럽트

mem_threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 15 ARINC-429 TOP IP의 시뮬레이션 결과

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 33: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

23

그림 15는 ARINC-429 IP의 시뮬레이션 결과를 보여준다 외부로부터

ARINC-429내부의 레지스터에 값을 저장하기 위한 입력신호들이 입력되는

모습과 이에 따른 ack신호가 생성되는 것을 확인할 수 있다

43 ARINC-429 IP 레지스터

431 전송채널 상태-제어 레지스터(00H)

2개의 전송채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 16

과 같다 전송채널을 인에이블 시키기 위한 TXEN레지스터와 전송 속도를

설정하기 위한 TXSF 전송버퍼의 상태를 알려주는 TXDRE비트로 구성 되

어있다 각 레지스터 비트에 관한 설명은 표 6에 설명되어 있다

그림 16 전송채널 레지스터

표 6 전송채널 레지스터 설명

이름 모드 초기값 기능

TXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 전송채널이 인에이블 된

TXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

TXDREn R 1 전송버퍼에 데이터가 없으면 1이 된다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 34: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

24

432 수신채널 상태-제어 레지스터(01H)

4개의 수신채널의 상태를 체크하고 제어하기 위한 레지스터는 그림 17

과 같은 구조로 되어있다 수신채널을 인에이블 시키기 위한 RXEN 통신

속도를 설정하기 위한 RXSF 수신채널의 Label 체크 동작을 인에이블 시

키기 위한 LEN Label메모리에 데이터를 쓰기 위한 LWEN 패리티 비트를

검사하기 위한 PEN 수신버퍼의 상태를 알려주는 RXDR과 DOR 마지막으

로 0번 전송채널과 내부 루프백 통신 테스트를 위한 TM비트로 구성되어

있다 각 레지스터 비트에 관한 설명은 표 7에 설명되어 있다

그림 17 수신채널 레지스터

표 7 수신채널 레지스터 설명

이름 모드 초기값 기능

RXENn RW 0 이 비트에 lsquo1rsquo을 쓰면 수신채널이 인에이블 된다

RXSFn RW 0 lsquo0rsquo이면 125Kbps lsquo1rsquo이면 100Kbps로 설정된다

LENn RW 0 Label체크 동작이 인에이블 된다

LWENn RW 0 Label메모리의 쓰기 기능이 인에이블 된다

PENn RW 0 패러티 에러 체크를 인에이블 시킨다

RXDRn R 0 데이터 수신이 완료되면 lsquo1rsquo이 된다

DORn R 0 데이터 오버런 에러 발생시에 lsquo1rsquo이 된다

TMn RW 0 0번 전송채널과 수신채널이 연결 된다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 35: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

25

433 전송버퍼 레지스터(02H-03H)

32비트의 전송버퍼 레지스터는 전송 데이터를 임시 저장하기 위한 레지

스터 이다 전송버퍼 레지스터에 저장된 데이터는 전송채널의 상태가 데이

터 전송을 할 수 있는 상태가 될 때까지 데이터를 임시 저장 한다

그림 18 전송버퍼 레지스터

434 수신버퍼 레지스터(04H-07H)

32비트의 수신버퍼 레지스터는 수신채널이 수신한 데이터를 읽어오기

위하여 사용하는 레지스터이다 이 레지스터를 이용하여 수신된 데이터를

읽어올 수 있다

그림 19 수신버퍼 레지스터

435 인터럽트 제어 레지스터(08H)

인럽터트 제어 레지스터는 그림 20과 같은 구조로 되어 있다 전송채널

의 전송 완료 인터럽트를 활성화 시키기 위한 TXCIE와 수신 완료 인터럽

트를 활성화 시키기 위한 RXCIE 공유메모리의 쓰레스홀드 인터럽트를 활

성화 시키기 위한 MTIE 전체 인터럽트를 활성화 시키기 위한 GIE비트로

구성되어 있다 각 레지스터 비트에 관한 설명은 표 8에 설명되어 있다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 36: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

26

그림 20 인터럽트 제어 레지스터

표 8 인터럽트 제어 레지스터

이름 모드 초기값 기능

TXCIEn RW 0 전송완료 인터럽트 인에이블

RXCIEn RW 0 수신완료 인터럽트 인에이블

MTIE RW 0 메모리 쓰레스홀드 인터럽트 인에이블

GIE RW 0 마스터 인터럽트 인에이블

44 ARINC-429 전송채널

441 전송채널 Serializer IP

Serializer IP는 전송버퍼에서 ARINC-429메시지를 읽어 라인드라이버에

게 전송하는 역할을 한다 하나의 비트를 양과 음을 나타내는 2개의 RZ코

드로 변환하여 라인드라이버에게 전송한다 메시지 전송이 가능한 상태가

되면 Serilizer는 request_data신호를 생성하여 전송버퍼의 내용을 요청하

게 되고 전송버퍼의 상태를 체크하여 데이터가 있는 경우 전송버퍼의 데이

터를 읽어 온다 메시지 전송 시에 Label필드의 상위부터 Label필드의 하

위비트까지 먼저 전송한 후 나머지 비트의 하위비트부터 상위비트 순으로

전송하고 마지막 패리티비트를 생성하여 전송한다 데이터의 전송이 완료되

면 한 사이클 동안 tx_intr을 로직 1로 만들어 전송완료 인터럽트 신호를

발생시킨다 Serializer IP심볼은 그림 21과 같다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 37: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

27

그림 21 전송채널 Serializer IP 심볼

표 9 전송채널 Serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

tx_en 입력 전송 인에이블

tx_empty 입력 전송버퍼 상태

data_in[310] 입력 데이터 입력

tx_setfreq 입력 통신 속도 설정

d_h 출력 양의 RZ데이터 출력

d_l 출력 음의 RZ데이터 출력

request_data 출력 데이터 요청

tx_intr 출력 전송완료 인터럽트

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 38: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

28

그림 22 전송채널 Serializer IP의 시뮬레이션 결과

시뮬레이션결과는 그림 22와 같으며 리셋 이후에 serializer블록은

request_data신호를 생성하여 현재 데이터를 전송할 수 있는 상태에 있음

을 알린다 전송버퍼의 상태를 나타내는 tx_empty신호가 0이 되면 전송버

퍼의 데이터를 내부로 읽어 와서 양과 음을 나타내는 두 개의 RZ신호를 생

성하게 되고 request_data가 0이 된다 serializer에서 전송퍼버를 읽어 가

게 되면 tx_empty는 다시 1이 되면서 전송버퍼에 전송할 데이터가 없음을

나타낸다

442 ARINC-429 전송채널 IP

ARINC-429전송채널 IP는 serializer 블록과 전송버퍼 상태제어 레지

스터를 관리하는 역할을 한다 독립적인 2개의 serializer블록과 각

serializer와 연결된 32비트의 전송버퍼 전송버퍼의 상태와 arinc429 전송

채널 블록의 상태를 나타내는 레지스터 최상위 모듈과의 인터페이스로직으

로 구성되어 있다 전송채널의 IP심볼은 그림 23과 같다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 39: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

29

그림 23 ARINC-429 전송채널 IP 심볼

표 10 ARINC-429 전송채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_write[10] 입력 전송버퍼 쓰기 요청

data_in[310] 입력 데이터 입력

tx_en[10] 입력 전송 인에이블

tx_setfreq[10] 입력 통신 속도 설정

tx_empty[10] 출력 전송버퍼 상태

d_h[10] 출력 양의 RZ데이터 출력

d_l[10] 출력 음의 RZ데이터 출력

txn_intr 출력 채널n 전송완료 인터럽트

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 40: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

30

그림 24 ARINC-429 전송채널 IP의 시뮬레이션 결과

시뮬레이션은 그림 24와 같으며 리셋 이후에 전송채널0이 인에이블 된

후 전송버퍼에 데이터가 없는 상태에서 최상위 모듈로부터 전송버퍼에 쓰

기 요청이 발생한다 입력되는 데이터를 전송버퍼에 저장하게 되면 전송버

퍼의 상태를 나타내는 tx_empty신호가 0이 되어 serializer블록에게 전송할

데이터가 현재 전송버퍼에 저장되어 있음을 알려 데이터를 읽어가도록 요

청한다 Serializer 블록이 데이터를 읽어가게 되면 다시 전송버퍼가 비워있

는 상태가 되고 또 다시 전송버퍼 쓰기 요청으로 전송버퍼에 데이터가 저

장된 후 serializer블록에서 데이터를 읽어가기 전까지 tx_empty가 0이 되

어 전송버퍼에 현재 데이터가 있음을 알리게 된다

45 ARINC-429 수신채널

451 수신채널 De-serializer IP

수신채널로 수신된 BRZ신호는 라인드라이버를 거쳐서 양과 음의 데이터

를 나타내는 2개의 RZ신호로 변환된다 De-serializer IP는 두 개의 RZ신

호 스트림을 수신하여 수신버퍼에 저장하는 역할을 한다

32비트의 ARINC-429데이터를 수신하는 동안에 처음 8비트인 Label필

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 41: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

31

드의 수신이 완료 되면 Label controller에게 Label필드의 값을 전송하여

현재 수신되는 메시지가 수신 버퍼에 저장되어야 하는 메시지인지를 판단

하게 된다 Label_bit를 통해 들어온 데이터가 1이고 수신된 메시지에서 에

러가 검출되지 않은 경우 수신버퍼에 메시지를 저장하고 수신제어기에게

메모리에 수신버퍼에 저장된 메시지의 저장을 요청하게 된다 만약 수신버

퍼에 메시지가 메모리로 저장되기 이전에 또 다른 메시지가 수신되어 수신

버퍼에 저장을 요청하는 경우 오버런 에러가 발생하면서 새로 수신된 메시

지는 무시된다 De-serializer의 IP심볼은 그림 25와 같다

그림 25 수신채널 De-serializer IP 심볼

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 42: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

32

표 11 수신채널 De-serializer IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

d_h 입력 양의 RZ데이터 입력

d_l 입력 음의 RZ데이터 입력

rx_en 입력 수신 인에이블

en_label_check 입력 Label 체크 인에이블

label_bit 입력 Label 상태

load 입력 메시지 저장

en_parity 입력 패리티 체크 인에이블

rx_setfreq 입력 통신 속도 설정

request_label 출력 Label 체크 요청

request_load 출력 메시지 저장 요청

overrun_err 출력 오버런 에러

label_field[70] 출력 Label 필드 값

rx_buffer[310] 출력 수신버퍼 출력

그림 26 수신채널 De-serializer IP 시뮬레이션 결과(1)

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 43: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

33

그림 26은 De-serializer IP가 데이터를 수신하면서 8비트의 Label을

수신한 이후에 Label Controller에게 Label 000(8)을 전송하여 Label bit의

값을 요구하는 과정이다

그림 27 수신채널 De-serializer IP 시뮬레이션 결과(2)

그림 27의 시뮬레이션 결과는 De-serializer IP가 32비트의 데이터 수

신을 완료한 후 이를 수신 버퍼에 저장하고 메모리로 옮기기 위해 수신제

어기에게 load를 요청하는 과정을 보여준다

452 수신채널 Label controller IP

Label controller IP는 256비트의 Label메모리와 관련된 인터페이스를

제공한다 De-serializer블록으로부터 Label체크 요청을 받게 되면 Label메

모리를 읽기 위한 제어신호와 수신된 Label필드의 값을 주소로 출력하여

De-serializer블록에서 해당 Label필드의 값을 통해 메시지의 수신 여부를

판단할 수 있도록 해준다

Label체크가 인에이블 되어있는 경우 De-serializer블록으로부터의

Label요청을 받아 Label 메모리를 읽기위한 제어 신호를 출력해주게 된다

현재 Label체크가 인에이블 되어 있지 않은 경우에는 최상위 모듈로부터의

Label메모리 읽기와 쓰기에 대한 요청을 받아 그와 관련된 신호를 출력해

주는 역할을 한다 Label controller IP심볼은 그림 28과 같다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 44: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

34

그림 28 수신채널 Label controller IP 심볼

표 12 수신채널 Label controller IP의 핀 할당

핀 이름 방향 기능

en_label_check 입력 Label 체크 인에이블

en_label_wr 입력 Label 쓰기 인에이블

request_label 입력 Label 체크 요청

label_wr 입력 Label 쓰기

en_label_operation 입력 Label 액세스 모드

label_field[70] 입력 Label 필드 값

address[70] 입력 어드레스

label_mem_wr 출력 Label 메모리 쓰기

label_mem_en 출력 Label 메모리 인에이블

label_mem_address[70] 출력 Label 메모리 어드레스

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 45: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

35

그림 29 수신채널 Label controller IP 시뮬레이션 결과(1)

그림 29는 통신을 시작하기 이전에 최상위모듈로부터 Label메모리의 값

을 받아 Label 메모리에 저장 하는 과정을 보여준다 Label 000(8)을 1로 쓰

는 과정이다 이와 같은 동작으로 De-serializer IP에서 Label 000(8)에 대

한 값을 요구할 때 Label값 1을 전송할 수 있게 된다

그림 30 수신채널 Label controller IP 시뮬레이션 결과(2)

그림 30은 De-serializer IP에서 8비트의 값을 수신 받은 이후에 Label

필드000(8)을 보내 Label비트 값을 요청하게 되면 Label controller에서 이

를 처리하는 과정을 보여준다 Label 메모리의 주소로 ldquo00000000rdquo을 전송

하고 인에이블과 wr신호를 생성하는 것을 확인할 수 있다

453 수신채널 Controller IP

수신채널 Controller IP는 4개의 수신채널이 공유하는 수신메모리를 제

어한다 4개의 수신채널로부터의 메모리 쓰기와 읽기요청을 받아 이를 관리

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 46: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

36

하는 역할을 한다 메시지를 수신한 후 수신버퍼에 저장하고 있는 De-

serializer블록은 수신채널 Controller블록에게 수신된 메시지 저장을 요청

하는 request_write신호를 전송하게 된다 이를 수신 받은 수신채널

Controller블록은 메모리의 각 영역의 사용여부를 판단하기 위해 MST레지

스터를 체크하여 빈 영역을 찾아 메시지를 저장한 후 load신호를 전송하여

De-serializer블록에게 수신버퍼의 메시지가 메모리에 저장되었음을 알리게

된다 여러 채널에서 동시에 저장 요청이 들어온 경우 채널 번호가 낮은 순

서대로 차례로 요청이 처리된다

각 채널로 수신되어 메모리에 저장되어있는 메시지들의 출력이 요구되면

수신채널 Controller블록은 FAP에 저장되어 있는 주소와 제어 신호를 메모

리로 전송하여 맨 처음 수신된 메시지를 출력하도록 해준다 Controller IP

심볼은 그림 31과 같다

그림 31 수신채널 Controller IP 심볼

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 47: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

37

표 13 수신채널 Controller IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nReset 입력 리셋

request_read[30] 입력 메모리 읽기 요청

request_write[30] 입력 메모리 쓰기 요청

chn_data[310] 입력 채널n 데이터

Data_mem_wr 출력 메모리 쓰기

Data_mem_en 출력 메모리 인에이블

Load[30] 출력 메모리 저장

Data_mem_address[50] 출력 메모리 주소

Data_mem_in[310] 출력 메모리 데이터 입력

Data_ready[30] 출력 데이터 레디

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 32 수신채널 Controller IP시뮬레이션

그림 32는 수신채널1의 데이터 저장요청을 메모리 제어기가 처리하는

과정을 보여주는 시뮬레이션 결과이다 빈 영역으로 CAP가 ldquo000000rdquo을 가

리키기 때문에 데이터는 메모리 주소 ldquo000000rdquo에 저장되게 된다 MST의

값이 1이 되면서 해당 영역이 사용되고 있음을 알리고 해당 채널의 FAP와

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 48: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

38

LSP의 값이 ldquo000000rdquo으로 설정되는 것을 확인할 수 있다

454 ARINC-429 수신채널 IP

ARINC-429 수신채널 IP는 4개의 수신채널 관리와 최상위모듈을 통해

외부와의 인터페이스를 제공하는 역할을 한다 ARINC-429 수신채널은 각

채널당 독립적인 De-serializer블록과 Label controller블록 Label메모리로

구성되어있고 하나의 64 x 32비트의 수신메모리와 이를 제어하는 수신채널

Controller로 구성되어 있다 IP심볼은 그림 33과 같다

그림 33 ARINC-429 수신채널 IP 심볼

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 49: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

39

표 14 ARINC-429 수신채널 IP의 핀 할당

핀 이름 방향 기능

clk 입력 클락

nRest 입력 리셋

label_wr 입력 Label 쓰기

en_label_operation 입력 Label액세스 모드

d_h[30] 입력 양의 RZ데이터 입력

d_l[30] 입력 음의 RZ데이터 입력

request_read[30] 입력 수신메시지 요청

rx_en[30] 입력 수신 인에이블

en_label_check[30] 입력 Label 체크 인에이블

en_label_wr[30] 입력 Label 쓰기

label_address[70] 입력 Label 메모리 주소

label_in[30] 입력 Label_ 메모리 입력

en_parity[30] 입력 패리티 체크 인에이블

rx_setfreq[30] 입력 통신 속도 설정

data_out[310] 출력 데이터 출력

label_out[30] 출력 Label 메모리 출력

data_ready[30] 출력 데이터 레디

overrun_err[30] 출력 오버런 에러

rxn_intr 출력 채널n 수신완료 인터럽트

threshold_intr 출력 메모리 쓰레스홀드 인터럽트

그림 34는 4개의 수신채널을 포함하고 있는 ARINC-429의 수신채널 시

뮬레이션 결과를 보여준다 외부로부터 Label메모리에 값을 저장하기 위한

요청이 들어왔을 경우에 이를 처리하는 과정을 보여주고 있다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 50: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

40

그림 34 수신채널 IP의 시뮬레이션 결과

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 51: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

41

5 성능 평가

51 Xilinx Virtex-4 FX12

본 논문을 통해서 소개한 ARINC-429통신 컨트롤러의 성능을 검증하기

위해서 하드코어 프로세서인 PPC405블록을 내장한 Xilinx의 Virtex-4

FX12에 ARINC-429 IP를 적용하였다

Virtex-4 FX12는 내부에 하나의 PPC405코어 블록과 총 81KB의

Block RAM 12312개의 Logic Cell을 내장하고 있다[16] Virtex-4 FX12

의 특징은 표 15와 같다

표 15 Virtex-4 FX12의 특징

Virtex-4 FX12

Logic Cells 12312

Slices 5472

Block RAMFIFO(18kbits each) 36

Total Block RAM(kbits) 648

Digital Clock Managers(DCM) 4

PowerPC Processor Blocks 1

101001000 Ethernet MAC Blocks 2

Configuration Memory Bits 5017088

Max SelectIO 320

52 OPB

사용자 IP를 하드코어 프로세서인 PPC405코어와 인터페이스 하기 위해

서는 온 칩 버스인 OPB(Onchip Peripheral Bus)또는 PLB(Processor

Local Bus)와 사용자 IP간에 인터페이스 로직을 만들어야 한다 본 논문에

서는 OPB버스와 ARINC-429 IP와의 메모리 모델 인터페이스 로직을 구현

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 52: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

42

하였다 그림 35와 그림 36은 OPB버스의 메모리 모델 ReadWrite 타이밍

을 보여준다[17]

그림 35 OPB 메모리 모델 READ 타이밍

그림 36 OPB 메모리 모델 WRITE 타이밍

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 53: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

43

OPB의 Read와 Write 사이클의 종료를 위해서 IP2Bus_Ack신호를 사용

한다 ReadWrite사이클이 8클락 안에 Ack신호를 받아 종료되지 않으면 타

이아웃 에러가 발생한다 8클락 안에 종료되지 않는 사이클을 위해서 타임

아웃 에러의 발생을 막기 위하여 IP2Bus_Toutsup신호를 생성하여야 한다

Bus2IP_CLK의 속도가 100MHz이고 ARINC-429 IP의 메인 클락은 1MHz

를 사용하기 때문에 Read와 Write 사이클의 타임아웃을 지연시키는 역할과

Ack신호를 생성하는 역할을 user_logic으로 구현하여 ARINC-429 IP와

PPC405 OPB버스간의 인터페이스가 가능하도록 하였다

그림 37 user_logic IP 심볼

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 54: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

44

53 하드웨어 플랫폼

본 논문을 통해 소개한 ARINC-429통신 컨트롤러를 검증하기 위해서

Xilinx의Virtex-4 FX12를 이용하여 제작된 Memec의 Virtex-4 FX12

Mini-Module보드를 사용하였다 ARINC-429 IP의 설계와 검증 synthesis

를 위해 ISE8103i를 사용하였고 설계된 IP의 시뮬레이션을 위해

ModelSim SE PLUS 58d를 사용하였다 EDK8102i를 사용하여 PPC405

코어에 페리페럴과 ARINC-429 IP를 연결하고 동작을 검증하기 위한 소프

트웨어를 작성하여 테스트 하였다 EDK는 synthesis implementation

simulation과 같은 하드웨어 관련 작업과 compile linking debugging과 같

은 소프트웨어 작업을 통합한 GUI환경이다[18]

그림 38 Memec Virtex-4 FX12 Mini-Module보드

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 55: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

45

검증을 위해 구현한 시스템은 PPC405코어와 프로그램과 데이터를 위한

메모리 영역 사용자 인터페이스를 위한 UART와 GPIO 그리고 인터럽트

제어하기 위한 INTC 본 논문을 통해 설계한 ARINC-429 IP로 구성되어

있다 전송수신 완료 인터럽트와 메모리 쓰래스홀드 인터럽트는 INTC에

연결되어 상승에지 인터럽트로 작동 된다 인터럽트의 우선 순위는 표 16과

같다 그림 39는 설계된 시스템의 블록다이어그램을 나타낸다

표 16 인터럽트 우선 순위

인터럽트 우선순위

메모리 쓰레스홀드 인터럽트 0

수신완료 인터럽트0 1

수신완료 인터럽트1 2

수신완료 인터럽트2 3

수신완료 인터럽트3 4

전송완료 인터럽트0 5

전송완료 인터럽트0 5

그림 39 디자인 블록다이어그램

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 56: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

46

54 버퍼공유기법을 사용한 통신 컨트롤러 검증

541 정상적인 메시지 처리 실험

동작을 검증하기 위한 테스트 프로그램1은 4개의 수신채널의 입력을 전

송채널0과 내부적으로 연결하는 테스트 모드로 설정하고 Label 001(8)을 수

신 할 수 있도록 Label메모리를 설정하고 통신 속도를 100Kbps로 맞추어

테스트 하였다 4개의 수신채널의 수신완료 인터럽트와 전송채널0의 전송완

료 인터럽트를 인에이블 시킨 후 전송채널0은 Label필드의 값을 001(8)으로

설정하고 전송완료 인터럽트가 발생하면 값을 0x100씩 증가시키면서 총

60개의 메시지를 전송한다 실험의 결과는 그림 40과 같다

그림 40 정상적인 메시지 처리 실험의 결과

각 채널이 60개의 메시지를 받아 총 240개의 메시지가 수신 되었고 각

수신채널에 수신 완료 인터럽트가 발생하여 수신된 메시지를 읽어 출력하

였다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 57: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

47

542 오버플로우 에러 발생 실험

541의 실험과 같은 환경에서 수신채널 2와 3의 수신완료 인터럽트를

비활성화한 후 60개의 메시지를 전송하였다 실험의 결과는 그림 41과 같

그림 41 오버플로우 에러 발생 실험의 결과

수신채널 0과 1을 통해서 수신되어 메모리에 저장된 메시지는 수신완료

인터럽트를 통해서 처리되었지만 수신채널 2와 3의 경우는 메모리에 저장

되어 남아있는 상태가 된다 이러한 이유로 64 x 32비트의 수신메모리가 모

두 사용중인 상태가 되는 시점에서 수신된 메시지가 저장되지 못하여 수신

완료 인터럽트가 더 이상 발생되지 않게 된다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 58: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

48

543 쓰레스홀드 인터럽트 실험

542와 같은 환경에서 메모리 쓰레스홀드 인터럽트를 활성화한 후 40개

의 메시지를 전송하였다 메모리 쓰레스홀드 인터럽트에서 채널2와 3의 메

시지를 2개씩 로드한다 실험의 결과는 그림 42과 같다

그림 42 쓰레스홀드 인터럽트 실험 결과

인터럽트에 의해서 처리 되지 못하여 메모리에 남아있는 채널2와 3의

메시지로 인하여 메모리 쓰래스홀드 인터럽트가 발생하는 것을 확인할 수

있다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 59: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

49

6 결론

본 논문을 통해서 멀티채널 통신시스템에서 데이터를 관리하기 위한 메

모리로 공유메모리를 사용하는 구조를 제안하고 이를 ARINC-429통신에

적용하여 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러를 구현하였다

모든 수신채널이 수신 메모리를 공유하면서도 기존 통신 컨트롤러의 수신

채널과 같이 각 채널이 FIFO를 사용하여 메시지를 저장하는 것과 동등한

역할을 하기 위하여 공유되는 메모리를 제어하는 메모리 공유 제어기를 제

안하고 HDL을 이용하여 설계하였다 메모리 공유제어기는 메시지를 받은

채널과 메모리에 저장된 메시지와의 연결을 생성하여 메모리에 저장된 메

시지를 관리하는 역할을 수행한다

제안한 알고리즘과 구현한 IP의 성능을 검증하기 위하여 2개의

ARINC-429통신 전송채널과 4개의 수신채널 64 x 32비트의 수신 메모리

를 포함한 ARINC-429통신 컨트롤러를 HDL을 이용하여 설계하였다 설계

된 ARINC-429 IP를 하드코어 프로세서인 PPC405를 내장한 Virtex-4

FX12에 적용시켜 하나의 ARINC-429통신 시스템을 구현하고 전송채널과

4개의 수신채널과의 통신 실험을 통하여 그 기능을 검증하였다

기존의 각 채널이 FIFO를 이용하여 수신메시지를 저장하는 방식의 수신

채널의 경우 수신된 메시지를 처리하기 이전에 각 채널로 수신된 메시지를

저장할 수 있는 공간보다 많은 메시지가 수신되는 경우 다른 채널의 FIFO

영역이 사용가능 하더라도 해당채널의 FIFO에서 오버플로우 문제가 발생하

여 전체 통신의 성능이 저하되는 문제점이 발생될 수 있다 하지만 본 논문

에서 제안한 수신 메모리를 공유하는 방식은 모든 채널이 하나의 대용량

수신 메모리를 공유하며 사용함으로써 통신 성능의 안정성을 향상시켰다

구현된 ARINC-429통신 컨트롤러를 통하여 데이터 버퍼로 공유메모리

를 사용하는 통신 컨트롤러가 각 통신 채널이 각각의 FIFO를 사용하는 구

조의 통신 컨트롤러 보다 메모리를 효율적으로 사용하는 것을 확인하였다

공유메모리 방식의 통신 컨트롤러는 ARINC-429통신 뿐 아니라 다른 통신

컨트롤러의 데이터 버퍼 관리 기법으로 적용되어 통신의 성능을 향상시킬

수 있다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 60: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

50

참고 문헌

[1] Reiner Hartenstein ldquoA Decade of Reconfigurable Computing a Visionary

Retrospectiverdquo IEEE Proceedings Design Automation and Test in Europe

Conference and Exhibition pp 642-649 2001

[2] PC French RW Taylor ldquoA Self-reconfiguration processorrdquo IEEE Workshop

FPGA for Custom Computing Machines pp 50-59 1993

[3] Xilinx Inc ldquoXilinx ISE 8 Software Manuals and Helprdquo Manual 2005

[4] Peter Magnusson Evaluating Xilinx MicroBlaz for Network SoC

Applications Masters Thesis in Computer Engineering pp 30-31 2004

[5] S Andrew Tanenbaum Computer Networks 4nd Prentice Hall PTR pp 506-

510 2003

[6] M Mobasseri VPM Leung A new buffer management scheme for

multimedia terminals in broadband satellite networks Proceedings of the 35th

Hawaii International Conference on System Sciences Volume 5 pp 2786-2790

2002

[7] M Alisafaee SM Fakhraie M Tehranipoor Architecture of an embedded

queue management engin for high-speed network devices 48th Midwest

Symposium on Circuits and Systems Vol2 pp 1907-1910 2005

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 61: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

51

[8] Y-M Joo N McKeown Doubling memory bandwidth for network buffers

INFOCOM `98 Conference of the IEEE Computer and Communications

Societies Vol 2 pp808-815 1998

[9] Po-Tsang Huang Wei Hwang 2-level FIFO architecture design for switch

fabrics in network-on-chip in ISCAS06 pp 4863-4866 2006

[10] ARINC Specification 429 PART 1-17 ARINC Inc pp 1-3 2004

[11] 인하대학교 항공경영 연구소 ldquo항공기 전자 장치rdquo Book 2003

[12] 황태현 ldquo위그선 개발을 위한 항공기의 비행제어 시스템 설계 기초 연

구rdquo JOURNAL OF SHIP amp OCEAN ENGINEERING Vol41 June 2006

[13] SBS Avionics Technologies Inc ldquoARINC-429 Commentaryrdquo 1999

[14] Avionics Communications Inc ldquoAVIONICS DATABUSES Secind Editionrdquo

2003

[15] Condor Engineering Inc ldquoARINC Protocol Tutorialrdquo Manual 2000

[16] Xilinx Inc ldquoVirtex-4 User Guiderdquo 2006

[17] Xilinx Inc ldquoOPB IPIF(v301c)rdquo Datasheet 2005

[18] 엔트미디어 Inc ldquoReal Xilinx Processor Worldrdquo Book 2005

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 62: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

52

[19] Memec Inc ldquoVirtex-4 FX12 Mini Module User Guiderdquo Manual 2005

[20] Memec Inc ldquoVirtex-4 FX12 Mini Module Reference Designrdquo Manual 2006

[21] Modeltech Inc ldquoModelSim SEPE Userrsquos Manualrdquo Manual 2000

[22] Xilinx Inc ldquoEmbedded System Tools Reference Manual ndash EDK 81irdquo Guide

2005

[23] Xilinx Inc ldquoVirtex-4 Configuration Guiderdquo 2006

[24] Xilinx Inc ldquoPowerPC 405 Processor Block Reference Guiderdquo 2005

[25] 최기홍 ldquoSOPC기반의 재구성 가능한 로봇제어기 구현에 관한 연구rdquo

2003

[26] Bob Zeidman ldquoVerilog Designerrsquos Libraryrdquo Book Prentice Hall 1999

[27] Charles H Roth Jr ldquoDigital Systems Design Using VHDLrdquo Book Thomson

Learning 1998

[28] Navabi ldquoAnalysis and Modeling of Digital Systemsrdquo Book Mc Graw Hill

1998

[29] Book Michael D Ciletti ldquoModeling Synthesis and Rapid Prototyping with

the Verilog HDLrdquo Book Prentice Hall 1999

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 63: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

53

[30] Device Engineering Inc ldquoDEI1016 ARINC 429 Transceiver Familyrdquo Datasheet

2005

[31] Device Engineering Inc ldquoDEI1045 ARINC 429 QUAD LINE RECEIVERrdquo

Datasheet 2002

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌
Page 64: 工學碩士學位論文 - Inha DSpace: Home · 2010-10-16 · 롤러를 항공용 데이터 버스인 arinc-429통신에 적용한다

54

감사의 글

아직도 부족한 저를 연구실에서 생활할 수 있게 해주시고 연구활동에 있

어 많은 가르침을 주신 박재현교수님께 깊은 감사를 드립니다 교수님께 배

운 지식과 열정이 이제 사회에 진출하는 저에게 너무나도 소중한 재산이

되는 것 같습니다

또한 제가 석사과정을 잘 마칠 수 있도록 도와주신 연구실 선배님들과

졸업동기인 민호형 준형이에게도 고맙다는 말과 고생했다는 말을 전합니다

다음학기에 졸업 예정인 대성이형 공부 못 하는 승곤이형 프로그램 잘 하

는 지윤이 그리고 공부하느라 고생하는 상윤이형에게도 감사한 마음을 전

합니다 연구실 생활을 이제 시작하는 시연이형 종현이 범용이가 연구실에

서 많은 것을 얻어가길 바랍니다

제 학교생활에 모든 것이 담겨있는 로보트연구회와 로보트연구회 선후배

님들에게도 감사 드립니다 특히 힘들 때 힘이 되어주는 우리 20기 동기인

성주 재호 수용 장모 우석이형 용석이형 경화 진영 진호 동기 현식

종민 병규 상문 마지막으로 외국에서 공부중인 기원이형에게도 감사드리

며 모두들 이루고자 하는일을 이루었으면 좋겠습니다 대학원 졸업 동기인

지성이누나 순규형 상훈이형에게도 감사드립니다

제가 대학원 공부까지 마칠 수 있도록 지원해 주신 부모님과 할아버지

할머니 그리고 형에게도 감사한 마음을 전하고 싶습니다

이제 학교를 떠나 사회 초년생으로써 발을 내딛으려 합니다 아직 부족

한 부분도 많지만 부족한 부분은 채우고 넘치는 부분은 나눌 수 있는 사람

이 되겠습니다 마지막으로 제가 석사 과정을 잘 마칠 수 있도록 도와주시

고 격려해주신 모든 분들께 다시 한 번 감사드리며 이 논문을 받칩니다

2007년 1월 5일

이 태 수

  • 1 서론
    • 11 연구 배경
    • 12 연구 내용 및 논문 구성
      • 2 버퍼공유기법의 네트워크 컨트롤러
        • 21 버퍼공유기법의 네트워크 컨트롤러의 구조
        • 22 공유메모리 제어기
        • 23 공유메모리 제어 알고리즘
          • 231 공유메모리 탐색
          • 232 데이터 저장
          • 233 데이터 로드
              • 3 ARINC-429통신
                • 31 ARINC-429통신의 소개 및 특징
                  • 311 ARINC-429 네트워크 토폴로지
                  • 312 전기적 특징
                  • 313 ARINC-429메시지 형식
                    • 32 ARINC-429통신 전송채널
                      • 321 전송채널의 기능
                      • 322 전송채널 블록
                        • 33 ARINC-429통신 수신채널
                          • 331 수신채널의 기능
                          • 332 수신채널 블록
                              • 4 버퍼공유기법을 적용한 ARINC-429통신 컨트롤러
                                • 41 ARINC-429 IP의 특징
                                • 42 ARINC-429 TOP IP
                                • 43 ARINC-429 IP 레지스터
                                  • 431 전송채널 상태-제어 레지스터(00H)
                                  • 432 수신채널 상태-제어 레지스터(01H)
                                  • 433 전송버퍼 레지스터(02H-03H)
                                  • 434 수신버퍼 레지스터(04H-07H)
                                  • 435 인터럽트 제어 레지스터(08H)
                                    • 44 ARINC-429 전송채널
                                      • 441 전송채널 Serializer IP
                                      • 442 ARINC-429 전송채널 IP
                                        • 45 ARINC-429 수신채널
                                          • 451 수신채널 De-serializer IP
                                          • 452 수신채널 Label controller IP
                                          • 453 수신채널 Controller IP
                                          • 454 ARINC-429 수신채널 IP
                                              • 5 성능 평가
                                                • 51 XILINX VIRTEX-4 FX12
                                                • 52 OPB
                                                • 53 하드웨어 플랫폼
                                                • 54 버퍼공유기법을 사용한 통신 컨트롤러 검증
                                                  • 541 정상적인 메시지 처리 실험
                                                  • 542 오버플로우 에러 발생 실험
                                                  • 543 쓰레스홀드 인터럽트 실험
                                                      • 6 결론
                                                      • 참고 문헌