前言:RS232眼图测试,信号完整性测试
RS232RS232是一种常见的串行通讯接口,一种常见的RS232通信接口是9针的接口(DB-9),如下图所示:在RS232的针脚上,一般使用-3V~-15V(有些文档说明中为-5V~-15V)之间的任意电平表示逻辑1,而使用+3V~+15V(有些文档说明中为5V~15V)之间的任意电平表示逻辑0。图中对管脚的标号做了标注,其中pin 2是RXD,pin 3是TxD,pin 5是GND。只需要这三个端口就能完整的实现RS232的数据传输功能。稍后我们将在Vivado环境进行一个简单实现。RS232的其余特性包括:允许采用双向全双工的通信方式(PC机可以在发射数据的同时通过该接口接收数据);可以以10KByte/s的速度进行数据通信。在开始之前,首先定义清楚RS232信号线上的时序。在RS232关键的三根信号线当中并没有时钟线,相邻两个字符(一个字,一般假定为1个byte,8bits)之间需要开始和终值位进行标定,所以相邻字符的间隔完全可以是任意的,因而也可以认为这是一种异步通信方式。一般认为单个字符在进行传输的时候首先传输低位,我们进行以下约定。发射模块idle状态的时候TXD ='1';发射模块发送开始位start bit的时候TXD = '0';发射模块发送终止位stop bit的时候TXD = '1';如果发送0x55的话发送数据线上的时序信号如下(注意发送'1'的时候信号线为低电平):我们实现的传送速度为115200bauds,bauds(波特率)本身表示传送符号的速率,但是这里是异步通信方式,我们认为1个bit就是一个符号,包含所有数据位和起始终止符号位。传输速率为115200bauds的情况下,每个bits的持续时间为(1/115200=)8.7us。1.波特率产生在数字系统当中,时钟与数据速率紧密相关,时钟驱动着时序电路的数据流动,数据传输的速度与数字电路的时钟是紧密相关。在不考虑数据有效位的情况下,时钟速率与数据传输速率(bit/s)应该是相等的。前文提到,RS232的9根线当中并没有定义时钟线,那么115200 bauds的数据应该如何驱动呢。事实上,驱动时钟在数据发送端和接收端。假设接口全速运行,数据传送都是连续的,那么需要的小时钟就是115.2kHz。如果有25MHz的启动时钟(clk_freqclk_freq)的话如何产生115.2kHz的驱动时钟(BaudTickBaudTick)呢。在200MHz的时钟驱动下每间隔217.014(25MHz/115.2kHz)个时钟周期就输出一个高电平(可以说是间隔217个数或218个数输出一个高电平,但是大多是间隔217个数),那么就能得到BaudTickBaudTick。如果采用计数规则的话,就必须用到取模运算。为了充分利用二进制运算本身的特性,企业新闻