MICROCHIP Core16550 通用异步接收发送器

介绍
Core16550 是一款标准的通用异步收发器 (UART),可确保与广泛使用的 16550 器件软件兼容。它负责将调制解调器或其他串行设备的输入数据进行串并转换,并将 CPU 发送到这些设备的数据进行并串转换。
在传输过程中,数据以并行方式写入 UART 的发送先进先出 (FIFO) 缓冲区。然后,数据被串行化输出。在接收过程中,UART 将输入的串行数据转换为并行数据,以便处理器轻松访问。
下图显示了 16550 UART 的典型应用。
图 1. 典型的 16550 应用
表 1. Core16550 概要

主要特点
以下是Core16550的主要特性:
- 发送器和接收器均采用最多 16 字节的 FIFO 进行缓冲,以减少 CPU 收到的中断数量。
- 添加或剥离标准异步通信位(开始、停止和奇偶校验)。
- 独立控制的传输、接收、线路状态和数据集中断
- 可编程波特率发生器
- 调制解调器控制功能(CTSn、RTSn、DSRn、DTRn、RIn 和 DCDn)。
- 高级外设总线 (APB) 寄存器接口
已停止的功能
从此版本开始将不再支持超高速集成电路 (VHSIC) 硬件描述语言 (VHDL)。
Core16550 变更日志信息
本节提供了一个全面的view 从最新版本开始,新增的功能。
| 版本 | 什么是新的 |
| Core16550 v3.4 | Core16550 使用系统 Verilog 关键字“break”作为寄存器名称,这会导致语法错误。已将该关键字替换为其他名称以解决此问题。
增加了 PolarFire® 系列支持 |
| Core16550 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 | 中断识别寄存器 | 爱尔兰共和军 | 二氧化碳浓度 | 8 | R |
| 08 | X | FIFO 控制寄存器 | 饲料转化率 | 01小时 | 8 | W |
| 0C | X | 线路控制寄存器 | 逻辑回路电阻 | 00小时 | 8 | 读/写 |
| 10 | X | 调制解调器控制寄存器 | 最大循环电阻 | 00小时 | 8 | 读/写 |
| 14 | X | 线路状态寄存器 | 液体硅橡胶 | 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) 发送 (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 和分频值而产生的。
下表列出了一个示例amp使用 18.432 MHz 参考时钟时所需 BR 的除数值。
表 1-5. 除数锁存器(LS 和 MS)
| 位 | 姓名 | 默认状态 | 有效状态 | 功能 |
| 7..0 | 德国宇航局 | 01小时 | 01..FFh | 除数值的最低有效位 |
| 7..0 | 数字多模光纤 | 00小时 | 00..FFh | 除数值的MSB |
表 1-6. 18.432 MHz 参考时钟的波特率和分频值
| 波特率 | 十进制除数(除数值) | 百分比误差 |
| 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 | 内质网受体 | 0 | 0、1 | 启用“接收数据可用中断” 0:禁用
1:启用 |
| 1 | 乙醚 | 0 | 0、1 | 启用“发送器保持寄存器空中断” 0:禁用
1:启用 |
| 2 | ELSI | 0 | 0、1 | 启用“接收器线路状态中断” 0:禁用
1:启用 |
| 3 | 埃德蒙顿信息系统研究所 | 0 | 0、1 | 启用“调制解调器状态中断” 0:禁用
1:启用 |
| 7..4 | 预订的 | 0 | 0 | 始终为 0 |
中断识别寄存器(提问)
中断识别寄存器如下表所示。表 1-8. 中断识别寄存器
| 位 | 姓名 | 默认状态 | 有效状态 | 功能 |
| 3..0 | 爱尔兰共和军 | 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 | 第二 | 字符超时指示 | 在最后四个字符时间内没有从 Rx FIFO 读取任何字符,并且在此期间其中至少有一个字符。 | 读取接收缓冲寄存器 |
| 0010 | 第三 | 发送器保持寄存器为空 | 发送器保持寄存器为空 | 读取 IIR 或写入发送器保持寄存器 |
| 0000 | 第四 | 调制解调器状态 | 清除发送、数据集就绪、振铃指示器或数据载波检测 | 读取现代状态寄存器 |
线路控制寄存器(提问)
线路控制寄存器如下表所示。表 1-10. 线路控制寄存器
| 位 | 姓名 | 默认状态 | 有效状态 | 功能 |
| 1..0 | 加权最小二乘法 | 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 | 设置中断 0:禁用
1:设置断点。SOUT 强制为 0。这对发送器逻辑没有任何影响。通过将该位设置为 0 来禁用断点。 |
| 7 | 迪拉布 | 0 | 0、1 | 除数锁存器访问位
0:禁用。使用正常寻址模式。 1:启用。在对地址 0 和 1 进行读或写操作期间,允许访问除数锁存寄存器。 |
调制解调器控制寄存器(提问)
下表列出了调制解调器控制寄存器。
| 位 | 姓名 | 默认状态 | 有效状态 | 功能 |
| 0 | 数字化转型 | 0 | 0、1 | 控制数据终端就绪 (DTRn) 输出。0:DTRn <= 1
1:DTRn <= 0 |
| 1 | 即时战略 | 0 | 0、1 | 控制请求发送 (RTSn) 输出。0:RTSn <= 1
1:RTSn <= 0 |
| 2 | Out1 | 0 | 0、1 | 控制输出 1 (OUT1n) 信号。0:OUT1n <= 1
1:OUT1n <= 0 |
| 3 | Out2 | 0 | 0、1 | 控制输出 2 (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会尝试重新同步。为此,它会假设帧错误是由下一个起始位引起的,因此amp读取两次此起始位,然后开始接收数据。当相关字符位于 FIFO 的顶部时,此错误才会向 CPU 显现。 |
| 表 1-12。 线路状态寄存器——只读(续) | ||||
| 位 | 姓名 | 默认状态 | 有效状态 | 功能 |
| 4 | BI | 0 | 0、1 | 中断指示器
表示接收到的数据为0,长于一个完整字的传输时间(起始位 + 数据位 + 奇偶校验位 + 停止位)。CPU 读取线路状态寄存器时,BI 清零。当错误对应的字符位于 FIFO 顶部时,CPU 会发现此错误。发生中断时,只有一个零字符被加载到 FIFO 中。 |
| 5 | 三 | 1 | 0、1 | 发送器保持寄存器空(THRE)指示器
指示 UART 已准备好发送新的数据字节。当中断允许寄存器中的第 1 位 (ETBEI) 为 1 时,THRE 会向 CPU 发出中断。当 TX FIFO 为空时,该位置位。当至少有一个字节写入 TX FIFO 时,该位置位。 |
| 6 | 经颅磁刺激 | 1 | 0、1 | 发射机空指示器
当发送器 FIFO 和移位寄存器都为空时,该位设置为 1。 |
| 7 | 菲尔 | 0 | 1 | 当 FIFO 中至少有一个奇偶校验错误、帧错误或中断指示时,此位置位。如果 FIFO 中没有后续错误,则 CPU 读取 LSR 时 FIER 清零。 |
调制解调器状态寄存器(提问)
下表列出了调制解调器状态寄存器。
表 1-13. 调制解调器状态寄存器——只读
| 位 | 姓名 | 默认状态 | 有效状态 | 功能 |
| 0 | 数据中心 | 0 | 0、1 | Delta 清除发送指示器。
表示 CTSn 输入自上次被 CPU 读取后状态已经改变。 |
| 1 | DDSR | 0 | 0、1 | 增量数据集就绪指示器
表示 DSRn 输入自上次被 CPU 读取后状态已经改变。 |
| 2 | 泰瑞 | 0 | 0、1 | 振铃后沿指示器检测器。指示 RI 输入已从 0 变为 1。 |
| 3 | DDCD | 0 | 0、1 | Delta 数据载波检测指示器指示 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。 |
临时收银机(提问)
Scratch寄存器定义如下表。
| 位 | 姓名 | 默认状态 | 功能 |
| 7..0 | 可控硅 | 00小时 | 读/写CPU寄存器。对UART操作无影响。 |
工具流程(提问)
本节提供有关工具流的详细信息。
智能设计(提出问题)
Core16550 可在 SmartDesign IP 部署设计环境中下载。该内核的配置使用 SmartDesign 中的配置 GUI,如下图所示。
有关如何使用 SmartDesign 实例化、配置、连接和生成核心的信息,请参阅 SmartDesign 用户指南。
图 2-1. Core16550 配置

模拟流程(提问)
所有版本均包含 Core16550 的用户测试平台。
要运行仿真,请在 SmartDesign 中选择“用户测试台流程”选项,然后点击 SmartDesign 菜单下的“生成设计”。用户测试台可通过核心测试台配置 GUI 选择。
当 SmartDesign 生成 Libero SoC 项目时,它会安装用户测试台 files.
要运行用户测试台,请在 Libero SoC 设计层次结构窗格中将设计根设置为 Core16550 实例,然后单击 SoC 设计流程窗口中的仿真图标。这将调用 ModelSim® 并自动运行仿真。
Libero SoC 中的综合(提问)
点击 Libero SoC 中的“综合”图标。“综合”窗口随即出现。Synplify® 项目。如果使用 Verilog,请将 Synplify 设置为使用 Verilog 2001 标准。要运行综合,请点击“运行”图标。
Libero SoC 中的布局布线(提问)
要正确设置设计布线并运行综合 (Synthesis),请点击 Libero SoC 中的布局图标并调用 Designer。Core16550 不需要任何特殊的布局布线设置。
Core16550(提问)
本节提供有关此核心中使用的参数的信息。
参数(提问)
Core16550不支持任何顶层参数。
核心接口(提问)
本节提供输入和输出摘要。
I/O信号描述(提问)
下面列出了Core16550的I/O定义。
| 姓名 | 类型 | 极性 | 描述 |
| 预设值 | 输入 | 低的 | 主复位 |
| 时钟 | 输入 | — | 主时钟
PCLK 除以除数寄存器的值。结果除以 16 得到波特率。所得信号为 BAUDOUT 信号。该引脚的上升沿用于选通所有输入和输出信号。 |
| 写操作 | 输入 | 高的 | APB 写/读使能,高电平有效。
当为高电平时,数据写入指定地址位置。当为低电平时,数据从指定地址位置读取。 |
| PADDR[4:0] | 输入 | — | APB 地址
该总线为CPU提供了与Core16550寄存器地址的连接,以便进行读写。 |
| PSEL | 输入 | 高的 | APB 选择
当该信号与 PENABLE 一起为 HIGH 时,即可对 Core16550 进行读写操作。 |
| 密码数据[7:0] | 输入 | — | 数据输入总线
该总线上的数据将在写周期内写入寻址寄存器。 |
| 佩纳布尔 | 输入 | 高的 | APB 启用
当它与 PSEL 一起为高电平时,就可以对 Core16550 进行读写操作。 |
| 公关数据[7:0] | 输出 | — | 数据输出总线
该总线在读取周期内保存所寻址寄存器的值。 |
| 甲硫氨酸 | 输入 | 低的 | 清除发送
该低电平有效信号用于指示所连接设备(调制解调器)何时准备好接收数据。Core16550 通过调制解调器状态寄存器将此信息传递给 CPU。该寄存器还指示 CTSn 信号是否自上次读取后发生了变化。 |
| 数据链路层 | 输入 | 低的 | 数据集就绪
该低电平有效信号用于指示所连接设备(调制解调器)何时准备好与 Core16550 建立连接。Core16550 通过调制解调器状态寄存器将此信息传递给 CPU。该寄存器还指示自上次读取该寄存器以来 DSRn 信号是否发生了变化。 |
| 二氯二苯胺 | 输入 | 低的 | 数据载波检测
该低电平有效信号用于指示所连接设备(调制解调器)何时检测到载波。Core16550 通过调制解调器状态寄存器将此信息传递给 CPU。该寄存器还指示自上次读取该寄存器以来 DCDn 信号是否发生了变化。 |
| 罪 | 输入 | — | 串行输入数据
该数据被传输到Core16550中。它与PCLK输入引脚同步。 |
| 参考值 | 输入 | 低的 | 环形指示灯
该低电平有效信号用于指示所连接设备(调制解调器)何时在电话线上检测到振铃信号。Core16550 通过调制解调器状态寄存器将此信息传递给 CPU。该寄存器还指示何时检测到 RIn 下降沿。 |
| 南 | 输出 | — | 串行输出数据
该数据由Core16550传输,并与BAUDOUT输出引脚同步。 |
| 实时传输协议 | 输出 | 低的 | 请求发送
该低电平有效输出信号用于通知所连接设备(调制解调器),Core16550 已准备好发送数据。该信号由 CPU 通过调制解调器控制寄存器进行编程。 |
| 表 4-1。 I/O 信号概要(续) | |||
| 姓名 | 类型 | 极性 | 描述 |
| 数据链路层 | 输出 | 低的 | 数据终端就绪
该低电平有效输出信号通知所连接设备(调制解调器),Core16550 已准备好建立通信链路。该信号由 CPU 通过调制解调器控制寄存器进行编程。 |
| 输出1n | 输出 | 低的 | 输出1
该低电平有效输出是用户定义的信号。CPU通过调制解调器控制寄存器对该信号进行编程,并将其设置为相反的值。 |
| 输出2n | 输出 | 低的 | 输出2
该低电平有效输出信号是用户定义的信号。它由CPU通过调制解调器控制寄存器进行编程,并设置为相反的值。 |
| 因特尔 | 输出 | 高的 | 中断挂起
此高电平有效输出信号是 Core16550 的中断输出信号。它被编程为在某些事件发生时变为有效,通知 CPU 此类事件已发生(更多详细信息,请参阅中断识别寄存器)。然后 CPU 会采取适当的措施。 |
| 波特率输出 | 输出 | 低的 | 波特输出
这是从输入时钟派生的输出时钟信号,用于同步来自 SOUT 的数据输出流。 |
| RXRDYN | 输出 | 低的 | 接收器已准备好接收传输。
该低电平有效输出信号向 CPU 表明 Core16550 的接收器部分可用于读取数据。 |
| TXRDYN | 输出 | 低的 | 发射器已准备好传输数据。
该低电平有效信号向 CPU 指示 Core16550 的发送器部分有空间来写入要传输的数据。 |
| rxfifo_empty | 输出 | 高的 | 接收 FIFO 为空。
当接收 FIFO 为空时,此信号变为高电平。 |
| rxfifo_full | 输出 | 高的 | 接收 FIFO 已满。
当接收 FIFO 已满时,此信号变为高电平。 |
时序图(提问)
本节提供该核心的时序图。
数据写入周期和数据读取周期(提问)
图 5-1 和图 5-2 描述了相对于 APB 系统时钟 PCLK 的写周期和读周期时序关系。
注册 写 (问问题)
下图显示地址、选择和使能信号被锁存,并且必须在PCLK上升沿之前有效。写入操作发生在PCLK信号的上升沿。
注册阅读(提问)
下图显示地址、选择和使能信号被锁存,并且必须在PCLK上升沿之前有效。读取操作发生在PCLK信号的上升沿。
有关描述和时序波形的更多详细信息,请参阅 AMBA 规范。
接收器同步(提问)
当接收器在传入数据流中检测到低电平状态时,它会与之同步。在起始沿之后,UART 会等待 1.5 倍(正常位长)的延迟。这会导致每个后续位都以位宽的中间值读取。下图描述了此同步过程。
图 5-3. 接收器同步
测试台操作(提问)
Core16550 仅提供一个测试平台:Verilog 用户测试平台。这是一个用 Verilog 编写的简单易用的测试平台。此测试平台可供客户修改。
用户测试台(提问)
下图显示了ex的框图ample 用户设计和测试平台。
图 6-1. Core16550 用户测试台
用户测试平台包括一个简单的示例ample 设计可以为想要实现自己设计的用户提供参考。
例如amp例如,用户设计实现了验证测试台中测试的部分功能,更多详情请参阅用户测试台。从概念上讲,如图 6-1 所示,Core16550 的实例化是使用行为微控制器和模拟环回连接进行模拟的。例如amp例如,用户测试台通过相同的Core16550单元演示了发送和接收,因此您可以对如何使用该核心有一个基本的了解。
用户测试台演示了Core16550的基本设置、发送和接收操作。用户测试台执行以下步骤:
- 写入控制寄存器。
- 检查接收到的数据。
- 打开传输和接收。
- 读取控制寄存器。
- 发送并接收一个字节。
设备利用率和性能(提问)
下表列出了 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 |
| IGLOO® 2 | M2GL050TFB GA896STD | 754 | 271 | 1021 | 2 |
| 智能融合®2 | M2S050TFBG A896STD | 754 | 271 | 1021 | 2 |
| SmartFusion® | A2F500M3G- 标准 | 1163 | 243 | 1406 | 2 |
| IGLOO®/IGLOOE | AGL600- STD/AGLE600 V2 | 1010 | 237 | 1247 | 2 |
| 融合 | AFS600-STD | 1010 | 237 | 1247 | 2 |
| ProASIC® 3/E | A3P600-STD | 1010 | 237 | 1247 | 2 |
| ProASIC Plus® | APA075-STD | 1209 | 233 | 1442 | 2 |
| RTAX-S | RTAX250S- 标准型 | 608 | 229 | 837 | 2 |
| Axcelerator® | AX125-STD | 608 | 229 | 837 | 2 |
已解决的问题(提问)
下表列出了各个 Core16550 版本的所有已解决的问题。
表 8-1。已解决的问题
| 版本 | 更改 |
| v3.4 | Core16550 使用 System 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
国际标准书号:
法律声明
- 本出版物及其所含信息仅可用于 Microchip 产品,包括设计、测试 Microchip 产品并将其与您的应用集成。本信息的使用
以任何其他方式违反这些条款。有关设备应用程序的信息仅供您参考,可能会被更新所取代。您有责任确保您的应用程序符合您的规范。请联系您当地的 Microchip 销售办事处获取更多支持,或通过以下方式获取更多支持: www.microchip.com/en-us/support/design-help/client-support-services - 本信息由 MICROCHIP “按原样”提供。MICROCHIP 不作任何明示或暗示、书面或口头、法定或其他形式的陈述或保证,包括但不限于任何不侵权、适销性和适用于特定用途的默示保证,或与其状况、质量或性能相关的保证。
- 在任何情况下,MICROCHIP 均不对与该信息或其使用有关的任何间接、特殊、惩罚性、偶然或后果性损失、损害、成本或费用承担任何责任,无论该等损失、损害、成本或费用如何造成,即使 MICROCHIP 已被告知发生该等损失的可能性或该等损害是可预见的。在法律允许的最大范围内,MICROCHIP 对以任何方式与该信息或其使用有关的所有索赔承担的全部责任不超过您为该信息直接支付给 MICROCHIP 的费用金额(如有)。
- 在生命支持和/或安全应用中使用 Microchip 设备的风险完全由买方承担,买方同意为 Microchip 辩护、赔偿并免除其因此类使用而导致的任何和所有损害、索赔、诉讼或费用。除非另有说明,否则不会以任何方式(隐含或以其他方式)转让任何 Microchip 知识产权许可。
Microchip 设备代码保护功能
请注意 Microchip 产品的代码保护功能的以下详细信息:
- Microchip 产品符合其特定 Microchip 数据手册中所包含的规格。
- Microchip 相信,其产品系列在按照预期方式、符合操作规范和在正常条件下使用时是安全的。
- Microchip 重视并积极保护其知识产权。严格禁止尝试破坏 Microchip 产品的代码保护功能,否则可能违反《数字千年版权法》。
- Microchip 或任何其他半导体制造商都无法保证其代码的安全性。代码保护并不意味着我们保证产品“牢不可破”。代码保护在不断发展。Microchip 致力于不断改进我们产品的代码保护功能。
用户指南
© 2025 Microchip Technology Inc. 及其子公司
文件/资源
![]() |
MICROCHIP Core16550 通用异步接收发送器 [pdf] 用户指南 v3.4、v3.3、Core16550 通用异步接收器发送器、Core16550、通用异步接收器发送器、异步接收器发送器、接收器发送器、发送器 |
