KR101476585B1 - 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치 - Google Patents
다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치 Download PDFInfo
- Publication number
- KR101476585B1 KR101476585B1 KR1020140018924A KR20140018924A KR101476585B1 KR 101476585 B1 KR101476585 B1 KR 101476585B1 KR 1020140018924 A KR1020140018924 A KR 1020140018924A KR 20140018924 A KR20140018924 A KR 20140018924A KR 101476585 B1 KR101476585 B1 KR 101476585B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- transmission
- module
- bus
- slave
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/22—Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Bus Control (AREA)
Abstract
본 발명은 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치 방법 및 장치가 제시된다.
주기적으로 다중화 제어기의 출력 모듈이 데이터를 전송하도록 전송 주기를 시작하는 역할과 전송주기를 종료하는 역할을 수행하며, 다중화 제어기의 각 모듈의 전송을 폴링(Polling)하는 버스 관리자와 버스 중재를 통하여 유동적 주기로 데이터를 전송하도록 하는 데이터 생성 모듈과 다중화 데이터를 수신하여 내부 컨트롤러의 선별 모듈을 통해 이를 선별하는 데이터 수신 모듈을 포함하는 슬레이브 모듈로 구성되며, 상기 데이터 생성 모듈의 슬레이브 프레임에 n비트의 ID필드를 추가하여, 상기 ID필드에 따라 전송이 중재될 수 있는 보팅 버스 시스템을 구성하여 데이터의 전송 주기를 유동적으로 조절할 수 있고, 데이터의 크기에 무관하게 처리 속도를 보장하는 방법 및 장치에 관한 것이다.
주기적으로 다중화 제어기의 출력 모듈이 데이터를 전송하도록 전송 주기를 시작하는 역할과 전송주기를 종료하는 역할을 수행하며, 다중화 제어기의 각 모듈의 전송을 폴링(Polling)하는 버스 관리자와 버스 중재를 통하여 유동적 주기로 데이터를 전송하도록 하는 데이터 생성 모듈과 다중화 데이터를 수신하여 내부 컨트롤러의 선별 모듈을 통해 이를 선별하는 데이터 수신 모듈을 포함하는 슬레이브 모듈로 구성되며, 상기 데이터 생성 모듈의 슬레이브 프레임에 n비트의 ID필드를 추가하여, 상기 ID필드에 따라 전송이 중재될 수 있는 보팅 버스 시스템을 구성하여 데이터의 전송 주기를 유동적으로 조절할 수 있고, 데이터의 크기에 무관하게 처리 속도를 보장하는 방법 및 장치에 관한 것이다.
Description
본 발명은 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치에 관한 것으로, 더욱 상세하게는 보팅 버스 시스템을 구성하여 데이터의 전송 주기를 유동적으로 조절할 수 있고, 데이터의 크기에 무관하게 처리 속도를 보장하는 시리얼 버스 프로토콜 구현 방법 및 장치에 관한 것이다.
일반적으로 다중화 구조 제어기는 동일 기능의 모듈을 다수 개 사용함으로써 하나 이상의 단위 구성 모듈에 고장이 발생하는 경우에도 즉각적인 전체 시스템의 오류를 초래하지 않는다. 따라서 고신뢰성과 내고장성을 보장한다.
다중화 구조 제어기의 특성상 다중화된 출력 모듈은 오류가 발생하지 않는 한 동일 데이터를 생성하므로, 각 모듈은 중복된 데이터를 시스템 버스에 전송하게 된다.
도 1은 일반적인 다중화 구조 제어기의 예로 삼중화 데이터 선별 논리를 도시하는 흐름도이다.
일반적인 다중화 제어 구조에서 삼중화 데이터 선별 방법은 도 1에 도시한 바와 같이, 입력 모듈은 중복적인 데이터를 받게 되며, 삼중화 데이터의 경우 데이터 상태, 데이터 타입(아날로그, 디지털), 고장 모듈의 수에 따라 삼중화 데이터 선별 논리에 의해서 최종 데이터를 판단하게 된다.
다중화 데이터 생성 모듈은 각자 생성한 데이터를 버스로 전송하며, 다중화 구조 제어기의 데이터는 실시간 데이터로 주기적으로 버스에 전송된다. 따라서 데이터 전송 주기는 버스의 효율성 및 성능에 직결된다.
그러나, 종래의 다중화 구조 제어기는 고장 모듈 수와 같은 시스템의 상태를 고려하지 않고 고정적인 주기로 데이터를 전송하기 때문에 버스의 효율성이 떨어진다. 또한 수신 모듈의 프로세서에서 소프트웨어로 선별을 실시하고 있으므로, 데이터의 선별이 비트 별로 처리되어 데이터의 크기가 증가할수록 처리시간도 이에 비례하므로 성능이 저하되는 문제점이 있다.
본 발명이 이루고자 하는 기술적 과제는 데이터의 전송 주기를 유동적으로 조절할 수 있으며 데이터의 크기와 무관하게 신속한 처리 속도를 보장하는 효율적인 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치를 제공하는데 있다.
본 발명의 실시예에 따르면, 주기적으로 다중화 제어기의 출력 모듈이 데이터를 전송하도록 전송 주기를 시작하는 역할과 전송주기를 종료하는 역할을 수행하며, 다중화 제어기의 각 모듈의 전송을 폴링(Polling)하는 버스 관리자와 버스 중재를 통하여 유동적 주기로 데이터를 전송하도록 하는 데이터 생성 모듈과 다중화 데이터를 수신하여 내부 컨트롤러의 선별 모듈을 통해 이를 선별하는 데이터 수신 모듈을 포함하는 슬레이브 모듈로 구성되며, 상기 데이터 생성 모듈의 슬레이브 프레임에 n(n>=2)비트의 ID필드를 추가하여, 상기 ID필드에 따라 전송이 중재될 수 있다.
일 측면에 따르면, 상기 슬레이브 모듈은 상위 번호의 상기 ID필드 순서대로 데이터를 전송하되, 고장이 발생할 경우 고장인 노드를 제외한 나머지 노드의 상위 번호의 상기 ID필드 순서대로 데이터를 전송하며, 상기 버스 관리자는 전송 대기 초과 시간을 설정하여 설정된 시간 동안 상기 슬레이브 프레임이 수신되지 않으면 전송 주기를 완료하고, 다음 전송 주기의 시작을 위해 마스터 프레임(Master Frame)을 전송하는 것이 가능하다.
다른 측면에 따르면, 상기 컨트롤러는 전송부, 이중화된 수신부, 제어부, 타이머, 메모리, 인터페이스를 포함하며, 데이터 생성 노드에서 전송 중재를 하도록 중재 주기 동안 데이터 전송 여부를 판단하여 상기 전송부에 통지하는 중재부와 데이터 수신 노드에서 데이터 선별을 하도록 전체 전송 주기가 완료될 때까지 상기 수신부를 통제하여 선별된 최종 데이터를 상기 제어부로 전달하는 선별부가 구성될 수 있다.
또 다른 측면에 따르면, 슬레이브 프레임의 슬레이브 시작 딜리미터(Slave Start Delimiter)를 전송하는 단계와 상기 슬레이브 프레임 ID필드의 최상위 비트(Most Significant Bit, MSB)로부터 최하위 비트(Least Significant Bit, LSB)까지를 순차적으로 전송하는 단계와 컨트롤러의 중재부는 버스의 신호를 관측하여 버스 신호와 상기 ID필드의 일치 여부를 판단하는 단계와 상기 버스 신호와 상기 ID필드가 일치할 경우, 데이터와 오류 검출 코드(CRC), 종료 딜리미터(End Delimiter)를 전송하여 상기 슬레이브 프레임의 전송을 완료하는 단계와 데이터 수신 노드에서 데이터 선별을 실시하는 단계와 최종 데이터를 판단하여 저장하는 단계로 이루어지는 것이 가능하다.
또 다른 측면에 따르면, 상기 버스 신호와 상기 ID필드의 일치 여부를 판단하는 단계에서 상기 버스 신호와 상기 ID필드가 일치하지 않을 경우, 상기 컨트롤러는 전송 모드에서 수신 모드로 변경되며, 다음 전송 주기가 시작될 때까지 대기하는 단계로 이루어지는 것도 가능하다.
또 다른 측면에 따르면, 상기 데이터와 오류 검출 코드(CRC), 종료 딜리미터(End Delimiter)를 전송하여 상기 슬레이브 프레임의 전송을 완료하는 단계는 한 전송 주기 내에서 전송 응답 대기 시간을 초과하지 않는 경우, 상기 ID필드의 수에 따른 최대 2 n 번의 세부 전송 주기가 완료되는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 데이터와 오류 검출 코드(CRC), 종료 딜리미터(End Delimiter)를 전송하여 상기 슬레이브 프레임의 전송을 완료하는 단계는 한 전송 주기 내에서 전송 응답 대기 시간을 초과하는 경우, 고장 노드가 1개 이상인 경우로 판단하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면 데이터의 전송 주기를 유동적으로 조절할 수 있으며, 데이터의 크기와 무관하게 신속한 처리 속도를 보장한다. 즉, 하드웨어를 기반으로 함으로써 처리시간이 데이터의 크기에 관계없이 동일하여, 데이터의 크기가 증가할수록 효율성이 높아진다.
또한, 종래에는 m(m <= 2 n )차 다중화 데이터를 전송하기 위해서는 최대 m번의 폴링을 거쳐야 했으나(예를 들어, 삼중화 데이터를 전송하기 위해서는 3번의 폴링), 1번의 기본 주기로 다중화 데이터를 전송하고 처리할 수 있어 효율적이며 처리시간을 단축할 수 있다.
도 1은 일반적인 다중화 구조 제어기의 예로 삼중화 데이터 선별 논리를 도시하는 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 보팅 버스 시스템을 도시하는 구성도이다.
도 3은 본 발명의 일 실시예에 따른 슬레이브 프레임을 도시하는 구조도이다.
도 4는 본 발명의 일 실시예에 따른 고장 모듈의 수에 따른 버스 전송 주기를 나타낸 도이다.
도 5는 본 발명의 일 실시예에 따른 컨트롤러의 내부를 도시하는 구조도이다.
도 6은 본 발명의 일 실시예에 따른 0번과 1번 노드의 데이터 전송 결과를 나타낸 도이다.
도 7은 본 발명의 일 실시예에 따른 0번과 2번 노드의 데이터 전송 결과를 나타낸 도이다.
도 8은 본 발명의 일 실시예에 따른 0번 노드의 데이터 전송 결과를 나타낸 도이다.
도 9는 본 발명의 일 실시예에 따른 데이터 크기에 따른 보팅 처리시간을 도시하는 그래프이다.
도 10은 본 발명의 일 실시예에 따른 보팅 버스 시스템의 데이터 전송을 도시하는 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 보팅 버스 시스템을 도시하는 구성도이다.
도 3은 본 발명의 일 실시예에 따른 슬레이브 프레임을 도시하는 구조도이다.
도 4는 본 발명의 일 실시예에 따른 고장 모듈의 수에 따른 버스 전송 주기를 나타낸 도이다.
도 5는 본 발명의 일 실시예에 따른 컨트롤러의 내부를 도시하는 구조도이다.
도 6은 본 발명의 일 실시예에 따른 0번과 1번 노드의 데이터 전송 결과를 나타낸 도이다.
도 7은 본 발명의 일 실시예에 따른 0번과 2번 노드의 데이터 전송 결과를 나타낸 도이다.
도 8은 본 발명의 일 실시예에 따른 0번 노드의 데이터 전송 결과를 나타낸 도이다.
도 9는 본 발명의 일 실시예에 따른 데이터 크기에 따른 보팅 처리시간을 도시하는 그래프이다.
도 10은 본 발명의 일 실시예에 따른 보팅 버스 시스템의 데이터 전송을 도시하는 흐름도이다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 실시예들은 데이터의 전송 주기를 유동적으로 조절할 수 있고, 데이터의 크기에 무관한 처리 속도를 보장하는 보팅 버스 시스템을 구성한다.
보팅 버스 시스템은 IEC-61375 Train Communication Network(TCN)의 하부 프로토콜인 Multifunction Vehicle Bus(MVB)를 기반으로 구현되었다. MVB는 주기적인 상태 데이터 전송에 적합하며, 실시간성을 보장하므로 보팅 버스 시스템 구현에 적합하다.
도 2는 본 발명의 일 실시예에 따른 보팅 버스 시스템을 도시하는 구성도이다.
보팅 버스 시스템은 다중화 제어기의 각 모듈의 전송을 폴링(Polling)하는 버스 관리자(300)와 슬레이브(Slave) 모듈(400)들을 포함하여 구성된다.
버스 관리자(300)는 주기적으로 다중화 제어기의 출력 모듈이 데이터를 전송하도록 전송 주기를 시작하는 역할을 하며, 슬레이브가 전송하는 프레임을 관측하다 전송 주기를 종료하는 역할을 수행한다.
슬레이브 모듈(400)은 데이터 생성 모듈(Source)과 데이터 수신 모듈(Sink)로 구분된다. 상기 데이터 생성 모듈은 버스 중재를 통해서 상황에 따라 유동적 주기로 데이터를 전송하도록 하였다. 그리고, 상기 데이터 수신 모듈은 다중화 데이터를 수신하여 내부 컨트롤러(100)의 선별부(150)를 통해 이를 선별한다. 종래에는 상기 데이터 수신 모듈은 소프트웨어로 선별을 실시했다. 그러나, 이와 달리 데이터 수신 완료시 상기 데이터 수신 모듈은 상기 컨트롤러(100)에서 하드웨어로 처리하기 때문에 데이터 크기에 무관한 처리 속도를 보장할 수 있다. 이에 따라 기존 방법에 비해 높은 실시간성을 나타낸다. 이때, 아날로그 데이터에 대한 선별은 연산에 의한 전체 시스템의 지연을 발생시킬 수 있으므로 기존의 방법대로 프로세서에서 처리하며, 디지털 데이터에 대한 선별만을 구현하는 것이 바람직하다.
보팅 버스 시스템은 유동적인 전송 주기를 통해 버스 효율성이 향상되었다. 유동적인 전송 주기를 위해서는 슬레이브 노드의 전송을 중재하여 전송 과정에서 버스에 충돌이 일어나지 않도록 해야 한다. 이를 위해서, 도 3에 도시된 바와 같이, 슬레이브 프레임(Slave Frame)(410)에 n비트의 ID필드를 추가하여 상기 ID필드에 따라 전송이 중재될 수 있도록 상기 슬레이브 프레임(410)의 구조를 개선하였다.
도 10은 일 실시예에 따른 보팅 버스 시스템의 데이터 전송을 도시하는 흐름도이다.
단계(S200)에서, 슬레이브 프레임(410)의 슬레이브 시작 딜리미터(Slave Start Delimiter)를 전송한다.
이후에 단계(S210)에서, 상기 슬레이브 프레임(410) ID필드의 최상위 비트(Most Significant Bit, MSB)로부터 최하위 비트(Least Significant Bit, LSB)까지 순차적으로 전송한다.
이때, 단계(S220)에서 컨트롤러(100)의 중재부(140)는 버스의 신호를 관측하여 버스 신호와 상기 ID필드의 일치 여부를 판단하게 된다.
즉, 데이터 생성 노드는 슬레이브 시작 딜리미터의 전송 후에 상기 ID필드의 MSB를 전송하며, 동시에 컨트롤러(100)의 중재부(140)는 버스의 신호를 관측하여 버스 신호와 상기 ID필드의 일치 여부를 판단한다. 상기 ID필드와 일치할 경우 계속해서 상기 ID필드의 최하위 LSB를 전송한다. LSB까지 일치하면 타 노드보다 우선해서 전송할 수 있게 된다.
그러므로, 단계(S230)에서 데이터와 오류 검출 코드(CRC), 종료 딜리미터(End Delimiter)를 전송하여 상기 슬레이브 프레임(410)의 전송을 완료한다.
반면, 상기 버스 신호와 상기 ID필드의 일치 여부를 판단하는 단계(S220)에서 상기 버스 신호와 상기 ID필드가 일치하지 않을 경우에는, 단계(S240)이 수행되어 다음 전송 주기가 시작될 때까지 대기하는 단계하며, 이때 상기 컨트롤러(100)는 전송 모드에서 수신 모드로 변경되어 상기 슬레이브 프레임(410)의 전송이 완료되기를 기다린다.
단계(S250)에서 한 전송 주기 내에서 전송 응답 대기 시간을 초과하지 않는 경우, 단계(S260)를 수행하며, 고장이 없는 경우로 판단한다. 이때, 상기 ID필드의 수에 따른 최대 2 n 번의 세부 전송 주기가 완료하도록 한다.
만약에, 단계(S250)에서 한 전송주기 내에서 전송 응답 대기 시간을 초과하면, 단계(S270)를 수행하며, 고장 노드가 1개 이상인 경우로 판단한다.
이러한 과정을 거쳐 다중화 제어기 수만큼의 전송주기(예를 들어, 삼중화 제어기의 경우 세 번)의 세부 전송 주기가 완료되어 다중화 데이터의 전송이 완료되면, 단계(S280)에서 데이터 수신 노드에서 데이터 선별을 실시한다.
마지막으로, 단계(S290)에서 최종 데이터를 판단하여 저장한다. 그리고 전송을 마친 상기 데이터 생성 노드는 상기 버스 관리자(300)의 다음 폴링까지 대기한다.
전송 노드 간의 중재는 바람직하게는 Wired OR 논리에 의해서 이루어지며, 이에 따라 상위 번호의 ID필드 순서대로 데이터를 전송하게 된다. 즉, 2 n -1, ..., 2번, 1번, 0번 노드 순서대로 데이터를 전송하게 된다. 고장이 없을 경우 항상 2 n -1번 노드가 먼저 데이터를 전송하지만, 고장이 있을 경우에는 고장인 노드를 제외한 나머지 노드 중 상위 순서대로 데이터를 전송한다. 예를 들어 2번 노드가 고장일 경우, 첫 번째 1번, 두 번째 0번의 순서대로 데이터를 전송하게 되며, 1번 노드가 고장일 경우, 첫 번째 2번, 두 번째 0번의 순서대로 데이터를 전송하게 된다.
고장이 없을 경우에 상기 슬레이브 프레임(410)은 최대 2 n 회 전송되어야 한다. 그러나 고장이 있을 경우 전송은 2 n 회 미만으로 발생한다. 상기 버스 관리자(300)는 전송 대기 초과 시간을 설정하여 설정된 시간 동안 전송되어야 할 상기 슬레이브 프레임(410)이 수신되지 않으면 전송 주기를 완료하고, 다음 전송 주기 시작을 위해 마스터 프레임(Master Frame)(310)을 전송한다.
보팅 버스 시스템의 데이터 선별은 하드웨어에서 실시된다. 수신 노드에 저장된 고장 모듈의 수와 수신 데이터에 따라 다음과 같은 논리로 컨트롤러(100)의 선별부(150)에서 조합 논리 회로(Combinational Logic Circuit)를 통해 실시된다. Fault Counter는 고장 모듈의 수이며, Reg 1, Reg 2, Reg 3은 수신 삼중화 데이터, Voted Data는 선별 논리에 의해 판단된 데이터, Safe Action은 안전 조치 실시 여부, Output은 최종 데이터를 의미한다. Regs는 안전 조치를 취할 때 필요한 데이터를 저장하고 있다.
<표 1>은 예로서 디지털 삼중화 데이터의 선별 논리를 나타낸다.
도 5는 본 발명의 일 실시예에 따른 컨트롤러의 내부를 도시하는 구조도이다.
상기 컨트롤러(100)는 도 5에 도시된 바와 같이, 크게 전송부(Tx)(110), 이중화된 수신부(Rx)(120), 제어부(Main Controller)(130), 타이머(160), 메모리(170), SPI 인터페이스(180)로 구성되고, 데이터 생성 노드에서의 전송 중재를 위해 중재부(Arbitration)(140)가 추가되었으며, 데이터 수신 노드에서의 데이터 선별을 위해 선별부(Voter)(150)가 추가로 구성되었다. 상기 중재부(140)는 중재 주기 동안에 데이터 전송 여부를 판단하여 상기 전송부(110)에 통지하며, 상기 선별부(150)는 전체 전송 주기가 완료 될 때까지 상기 수신부(120)와 상기 제어부(130)를 통제하여 선별된 최종 데이터만을 상기 제어부(130)로 전달한다.
상기 버스 관리자(300)의 폴링에 의해, 데이터 생성 노드는 상위 ID필드 순서대로 데이터를 전송한다.
도 6은 본 발명의 일 실시예에 따른 0번과 1번 노드의 프레임 전송을 측정한 것이다.
첫 번째 신호는 0번 노드의 데이터 전송 신호, 두 번째 신호는 0번 노드의 데이터 송수신 방향(Low: 수신, High: 송신), 세 번째는 1번 노드의 데이터 전송 신호를 의미한다. 첫 번째 세부 전송 주기의 중재에서 0번 노드는 1번 보다 하위 ID필드이므로 전송 모드에서 수신 모드로 변경되며, 1번 노드가 데이터를 전송한다. 두 번째 세부 전송 주기의 중재에서 0번 노드만이 ID필드를 전송하므로 0번 노드가 데이터를 전송한다.
도 7은 본 발명의 일 실시예에 따른 0번과 2번 노드의 프레임 전송을 측정한 것이다. 도 6의 경우와 마찬가지로, 첫 번째 세부 전송 주기에서 2번 노드가 데이터를 전송하며, 0번 노드는 대기 상태로 전환되는 것을 확인할 수 있다.
이때, 상위 ID필드의 노드가 고장일 경우에는 다음 순서의 상위 ID필드의 노드가 비어 있는 전송 주기에 데이터를 전송하게 된다.
도 8은 본 발명의 일 실시예에 따른 상위 ID필드의 노드가 고장인 경우 0번 노드가 첫 번째 세부 전송 주기를 차지하여 데이터를 전송하는 것을 측정한 것이다.
1) 데이터 교환 시간
종래의 MVB 시스템을 사용했을 경우 삼중화 데이터를 전송하기 위해서는 3번의 폴링을 거쳐야 한다. 그러나 본 발명의 경우 1번의 기본 주기로 삼중화 데이터를 전송하고 처리할 수 있다.
도 4는 본 발명의 일 실시예에 따른 고장 모듈의 수에 따른 버스 전송 주기를 나타낸 도이다. 고장 모듈 수에 따른 버스 상태는 도 4에 도시된 바와 같다.
고장이 없는 경우 3번의 중재(Arbitration)가 수행되며, 버스에는 3개의 SF(Slave Flame)이 전송된다.
고장 모듈이 하나인 경우 3번의 중재가 수행되며, 버스에는 2개의 SF이 전송된다.
고장 모듈이 둘인 경우 2번의 중재가 수행되며, 버스에는 1개의 SF이 전송된다.
고장 모듈이 셋인 경우 1번의 중재가 수행되며, 버스에는 0개의 SF이 전송된다.
폴링 주기를 tp, 마스터 프레임의 전송 시간을 tm, 중재 주기를 ta, 슬레이브 프레임(410)의 전송 시간을 ts, 전송 대기 초과 시간을 to라 하고, 고장 모듈의 수를 n이라고 하면, 보팅 시스템의 처리시간 ttmr은 하기식 (1)과 같다.
ttmr = tm + (3 - n)( ta + ts) + to (1)
또한 기존의 시스템에서 걸리는 시간 ttmr은 하기식 (2)와 같다.
ttmr = 3 ·tp (2)
폴링 주기 tp가 동일하고 대부분의 경우 모든 모듈은 정상이며 데이터 비교에 걸리는 시간이 무시할 만한 수준이라고 가정하면, 데이터 처리시간은 종래의 1/3이다. 단, tp에 따라 성능 향상은 달라질 수 있다. 성능 향상은 tp - (tm + ts)에 반비례한다.
2) 보팅 처리시간
종래의 SPLC는 CPU의 소프트웨어를 통해 보팅을 실시하며, 반면 본 발명은 하드웨어를 통해 보팅을 실시한다.
도 9는 본 발명의 일 실시예에 따른 데이터 크기에 따른 보팅 처리시간을 도시하는 그래프이다. 여기에서, 도 9의 제안된 시스템(Suggested System)은 본 발명의 결과를 나타낸다.
삼중화 데이터에 대한 보팅은 비트 단위로 실시되며, 보팅 결과에 따라 비트 별 출력으로 선별된 데이터 또는 Safe Action 데이터가 저장된다. CPU 클럭으로 SPLC의 CPU 클럭인 266MHz(1 클럭 = 3.8ns)를 적용하는 경우 SPLC의 보팅 처리시간은 고장 모듈의 수와 삼중화 데이터의 값에 따라 달라진다. 비교, 덧셈, 호출, 저장, 분기 연산에 각 1 클럭이 소요된다고 가정하고, 도 6의 의사 코드에 따라 고장 모듈의 수에 따른 SPLC의 보팅 처리시간 tvs_f0, tvs_f1, tvs_f2, tvs_f3은 식 (3) - (6)와 같이 계산된다. 고장 모듈이 없을 때와 하나일 때는 데이터의 상태에 따라 처리시간이 달라지므로 최소, 최대 시간의 부등호로 나타냈으며, 고장 모듈이 두 개 또는 세 개일 때는 데이터의 상태와 무관하게 처리시간이 일정하므로 등호로 나타냈다. tvs는 ns단위이며, 수식의 n은 비트 단위의 데이터 크기를 의미한다.
64.6·n = tvs_f0 = 98.8·n (3)
64.6·n = tvs_f1 = 68.4·n (4)
tvs_f2 = 64.6·n (5)
tvs_f3 = 68.4·n (6)
반면, 본 발명은 FPGA의 조합논리(Combinational Logic) 회로를 통해 보팅을 실시하므로, 한 클럭 내에 보팅이 완료된다. 따라서 MSC 합성 결과를 고려하면 최대 시스템 클럭이 65MHz이므로, 처리시간 tvh는 일정하게 15.4ns가 소요된다. 따라서 데이터가 32비트일 때 본 발명과 SPLC의 보팅 처리시간을 비교하면 최대 최소 134배에서 최대 205배의 성능 향상이 있음을 확인할 수 있다. 삼중화 데이터의 크기가 증가할수록 SPLC의 처리시간도 이에 비례하여 증가하지만, 본 발명은 하드웨어 기반이므로 처리시간이 데이터의 크기에 관계없이 동일하다. 따라서 데이터 크기가 증가할수록 유리함을 알 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 컨트롤러 110: 전송부
120: 수신부 130: 제어부
140: 중재부 150: 선별부
160: 타이머 170: 메모리
180: 인터페이스 300: 버스 관리자
310: 마스터 프레임 400: 슬레이브 모듈
410: 슬레이브 프레임
120: 수신부 130: 제어부
140: 중재부 150: 선별부
160: 타이머 170: 메모리
180: 인터페이스 300: 버스 관리자
310: 마스터 프레임 400: 슬레이브 모듈
410: 슬레이브 프레임
Claims (7)
- 주기적으로 다중화 제어기의 출력 모듈이 데이터를 전송하도록 전송 주기를 시작하는 역할과 전송주기를 종료하는 역할을 수행하며, 다중화 제어기의 각 모듈의 전송을 폴링(Polling)하는 버스 관리자와;
버스 중재를 통하여 유동적 주기로 데이터를 전송하도록 하는 데이터 생성 모듈과 다중화 데이터를 수신하여 내부 컨트롤러의 선별 모듈을 통해 이를 선별하는 데이터 수신 모듈을 포함하는 슬레이브 모듈로 구성되며,
상기 데이터 생성 모듈의 슬레이브 프레임에 n비트의 ID필드를 추가하여, 상기 ID필드에 따라 전송이 중재될 수 있는 것을 특징으로 하는 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 장치. - 제1항에 있어서,
상기 슬레이브 모듈은 상위 번호의 상기 ID필드 순서대로 데이터를 전송하되, 고장이 발생할 경우 고장인 노드를 제외한 나머지 노드의 상위 번호의 상기 ID필드 순서대로 데이터를 전송하며,
상기 버스 관리자는 전송 대기 초과 시간을 설정하여 설정된 시간 동안 상기 슬레이브 프레임이 수신되지 않으면 전송 주기를 완료하고, 다음 전송 주기의 시작을 위해 마스터 프레임(Master Frame)을 전송하는 것을 특징으로 하는 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 장치. - 제1항에 있어서,
상기 컨트롤러는 전송부, 이중화된 수신부, 제어부, 타이머, 메모리, 인터페이스를 포함하며,
데이터 생성 노드에서 전송 중재를 하도록 중재 주기 동안 데이터 전송 여부를 판단하여 상기 전송부에 통지하는 중재부와;
데이터 수신 노드에서 데이터 선별을 하도록 전체 전송 주기가 완료될 때까지 상기 수신부를 통제하여 선별된 최종 데이터를 상기 제어부로 전달하는 선별부가 구성되는 것을 특징으로 하는 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 장치. - 슬레이브 프레임의 슬레이브 시작 딜리미터(Slave Start Delimiter)를 전송하는 단계;
상기 슬레이브 프레임 ID필드의 최상위 비트(Most Significant Bit, MSB)와 최하위 비트(Least Significant Bit, LSB)를 순차적으로 전송하는 단계;
컨트롤러의 중재부는 버스의 신호를 관측하여 버스 신호와 상기 ID필드의 일치 여부를 판단하는 단계;
상기 버스 신호와 상기 ID필드가 일치할 경우, 데이터와 오류 검출 코드(CRC), 종료 딜리미터(End Delimiter)를 전송하여 상기 슬레이브 프레임의 전송을 완료하는 단계;
데이터 수신 노드에서 데이터 선별을 실시하는 단계; 및
최종 데이터를 판단하여 저장하는 단계로 이루어지는 것을 특징으로 하는 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법. - 제4항에 있어서,
상기 버스 신호와 상기 ID필드의 일치 여부를 판단하는 단계에서,
상기 버스 신호와 상기 ID필드가 일치하지 않을 경우, 상기 컨트롤러는 전송 모드에서 수신 모드로 변경되며, 다음 전송 주기가 시작될 때까지 대기하는 단계로 이루어지는 것을 특징으로 하는 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법. - 제4항에 있어서,
상기 데이터와 오류 검출 코드(CRC), 종료 딜리미터(End Delimiter)를 전송하여 상기 슬레이브 프레임의 전송을 완료하는 단계는
한 전송 주기 내에서 전송 응답 대기 시간을 초과하지 않는 경우, 상기 ID필드의 수에 따른 최대 2 n 번의 세부 전송 주기가 완료되는 단계를 더 포함하는 것
을 특징으로 하는 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법. - 제4항에 있어서,
상기 데이터와 오류 검출 코드(CRC), 종료 딜리미터(End Delimiter)를 전송하여 상기 슬레이브 프레임의 전송을 완료하는 단계는
한 전송 주기 내에서 전송 응답 대기 시간을 초과하는 경우, 고장 노드가 1개 이상인 경우로 판단하는 단계를 더 포함하는 것
을 특징으로 하는 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140018924A KR101476585B1 (ko) | 2014-02-19 | 2014-02-19 | 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140018924A KR101476585B1 (ko) | 2014-02-19 | 2014-02-19 | 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101476585B1 true KR101476585B1 (ko) | 2014-12-24 |
Family
ID=52679955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140018924A KR101476585B1 (ko) | 2014-02-19 | 2014-02-19 | 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101476585B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101245049B1 (ko) * | 2011-09-15 | 2013-03-18 | 한국수력원자력 주식회사 | 원전 다중구조 적응형 제어기기 및 방법 |
-
2014
- 2014-02-19 KR KR1020140018924A patent/KR101476585B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101245049B1 (ko) * | 2011-09-15 | 2013-03-18 | 한국수력원자력 주식회사 | 원전 다중구조 적응형 제어기기 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8503484B2 (en) | System and method for a cross channel data link | |
JP5829890B2 (ja) | 半導体データ処理装置、タイムトリガ通信システム及び通信システム | |
WO2008146091A1 (en) | Data processing system, data processing method, and apparatus | |
US20180041375A1 (en) | Communication device, communication method, and computer readable medium | |
US20170329730A1 (en) | Method and unit for handling interrupts in a system | |
JP5932242B2 (ja) | 情報処理装置、通信方法、及びプログラム | |
JP6277971B2 (ja) | 情報処理装置 | |
EP2620876B1 (en) | Method and apparatus for data processing, pci-e bus system and server | |
US9792193B2 (en) | Method and system for processing data conflict | |
JP6934346B2 (ja) | コンピュータ化されたシステムおよび冗長システム | |
EP3627331B1 (en) | Bus control circuit | |
KR101476585B1 (ko) | 다중화 기기간 데이터 선별을 위한 시리얼 버스 프로토콜 구현 방법 및 장치 | |
WO2015111142A1 (ja) | システム解析装置、設計不良解析装置、故障モード解析装置、故障ツリー解析装置、自律動作装置及び自律動作制御システム | |
WO2012171582A1 (en) | Resolving address conflicts in a bus system | |
JP4809497B2 (ja) | 複数の独立したシーケンスプログラムを並列実行するプログラマブルコントローラ | |
JP7512529B2 (ja) | データ処理のためのデータ処理ネットワーク | |
US20110144771A1 (en) | Safety control apparatus | |
JP5815085B1 (ja) | 通信システム、通信装置、接続状態判定方法及び制御プログラム | |
US20150100759A1 (en) | Pipelined finite state machine | |
JP7233932B2 (ja) | 仮想割り込みサービスプロバイダのためのサービス要求割り込みルータ | |
JP2003218871A (ja) | ポーリング装置および通信装置 | |
US20200089583A1 (en) | Configuration and method to guarantee high integrity data in a redundant voting data system | |
US20200348716A1 (en) | Method for configuring master/slave in double board, and board thereof | |
KR20200030981A (ko) | 고장 감내 동작을 제공하기 위한 인터페이스 회로 및 그것을 포함하는 고장 감내 시스템 | |
JP5469637B2 (ja) | 冗長構成をとるコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170829 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180823 Year of fee payment: 5 |