KR101999125B1 - Rs-422와 rs-485 시리얼 통신을 위한 출력신호 자동 제어기 - Google Patents

Rs-422와 rs-485 시리얼 통신을 위한 출력신호 자동 제어기 Download PDF

Info

Publication number
KR101999125B1
KR101999125B1 KR1020170158042A KR20170158042A KR101999125B1 KR 101999125 B1 KR101999125 B1 KR 101999125B1 KR 1020170158042 A KR1020170158042 A KR 1020170158042A KR 20170158042 A KR20170158042 A KR 20170158042A KR 101999125 B1 KR101999125 B1 KR 101999125B1
Authority
KR
South Korea
Prior art keywords
sout
clk
xtal
output
signal
Prior art date
Application number
KR1020170158042A
Other languages
English (en)
Other versions
KR20190060150A (ko
Inventor
원규연
Original Assignee
파밀넷 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 파밀넷 주식회사 filed Critical 파밀넷 주식회사
Priority to KR1020170158042A priority Critical patent/KR101999125B1/ko
Publication of KR20190060150A publication Critical patent/KR20190060150A/ko
Application granted granted Critical
Publication of KR101999125B1 publication Critical patent/KR101999125B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0002Serial port, e.g. RS232C

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명에 따른 시리얼 통신용 출력 신호 제어 장치는 외부에서 입력되는 XTAL_CLK을 이용하여 CLK을 발생하는 보 발생기, UART 내의 특정 레지스터 또는 외부 핀을 통해 수신된 SDR1 및 SDR2를 이용하여 CLK1 및 CLK2를 생성하는 전송 시간 제어부 및 상기 보 발생기에 의해 발생된 CLK, 상기 전송 시간 제어부에 의해 생성된 CLK1 및 CLK2를 수신하여 SOUT 및 SOUT_EN을 출력하는 전송 이동 레지스터를 포함한다.

Description

RS-422와 RS-485 시리얼 통신을 위한 출력신호 자동 제어기{Output signal automatic controller for RS-422 and RS-485 serial communication}
본 발명은 RS-422와 RS-485 시리얼 통신을 위한 출력신호 자동 제어기에 관한 것이다.
비동기식 시리얼 통신 데이터 구조는 스타트 비트(Start Bit), 데이터 비트(Data Bit), 패리티 비트(Parity Bit) 및 스톱 비트(Stop Bit)로 구성된다.
비동기식 시리얼 통신에서의 데이터 출력은 UART 내의 보 발생기에 의해 발생된 통신 클럭(CLK)에 동기를 맞춰 전송 시간 제어부의 제어 하에서 전송 이동 레지스터(TSR)에서 만들어 낸다. 이때 전송 이동 레지스터(TSR) 내부에서 출력하는 SOUT와 동일한 타이밍에 추가로 SOUT_EN1신호를 별도로 만들어 낸다.
여기에서, SOUT를 RS-422, RS-485 트랜스시버의 DI에 연결하고, SOUT_EN1을 RS-422, RS-485 트랜스시버의 DE 핀에 연결하면 출력신호 자동제어가 동작하게 된다.
하지만, 드라이브 활성화된 후 DI 입력신호가 MAX3086의 출력 핀 Y, Z 또는 MAX3088의 출력 핀 A, B로 나오는 데 걸리는 시간이 있기 때문에 DE 신호를 DI 신호보다 최소한 특정시간 만큼 더 빨리 주어야 온전한 DI 신호가 MAX3086의 출력 핀 Y, Z 또는 MAX3088의 출력 핀 A, B 핀으로 나오게 된다.
또한, 스톱 비트까지 다 보내고 난 뒤 드라이브를 비활성화시켜 줘야 하는데, SOUT의 맨 끝에 나오는 스톱 비트를 온전히 내보내기 위해서는 활성화된 DE 신호를 DI 신호가 다 나간 후 일정 시간 유지시켜 주어야 할 필요가 있다.
본 발명은 RS-422 및 RS-485 시리얼 통신을 위한 시리얼 통신용 출력 신호 제어 장치를 제공하는 것을 목적으로 한다.
본 발명의 상기 목적과 여러 가지 장점은 이 기술분야에 숙련된 사람들에 의해 본 발명의 바람직한 실시 예로부터 더욱 명확하게 될 것이다.
상기한 바와 같은 목적은, 외부에서 입력되는 XTAL_CLK를 이용하여 CLK를 발생하는 보 발생기; UART 내의 특정 레지스터 또는 외부 핀을 통해 수신된 SDR1 및 SDR2를 이용하여 CLK1 및 CLK2를 생성하는 전송 시간 제어부; 및 상기 보 발생기에 의해 발생된 CLK, 상기 전송 시간 제어부에 의해 생성된 CLK1 및 CLK2를 수신하여 SOUT 및 SOUT_EN을 출력하는 전송 이동 레지스터를 포함하여 구성되는, 시리얼 통신용 출력 신호 제어 장치에 의해 달성된다.
실시 예에서, 상기 SDR1은, 상기 SOUT 보다 상기 SOUT_EN 출력이 상기 SDR1에 저장된 값의 XTAL_CLK 클럭수 만큼 빨리 출력되도록 하는 정보이고, 상기 SDR2는, 상기 SOUT 보다 상기 SOUT_EN 사이의 종료가 출력이 상기 SDR2에 저장된 값의 XTAL_CLK 클럭수 만큼 연장되어 종료되도록 하는 정보이다.
실시 예에서, 상기 전송 시간 제어부는, 상기 SDR1을 이용하여 상기 SOUT가 상기 SOUT_EN과 같이 출력되거나 상기 SOUT_EN이 상기 SOUT보다 상기 SDR1에 저장된 값의 XTAL_CLK 클럭수 만큼 빨리 출력되도록 제어하기 위한 시간에 따라 CLK1을 생성할 수 있다.
실시 예에서, 상기 전송 시간 제어부는, 상기 SDR2를 이용하여 상기 SOUT가 상기 SOUT_EN과 같이 출력되거나 상기 SOUT_EN이 상기 SOUT보다 상기 SDR2에 저장된 값의 XTAL_CLK의 클럭수 만큼 연장되어 종료되도록 제어하기 위한 시간에 따라 CLK2를 생성할 수 있다.
실시 예에서, 상기 보 발생기는, 상기 XTAL_CLK에 대한 특정 비율 값 및 특정 통신 속도를 위한 SDR1, SDR2 및 디바이스 래치에 설정된 값을 이용하여 상기 CLK를 생성할 수 있다.
실시 예에서, 상기 전송 이동 레지스터는, 상기 CLK1을 이용하여 상기 SOUT_EN1보다 상기 SDR1에 저장된 값의 XTAL_CLK 클럭수 만큼 더 빠른 SOUT_EN2를 생성하고, 상기 CLK2를 이용하여 상기 SOUT_EN1보다 상기 SDR2에 저장된 값의 XTAL_CLK 클럭수 만큼 더 느린 SOUT_EN3을 생성할 수 있다.
실시 예에서, 상기 전송 이동 레지스터는, 상기 SOUT_EN2 및 상기 SOUT_EN3를 OR 연산하여 상기 SDR1 및 상기 SDR2에 설정 값이 적용된 SOUT_EN을 출력할 수 있다.
실시 예에서, 상기 SOUT_EN은, RS-422 및 RS-485 트랜스시버 각각의 DE 핀에 입력되어 상기 RS-422 및 상기 RS-485 시리얼 통신을 위한 출력 신호가 제어될 수 있다.
본 발명의 일 실시형태에 따르면, RS-422 및 RS-485 시리얼 통신을 위한 시리얼 통신용 출력 신호를 제어할 수 있다는 효과가 있다.
도 1은 일반적인 로컬 버스용 UART 내부 레지스터 구조를 나타내는 블록 다이어그램이다.
도 2는 RS-422(MAX3086)의 칩을 나타내는 논리 회로이다.
도 3은 RS-485 (MAX3088) 칩을 나타내는 논리 회로이다.
도 4는 RS-422(MAX3086)의 1:1 통신망을 설명하기 위한 블록 다이어그램이다.
도 5는 RS-422(MAX3086)의 멀티 드롭 통신망을 설명하기 위한 블록 다이어그램이다.
도 6은 RS-485(MAX3088)의 멀티 마스터 통신망을 설명하기 위한 블록 다이어그램이다.
도 7은 비동기식 시리얼 통신 데이터 구조를 나타내는 도면이다.
도 8은 CLK, SOUT, SOUT_EN1 출력 신호 타이밍을 나타내는 도면이다.
도 9는 SOUT_EN 타이밍을 나타내는 도면이다.
도 10은 본 발명의 일 실시 예에 따른 시리얼 통신용 출력 신호 제어 장치를 설명하기 위한 블록 다이어그램이다.
도 11 및 도 12는 도 10의 전송 시간 제어부에서 생성된 CLK1 및 CLK2를 설명하기 위한 도면이다.
도 13은 SOUT_EN 출력 타이밍을 나타내는 도면이다.
도 14는 데이터가 2 바이트 연속 나오는 경우의 동작 타이밍을 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한다.
도 1은 일반적인 로컬 버스용 UART 내부 레지스터 구조를 나타내는 블록 다이어그램이다.
하기의 [표 1]은 전형적인 UART인 16C550의 내부 레지스터 구조를 설명하는 표이다.
Address Register Name Mnemonic Register Type
LCR[7] = 0b 일 때
0h Receive Buffer Register (수신 버퍼 레지스터) RBR Read Only
0h Transmit Holding Register (전송 대기 레지스터) THR Write Only
1h Interrupt Enable Register (인터럽트 활성화 레지스터) IER Read/Write
2h Interrupt Status Register (인터럽트 상태 레지스터) ISR Read Only
2h FIFO Control Register (FIFO제어 레지스터) FCR Write Only
3h Line Control Register (회선 제어 레지스터) LCR Read/Write
4h Modem Control Register (모뎀 제어 레지스터) Read/Write
5h Line Status Register (회선 상태 레지스터) Read Only
6h Modem Status Register (모뎀 상태 레지스터) Read Only
7h Scratch Register (스크래치 레지스터) Read/Write
LCR[7] = 1b 일 때
0h Divisor Latch (LS) DLL Read/Write
1h Divisor Latch (MS) DLM Read/Write
2h 빈 영역 - -
3h 빈 영역 - -
4h 빈 영역 - -
5h 빈 영역 - -
6h 빈 영역 - -
7h 빈 영역 - -
상기의 [표 1]을 참조하면, 수신 버퍼 레지스터는 외부에서 들어온 한 문자의 데이터를 읽을 때 사용하는 레지스터이고, 전송 대기 레지스터는 한 문자의 데이터를 전송하는데 사용하고, 인터럽트 활성화 레지스터는 각종 인터럽트를 발생하게 한다.
인터럽트 상태 레지스터는 UART 내부에서 발생한 인터럽트 상태를 표시하고, FIFO (First-In First-Out) 제어 레지스터는 FIFO 버퍼를 제어하는데 사용하고, 회선 제어 레지스터는 데이터 비트의 수, 스톱 비트의 수, 패리티 비트를 제어하는 데 사용하지만, LCR[7] = '1'일 때는 통신 속도 설정하는 용도의 레지스터를 사용 가능 해준다. 즉, 수신 버퍼 레지스터, 전송 대기 레지스터, 인터럽트 활성화 레지스터 대신 디바이저 래치(Divisor Latch)를 사용하게 해 준다.
모뎀 제어 레지스터는 모뎀 신호선 RTS(Request To Send), DTR(Data Terminal Reay)을 제어하는데 사용한다. 회선 상태 레지스터는 수신 버퍼 레지스터에 입력된 데이터의 상태를 표시해 준다. 모뎀 상태 레지스터는 모뎀 상태를 표시하여 준다.
도 1에서 보 발생기(20)(Baud Generator)는 외부 클럭을 입력을 받아 원하는 통신 속도를 만들어 내는 로직이다. 일반적으로 보 발생기(20)는 외부에서 입력되는 주파수의 1/8배 또는 1/16배 클럭을 기본 최소 클럭으로 사용한다.
이 이유는 외부에서 시리얼 데이터가 UART로 입력될 때 입력된 시리얼 데이터를 검출하기 위한 샘플링 클럭을 만들기 위한 것이지만 해당 발명과 상관없는 부분이기 때문에 자세한 설명은 생략한다.
예를 들어, 보 발생기(20)는 1/16배 클럭을 기본 최소 클럭으로 사용한다면, 외부에 14.7456MHz 주파수가 입력되면 14,745,600/16 = 921,600Hz가 되며, 이것은 해당 UART의 최고 통신 속도가 된다.
보 발생기(20)는 UART내의 디바이저 래치에 설정된 값에 의하여 UART 통신 속도가 결정된다.
즉, 디바이저 래치에 1에 설정되면 921,600/1 = 921,600bps의 통신 속도가 되고 디바이저 래치 에 96이 설정되면 921,600/96 = 9600bps 통신 속도가 된다. 상기의 보 발생기(20)에 의해 발생된 통신 클럭은 전송 시간 제어부(10)에 제공된다.
전송 시간 제어부(10)은 보 발생기(20)로부터 통신 클럭이 수신되면 통신 클럭에 기초하여 전송 이동 레지스터(30)를 구동시킨다. 이때, 전송 이동 레지스터(30)는 보 발생기(20)에서 발생된 통신 클럭에 동기를 맞추어 전송 대기 레지스터 또는 Transmit FIFO에서 병렬로 입력된 데이터를 직렬 데이터로 변환하여 시리얼 통신 출력신호(SOUT)를 외부로 전송한다.
이때, RS-232 인터페이스를 사용하는 경우 출력 신호(SOUT)를 바로 RS-232 트랜스시버에 연결하여 사용하면 되지만, RS-422, RS-485인 경우 출력신호(SOUT)외에 별도의 출력 제어 신호(SOUT_EN)가 필요로 한다. 이 신호를 자동으로 제어하는 부분이 RS-422과 RS-485 시리얼 통신을 위한 출력신호 자동 제어기이다.
도 2는 RS-422(MAX3086)의 칩을 나타내는 논리 회로이고, 도 3은 RS-485 (MAX3088) 칩을 나타내는 논리 회로이다.
하기의 [표 2]는 도 2의 MAX3086 및 도 3의 MAX3088의 핀을 설명하는 표이다.
RO 리시버 출력. /RE가 '0'이고 입력 핀 A와 B의 입력 전압차가 -50mV와 같거나 크면 (A - B ≥ -50mV) RO 출력은 '1'이고, A와 B의 입력 전압차가 -20mV와 같거나 작으면 (A - B ≤ -200mV) RO 출력은 '0'이다.
/RE 리시버 출력 활성화. /RE에 '0'이 입력되면 출력 RO는 활성화 된다. /RE에 '1'이 입력되면 RO 출력은 하이 임피던스 상태가 된다. DE에 '0'이 입력되고, /RE에 '1'이 입력되면 MAX3086, MAX3088 모두 저전력 셧다운 모드가 된다.
DE 드라이버 출력 활성화. DE에 '1'이 입력되면 드라이버 출력이 활성화된다. 그리고 DE가 '0'이면 드라이버 출력은 하이 임피던스 상태가 된다. DE에 '0'이 입력되고, /RE에 '1'이 입력되면 MAX3086, MAX3088 모두 저전력 셧다운 모드가 된다.
DI 드라이버 입력. DE가 '1'일 때, DI에 '0'이 입력되면, 비반전 출력(MAX3086은 Y, MAX3088은 A)에는 '0'이, 반전 출력(MAX3086은 Z, MAX3088은 B)에는 '1'이 출력되고 DI에 '1'이 입력되면, 비반전 출력에는 '1'이, 반전 출력에는 '0'이 출력된다.
저전력 셧다운 모드가 되면 드라이버와 리시버 출력 모두 하이 임피던스 상태가 된다.
도 2의 MAX3086 및 도 3의 MAX3088 각각은 UART에서 출력되는 SOUT 신호를 입력 받는 DI 핀이 있다. 그리고, MAX3086은 DI 핀으로 입력받은 신호를 Y, Z 핀으로 출력할 수 있도록 제어하는 DE 핀을 가지고 있고, MAX3088은 DI 핀으로 입력 받은 신호를 A, B 핀으로 출력할 수 있도록 제어하는 DE 핀을 가지고 있다.
도 2의 MAX3086 및 도 3의 MAX3088 각각의 DE 핀이 활성화되면 DI 핀으로 입력받은 신호를 외부로 출력하게 되고, 도 2의 MAX3086 및 도 3의 MAX3088 각각의 DE 핀이 비활성화되면 DI 핀으로 입력받은 신호가 출력되지 않고 하이 임피던스 상태가 된다.
도 4는 RS-422(MAX3086)의 1:1 통신망을 설명하기 위한 블록 다이어그램이다.
도 4를 참조하면, RS-422는 1:1 통신망이 구성된다. 통신 회로부는 CPU, 메모리, UART 등 각종 비동기식 시리얼 통신에 필요한 부품들이 모인 장치이다.
도 5는 RS-422(MAX3086)의 멀티 드롭 통신망을 설명하기 위한 블록 다이어그램이다.
도 5를 참조하면, RS-422 멀티-드롭 통신망 슬레이브에 해당되는 모든 RS-422 출력단은 모든 슬레이브와 통신 선로를 공유하고 있다.
예를 들어 RS-422 슬레이브 1이 데이터를 출력(슬레이브1의 DE핀이 활성화 되어)하여 마스터의 입력단에 온전히 그 내용이 전달되려면, 슬레이브1을 제외한 나머지 모든 슬레이브의 출력단이 비활성화 상태가 되어야 한다. 만약 슬레이브2가 데이터를 출력하지 않는 경우에도 DE 핀이 활성화되면, 슬레이브2의 출력단 Y, Z핀은 "1"과 "0" 또는 "0"과 "1"로 고정되기 때문에 슬레이브1에서 출력되는 데이터와 충돌이 발생하여 마스터의 입력단으로 데이터가 온전히 전달되지 못하게 된다.
이러한 상황을 피하기 위해서는 모든 슬레이브 내의 제어기 (CPU 등)가 이 부분을 제어해야 한다. 제어하는 방법은 슬레이브 내의 메모리에 내장된 프로그램에 의하여 제어 되거나 또는, 기타 하드웨어 적인 방법으로도 제어 되기도 한다.
도 6은 RS-485(MAX3088)의 멀티 마스터 통신망을 설명하기 위한 블록 다이어그램이다.
도 6을 참조하면, RS-485 멀티 마스터 통신망은 마스터의 입출력 단은 다른 모든 마스터의 입출력단과 통신 선로를 공유하고 있다.
RS-485 멀티 마스터 망에서 마스터1이 데이터를 출력(마스터1의 DE핀이 활성화 되어)하여 다른 모든 마스터의 입력단에 온전히 그 내용이 전달되려면, 마스터1을 제외한 나머지 모든 마스터의 출력단이 비활성화 상태(마스터1을 제외한 다른 모든 마스터의 DE 핀이 비활성화 되어)가 되어야 한다. 만약 마스터2가 데이터를 출력하지 않는 경우에도 DE 핀이 활성화되면, 마스터2의 출력단 A, B핀은 "1"과 "0" 또는 "0"과 "1"로 고정되기 때문에 마스터1에서 출력되는 데이터와 충돌이 발생하여 모든 마스터의 입력단으로 데이터가 온전히 전달되지 못하게 된다.
이러한 상황을 피하기 위해서는 모든 마스터 내의 통신 회로부(CPU 등)가 이 부분을 제어해야 한다. 제어하는 방법은 마스터 내에 메모리에 내장된 프로그램에 의하여 제어 되거나 또는, 기타 하드웨어 적인 방법으로도 제어 되기도 한다.
그러나 위의 제어는 프로그램이나 하드웨어적으로 구현을 해야 함으로 까다로운 과정이다. 본 발명물은 이러한 제어를 자동화하는 것으로 프로그램이나 다른 추가 외부 회로가 없이 간단하게 실현할 수 있다.
도 7은 비동기식 시리얼 통신 데이터 구조를 나타내는 도면이다. 도 8은 CLK, SOUT, SOUT_EN1 출력 신호 타이밍을 나타내는 도면이다. 도 9는 SOUT_EN 타이밍을 나타내는 도면이다.
도 7을 참조하면, 비동기식 시리얼 통신 데이터 구조는 스타트 비트(Start Bit), 데이터 비트(5~8 데이터 비트 중 선택 사용), 패리티 비트(Parity Bit)(홀수, 짝수, 없음 중 선택 사용), 스톱 비트(Stop Bit)(1, 1.5, 2 비트 중 선택 사용)으로 구성된다.
이러한 비동기식 시리얼 통신에서의 데이터 출력은 UART 내의 보 발생기에 의해 발생된 통신 클럭(CLK)에 동기를 맞춰 전송 시간 제어부의 제어 하에서 전송 이동 레지스터(TSR)에서 만들어 낸다.
이때 전송 이동 레지스터(TSR) 내부에서 출력하는 SOUT과 동일한 타이밍에 추가로 도 8의 SOUT_EN1신호를 별도로 만들어 낸다.
즉, 도 8과 같이 스타트 비트가 시작하는 시점에 동시에 SOUT_EN1 신호를 시작시키고, 스톱 비트가 끝나는 시점에 동시에 끝나게 SOUT_EN1을 끝내면 된다. 여기서 스톱 비트가 1비트이면 첫 번째 스톱 비트가 끝나는 시점에, 스톱 비트가 1.5스톱 비트이면 1.5 스톱 비트가 끝나는 시점에, 비트가 2 비트이면 두 번째 스톱 비트가 끝나는 시점에 SOUT_EN1을 끝내면 된다.
이때, 도 8에서 CLK 상승 모서리에 동기를 맞추어 동작 되지만 CLK 하강 모서리에 맞추어 동작시켜도 된다.
여기에서. SOUT을 RS-422, RS-485 트랜스시버의 DI에 연결하고, SOUT_EN1을 RS-422, RS-485트랜스시버의 DE 핀에 연결하면 출력신호 자동제어가 동작하게 된다.
그런데 여기서 문제가 되는 부분이 있다. 그것은 드라이브 활성화 된 후(DE가 '1'이 된 후) DI입력 신호가 MAX3086의 출력 핀 Y, Z 또는 MAX3088의 출력 핀 A, B로 나오는 데 걸리는 시간이 있기 때문이다. DE 신호를 DI 신호보다 최소한 특정시간(Propagation Delay Time: 전달 지연 시간) 만큼 더 빨리 주어야 온전한 DI 신호가 MAX3086의 출력 핀 Y, Z 또는 MAX3088의 출력 핀 A, B 핀으로 나오게 된다.
또한, 스톱 비트까지 다 보내고 난 뒤 드라이브를 비활성화 시켜 줘야 하는데, SOUT의 맨 끝에 나오는 스톱 비트를 온전히 내 보내기 위해서는 활성화된 DE 신호를 DI 신호가 다 나간 후 특정 시간 만큼 유지시켜 주어야 할 필요가 있다.
이들 각각의 시간을 데이터 '1'을 출력시키기 위한 활성화 필요 시간 (Driver Enable to Output High: tDZH)과 데이터 '0'을 출력시키기 위한 활성화 필요 시간 (Driver Enable to Output Low: tDZL) 그리고 출력 데이터 '0'을 비활성화 필요 시간(Driver Disable Time from Low: tDLZ)과 출력 데이터 '1'을 비활성화 필요 시간 (Driver Disable time from High: tDHZ) 이라고 한다.
하기의 [표 3]은 상기에서 상술한 MAX3086, MAX3088스위칭 특성에 대한 내용이다.
PARAMETER SYMBOL MIN TYP MAX UNITS
Driver Enable to Output High tDZH 150 ns
Driver Enable to Output Low tDZL 150 ns
Driver Input to Output tDPLH 100 ns
tDPHL 100 ns
[표 3]을 참조하면, MAX3086과 MAX3088에 대한 타이밍 자료이나 다른 회사의 RS-422, RS-485 트랜스시버는 다른 시간 값을 가지고 있다. 즉, 이러한 것을 반영하여야 온전한 출력신호 자동 제어가 될 것이다.
즉, 도 9와 같이 T1은 MAX3086, MAX3088의 tDZH 또는 tDZL 보다 최소한 같거나 커야 하고, T2는 tDPLH 또는 tDPHL 보다 최소한 같거나 커야 한다.
도 10은 본 발명의 일 실시 예에 따른 시리얼 통신용 출력 신호 제어 장치를 설명하기 위한 블록 다이어그램이다.
도 10을 참조하면, 시리얼 통신용 출력 신호 제어 장치는 전송 시간 제어부(110), 보 발생기(120) 및 전송 이동 레지스터(130)를 포함한다.
전송 시간 제어부(110)는 SDR1, SDR2 값을 입력받은 후 보 발생기(120)에서 발생한 CLK를 이용하여 두 가지 클럭 CLK1, CLK2을 추가로 생성하여 전송 이동 레지스터(130)에 제공한다. 전송 시간 제어부(110)에서 생성된 두 가지 클럭 CLK1, CLK2은 도 11 및 도 12와 같으며 이하에서 보다 구체적으로 설명하기로 한다.
보 발생기(120)는 외부에서 입력되는 외부 클럭(XTAL_CLK, 도 1의 XIN 핀에 연결된다.)을 이용하여 CLK를 생성한다. 보 발생기(120)에서 생성된 CLK는 XTAL_CLK를 1/16배 한 것(XTAL_CLK_D16)에 원하는 통신 속도를 얻기 위해 디바이저 래치에 설정된 값으로 나눈 클럭이다.
가장 많이 사용하는 외부 클럭 주파수를 14.7456MHz로 한다면 XTAL_CLK의 클럭 주기는 약 67.8ns가 된다.
T1이 150ns 보다 크려면 67.8ns * 3 203.4ns이고, T2가 100ns보다 크려면 67.8ns * 2 = 135.6ns 가 되면 된다.
이것을 바탕으로 하면 SOUT_EN은 SOUT_EN1보다 XTAL_CLK의 3클럭 앞에서 나오면 되고(T1), SOUT_EN1보다 XTAL_CLK의 2 클럭 만큼 더 늦게 연장되어 나오면 된다 (T2).
앞에서도 기술한 바와 같이 모든 UART가 XTAL_CLK를 1/16배 하는 것도 아니고, 외부 클럭도 모두 14.7456MHz도 아니고 모든 트랜스시버의 tDZH, tDZL, tDPLH, tDPHL이 똑 같은 것도 아니기 때문에 이 가변치를 수용하게 설계되어야 한다.
이를 위해서, UART 내의 특정 레지스터(이하 SDR1: SOUT DELAY REGISTER1, SDR2: SOUT DELAY REGISTER2, [표 1]에서 빈 영역에 배치하면 된다.)를 두거나 SDR1, SDR2에 해당하는 외부 핀으로부터 값을 입력 받아 처리한다.
하기의 [표 4]는 SDR1 내용을 나타내며 SDR1[3:0]의 값은 T1의 값을 결정한다. 하기의 [표 5]는 SDR2 내용을 나타내며 SDR2[3:0]의 값은 T2의 값을 결정한다.
SDR1[3:0] 설명
0h SOUT_EN 신호가 SOUT_EN1 신호와 같이 출력된다.
1h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 1클럭 만큼 빨리 출력된다.
2h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 2클럭 만큼 빨리 출력된다.
3h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 3클럭 만큼 빨리 출력된다.
4h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 4클럭 만큼 빨리 출력된다.
5h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 5클럭 만큼 빨리 출력된다.
6h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 6클럭 만큼 빨리 출력된다.
7h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 7클럭 만큼 빨리 출력된다.
8h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 8클럭 만큼 빨리 출력된다.
9h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 9클럭 만큼 빨리 출력된다.
Ah SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 10클럭 만큼 빨리 출력된다.
Bh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 11클럭 만큼 빨리 출력된다.
Ch SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 12클럭 만큼 빨리 출력된다.
Dh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 13클럭 만큼 빨리 출력된다.
Eh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 14클럭 만큼 빨리 출력된다.
Fh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 15클럭 만큼 빨리 출력된다.
SDR2[3:0] 설명
0h SOUT_EN 신호가 SOUT_EN1 신호와 같이 종료 된다.
1h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 1클럭 만큼 연장되어 종료된다.
2h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 2클럭 만큼 연장되어 종료된다.
3h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 3클럭 만큼 연장되어 종료된다.
4h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 4클럭 만큼 연장되어 종료된다.
5h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 5클럭 만큼 연장되어 종료된다.
6h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 6클럭 만큼 연장되어 종료된다.
7h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 7클럭 만큼 연장되어 종료된다.
8h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 8클럭 만큼 연장되어 종료된다.
9h SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 9클럭 만큼 연장되어 종료된다.
Ah SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 10클럭 만큼 연장되어 종료된다.
Bh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 11클럭 만큼 연장되어 종료된다.
Ch SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 12클럭 만큼 연장되어 종료된다.
Dh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 13클럭 만큼 연장되어 종료된다.
Eh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 14클럭 만큼 연장되어 종료된다.
Fh SOUT_EN 신호가 SOUT_EN1 신호보다 XTAL_CLK 15클럭 만큼 연장되어 종료된다.
현재 SDR1에 의해 최대 15클럭 만큼 빨리 출력되고, SDR2에 의해 15 클럭 만큼 연장된 후 종료 되지만, 이것은 UART가 XTAL_CLK를 1/16배 하는 것으로 가정하였기 때문이고, 1/8배 하는 경우에는 각각 SDR1, SDR2는 각각 3 비트 영역이 필요하고(이 경우 최대 7클럭만큼 빨리 출력하거나 연장된 후 종료된다), 1/32배 하는 경우에는 SDR1, SDR2는 각각 5 비트 영역이 필요하다.(이 경우 최대 31클럭만큼 빨리 출력하거나 연장된 후 종료된다)
이것을 실현 시키기 위해서, 먼저 보 발생기(120)에서 발생한 CLK를 이용하여 전송 시간 제어부(110)에서 SDR1, SDR2 값을 입력받아 도 10에 나타난 것과 같이 두 가지 클럭 CLK1, CLK2를 추가로 생성한 후, 보 발생기(120)에서 발생한 CLK 및 추가로 생성한 두 가지 클럭 CLK1, CLK2를 전송 이동 레지스터(130)에 공급한다.
전송 이동 레지스터(130)는 보 발생기(120)에 의해 발생된 CLK, 상기 전송 시간 제어부(110)에 의해 생성된 CLK1 및 CLK2를 수신하여 SOUT 및 SOUT_EN을 출력한다.
도 11 은 디바이저 래치에 '1'이 SDR1에 3h가 SDR2에 2h가 설정되어 있고 도 12는 디바이저 래치에 '2'가 SDR1에 3h가 SDR2에 2h가 설정되어 있다고 가정한 내용이다. XTAL_CLK가 14.7456 MHZ일 때 디바이저 래치값이 '1'인 경우 통신속도는 14.7456 MHZ / (16 * 디바이저 래치 값 '1') = 921.6 Kbps이고 디바이저 래치 값이 '2' 인 경우 통신속도는 14.7456 MHZ / (16 * 디바이저 래치 값 '2') = 460.8 Kbps가 된다.
도 11 및 도 12는 도 10의 전송 시간 제어부에서 생성된 CLK1 및 CLK2를 설명하기 위한 도면이다.
도 11 및 도 12를 참조하면, 도 11 및 도 12는 UART의 통신속도와 상관없이 CLK1이 CLK보다 XTAL_CLK 3 클럭만큼 빠르게 나오고 CLK2가 CLK보다 XTAL_CLK2 클럭 만큼 더 연장되어 나오는 것을 보여준다.
도 11 및 도 12의 CLK1, CLK2를 받아 SOUT_EN 신호를 만드는데, 도 8에서 CLK를 이용하여 SOUT_EN1 신호를 만드는 것과 동일하게, CLK1을 이용하여 SOUT_EN2를 만들고, CLK2를 이용하여 SOUT_EN3 신호를 만든다.
도 13은 데이터가 1바이트 나오는 경우의 SOUT_EN 출력 타이밍을 나타내는 도면이다. 도 14는 데이터가 2 바이트 연속 나오는 경우의 동작 타이밍을 나타내는 도면이다.
도 13 및 도 14를 참조하면, 도 13 에 보여지는 것과 같이 SDR1의 3h에 의해 CLK 보다 XTAL_CLK 3 클럭 더 빠른 CLK1을 이용하면 SOUT_EN1보다 XTAL_CLK 3클럭 더 빠른 SOUT_EN2를 만들고, SDR2의 2h에 의해 CLK보다 XTAL_CLK 2 클럭 더 느린 CLK2를 이용하면 SOUT_EN1 보다 XTAL_CLK 2 클럭 더 늦은 SOUT_EN3 신호를 만들 수 있다.
즉, SOUT_EN2는 SOUT_EN1보다 XTAL_CLK 3클럭 빠르게 나오고 (T1), SOUT_EN3은 SOUT_EN1보다 XTAL_CLK 2클럭 느리게 나온다(T2). 이 SOUT_EN2와 SOUT_EN3을 OR 처리하면 SDR1과 SDR2에 설정값이 적용된 SOUT_EN 신호를 얻게 된다.
이 SOUT_EN 신호를 RS-422, RS-485 트랜스시버의 DE 핀에 입력하면 RS-422과 RS-485 시리얼 통신을 위한 출력신호 자동 제어가 원활하게 이루어진다.
더미 SOUT1과 더미 SOUT2는 실제 회로를 구성할 필요가 없으며 이는 동작의 이해를 돕기 위해 표시하였다.
위 그림 13은 1바이트의 데이터만 나올 때의 SOUT_EN 파형이고 그림 14는 2바이트의 문자가 연속하여 나올 때 SOUT_EN 파형으로서 SOUT 출력에 1 바이트의 데이터, 또는 여러 바이트의 데이터가 연속해서 나오더라도 SOUT_EN이 안정적으로 출력되는 것을 보여 준다.
이상에서 설명한 본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시 예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시 예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고 후술하는 청구범위에 의해 한정되며, 본 발명의 구성은 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 그 구성을 다양하게 변경 및 개조할 수 있으므로 본 발명의 실시 예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있다. 그에 따라, 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다.
110 : 전송 시간 제어부 120 : 보 발생기
130 : 전송 이동 레지스터

Claims (8)

  1. 외부에서 입력되는 XTAL_CLK를 이용하여 CLK를 발생하는 보 발생기;
    UART 내의 특정 레지스터 또는 외부 핀을 통해 수신된 SDR1 및 SDR2를 이용하여 CLK1 및 CLK2를 생성하는 전송 시간 제어부; 및
    상기 보 발생기에 의해 발생된 CLK, 상기 전송 시간 제어부에 의해 생성된 CLK1 및 CLK2를 수신하여 SOUT 및 SOUT_EN을 출력하는 전송 이동 레지스터를 포함하여 구성되고,
    상기 SDR1은, SDR1에 저장된 값의 XTAL_CLK 클럭수 만큼 SOUT_EN이 SOUT 보다 빨리 출력되도록 하는 정보이고,
    상기 SDR2는, SDR2에 저장된 값의 XTAL_CLK 클럭수 만큼 연장되어 종료되도록 하는 정보인 것을 특징으로 하는, 시리얼 통신용 출력 신호 제어 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 전송 시간 제어부는, 상기 SDR1을 이용하여 상기 SOUT가 상기 SOUT_EN와 같이 출력되거나 상기 SOUT_EN이 SDR1에 저장된 값의 XTAL_CLK 클럭수 만큼 상기 SOUT_EN의 상기 SOUT 보다 빨리 출력되도록 제어하기 위한 시간에 따라 CLK1을 생성하는 것을 특징으로 하는, 시리얼 통신용 출력 신호 제어 장치.
  4. 제1항에 있어서,
    상기 전송 시간 제어부는, 상기 SDR2를 이용하여 상기 SOUT가 상기 SOUT_EN와 같이 출력되거나 SDR2에 저장된 값의 XTAL_CLK 클럭수 만큼 연장되어 종료되도록 제어하기 위한 시간에 따라 CLK2를 생성하는 것을 특징으로 하는, 시리얼 통신용 출력 신호 제어 장치.
  5. 제1항에 있어서,
    상기 보 발생기는, 상기 XTAL_CLK에 대한 특정 비율 값 및 특정 통신 속도를 위한 디바이저 래치에 설정된 값을 이용하여 상기 CLK1과 CLK2를 생성하는 것을 특징으로 하는, 시리얼 통신용 출력 신호 제어 장치.
  6. 제1항에 있어서,
    상기 전송 이동 레지스터는, 상기 CLK1을 이용하여 SOUT_EN1보다 상기 SDR1의 값에 의한 XTAL_CLK 클럭수 만큼 더 빠른 SOUT_EN2를 생성하고, 상기 CLK2를 이용하여 SOUT_EN1보다 상기 SDR2의 값에 의한 XTAL_CLK의 클럭수 만큼 더 느린 SOUT_EN3을 생성하는 것을 특징으로 하는, 시리얼 통신용 출력 신호 제어 장치.
  7. 제6항에 있어서,
    상기 전송 이동 레지스터는, 상기 SOUT_EN2 및 상기 SOUT_EN3을 OR 연산하여 상기 SDR1 및 상기 SDR2에 설정 값이 적용된 SOUT_EN을 출력하는 것을 특징으로 하는, 시리얼 통신용 출력 신호 제어 장치.
  8. 제7항에 있어서,
    상기 SOUT_EN은, RS-422 및 RS-485 트랜스시버 각각의 DE 핀에 입력되어 상기 RS-422 및 상기 RS-485 시리얼 통신을 위한 출력 신호가 제어되는 것을 특징으로 하는, 시리얼 통신용 출력 신호 제어 장치.
KR1020170158042A 2017-11-24 2017-11-24 Rs-422와 rs-485 시리얼 통신을 위한 출력신호 자동 제어기 KR101999125B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170158042A KR101999125B1 (ko) 2017-11-24 2017-11-24 Rs-422와 rs-485 시리얼 통신을 위한 출력신호 자동 제어기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170158042A KR101999125B1 (ko) 2017-11-24 2017-11-24 Rs-422와 rs-485 시리얼 통신을 위한 출력신호 자동 제어기

Publications (2)

Publication Number Publication Date
KR20190060150A KR20190060150A (ko) 2019-06-03
KR101999125B1 true KR101999125B1 (ko) 2019-07-11

Family

ID=66849236

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170158042A KR101999125B1 (ko) 2017-11-24 2017-11-24 Rs-422와 rs-485 시리얼 통신을 위한 출력신호 자동 제어기

Country Status (1)

Country Link
KR (1) KR101999125B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100393959B1 (ko) * 1996-06-04 2003-10-10 주식회사 하이닉스반도체 비동기식송신및수신장치(uart)
JP2013008386A (ja) * 2008-09-30 2013-01-10 Mosaid Technologies Inc 出力遅延調整によるシリアル接続のメモリシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100393959B1 (ko) * 1996-06-04 2003-10-10 주식회사 하이닉스반도체 비동기식송신및수신장치(uart)
JP2013008386A (ja) * 2008-09-30 2013-01-10 Mosaid Technologies Inc 出力遅延調整によるシリアル接続のメモリシステム

Also Published As

Publication number Publication date
KR20190060150A (ko) 2019-06-03

Similar Documents

Publication Publication Date Title
US6715094B2 (en) Mult-mode I/O interface for synchronizing selected control patterns into control clock domain to obtain interface control signals to be transmitted to I/O buffers
US7586337B2 (en) Circuit for switching between two clock signals independently of the frequency of the clock signals
JPH0713926A (ja) バッファ制御回路及びその操作方法
Trivedi et al. Spi to i2c protocol conversion using verilog
EP3200089B1 (en) Method, apparatus, communication equipment and storage media for determining link delay
US10146251B2 (en) Semiconductor device
US9880949B1 (en) Cross clock compensation between layers in peripheral component interconnect express
EP1972058B1 (en) Serial data communication system and method
WO2016167933A2 (en) Control circuits for generating output enable signals, and related systems and methods
US9672008B2 (en) Pausible bisynchronous FIFO
US8868827B2 (en) FIFO apparatus for the boundary of clock trees and method thereof
US9891653B2 (en) Techniques for clock rate changes during data rate changes in an integrated circuit (IC)
KR101999125B1 (ko) Rs-422와 rs-485 시리얼 통신을 위한 출력신호 자동 제어기
CN111313869B (zh) 一种千兆以太网收发器的时钟切换电路
US20040003194A1 (en) Method and apparatus for adjusting DRAM signal timings
US10680963B2 (en) Circuit and method for credit-based flow control
EP1729199B1 (en) Method for improving the data transfer in semi synchronous clock domains integrated circuits at any possible M/N clock ratio
US7711940B2 (en) Circuit block and circuit system having skew compensation, and skew compensation method
WO2009069094A1 (en) Method and device for routing data between components
US5828872A (en) Implementation of high speed synchronous state machines with short setup and hold time signals
US9772649B1 (en) Low-skew channel bonding using oversampling
CN101228733B (zh) 在两个异步系统之间传递数据的方法及异步数据缓冲器
US9378175B2 (en) Data transfer between a master and slave
AU670507B2 (en) Method and system for providing data hold time by synchronous random access memory during write operations
US20170078080A1 (en) Dual Path Source Synchronous Interface

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right