您的位置 首页 元件

UART主动验证渠道

通用异步收发器(UART)是将数据从一个系统发送到另一个系统的最简单方法。UART通常集成在微控制器中,而且很多现代的IC都包含一个也可以同步通信的UART,称为通用同步/异步收发器(USART)。U

通用异步收发器(UART)是将数据从一个体系发送到另一个体系的最简略办法。UART一般集成在微操控器中,并且许多现代的IC都包括一个也能够同步通讯的UART,称为通用同步/异步收发器(USART)。

UART除了在体系中被广泛运用以外,它仍是测验接口是否契合相关规范的必要东西。下面的测验内容一般在待测器材(DUT)的UART 硬件/IP上履行,并且选用不同的波特率、数据、奇偶校验和中止位宽度。

1. 根本回环测验

2. 规范UART发送与接纳测验

3. 奇偶校验和成帧差错条件

4. 具有LSB/MSB首选项的UART发送与接纳

5. 时序容差测验

除根本回环测验外,其它几种状况都需求专门的验证渠道来查看DUT是否兼容于规范的UART接口。并没有现成可用的这种渠道。公司在测验UART规划时一般制造定制的验证套件,进行手动测验,或许运用市场上的规范接口IC或USB-UART桥接器。可是,这些办法的测验规模很有限。

本文介绍一种通用的UART主动验证渠道,可用于主动测验UART接口的一切方面。

一、规范的UART帧

图1给出一个规范的UART帧,并解说了其间的一切字段。该帧的界说是在考虑了市场上不同的UART规范后而拟定的。因而能够肯定地说,以下结构掩盖了一切或许的UART数据帧组合。

图1:通用UART帧

从图1中能够看到,开端位(低位,1位长度)不会因UART版别的不同而改动。帧的其它字段长度可依据详细运用而改动。器材可支撑每数据包的数据位宽度最低为4位,最高是9位。在特定状况下,当规划需求时数据宽度可选用恣意值,以坚持其它参数的兼容性,但不用定兼容于规范的UART接口。当需求过错校验时应参加奇偶校验位,而其它状况下可在数据包中省去该字段。因为这是单个位奇偶校验,因而在接纳器处最多辨认单个位过错。中止位(高位,直到下个数据包开端)会有不同,取决于接纳器接纳下个数据包的速度有多快,最快的接纳器最低是1位,而最慢的接纳器最低是4位。

本文下一页:UART验证渠道

二、渠道

稳健的UART验证渠道有必要测验通讯接口的一切特性。为此,渠道需求能够主动处理一切或许的UART参数组合。现在UART验证测验选用手动测验,需求在整个测验进程中运用专用资源,并且因为是手动测验,会耗费许多时刻。这时可选用能够处理重复测验的UART主动验证渠道完结流程的主动化,以削减测验作业。

咱们能够看到规范的现成东西无法支撑其间的多种特性,例如4位和9位数据宽度,或2.5位至4.0位中止宽度。因而,需求一种可支撑悉数乃至更多特性的全新验证渠道。另一个要求则是完结测验的主动化,这能够削减对DUT履行测验时的手动作业。

本文描绘的UART主动验证渠道可支撑如下装备:

1. 波特率(bps):50、110、300、600、1200、2400、4800、9600、19200、28800、38400、57600、115200、230400、460800、921600

2. 数据宽度(位):1、2、3、4、5、6、7、8、9、10

3. 奇偶校验位:无、奇数、偶数

4. 中止位宽度:1.0、1.5、2.0、2.5、3.0、3.5、4.0

5. TX缓冲器:16帧

6. RX缓冲器:16帧

图2:UART主动验证渠道

图2 给出了包括UART主动验证渠道一切首要模块的高档体系视图:

1. 测验操控器:验证渠道的中心。这是一个用来搜集、处理数据,并在体系中其它模块之间转发数据的MCU。它应该具有一个USB接口,然后与主核算机进行通讯。

2. 发送与接纳FIFO:需求发送的数据帧存储在发送FIFO中,从DUT接纳到的数据帧则存储在接纳FIFO中。MCU从主机搜集发送数据包,将其转化为数据帧,并载入到发送FIFO中。接纳FIFO担任转发从DUT搜集的帧,将其转到测验操控器进行数据包转化,并转发至主机。数据包缓存是进步体系速度的有用计划。

FIFO一般在MCU的SRAM中完结。这种完结计划仅支撑16帧的发送或接纳会话。可依据特定要求进步这一数字,但要受限于所用的SRAM。

3. 移位寄存器(并行到串行和串行到并行转化器):UART可选用移位寄存器来完结。在发送比特位时,它可作为并行到串行转化器,在接纳时另一个移位寄存器变成串行到并行转化器。两个寄存器都以双倍或多倍波特率频率计时。

待发送的数据包已被转化为帧比特并送入FIFO。帧数据被加载到发送移位寄存器中,并以正确的波特率发送到DUT。选用相似的计划从DUT接纳数据包。对接纳到的帧以双倍波特率(或更多)进行采样,一旦整个数据包进入接纳移位寄存器中,帧比特位就会被转移到接纳FIFO中。

4. PLL和波特率生成器:PLL模块运用外部11.0592MHz晶体振荡器生成供一切其它模块运用的时钟频率。PLL使输入模块乘以系数5,以生成55.296MHz的主时钟频率。因为一切模块都选用相同的时钟源作业,因而不用运用额定的逻辑来同步模块。

挑选外部振荡器生成通用UART运用所需的准确波特率。可对11.0592MHz时钟源进行分频,然后为移位寄存器供给规范的波特率时钟。波特率生成器效果就在于此。这儿选用数字PWM时钟生成波特率时钟。经过改动PWM的周期和比较参数可生成占空比为50%的波特时钟。占空比可变是运用PWM模块的另一个优势,相比之下时钟分频器只能生成固定占空比的时钟输出。可变的占空比可用来验证UART接口的时钟容差和输出保真度。

5. 操控寄存器:一切参数和设置都保存在8位寄存器中。测验操控器的SRAM可用来完结该意图。主核算机经过用来拜访FIFO的相同接口读取和写入寄存器。为该渠道供给如下寄存器

a.操控:运用该寄存器传送即时指令。寄存器的MSB可用来告诉测验操控器有新的指令进入寄存器。指令履行后该位被清空。所支撑的指令及相应的值如下所示。

b.状况:测验操控器运用该寄存器发布当时测验的成果,包括传输时的过错条件。

c.波特率:该寄存器操控下次数据传输运用的波特率。所支撑的波特率及其数值显现如下。

d.数据宽度:该寄存器操控下次数据传输运用的数据宽度。所支撑的数值为0x01至0x0A(10个值)。

e.校验位:运用该寄存器设置校验位。能够是无校验,奇数校验或偶数校验,如下所示。

f.中止宽度:该寄存器规则每个帧运用的中止宽度。所支撑的中止宽度如下所示。

g.过采样率:发送和接纳帧所需的过采样数量运用该寄存器进行设定。逻辑杂乱程度随所需的过采样率添加而添加。最小值是2。

h.TX巨细:该寄存器保存FIFO中发送帧的数量。此值既可在发送FIFO加载数据后手动设置,也可在FIFO加载后主动加载。最大值是16,最小值是1。

i.RX巨细:该寄存器保存FIFO中接纳帧的数量。当接纳到一个数据帧时,寄存器中的这个值添加1,当主机从FIFO中读取一个帧时,该值减去1。最大值是16,最小值是1。

6. DUT操控与状况信号:需求将以上参数送到DUT。这个模块从操控寄存器获取参数,并推送到DUT。运用并行接口向DUT陈述当时设置。此外,渠道具有一个操控信号“START”,用于断语该信号可初始化DUT。若DUT运用了渠道的设置,并做好测验的准备作业,就会将另一个信号断语为“READY”。

7. 主核算机:主核算机履行测验用的Perl脚本,经过USB端口与渠道进行通讯。一切测验事例都完结为Perl脚本,其可生成掩盖验证进程的测验序列。此外,主核算机还搜集用来查看测验是否经过的相关数据。该信息连同测验事例都被写入文件,以便记载。

8. 待测器材(DUT):测验带UART接口的方针器材。

从方框图及其描绘中能够看到,渠道运用移位寄存器来完结UART接口。这种计划的优势在于可经过添加移位寄存器的巨细来完结扩展性。

三、帧验证模块

运用移位寄存器和FIFO完结UART接口其实并不简略,除非有一个用来辨认有用帧的逻辑,用于解码接纳到的数据。由下降沿检测器操控的简略计数器/定时器能完结此意图。

UART传输开端于下降沿,并在固定的时刻内坚持有用。假如咱们已知波特率和UART数据包设置,可运用设定到该时钟频率的定时器来核算数据包的有用时长。这样便可在有用期间内准确地发动移位寄存器以便计入接纳线路上看到的数据或许记出发送数据。

该逻辑的状况机完结计划如图3所示。有两个流程:一个流程操控移位寄存器使能输入,另一个用来坚持定时器。

图3:帧验证状况机

状况机可用图4中的模块表明。状况机作业所需的模块输入和输出也在下面予以解说。

图4:帧验证模块

a. CLK_IN(输入):此为主时钟。该时钟的频率远高于波特时钟。运用该时钟采样和检测START输入的下降沿。

b. BAUD_CLK(输入):波特时钟频率乘以过采样率。此时钟输入的最小值是波特频率的两倍。

c. START(输入):该输入的下降沿代表状况机的开端。

d. COUNT(输入):8位帧宽度,用于初始化倒计时定时器周期。

e. FRAME_VALID(输出):该输出信号在START输入的下降沿变高,当计数器完毕时变低。

f. IRQ(输出): 该输出的上升沿代表帧完毕。当计数器计数完毕时,该信号在一个主时钟周期内坚持高电平。当状况机回来闲暇状况时,值复位为 ‘0’。

四、UART验证模块

咱们现已有了用来检测帧的开端和长度的逻辑模块,现在能够开端规划UART验证模块。关于接纳帧验证模块,START输入便是RX线路自身。因为帧发送在咱们的操控之下,因而进入帧验证模块(FVB) 的START输入来自单位寄存器。图5给出了完好的UART验证模块。

图5:UART验证方框图

因为发送和接纳数据包的宽度相同,因而计数寄存器可由TX和RX帧验证模块同享。来自这两个模块的帧验证信号可作为各自部分移位寄存器的使能信号。前面现已介绍过,发送部分运用并行到串行转化器,而接纳部分运用串行到并行转化器。这两个转化器都能拜访存储单个帧的32位存储单元,并具有左移功用。两个寄存器在初始化进程中都被置为‘1’s。但只要位的“计数”数值有用。

UART验证模块随后连接到输入、输出和其它顶层模块,如图6所示。这是图2所示的体系级方框图的另一个视角。

图6:UART验证

UART验证模块的波特时钟选用PWM单元生成。它作为分频器运用,用来从固定的11.0592MHz输入时钟生成所需的时钟频率。PWM单元的输出频率由所需的波特率和验证模块的过采样率决议。经过改动PWM单元的周期和比较值来生成要求的时钟频率。该模块还可用来生成时钟颤动和可变的占空比时钟,用于验证DUT对波特率改动的容差。验证渠道的这个功用可模仿一切或许的实践情形。

验证模块的中止请求(IRQ)输出与两个软件中止服务程序(ISR)有关 – 一个用于发送,一个用于接纳。这两个ISR可用来处理发送和接纳FIFO。帧发送完毕时,调用发送ISR将下个帧从FIFO加载到发送移位寄存器。相似地,当接纳数据帧时,接纳IRQ从接纳移位寄存器获取内容并将数据推送到接纳FIFO中。

图7给出了接纳事情的典型时序图,图8给出了发送事情的时序图。两个阶段触及的一切信号也都包括在图中。这种状况都假定UART数据包包括8位数据,无校验位,有1.5位中止宽度。相同,为了简化,将过采样率设为2,即波特时钟是实践波特率频率的两倍。寄存器内容中的有用帧数据被标成黄色,原因在于为了填充32位移位寄存器,有些数据在初始化进程中被置为‘1’s。

图7:接纳数据包

图8:发送数据包

五、固件

运用固件在微操控器(MCU)中完结简略的存储、处理和转发架构。其它功用则在硬件中完结,并由MCU进行拜访操控。MCU从主机接纳需处理的指令和数据。它将待发送的帧和从DUT接纳的帧存储在SDRM中完结的FIFO内。用来处理发送和接纳数据包的中止服务程序(ISR)经过通用IRQ在MCU中完结。图9的流程图给出了根本流程。

图9:根本固件流程

六、软件

这部分渠道运转在Windows PC上,选用Perl脚本言语。渠道所需的USB接口库是针对Perl进行重用的规范USB库。在硬件驱动器层上编写一个UART验证库,以支撑与渠道之间的通讯。

UART验证库支撑如下API。

a. Platform_Start():有必要在履行任何操作前调用;发动接口。

b. Platform_Stop():有必要在退出主脚本之前调用;中止接口,并显现最终的通讯过错信息(假如有)。

c. Platform_GetSupportedBaud():回来支撑的波特率列表。

d. Platform_ReportError($_):设置过错值,用于确认最终的过错。

e. Platform_CheckPassFail($_):假如输入是1,经过;不然失利。

f. Platform_COMMAND($_):从支撑列表中向渠道发送一个指令。

g. Platform_WriteConfig():将整个数据包从脚本发送至MCU。发送装备之前应运用额定的API设置参数。

h. Platform_ReadConfig():显现来自MCU的当时装备。

i. Platform_CopyConfig():将MCU装备仿制到本地脚本缓冲器。并显现被仿制的值。

j. Platform_SetBaudRate($_):在本地缓冲器中设置波特率数值;直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

k. Platform_SetDataWidth($_):在本地缓冲器设置数据宽度值;直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

l. Platform_SetParityBit($_):在本地缓冲器中设置校验位值;直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

m. Platform_SetStopWidth($_):在本地缓冲器中设置中止宽度值;直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

n. Platform_SetOverSampleRate($_):在本地缓冲器中设置过采样值;直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

o. Platform_SetTXSize($_):设置一次会话中发送帧的数量;直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

p. Platform_GetRXSize($_):回来RX缓冲器中帧的数量。

q. Platform_SetRXSize($_):在本地缓冲器中设置从PSoC3 RX缓冲器中读取的值的数量;直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

r. Platform_SetTXDataArray(@_):设置一个会话中要发送的数据帧。这个API会掩盖运用Platform_SetTXSize($_) API设置的值(假如有);直到调用Platform_WriteConfig()时,才干将该值发送到MCU。

s. Platform_IsDUTReady():假如DUT闲暇,回来1;假如DUT被占用,回来0。

七、硬件完结

完结UART主动验证渠道所需的大部分逻辑都是经过各种类型的模块在硬件中完结。为完结该渠道的硬件部分,咱们需求如下组件:

1. 32位微操控器(MCU) – 1个

2. 用于倍增频率的PLL – 1个

3. 用于生成波特频率的PWM单元– 1个

4. 32位移位寄存器– 2个

5. 用于帧验证模块状况机的CPLD或FPGA – 1个,具有满足单元

即便咱们运用单个硬件单元完结一切模块,每个模块的通讯和同步仍需很许多作业。假如咱们能够将一切硬件在单个处理器上完结,该渠道就会简略得多,例如运用赛普拉斯半导体的可编程片上体系(PSoC),这是微操控器(MCU)、可编程模仿、可编程数字和可编程互联的完美组合。像PsoC这样的集成型处理器还包括许多常用的固定功用块,例如PWM、移位寄存器、Opamp、ADC和DAC。该处理器系列一般包括8位器材(例如PSoC 1和PSoC 3)以及32位处理器(例如PSoC 4、PSoC 5和PSoC 5LP),使开发人员能够依据运用挑选所需的处理才能。片上体系器材还支撑内部Flash、SRAM和EEPROM,以及杂乱的时钟树和可编程时钟生成器。别的,还供给多种通讯接口,例如USB 2.0、I2C、UART、SPI、I2S、LIN和CAN。

带可编程逻辑的SoC支撑UART主动验证渠道的更多内容能够在硬件(而非软件)中完结。例如,PsoC具有一个名为通用数字模块(UDB)的可编程逻辑阵列。PSoC 3/PSoC 5/PSoC 5LP共有24个UDB,每个包括8个宏单元、PLA(可履行16个乘积项)、1个数据途径单元、1个操控单元和1个状况单元。这意味着这个系列的PsoC能够比美中高端的Altera MAXV 系列CPLD和Xilinx Cool Runner系列。

PsoC器材的编程和调试可经过PSoC Creator 来履行,这是一种根据分层原理图的规划东西,能运用预制组件和原语函数的加载库来协助规划人员完结体系级规划计划。这给予了开发人员满足的灵活性,使其能够融入模仿和数字资料清单,一起经过简略的固件晋级完结最终一分钟的规划变更。具有多个通讯接口的引导加载器亦能完结简略直接的现场晋级。

完结计划选用PSoC 5LP,该器材具有32位ARM Cortex M3内核、USB 2.0接口、可编程时钟/PLL、硬件PWM、24单元UDB、32位移位寄存器以及高度可装备的通用IO。图10给出了PSoC 5LP的简化方框图。

图10:PSoC 5LP器材的简化方框图

组件的固件坐落PSoC 5LP中,包括两个部分:一个是针对数字/模仿模块的原理图输入,另一个是在ARM Cortex M3 MCU上运转的胶合逻辑。固件的原理图输入如图11所示,图中给出了波特率PWM、32位移位寄存器,以及发送和接纳部分的帧验证模块。

图11:PSoC 5LP固件的原理图输入

规划选用如下首要组件:

a. Baud_PWM:生成一个是所选波特率两倍的时钟。这样能保证数据的正确采样。

b. ShiftReg_TX:32位移位寄存器,用以将TX帧移出到DUT。

c. ShiftReg_RX:32位移位寄存器,用以从DUT移入RX帧。

d. UART_Counter_TX:递减计数器,为TX移位寄存器生成时钟输入,整个帧宽度内有用。

e. UART_Counter_RX:与UART_Counter_TX在规划上相同,为RX移位寄存器生成输入时钟。

f. Start_TX:操控寄存器,指示来自固件的TX帧的开端。

g. FrameWidth:计数器的输入,指示预期的帧宽度,考虑双倍采样率。

h. tx_irq:上升沿标志TX帧的移出已完结。

i. rx_irq:上升沿标志RX帧的移入已完结。

j. StartTest:用来标志在设置操控线之后,对DUT测验的开端。

k. Ready_IRQ:在来自DUT的上升沿进行触发,以指明测验状况安排妥当。

l. 其他IO组件:将操控信号发送到DUT,以便在测验开端前对其进行装备。

UART_Counter_TX和UART_Counter_RX是Verilog言语的定制组件,坐落PSoC 5LP的UDB中。它可用来完结之前介绍的帧验证状况机。

图12:针对PSoC 5LP用Verilog完结的帧验证组件

这样就可成功完结针对UART的主动验证渠道,用以测验不同参数间的接口,例如波特率(高达921600波特)、数据宽度(最大9位)、校验和中止宽度(最大4位)。该渠道有助于运用单芯片解决计划履行UART接口验证所需的一切测验,然后下降规划杂乱性以及呈现时序相关问题的几率。UART主动验证渠道能削减整个测验期间的手动作业量和对专用资源的要求。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/285652.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部