FPGA视角–低速串口(UART)
这是个啥?
UART,只有一根数据通信线,没有伴随时钟线,属于异步通信。这类接口的衍生诸如:RS232、RS422、RS485、SPI等。数据交互时,一般做一收一发,通过固定频率的高低电平的变换,传递数据。这里只说明其逻辑特性,硬件特性不做说明。
波特率
用于描述UART的通信速率,单位bps,以最常见的9600bps来说,即每秒传输9600bit,也就是每1bit的时间就是1/9600秒=104.1667,约104us。通过计数器搭建时钟模型,输出周期为104us的时钟,在该时钟内传输的一个时钟周期的电平数据,0或者1,其波特率即为9600bps。
UART基本结构
下图中间部分为UART数据线为其基本结构,上方的时钟线用于理解数据线中传输的数据于Bit之间的关系。每个时钟周期产生一个传输的bit位,且该时钟为当前波特率下产生的逻辑内部的时钟。
起始位
数据传输起始的标志,一般由一个bit位构成。UART的数据线空闲时,保持高电平,当数据线由高到底变化,即1→0,代表数据传输开始。
数据部分
在起始位结束后执行传输动作,一般由8个bit构成,即字节传输,用户可根据实际需求修改传输长度。
奇偶校验位
校验位在数据位之后,其存在依据于用户需求。
奇校验:如果以二进制数据中1的个数是奇数为依据,则是奇校验;
如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数保持奇数不变。
偶校验:如果以二进制数据中1的个数是偶数为依据,则是偶校验;
如果给定一组数据位中 1 的个数是奇数,那么偶校验位就置为 1,使得总的 1 的个数保持偶数不变。
数据(1的个数) | 奇校验(奇校验结果) |
---|---|
0000 0111(3) | 0000 0111 0 |
1110 0010 (4) | 1110 0010 1 |
停止位
数据传输结束的标志,一般由一个bit位构成,依据用户需求,可选配为1、1.5、2bit。数据传输结束时,该bit位置为高电平。