MICROCHIP Core16550 범용 비동기 송수신기

소개
Core16550은 널리 사용되는 16550 장치와의 소프트웨어 호환성을 보장하는 표준 UART(Universal Asynchronous Receiver-Transmitter)입니다. 모뎀이나 기타 직렬 장치의 입력에 대한 직렬-병렬 데이터 변환을 처리하고, CPU에서 이러한 장치로 전송되는 데이터에 대한 병렬-직렬 변환을 수행합니다.
전송 중에는 데이터가 UART의 전송 FIFO(First-In, First-Out) 버퍼에 병렬로 기록됩니다. 그런 다음 데이터는 출력을 위해 직렬화됩니다. 수신 시, UART는 수신된 직렬 데이터를 병렬로 변환하여 프로세서가 쉽게 접근할 수 있도록 합니다.
다음 그림은 16550 UART의 일반적인 응용 프로그램을 보여줍니다.
그림 1. 일반적인 16550 응용 프로그램
표 1. Core16550 요약

주요 특징
Core16550의 주요 기능은 다음과 같습니다.
- 송신기와 수신기는 각각 최대 16바이트 FIFO로 버퍼링되어 CPU에 전달되는 인터럽트 수를 줄입니다.
- 표준 비동기 통신 비트(시작, 중지 및 패리티)를 추가하거나 제거합니다.
- 독립적으로 제어되는 전송, 수신, 회선 상태 및 데이터 세트 인터럽트
- 프로그래밍 가능한 보드 생성기
- 모뎀 제어 기능(CTSn, RTSn, DSRn, DTRn, RIn 및 DCDn).
- APB(Advanced Peripheral Bus) 레지스터 인터페이스
중단된 기능
이 버전에서는 초고속 집적 회로(VHSIC) 하드웨어 설명 언어(VHDL) 지원이 중단됩니다.
Core16550 변경 로그 정보
이 섹션에서는 포괄적인view 최신 릴리스부터 새로 통합된 기능부터 시작합니다.
| 버전 | 새로운 소식 |
| 코어16550 v3.4 | Core16550은 시스템 Verilog 키워드 "break"를 레지스터 이름으로 사용하는데, 이로 인해 구문 오류가 발생했습니다. 이 문제를 해결하기 위해 해당 키워드를 다른 이름으로 변경했습니다.
PolarFire® 제품군 지원 추가 |
| 코어16550 v3.3 | 방사선 내성 FPGA(RTG4™) 제품군 지원 추가 |
- 기능 블록 설명(질문하기)
이 섹션에서는 다음 그림에 표시된 내부 블록 다이어그램의 각 요소에 대한 간략한 설명을 제공합니다.
그림 1-1. Core16550 블록 다이어그램

내부 블록 다이어그램의 요소(질문하기)
다음 섹션에서는 내부 블록 다이어그램의 요소에 대한 정보를 제공합니다.
- RWControl(질문하기)
RWControl 블록은 시스템의 프로세서(병렬) 측과의 통신을 담당합니다. 내부 레지스터의 모든 쓰기 및 읽기는 이 블록을 통해 수행됩니다. - UART_Reg (질문하기)
UART_Reg 블록은 장치의 모든 내부 레지스터를 보관합니다. - RXBlock (질문하기)
이것은 수신 블록입니다. RXBlock은 수신되는 직렬 워드를 수신합니다. 5, 6, 7 또는 8비트와 같은 데이터 폭, 짝수, 홀수 또는 패리티 없음과 같은 다양한 패리티 설정, 그리고 1, 1, 2비트와 같은 다양한 정지 비트를 인식하도록 프로그래밍할 수 있습니다. RXBlock은 입력 데이터 스트림에서 오버런 오류, 프레임 오류, 패리티 오류, 브레이크 오류와 같은 오류를 검사합니다. 수신 워드에 문제가 없으면 수신 FIFO에 저장됩니다. - 인터럽트 제어(질문하기)
인터럽트 제어 블록은 FIFO의 상태와 수신 및 전송된 데이터에 따라 프로세서로 인터럽트 신호를 보냅니다. 인터럽트 식별 레지스터는 인터럽트 레벨을 제공합니다. 인터럽트는 빈 송수신 버퍼(또는 FIFO) 또는 문자 수신 오류, 또는 프로세서의 주의가 필요한 기타 상황에서 전송됩니다. - 통신 속도 생성기(질문하기)
이 블록은 입력 PCLK를 받아 프로그램된 값(1~216-1)으로 나눕니다. 그 결과를 16으로 나누어 전송 클럭(BAUDOUT)을 생성합니다. - TXBlock(질문하기)
전송 블록은 전송 FIFO에 기록된 데이터의 전송을 처리합니다. 전송되는 데이터에 필요한 시작, 패리티, 정지 비트를 추가하여 수신 장치가 적절한 오류 처리 및 수신을 수행할 수 있도록 합니다.
소프트웨어 인터페이스(질문하기)
이 섹션에서는 Core16550 레지스터 정의와 주소 매핑에 대해 설명합니다. 다음 표는 Core16550 레지스터 요약을 보여줍니다.
| PADDR[4:0]
(주소) |
디바이저 래치 액세스 비트1
(DLAB) |
이름 | 상징 | 기본값(재설정) 값 | 비트 수 | 읽기/쓰기 |
| 00 | 0 | 수신기 버퍼 레지스터 | 로브레인 | XX | 8 | R |
| 00 | 0 | 송신기 홀딩 레지스터 | 목 | XX | 8 | W |
| 00 | 1 | 디바이저 래치(LSB) | 디엘알엘 | 01시간 | 8 | 읽기/쓰기 |
| 04 | 1 | 디바이저 래치(MSB) | 디엠알 | 00시간 | 8 | 읽기/쓰기 |
| 04 | 0 | 인터럽트 활성화 레지스터 | 이더 | 00시간 | 8 | 읽기/쓰기 |
| 08 | X | 인터럽트 식별 레지스터 | 영어: IIR (이에르) | C1h | 8 | R |
| 08 | X | FIFO 제어 레지스터 | FCR | 01시간 | 8 | W |
| 0C | X | 라인 제어 레지스터 | LCR | 00시간 | 8 | 읽기/쓰기 |
| 10 | X | 모뎀 제어 레지스터 | 엠씨알 | 00시간 | 8 | 읽기/쓰기 |
| 14 | X | 회선 상태 레지스터 | LSR | 60시간 | 8 | R |
| 18 | X | 모뎀 상태 레지스터 | 엠에스알 | 00시간 | 8 | R |
| 1C | X | 스크래치 레지스터 | SR | 00시간 | 8 | 읽기/쓰기 |
중요한
DLAB는 라인 제어 레지스터(LCR 비트 7)의 MSB입니다.
수신기 버퍼 레지스터(질문하기)
수신기 버퍼 레지스터는 다음 표에 정의되어 있습니다.
표 1-2. 수신기 버퍼 레지스터(읽기 전용)—주소 0 DLAB 0
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 7..0 | 로브레인 | XX | 0..FFh | 수신된 데이터 비트. 비트 0은 최하위 비트(LSB)이며, 가장 먼저 수신된 비트입니다. |
송신기 보유 레지스터(질문하기)
송신기 홀딩 레지스터는 다음 표에 정의되어 있습니다.
표 1-3. 송신기 홀딩 레지스터 - 쓰기 전용
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 7..0 | 목 | XX | 0..FFh | 데이터 비트를 전송합니다. 비트 0은 LSB이며 가장 먼저 전송됩니다. |
FIFO 제어 레지스터(질문하기)
FIFO 제어 레지스터는 다음 표에 정의되어 있습니다.
| 비트(7:0) | 기본 상태 | 유효한 상태 | 기능 |
| 0 | 1 | 0, 1 | 송수신기(Tx)와 수신기(Rx) FIFO를 모두 활성화합니다. 다른 FCR 비트가 기록될 때 이 비트를 1로 설정해야 합니다. 그렇지 않으면 해당 비트가 프로그래밍되지 않습니다.
0: 장애인 1: 사용 |
| 1 | 0 | 0, 1 | Rx FIFO의 모든 바이트를 지우고 카운터 논리를 재설정합니다. 시프트 레지스터는 지워지지 않습니다.
0: 장애인 1: 사용 |
| 2 | 0 | 0, 1 | Tx FIFO의 모든 바이트를 지우고 카운터 논리를 재설정합니다. 시프트 레지스터는 지워지지 않습니다.
0: 장애인 1: 사용 |
| 3 | 0 | 0, 1 | 0: 단일 전송 DMA: CPU 버스 사이클 간에 전송됨
1: 다중 전송 DMA: Rx FIFO가 비어 있거나 TSO(Transmission System Operator) 전송(XMIT) FIFO가 채워질 때까지 전송이 수행됩니다. FCR[0]을 1로 설정하려면 FCR[3]을 1로 설정해야 합니다. |
| 4, 5 | 0 | 0, 1 | 추후 사용을 위해 예약됨. |
| 6, 7 | 0 | 0, 1 | 이 비트는 Rx FIFO 인터럽트에 대한 트리거 레벨을 설정하는 데 사용됩니다. 7 6 Rx FIFO 트리거 레벨(바이트)
0 0 01 0 1 04 1 0 08 1 1 14 |
분할 제어 레지스터(질문하기)
보드 레이트(BR) 클록은 입력 참조 클록(PCLK)을 16으로 나누고 그 나누는 값을 사용하여 생성됩니다.
다음 표에는 예가 나와 있습니다.amp18.432MHz 기준 클록을 사용할 때 원하는 BR에 대한 약수 값의 le입니다.
표 1-5. 디바이저 래치(LS 및 MS)
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 7..0 | 디엘알엘 | 01시간 | 01..FFh | 나누는 값의 LSB |
| 7..0 | 디엠알 | 00시간 | 00..FFh | 나누는 값의 MSB |
표 1-6. 18.432MHz 기준 클록의 통신 속도 및 제수 값
| 전송 속도 | 십진수 제수(제수 값) | 오류율 |
| 50 | 23040 | 0.0000% |
| 75 | 15360 | 0.0000% |
| 110 | 10473 | –0.2865% |
| 134.5 | 8565 | 0.0876% |
| 150 | 7680 | 0.0000% |
| 300 | 3840 | 0.0000% |
| 600 | 1920 | 0.0000% |
| 1,200 | 920 | 4.3478% |
| 1,800 | 640 | 0.0000% |
| 전송 속도 | 십진수 제수(제수 값) | 오류율 |
| 2,000 | 576 | 0.0000% |
| 2,400 | 480 | 0.0000% |
| 3,600 | 320 | 0.0000% |
| 4,800 | 240 | 0.0000% |
| 7,200 | 160 | 0.0000% |
| 9,600 | 120 | 0.0000% |
| 19,200 | 60 | 0.0000% |
| 38,400 | 30 | 0.0000% |
| 56,000 | 21 | –2.0408% |
인터럽트 활성화 레지스터(질문하기)
인터럽트 활성화 레지스터는 다음 표에 정의되어 있습니다.
표 1-7. 인터럽트 활성화 레지스터
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 0 | ERBFI | 0 | 0, 1 | "수신된 데이터 사용 가능 인터럽트"를 활성화합니다. 0: 비활성화됨
1: 사용 |
| 1 | 에트베이 | 0 | 0, 1 | "송신기 홀딩 레지스터 비어 있음 인터럽트"를 활성화합니다. 0: 비활성화됨
1: 사용 |
| 2 | 엘시 | 0 | 0, 1 | "수신기 회선 상태 인터럽트"를 활성화합니다. 0: 비활성화됨
1: 사용 |
| 3 | 에드시 | 0 | 0, 1 | "모뎀 상태 인터럽트"를 활성화합니다. 0: 비활성화됨
1: 사용 |
| 7..4 | 예약된 | 0 | 0 | 항상 0 |
인터럽트 식별 레지스터(질문하기)
인터럽트 식별 레지스터는 다음 표에 나열되어 있습니다. 표 1-8. 인터럽트 식별 레지스터
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 3..0 | 영어: IIR (이에르) | 1h | 0..Ch | 인터럽트 식별 비트. |
| 5..4 | 예약된 | 00 | 00 | 항상 00 |
| 7..6 | 방법 | 11 | 11 | 11: FIFO 모드 |
인터럽트 식별 레지스터 필드는 다음 표에 정의되어 있습니다.
표 1-9. 인터럽트 식별 레지스터 필드(IIR)
| IIR 값[3:0)] | 우선 순위 수준 | 인터럽트 유형 | 인터럽트 소스 | 인터럽트 재설정 제어 |
| 0110 | 제일 높은 | 수신자 회선 상태 | 오버런 오류, 패리티 오류, 프레이밍 오류 또는 브레이크 인터럽트 | 회선 상태 레지스터 읽기 |
| 0100 | 두번째 | 수신된 데이터가 사용 가능합니다 | 수신기 데이터 사용 가능 | 수신기 버퍼 레지스터 또는 FIFO 읽기가 트리거 레벨 이하로 떨어집니다. |
| 테이블 1-9. 인터럽트 식별 레지스터 필드(IIR)(계속) | ||||
| IIR 값[3:0)] | 우선 순위 수준 | 인터럽트 유형 | 인터럽트 소스 | 인터럽트 재설정 제어 |
| 1100 | 두번째 | 문자 시간 초과 표시 | 마지막 4개 문자 시간 동안 Rx FIFO에서 문자가 읽히지 않았으며 이 시간 동안 적어도 하나의 문자가 들어있었습니다. | 수신기 버퍼 레지스터 읽기 |
| 0010 | 제삼 | 송신기 보류 레지스터가 비어 있습니다 | 송신기 보류 레지스터가 비어 있습니다 | IIR 읽기 또는 송신기 홀딩 레지스터에 쓰기 |
| 0000 | 네번째 | 모뎀 상태 | 전송 가능, 데이터 세트 준비, 벨소리 표시기 또는 데이터 캐리어 감지 | 현대 상태 등록부 읽기 |
라인 제어 레지스터(질문하기)
다음 표는 라인 제어 레지스터를 보여줍니다. 표 1-10. 라인 제어 레지스터
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 1..0 | WLS | 0 | 0..3시간 | 단어 길이 선택 00: 5비트
01: 6비트 10: 7비트 11: 8비트 |
| 2 | 셋톱박스 | 0 | 0, 1 | 정지 비트 수 0: 1 정지 비트
1: WLS = 1일 때 00½ 정지 비트 2: 다른 경우 정지 비트 |
| 3 | 펜 | 0 | 0, 1 | 패리티 활성화 0: 비활성화됨
1: 활성화됨. 전송 시 패리티가 추가되고 수신 시 확인됩니다. |
| 4 | 주당 순이익 | 0 | 0, 1 | 짝수 패리티 선택 0: 홀수 패리티
1 : 짝수 패리티 |
| 5 | SP | 0 | 0, 1 | 스틱 패리티 0: 비활성화됨
1: 사용 스틱 패리티가 활성화된 경우 패리티 세부 정보는 다음과 같습니다. 비트 4..3 11: 0은 패리티 비트로 전송되며, 수신 시 체크됩니다. 01: 1은 패리티 비트로 전송되며, 수신 시 체크됩니다. |
| 6 | SB | 0 | 0, 1 | Break 0 설정: 비활성화됨
1: 브레이크를 설정합니다. SOUT은 0으로 설정됩니다. 이는 송신기 로직에 영향을 미치지 않습니다. 이 비트를 0으로 설정하면 브레이크가 비활성화됩니다. |
| 7 | 디랩 | 0 | 0, 1 | 디바이저 래치 액세스 비트
0: 비활성화됨. 일반 주소 지정 모드가 사용 중입니다. 1: 활성화됨. 주소 0과 1에 대한 읽기 또는 쓰기 작업 중 Divisor Latch 레지스터에 대한 액세스를 활성화합니다. |
모뎀 제어 레지스터(질문하기)
모뎀 제어 레지스터는 다음 표에 나열되어 있습니다.
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 0 | 디티알 | 0 | 0, 1 | DTRn(데이터 터미널 준비) 출력을 제어합니다. 0: DTRn <= 1
1: DTRn <= 0 |
| 1 | 실시간 | 0 | 0, 1 | RTSn(전송 요청) 출력을 제어합니다. 0: RTSn <= 1
1: RTSn <= 0 |
| 2 | 아웃 1 | 0 | 0, 1 | Output1(OUT1n) 신호를 제어합니다. 0: OUT1n <= 1
1: OUT1n <= 0 |
| 3 | 아웃 2 | 0 | 0, 1 | Output2(OUT2n) 신호를 제어합니다. 0: OUT2n <= 1
1: OUT2n <= 0 |
| 4 | 고리 | 0 | 0, 1 | 루프 활성화 비트 0: 비활성화됨
1: 활성화됨. 루프 모드에서는 다음이 발생합니다. SOUT은 1로 설정됩니다. SIN, DSRn, CTSn, RIn 및 DCDn 입력은 연결이 끊어집니다. 송신기 시프트 레지스터의 출력은 수신기 시프트 레지스터로 루프백됩니다. 모뎀 제어 출력(DTRn, RTSn, OUT1n 및 OUT2n)은 모뎀 제어 입력에 내부적으로 연결되고, 모뎀 제어 출력 핀은 1로 설정됩니다. 루프백 모드에서는 전송된 데이터가 즉시 수신되어 CPU가 UART의 작동을 확인할 수 있습니다. 인터럽트는 루프 모드에서 작동합니다. |
| 7..4 | 예약된 | 0h | 0 | 예약된 |
회선 상태 등록부(질문하기)
다음 표에서는 회선 상태 레지스터에 대해 정의합니다.
표 1-12. 회선 상태 레지스터 - 읽기 전용
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 0 | DR | 0 | 0, 1 | 데이터 준비 표시기
데이터 바이트가 수신되어 수신 버퍼 또는 FIFO에 저장되면 1이 반환됩니다. CPU가 수신 버퍼 또는 FIFO에서 데이터를 읽으면 DR이 0으로 지워집니다. |
| 1 | OE | 0 | 0, 1 | 오버런 오류 표시기
CPU가 수신 버퍼에서 바이트를 읽기 전에 새 바이트가 수신되었으며, 이전 데이터 바이트는 삭제되었음을 나타냅니다. CPU가 라인 상태 레지스터를 읽으면 OE가 지워집니다. 데이터가 트리거 레벨을 넘어 FIFO를 계속 채우면 FIFO가 가득 차고 다음 문자가 완전히 채워지면 오버런 오류가 발생합니다. 시프트 레지스터에 수신된 문자입니다. 시프트 레지스터에 있는 문자는 덮어쓰여지지만, FIFO로 전송되지는 않습니다. |
| 2 | PE | 0 | 0, 1 | 패리티 오류 표시기
수신된 바이트에 패리티 오류가 있음을 나타냅니다. CPU가 라인 상태 레지스터를 읽으면 PE가 지워집니다. 이 오류는 관련 문자가 FIFO 상단에 있을 때 CPU에 표시됩니다. |
| 3 | FE | 0 | 0, 1 | 프레이밍 오류 표시기
수신된 바이트에 유효한 정지 비트가 없음을 나타냅니다. CPU가 라인 상태 레지스터를 읽으면 FE가 지워집니다. UART는 프레이밍 오류 발생 후 재동기화를 시도합니다. 이를 위해 UART는 프레이밍 오류가 다음 시작 비트 때문이라고 가정합니다.amp이 시작 비트를 두 번 읽은 후 데이터 수신을 시작합니다. 이 오류는 관련 문자가 FIFO 맨 위에 있을 때 CPU에 나타납니다. |
| 표 1-12. 회선 상태 레지스터 - 읽기 전용(계속) | ||||
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 4 | BI | 0 | 0, 1 | 중단 인터럽트 표시기
수신된 데이터가 0이며, 전체 단어 전송 시간(시작 비트)보다 길다는 것을 나타냅니다. + 데이터 비트 + 패리티 + 정지 비트). BI는 CPU가 라인 상태 레지스터를 읽을 때 지워집니다. 이 오류는 관련 문자가 FIFO 상단에 있을 때 CPU에 나타납니다. 브레이크가 발생하면 FIFO에 0 문자 하나만 로드됩니다. |
| 5 | 세 | 1 | 0, 1 | 송신기 홀딩 레지스터 비어 있음(THRE) 표시기
UART가 새 데이터 바이트를 전송할 준비가 되었음을 나타냅니다. THRE는 인터럽트 활성화 레지스터의 비트 1(ETBEI)이 1일 때 CPU에 인터럽트를 발생시킵니다. 이 비트는 TX FIFO가 비어 있을 때 설정됩니다. TX FIFO에 최소 한 바이트라도 기록되면 이 비트는 클리어됩니다. |
| 6 | 템트 | 1 | 0, 1 | 송신기 비어 있음 표시기
송신기 FIFO와 Shift 레지스터가 모두 비어 있으면 이 비트는 1로 설정됩니다. |
| 7 | 피어 | 0 | 1 | 이 비트는 FIFO에 패리티 오류, 프레이밍 오류 또는 중단 표시가 하나 이상 있을 때 설정됩니다. CPU가 LSR을 읽을 때 FIFO에 후속 오류가 없으면 FIER는 지워집니다. |
모뎀 상태 등록부(질문하기)
모뎀 상태 레지스터는 다음 표에 나열되어 있습니다.
표 1-13. 모뎀 상태 레지스터 - 읽기 전용
| 비트 | 이름 | 기본 상태 | 유효한 상태 | 기능 |
| 0 | DCTS | 0 | 0, 1 | 델타 전송 완료 표시기.
CTSn 입력이 CPU에서 마지막으로 읽은 이후 상태가 변경되었음을 나타냅니다. |
| 1 | DDR | 0 | 0, 1 | 델타 데이터 세트 준비 표시기
DSRn 입력이 CPU에서 마지막으로 읽은 이후 상태가 변경되었음을 나타냅니다. |
| 2 | 테리 | 0 | 0, 1 | 링 후연 표시기 감지기. RI 입력이 0에서 1로 변경되었음을 나타냅니다. |
| 3 | DDCD | 0 | 0, 1 | 델타 데이터 캐리어 감지 표시기는 DCD 입력 상태가 변경되었음을 나타냅니다.
참고: 비트 0, 1, 2 또는 3이 1로 설정될 때마다 모뎀 상태 인터럽트가 생성됩니다. |
| 4 | CTS | 0 | 0, 1 | 보내기 지우기
CTSn 입력의 보수입니다. 모뎀 제어 레지스터(MCR)의 비트 4가 1(루프)로 설정되면, 이 비트는 MCR의 DTR과 동일합니다. |
| 5 | 디에스알에이 | 0 | 0, 1 | 데이터 세트 준비
DSR 입력의 보수입니다. MCR의 비트 4가 1(루프)로 설정되면 이 비트는 MCR의 RTSn과 동일합니다. |
| 6 | RI | 0 | 0, 1 | 링 표시기
RIn 입력의 보수입니다. MCR의 비트 4가 1(루프)로 설정되면 이 비트는 MCR의 OUT1과 동일합니다. |
| 7 | DCD | 0 | 0, 1 | 데이터 캐리어 감지
DCDn 입력의 보수입니다. MCR의 비트 4가 1(루프)로 설정되면 이 비트는 MCR의 OUT2와 동일합니다. |
스크래치 레지스터(질문하기)
스크래치 레지스터는 다음 표에 정의되어 있습니다.
| 비트 | 이름 | 기본 상태 | 기능 |
| 7..0 | (주) | 00시간 | CPU 읽기/쓰기 레지스터입니다. UART 동작에는 영향을 미치지 않습니다. |
도구 흐름(질문하기)
이 섹션에서는 도구 흐름에 대한 세부 정보를 제공합니다.
스마트디자인(질문하기)
Core16550은 SmartDesign IP 배포 설계 환경에서 다운로드할 수 있습니다. 코어는 SmartDesign의 구성 GUI를 사용하여 구성됩니다(아래 그림 참조).
SmartDesign을 사용하여 코어를 인스턴스화, 구성, 연결 및 생성하는 방법에 대한 자세한 내용은 SmartDesign 사용자 가이드를 참조하세요.
그림 2-1. Core16550 구성

시뮬레이션 흐름(질문하기)
모든 릴리스에는 Core16550용 사용자 테스트벤치가 포함되어 있습니다.
시뮬레이션을 실행하려면 SmartDesign에서 "사용자 테스트벤치 흐름" 옵션을 선택하고 SmartDesign 메뉴에서 "디자인 생성"을 클릭하세요. 사용자 테스트벤치는 Core Testbench Configuration GUI를 통해 선택됩니다.
SmartDesign이 Libero SoC 프로젝트를 생성할 때 사용자 테스트벤치를 설치합니다. files.
사용자 테스트벤치를 실행하려면 Libero SoC Design Hierarchy 창에서 설계 루트를 Core16550 인스턴스로 설정하고 SoC Design Flow 창에서 시뮬레이션 아이콘을 클릭하세요. ModelSim®이 실행되고 시뮬레이션이 자동으로 실행됩니다.
Libero SoC에서의 합성(질문하기)
Libero SoC에서 Synthesis 아이콘을 클릭하세요. Synthesis 창이 나타납니다. Synplify® 프로젝트입니다. Verilog를 사용하는 경우 Synplify에서 Verilog 2001 표준을 사용하도록 설정하세요. Synthesis를 실행하려면 Run 아이콘을 클릭하세요.
Libero SoC의 배치 및 경로(질문하기)
설계 경로를 적절히 설정하고 Synthesis를 실행하려면 Libero SoC에서 레이아웃 아이콘을 클릭하고 Designer를 실행하세요. Core16550에는 특별한 배치 및 경로 설정이 필요하지 않습니다.
Core16550 (질문하기)
이 섹션에서는 이 코어에서 사용되는 매개변수에 대한 정보를 제공합니다.
매개변수(질문하기)
Core16550은 최상위 매개변수를 지원하지 않습니다.
핵심 인터페이스(질문하기)
이 섹션에서는 입력 및 출력 요약을 제공합니다.
I/O 신호 설명(질문하기)
다음은 Core16550 I/O 정의 목록입니다.
| 이름 | 유형 | 극성 | 설명 |
| 프리셋N | 입력 | 낮은 | 마스터 리셋 |
| PCLK | 입력 | — | 마스터 클록
PCLK를 Divisor 레지스터 값으로 나눕니다. 그 결과를 16으로 나누어 통신 속도를 계산합니다. 그 결과 신호가 BAUDOUT 신호입니다. 이 핀의 상승 에지는 모든 입력 및 출력 신호를 스트로브하는 데 사용됩니다. |
| 쓰기 | 입력 | 높은 | APB 쓰기/읽기 활성화, 액티브 하이.
HIGH이면 지정된 주소에 데이터가 기록되고, LOW이면 지정된 주소에서 데이터가 읽힙니다. |
| PADDR[4:0] | 입력 | — | APB 주소
이 버스는 CPU가 Core16550의 레지스터 주소에 읽고 쓸 수 있는 링크를 제공합니다. |
| PSEL | 입력 | 높은 | APB 선택
이것이 HIGH이고 PENABLE인 경우, Core16550에 대한 읽기 및 쓰기가 활성화됩니다. |
| 비밀번호[7:0] | 입력 | — | 데이터 입력 버스
이 버스의 데이터는 쓰기 사이클 동안 주소가 지정된 레지스터에 기록됩니다. |
| 페너블 | 입력 | 높은 | APB 활성화
이것이 PSEL과 함께 HIGH일 경우, Core16550에 대한 읽기 및 쓰기가 활성화됩니다. |
| PRDATA[7:0] | 산출 | — | 데이터 출력 버스
이 버스는 읽기 사이클 동안 주소가 지정된 레지스터의 값을 보관합니다. |
| CTSn | 입력 | 낮은 | 보내기 지우기
이 액티브 로우 신호는 연결된 장치(모뎀)가 데이터를 수신할 준비가 되었음을 나타내는 입력 신호입니다. Core16550은 모뎀 상태 레지스터를 통해 이 정보를 CPU에 전달합니다. 이 레지스터는 또한 CTSn 신호가 마지막으로 읽힌 이후 변경된 경우 레지스터가 읽혔음을 나타냅니다. |
| DSRn | 입력 | 낮은 | 데이터 세트 준비
이 액티브 로우 신호는 연결된 장치(모뎀)가 Core16550과 연결을 설정할 준비가 되었음을 나타내는 입력입니다. Core16550은 모뎀 상태 레지스터를 통해 이 정보를 CPU에 전달합니다. 이 레지스터는 마지막으로 레지스터를 읽은 이후 DSRn 신호가 변경되었는지 여부도 나타냅니다. |
| DCDn | 입력 | 낮은 | 데이터 캐리어 감지
이 액티브 로우 신호는 연결된 장치(모뎀)가 반송파를 감지했음을 나타내는 입력입니다. Core16550은 모뎀 상태 레지스터를 통해 이 정보를 CPU에 전달합니다. 이 레지스터는 또한 마지막으로 레지스터를 읽은 이후 DCDn 신호가 변경되었는지 여부를 나타냅니다. |
| 죄 | 입력 | — | 직렬 입력 데이터
이 데이터는 Core16550으로 전송되며, PCLK 입력 핀과 동기화됩니다. |
| 린 | 입력 | 낮은 | 링 표시기
이 액티브 로우 신호는 연결된 장치(모뎀)가 전화선에서 링 신호를 감지했음을 나타내는 입력입니다. Core16550은 모뎀 상태 레지스터를 통해 이 정보를 CPU에 전달합니다. 이 레지스터는 또한 RIn 트레일링 에지가 감지된 시점을 나타냅니다. |
| 사우트 | 산출 | — | 직렬 출력 데이터
이 데이터는 Core16550에서 전송되며, BAUDOUT 출력 핀과 동기화됩니다. |
| RTSn | 산출 | 낮은 | 보내기 요청
이 액티브 로우 출력 신호는 연결된 장치(모뎀)에 Core16550이 데이터를 전송할 준비가 되었음을 알리는 데 사용됩니다. 이 신호는 CPU가 모뎀 제어 레지스터를 통해 프로그래밍합니다. |
| 표 4-1. I/O 신호 요약(계속) | |||
| 이름 | 유형 | 극성 | 설명 |
| 디트렌 | 산출 | 낮은 | 데이터 터미널 준비 완료
이 액티브 로우 출력 신호는 연결된 장치(모뎀)에 Core16550이 통신 링크를 설정할 준비가 되었음을 알립니다. 이 신호는 CPU가 모뎀 제어 레지스터를 통해 프로그래밍합니다. |
| 아웃1n | 산출 | 낮은 | 출력 1
이 액티브 로우 출력은 사용자 정의 신호입니다. CPU는 모뎀 제어 레지스터를 통해 이 신호를 프로그래밍하고 반대 값으로 설정합니다. |
| 아웃2n | 산출 | 낮은 | 출력 2
이 액티브 로우 출력 신호는 사용자 정의 신호입니다. CPU가 모뎀 제어 레지스터를 통해 프로그래밍하며, 프로그래밍된 값과 반대 값으로 설정됩니다. |
| 국제 | 산출 | 높은 | 인터럽트 보류 중
이 액티브 하이 출력 신호는 Core16550의 인터럽트 출력 신호입니다. 특정 이벤트 발생 시 활성화되어 CPU에 해당 이벤트가 발생했음을 알리도록 프로그래밍되어 있습니다(자세한 내용은 인터럽트 식별 레지스터 참조). 그러면 CPU는 적절한 조치를 취합니다. |
| 바우아웃n | 산출 | 낮은 | 보드 출력
이는 SOUT에서 데이터 출력 스트림을 동기화하기 위해 입력 클록에서 파생된 출력 클록 신호입니다. |
| RXRDYN | 산출 | 낮은 | 수신기가 전송을 수신할 준비가 되었습니다.
CPU는 이 액티브 로우 출력 신호를 통해 Core16550의 수신 섹션이 데이터를 읽을 수 있음을 나타냅니다. |
| TXRDYN | 산출 | 낮은 | 데이터를 전송할 준비가 된 송신기.
이 액티브 로우 신호는 Core16550의 송신기 섹션에 전송을 위한 데이터를 쓸 공간이 있음을 CPU에 알려줍니다. |
| rxfifo_empty | 산출 | 높은 | FIFO가 비어 있는 것을 수신합니다.
수신 FIFO가 비어 있으면 이 신호는 HIGH가 됩니다. |
| rxfifo_full | 산출 | 높은 | FIFO를 모두 수신합니다.
수신 FIFO가 가득 차면 이 신호는 High가 됩니다. |
타이밍 다이어그램(질문하기)
이 섹션에서는 이 코어의 타이밍 다이어그램을 제공합니다.
데이터 쓰기 주기 및 데이터 읽기 주기(질문하기)
그림 5-1과 그림 5-2는 APB 시스템 클록인 PCLK에 대한 쓰기 주기와 읽기 주기 타이밍 관계를 나타냅니다.
등록하기 쓰기(질문하기)
다음 그림은 주소, 선택, 활성화 신호가 래치되어 PCLK의 상승 에지 이전에 유효해야 함을 보여줍니다. 쓰기는 PCLK 신호의 상승 에지에서 수행됩니다.
등록 읽기 (질문하기)
다음 그림은 주소, 선택, 활성화 신호가 래치되어 PCLK 상승 에지 이전에 유효해야 함을 보여줍니다. 읽기는 PCLK 신호의 상승 에지에서 수행됩니다.
설명과 타이밍 파형에 대한 자세한 내용은 AMBA 사양을 참조하세요.
수신기 동기화(질문하기)
수신기가 수신 데이터 스트림에서 Low 상태를 감지하면 동기화합니다. 시작 에지 이후 UART는 일반 비트 길이의 1.5배만큼 기다립니다. 이로 인해 이후 각 비트는 해당 비트 너비의 중간에서 읽힙니다. 다음 그림은 이러한 동기화 과정을 보여줍니다.
그림 5-3. 수신기 동기화
테스트벤치 운영(질문하기)
Core16550에는 Verilog 사용자 테스트벤치라는 하나의 테스트벤치만 제공됩니다. 이는 Verilog로 작성된 사용하기 쉬운 테스트벤치입니다. 이 테스트벤치는 고객 수정용으로 설계되었습니다.
사용자 테스트벤치(질문하기)
다음 그림은 ex의 블록 다이어그램을 보여줍니다.amp사용자 디자인 및 테스트벤치.
그림 6-1. Core16550 사용자 테스트벤치
사용자 테스트벤치에는 간단한 예가 포함됩니다.amp사용자가 자신의 디자인을 구현하고자 할 때 참고할 수 있는 디자인입니다.
ex를 위한 테스트벤치amp사용자 설계는 검증 테스트벤치에서 테스트된 기능의 하위 집합을 구현합니다. 자세한 내용은 사용자 테스트벤치를 참조하십시오. 개념적으로, 그림 6-1과 같이 Core16550의 인스턴스화는 동작 마이크로컨트롤러와 시뮬레이션된 루프백 연결을 사용하여 시뮬레이션됩니다. 예를 들어amp사용자 테스트벤치는 동일한 Core16550 유닛을 통한 송수신을 보여주므로, 이 코어의 기본적인 사용 방법을 이해할 수 있습니다.
사용자 테스트벤치는 Core16550의 기본 설정, 송수신 동작을 보여줍니다. 사용자 테스트벤치는 다음 단계를 수행합니다.
- 제어 레지스터에 씁니다.
- 수신된 데이터를 확인하세요.
- 전송과 수신을 켭니다.
- 제어 레지스터를 읽습니다.
- 1바이트를 전송하고 수신합니다.
장치 활용 및 성능(질문하기)
다음 표는 Core16550 사용률 및 성능 데이터를 보여줍니다. 표 7-1. Core16550 사용률 및 성능 PolarFire 및 PolarFire SoC
| 장치 세부 정보 | 자원 | 숫양 | |||
| 가족 | 장치 | 4루트 | 디에프에프 | 논리 요소 | μSRAM |
| 폴라파이어® | MPF100T- FCSG325I | 752 | 284 | 753 | 2 |
| PolarFire®SoC | MPFS250TS- FCSG536I | 716 | 284 | 720 | 2 |
| RTG4™ | RT4G150- 1CG1657M | 871 | 351 | 874 | 2 |
| 이글루® 2 | M2GL050TFB GA896STD | 754 | 271 | 1021 | 2 |
| 스마트퓨전® 2 | M2S050TFBG A896STD | 754 | 271 | 1021 | 2 |
| 스마트퓨전® | A2F500M3G- 표준 | 1163 | 243 | 1406 | 2 |
| 이글루®/이글루 | AGL600- STD/AGLE600 V2 | 1010 | 237 | 1247 | 2 |
| 퓨전 | AFS600-STD | 1010 | 237 | 1247 | 2 |
| 프로아식® 3/E | A3P600-STD | 1010 | 237 | 1247 | 2 |
| 프로아식 플러스® | APA075-STD | 1209 | 233 | 1442 | 2 |
| RTAX-S | RTAX250S- 표준 | 608 | 229 | 837 | 2 |
| 액셀러레이터® | AX125-STD | 608 | 229 | 837 | 2 |
해결된 문제(질문하기)
다음 표에는 다양한 Core16550 릴리스에 대해 해결된 모든 문제가 나열되어 있습니다.
표 8-1. 해결된 문제
| 버전 | 변화 |
| v3.4 | Core16550은 시스템 Verilog 키워드 "break"를 레지스터 이름으로 사용하여 구문 오류를 발생시켰습니다. 이 문제는 키워드를 다른 이름으로 변경하여 해결되었습니다. PolarFire® 제품군 지원 추가 |
개정 내역(질문하기)
개정 내역은 문서에서 구현된 변경 사항을 설명합니다. 변경 사항은 최신 출판물부터 시작하여 개정별로 나열됩니다.

마이크로칩 FPGA 지원
Microchip FPGA 제품 그룹은 고객 서비스, 고객 기술 지원 센터, web고객께서는 지원팀에 문의하시기 전에 Microchip의 온라인 리소스를 방문해 보시기 바랍니다. 문의하신 내용은 이미 답변되어 있을 가능성이 높습니다.
를 통해 기술 지원 센터에 문의하십시오. web사이트에서 www.microchip.com/support FPGA 장치 부품 번호를 언급하고 적절한 케이스 카테고리를 선택하고 설계를 업로드하세요. files 기술 지원 사례를 만드는 동안.
제품 가격, 제품 업그레이드, 업데이트 정보, 주문 상태 및 승인과 같은 비기술적 제품 지원에 대해서는 고객 서비스에 문의하십시오.
- 북미에서 전화하려면 800.262.1060으로 전화하세요.
- 전 세계에서 650.318.4460으로 전화하세요.
- 팩스: 전 세계 어디에서나 650.318.8044
마이크로칩 정보
상표
"Microchip" 이름과 로고, "M" 로고 및 기타 이름, 로고 및 브랜드는 미국 및/또는 기타 국가에서 Microchip Technology Incorporated 또는 그 계열사 및/또는 자회사의 등록 및 미등록 상표입니다("Microchip 상표"). Microchip 상표에 대한 정보는 다음에서 찾을 수 있습니다. https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN:
법적 고지
- 본 간행물과 여기에 포함된 정보는 Microchip 제품을 설계, 테스트하고 귀하의 애플리케이션과 통합하는 등 Microchip 제품에만 사용할 수 있습니다. 이 정보의 사용
다른 방식으로 본 약관을 위반하는 경우. 장치 애플리케이션에 관한 정보는 귀하의 편의를 위해서만 제공되며 업데이트로 대체될 수 있습니다. 귀하의 애플리케이션이 귀하의 사양을 충족하는지 확인하는 것은 귀하의 책임입니다. 추가 지원이 필요하면 현지 Microchip 영업소에 문의하거나 다음에서 추가 지원을 받으십시오. www.microchip.com/en-us/support/design-help/client-support-services - 이 정보는 MICROCHIP에서 "있는 그대로" 제공합니다. MICROCHIP은 비침해, 상품성 및 특정 목적에의 적합성에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 정보와 관련하여 명시적이든 묵시적이든, 서면이든 구두이든, 법률적이든 기타이든 어떠한 종류의 진술이나 보증도 하지 않습니다. 또는 그 상태, 품질 또는 성능과 관련된 보증도 하지 않습니다.
- 어떠한 경우에도 MICROCHIP은 정보 또는 그 사용과 관련된 간접적, 특수적, 징벌적, 우발적 또는 결과적 손실, 피해, 비용 또는 경비에 대해 책임을 지지 않습니다.원인에 관계없이 MICROCHIP이 가능성을 통보받았거나 피해가 예측 가능한 경우에도 마찬가지입니다.법률에서 허용하는 최대 범위 내에서 정보 또는 그 사용과 관련된 모든 청구에 대한 MICROCHIP의 총 책임은 귀하가 정보에 대해 MICROCHIP에 직접 지불한 수수료 금액(있는 경우)을 초과하지 않습니다.
- 생명 유지 및/또는 안전 애플리케이션에서 Microchip 장치를 사용하는 것은 전적으로 구매자의 위험이며, 구매자는 그러한 사용으로 인해 발생하는 모든 손해, 청구, 소송 또는 비용으로부터 Microchip을 방어, 보상하고 무해하게 보호하는 데 동의합니다. 달리 명시되지 않는 한, Microchip 지적 재산권에 따라 묵시적 또는 기타 방식으로 라이선스가 양도되지 않습니다.
Microchip Devices 코드 보호 기능
Microchip 제품의 코드 보호 기능에 대한 자세한 내용은 다음과 같습니다.
- 마이크로칩 제품은 해당 마이크로칩 데이터 시트에 포함된 사양을 충족합니다.
- Microchip은 자사 제품군이 의도된 방식으로, 작동 사양 내에서, 정상적인 조건에서 사용될 경우 안전하다고 믿습니다.
- Microchip은 지적 재산권을 소중히 여기고 적극적으로 보호합니다. Microchip 제품의 코드 보호 기능을 위반하려는 시도는 엄격히 금지되며 디지털 밀레니엄 저작권법을 위반할 수 있습니다.
- Microchip이나 다른 반도체 제조업체는 코드의 보안을 보장할 수 없습니다. 코드 보호는 제품이 "깨지지 않는다"는 것을 보장한다는 것을 의미하지 않습니다. 코드 보호는 끊임없이 진화하고 있습니다. Microchip은 제품의 코드 보호 기능을 지속적으로 개선하기 위해 최선을 다하고 있습니다.
사용자 가이드
© 2025 Microchip Technology Inc. 및 자회사
문서 / 리소스
![]() |
MICROCHIP Core16550 범용 비동기 송수신기 [PDF 파일] 사용자 가이드 v3.4, v3.3, Core16550 범용 비동기 송수신기, Core16550, 범용 비동기 송수신기, 비동기 송수신기, 송수신기, 송신기 |
