赞
踩
读取模块spec,理解DUT;
制定验证策略方法;
黑盒验证—>灰盒验证—>白盒验证
对大部分的输入接口采用随机测试,特定的接口采用定向测试
一种通用串行数据总线,实现全双工传输和接收。将数据的二进制位一位意味进行传输
URAT传输格式:起始位+数据位+校验位+停止位
波特率:单位时间内传输的二进制位数(bps)
起始位:开始发起传输的标志,进行数据传输时发送方要先发出一个低电平0来表示传输字符的开始
停止位:结束传输的标准:1位、1.5位、2位的高电平
校验位:奇校验和偶校验
UART是一种先进的单控制器总线架构(AMBA)兼容的芯片系统(SoC)外围设备,由ARM开发、测试和许可。
UART特征:
全可编程的串行接口特性:数据可以是5、6、7或8bit,偶数、奇数、棒数或无奇偶校验位的生成和检测,1或2bit的停止位生成,波特率产生,直流率高达UARTCLK_max_freq/16
可编程部分:通信波特率、整数和小数部分,数据位,停止位,奇偶校验模型,16深度的FIFO和1深度的禁用FIFO,FIFO触发器级别可在1/8、1/4、1/2、3/4和7/8之间进行选择,内部标定1.8432MHz时钟频率(1.42–2.12MHz),以产生低功率模式,产生更短的位持续时间,硬件流量控制。
UART对从外围设备接收到的数据进行串行到并行转换,对传输到外围设备的数据进行并行到串行转换。CPU通过APB接口读写数据和控制/状态信息。传输和接收路径被内部的FIFO存储器缓冲,使最多16个字节可以独立地存储在传输和接收模式中。
包括一个可编程的波特率发生器,产生一个公共传输和接收内部时钟从UART内部参考时钟输入(UARTCLK),
支持高达460.8Kbits/s的波特率,
UART操作和波特率值由线控制寄存器(UARTLCR_H)和波特率除数寄存器(UARTIBRD和UARTFBRD)控制。
**APB接口:**APB接口生成用于访问状态/控制寄存器和传输/接收FIFO存储器的读取和写解码。
**寄存器块:**寄存器模块存储已写入的数据,或要通过APB接口读取的数据。
**波特率发生器:**波特率发生器包含自由运行的计数器,生成x16时钟内部计数器,Band16.Band16为UART发射和接收控制提供定时信息。Band16是一种脉冲流,其宽度为一个钟时钟周期,频率为波特率的16倍。
**传输FIFO:**传输FIFO是一个8位宽,16深度的FIFO存储缓冲器。通过APB接口写入的CPU数据将存储在FIFO中,直到被传输逻辑读出为止。可以使传输FIFO成为一个单字节保持寄存器。
**接收FIFO:**接收FIFO是一个12位宽,16深度的FIFO内存缓冲区。接收到的数据和相应的校验位,通过接收逻辑存储在接收FIFO中,直到由CPU通过APB接口读出为止。接收FIFO可以被禁用为像一个字节保持寄存器。
传输逻辑:传输逻辑对从传输FIFO读取的数据执行并行到串行转换。控制逻辑输出从开始位开始的串行位流,首先输出的数据位,然后是奇偶校验位,最后根据控制寄存器中的编程配置输出停止位。
接收逻辑:在检测到有效的启动脉冲之后,接收逻辑对接收的比特流执行串行到并行的转换。还执行溢出、奇偶校验、帧错误检查和断线检测,它们的状态伴随着写入接收FIFO的数据。
**同步寄存器和逻辑:**UART支持时钟、PCLK和自动时钟的异步和同步操作。同步寄存器和握手逻辑已经实现,并且一直处于活动状态。这对性能或区域的影响很小。控制信号的同步将在数据流的两个方向上执行,即从PCLK到PCLK域,以及从PCLK域到PCLK域。
UART通过全局复位信号PRESETn和块特定复位信号nUARTRST重置,外部复位控制器必须使用PRESETn异步断言nUARTRST,并将其同步否定为UARTCLK.
为UARTCLK选择的频率必须适应期望的波特率范围:
F
U
A
R
T
C
L
K
(
m
i
n
)
>
=
16
∗
b
a
u
d
_
r
a
t
e
(
m
a
x
)
F_{UARTCLK}(min)>=16 * baud\_rate(max)
FUARTCLK(min)>=16∗baud_rate(max)
F U A R T C L K ( m a x ) < = 16 ∗ 65535 ∗ b a u d _ r a t e ( m i n ) F_{UARTCLK}(max)<=16 * 65535 * baud\_rate(min) FUARTCLK(max)<=16∗65535∗baud_rate(min)
例如,对于从110波特到460800波特的波特率范围,UARTCLK频率必须在7.3728MHz(16*460800*10^-6)到115MHz范围内。UARTCLK频率也必须在所有波特率所需的误差范围内。PCLK的时钟频率比率也有一个限制。UARTCLK频率不超过PCLK频率的5/3倍:
F
U
A
R
T
C
L
K
<
=
5
/
3
∗
F
P
C
L
K
F_{UARTCLK} <= 5/3 * F_{PCLK}
FUARTCLK<=5/3∗FPCLK
这允许有足够的时间将接收到的数据写入接收到的FIFO。
UART操作:控制数据被写入UART线路控制寄存器(UARTLCR_H)。这个寄存器内部有29位宽,但是通过APB总线从外部访问,以三次写入注册位置。UARTLCR_H,UARTIBRD 和 UARTFBRD。UARTLCR_H的定义为:传输参数,字长,缓冲模式,传输停止位数,奇偶校验模式,中断产生。UARTIBRD 和 UARTFBRD 一起定义波特率除数。
波特率除数是一个由一个16bit整数和6bit小数组成的22bit数。波特率发生器使用它来确定比特周期。小数波特率分频器允许使用任何频率为3.6864MHz的时钟作为UARTCLK,同时仍然可以产生所有标准波特率。
16位整数通过UARTIBRD寄存器加载。6位小数部分被加载到UARTFBRD寄存器中。波特率分配器与单位有以下关系:
B
a
u
d
R
a
t
e
D
i
v
i
s
o
r
=
U
A
R
T
C
L
K
/
(
16
∗
B
a
u
d
R
a
t
e
)
=
B
R
D
I
+
B
R
D
F
Baud Rate Divisor = UARTCLK/(16*Baud Rate) = BRD_I + BRD_F
BaudRateDivisor=UARTCLK/(16∗BaudRate)=BRDI+BRDF
其中,BRDI是整数部分,BRDF是用小数点分隔的分数部分,
通过将所需的波特率除数的分数部分乘以64(即2^n,其中n是UARTFBRD寄存器的宽度)计算6位小数(m),并添加0.5来考虑误差:
m
=
i
n
t
e
g
e
r
(
B
R
D
F
∗
2
n
+
0.5
)
m = integer(BRDF * 2^n + 0.5)
m=integer(BRDF∗2n+0.5)
接收或传输的数据存储在两个16字节的FIFO中,尽管接收FIFO每个字符有额外的4位用于状态信息。
对于传输,数据被写入到传输的FIFO中。如果启用了UART,它将导致数据帧开始使用UARTLCR_H中指示的参数进行传输。数据继续被传输,直到在传输的FIFO中没有数据留下为止。一旦数据写入传输FIFO(即FIFO非空),BUSY信号就会变高,并且在数据传输时保持保持高。只有当传输的FIFO为空,并且最后一个字符已经从移位寄存器传输,包括停止位时,BUSY才会被否定。即使UART可能不再被启用,也可以断言BUSY很高。
溢出位与接收FIFO中的字符没有关联。当FIFO满时,移位寄存器中完全接收。移位寄存器中的数据被覆盖,但它没有被写入到FIFO中。当接收FIFO中的空位置可用,并且接收到另一个字符时,溢出位的状态与接收到的字符一起复制到接收FIFO中。然后将清除溢出状态。
在这种情况下,UART的发射侧和接收侧具有1字节的保持寄存器(FIFOs的底部条目)。当接收到一个字,而前一个字尚未读取时,将设置溢出位。在这个实现中,fifo没有被物理上禁用,而是这些标志被操纵,给人一种1字节寄存器的错觉。当FIFOs被禁用时,对数据寄存器的写入将绕过保持寄存器,除非传输移位寄存器已经在使用中。
对于发送的数据
如果启用了FIFO,则写入此位置的数据将被推送到传输FIFO上
如果FIFO没有启用FIFO,数据存储在传输保持寄存器(传输FIFO的底部)。
写操作从UART启动传输。数据的前缀有一个起始位,附加有适当的奇偶校验位(如果启用奇偶校验)和一个停止位。结果然后被传递出来。
对于收到的数据
如果启用了FIFO,则数据字节和4位状态(中断、帧、奇偶校验和溢出)将被推到12位宽接收FIFO上
如果未启用FIFO,则数据字节和状态将存储在接收保持寄存器(接收FIFO的底部字)中。
通过从UARTDR寄存器进行相应的读取来读取接收到的数据字节。状态信息也可以通过读取UARTRSR/UARTECR寄存器来读取
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。