XILINX学习笔记之三---RS232串口通讯设计

串口设备广泛应用于计算机数据传输中,所以研究其原理是非常有必要的一件事情。下面是我从XILINX官方设计出发,并作了一些修改之后实现了PC和FPGA的通讯,现在把整个过程总结下,以便后面使用,同时加深理解。

结果展示:

P4EIfJ.png

上图是从FPGA发送数据给PC机,PC机接收到的数据。

串口通讯由两个模块组成,一个是数据接收模块;另一个是数据发送模块。那么到底它们是如何工作的呢?

总的来说,它们是首先约定好数据传输的格式,然后,接收模块按照约定的数据格式取有效数据,发送模块按照约定的格式发送数据。

先从发送模块出发,首先,检测rxd位是否为’0’,若为’1’,则保持在空闲状态,否则,进入等待8个周期阶段,若等待期间,rxd变为’1’,则回到空闲状态,否则进入数据接收模块,每隔16个周期采样一次数据,并作移位处理,移位的次数取决于约定发送数据的宽度、是否有校验位、停止位的宽度,最后是停止状态,然后回到空闲状态。发送模块比较麻烦,首先是数据拼接,将需要发送的数据拼接为约定的数据格式,然后是数据发送,先检测发送总线是否空闲,然后进入发送数据阶段,移位,完成后进入空闲状态。

源码和相关附件在此链接下,可自由下载。不过若使用请注明出处!

源码+附件

邮件地址是`jef199006@gmail.com`