用途:允许与调制解调器或其他外部设备进行通信,例如使用串行电缆和RS232协议的另一台计算机。
核心特性:
WISHBONE接口:支持32位或8位数据总线模式(可选)。
FIFO操作:仅支持FIFO(先进先出)操作模式。
调试接口:在32位数据总线模式下提供调试接口。
Wishbone接口信号:
其他内部信号:
外部连接信号:
时钟信号:
源自wishbone总线,最大频率为125M,最小频率为3.6864M
寄存器描述:
额外的寄存器:
还有两个时钟分频寄存器,它们共同构成一个16位的寄存器。当线路控制寄存器的第7位(DLAB)设置为‘1’时,可以访问这些寄存器。此时,地址0-1的上述寄存器无法访问。
当使用32位数据总线接口时,可以为调试目的提供额外的只读寄存器:
中断使能寄存器(IER)(RW)
此寄存器允许通过UART启用和禁用中断生成。
接受行状态中断:当接受的数据有错误,如奇偶校验错误,帧错误,或数据溢出时,将触发中断;
调制解调器状态中断:当MSR中任何一位发生变化,并且这个变量是需要通知给cpu的,触发中断;
Reset Value: 00h
中断识别寄存器(IIR)(R)
IIR 使程序员能够检索当前最高优先级的待处理中断。
bit0:表示当逻辑为‘0’时有中断待处理。当为‘1’时,没有中断待处理。
下表显示了可能中断的列表,以及它们启用的位、优先级、来源和复位控制。
| 位[3:1] | 优先级 | 中断类型 | 中断源 | 中断复位控制
| 3'b111 | 1st | 接收行状态 | 行状态错误,例如奇偶校验、溢出或帧错误,或中断请求 | 读取行状态寄存器
| 3'b110 | 2nd | 接收数据可用 | 接收FIFO达到触发水平 | 接收FIFO降至触发水平以下
| 3'b101 | 2nd | 超时指示 | FIFO中有至少1个字符,但在过去4个字符时间内没有新字符输入或读取 | 从接受FIFO读取 |
| 3'b011 | 3rd | 发送保持寄存器空 | 发送保持寄存器为空 | 写入发送保持寄存器或读取IIR |
| 3'b000 | 4th | 调制解调器状态 | 调制解调器状态变化,如CTS, DSR, RI或DCD信号变化 | 读取调制解调器状态寄存器 |
bit[4:5]:逻辑‘0’。
bit[6:7]:逻辑‘1’,
复位值:C1h
FIFO 控制寄存器(FCR)(W)
FCR 允许选择 FIFO 触发级别(FIFO 中需要使接收数据可用中断生效的字节数)。此外,可以使用此寄存器清除 FIFO。
| 位# | 访问 | 描述 |
| bit0 | W | 保留位|
| 1 | W | 向位 1 写入‘1’可清除接收 FIFO 并重置其逻辑。但不会清除移位寄存器,即当前字符的接收继续。 |
| 2 | W | 向位 2 写入‘1’可清除发送 FIFO 并重置其逻辑。移位寄存器不会被清除,即当前字符的发送继续。 |
| 5-3 | W | 保留位 |
| 7-6 | W | 定义接收 FIFO 中断触发级别:‘00’-1 字节 ‘01’-4 字节 ‘10’-8 字节 ‘11’-14 字节 |
复位值:11000000b
行控制寄存器(LCR) (RW)
行控制寄存器允许指定使用的异步数据通信格式。寄存器中的一位还允许访问分频锁存器,锁存器定义了波特率。允许寄存器读取以检查通信的当前设置。
| 位# | 访问 | 描述 |
| 1-0 | 读写 | 选择每个字符的位数 ‘00’-5位 ‘01’-6位 ‘10’-7位 ‘11’-8位 |
| 2 | 读写 | 指定生成的停止位数量 ‘0’-1个停止位 ‘1’-当选择5位字符长度时为1.5个停止位,否则为2位。注意,接收器仅检查第一个停止位。 |
| 3 | 读写 | 奇偶校验使能 ‘0’-无校验 ‘1’-每个发出的字符生成并检查奇偶校验位。 |
| 4 | 读写 | 偶校验选择 ‘0’-奇校验选择‘1‘
偶校验:如果数据位有偶数位1,则校验位为1;
| 5 | 读写 | 粘性校验位 ‘0’-粘性校验禁用 ‘1’-如果位3和位4为逻辑‘1’,则校验位强制为逻辑‘0’。如果位3为‘1’而位4为‘0’,则校验位强制为‘1’。
| 6 | 读写 | 断开控制位 ‘1’-串行输出强制为逻辑‘0’(断开状态)。 ‘0’-断开禁用 |
| 7 | 读写 | 分频锁存器访问位 ‘1’-可以访问分频锁存器 ‘0’-访问普通寄存器 |
Reset Value: 00000011b |
调制解调器控制寄存器(MCR)(W)
功能:调制解调器控制寄存器用于向连接到 UART 的调制解调器传输控制信号。
位 0:数据终端就绪(DTR)信号控制;‘0 - DTR 信号置为高电平
‘1’ - DTR 信号置为低电平
位 1:请求发送(RTS)信号控制;0’ - RTS 信号置为高电平
‘1’ - RTS 信号置为低电平
位 2:Out1. 在回环模式下,连接振铃指示(RI)信号输入
位 3:Out2. 在回环模式下,连接数据载波检测(DCD)信号输入
位 4:回环模式
‘0’ - 正常操作
‘1’ - 回环模式。在回环模式下,串行输出信号(STX_PAD_O)被设置为逻辑高电平。发射器移位寄存器的信号在内部连接到接收器移位寄存器的输入。实现以下连接:DTR→DSR, RTS→CTS, Out1→RI, Out2→DCD
位 7 至 5:保留位
复位值:0
行状态寄存器(LSR)(R)
位描述:
位 0:数据就绪(Data Ready, DR)指示
‘1’ 至少有一个字符已接收并位于FIFO中
‘0’ - FIFO中没有字符
位 1:溢出错误(Overrun Error, OE)指示
‘1’ - 接收移位寄存器中已接收到字符,但FIFO已满,新字符将覆盖移位寄存器中的数据;FIFO保持不变
‘0’ - 没有溢出状态
位 2:奇偶校验错误(Parity Error, PE)指示
‘1’ - 当前位于FIFO顶部的字符接收时出现奇偶校验错误
‘0’ - 当前字符没有奇偶校验错误
位 3:帧错误(Framing Error, FE)指示
‘1’ - 当前位于FIFO顶部的接收字符没有有效的停止位,可能所有后续数据都已损坏
‘0’ - 当前字符没有帧错误
位 4:中断中断(Break Interrupt, BI)指示
‘1’ - 当前字符检测到中断条件,即线路保持逻辑0一段时间(开始位+数据+奇偶校验+停止位)
‘0’ - 当前字符没有中断条件
位 5:发送FIFO为空
‘1’ - 发送FIFO为空,写数据到发送FIFO时清除
‘0’ - 发送FIFO不为空
位 6:发送器空闲指示
‘1’ - 发送器FIFO和发送器移位寄存器都为空
‘0’ - 发送器FIFO或发送器移位寄存器不为空
位 7:至少接收到一个奇偶校验错误、帧错误或中断中断,并且错误位于FIFO中
‘1’ - FIFO中有至少一个上述错误
只读寄存器没有复位值
调制解调器状态寄存器(MSR)(R))
功能:该寄存器显示调制解调器控制线当前的状态。此外,四位提供调制解调器状态线状态变化的指示。当检测到对应线的状态变化时,这些位被设置为‘1’,并且在读取寄存器时它们被复位。
寄存器位描述:
位 0:Delta Clear To Send (DCTS) 指示
‘1’ - CTS 线路状态已改变
位 1:Delta Data Set Ready (DDSR) 指示
‘1’ - DSR 线路状态已改变
位 2:Trailing Edge of Ring Indicator (TERI) 检测器
‘1’ - RI 线路状态从低变高
位 3:Delta Data Carrier Detect (DDCD) 指示
‘1’ - DCD 线路状态已改变
位 4:CTS 输入的补码或回环模式下等于 RTS
位 5:DSR 输入的补码或回环模式下等于 DTR
位 6:RI 输入的补码或回环模式下等于 Out1
位7:DCD 输入的补码或回环模式下等于 Out2
分频锁存器
通过将行控制寄存器(LCR)的第7位设置为‘1’,可以访问分频锁存器。在设置了分频锁存器之后,应该将此位恢复为‘0’,以便恢复对占用相同地址的其他寄存器的访问。
这2个字节组成一个16位寄存器,在内部被访问为一个单独的数字。
在复位时,寄存器被设置为默认值0;
置的值应该等于(系统时钟速度)/(16 × 期望的波特率)。
当写入分频锁存器的最低有效字节(LSB)时,内部计数器开始工作,因此,在设置分频器时,应该先写最高有效字节(MSB),然后再写最低有效字节(LSB)。
Debug 1
可用性:此寄存器仅在核心具有32位数据线和5位地址线时可用。它是只读的,并且仅用于芯片测试的调试目的,不属于原始UART16550设备规范的一部分。从该寄存器读取不会影响核心的行为。
寄存器位描述:
位 7-0:行状态寄存器(Line Status Register, LSR)的值。
位 11-8:中断使能寄存器(Interrupt Enable Register, IER)的值(位3-0)。
位 15-12:中断识别寄存器(Interrupt Identifier Register, IIR)的值(位3-0)。
位 23-16:行控制寄存器(Line Control Register, LCR)的值。
位 31-24:调制解调器状态寄存器(Modem Status Register, MSR)的值。
Debug 2
位 2-0:发送器有限状态机(Transmitter FSM)状态
位 7-3:发送器FIFO中的字符数量(tf count)
位 11-8:接收器有限状态机(Receiver FSM)状态
位 16-12:接收器FIFO中的字符数量(rf count)
位 18-17:调制解调器控制寄存器(Modem Control Register, MCR)的值(位4-0)
位 23-19:FIFO控制寄存器(FIFO Control Register, FCR)的值(位7-6)
位 31-24:保留位