概述
通过串口调试助手PC发送16bit给FPGA,FPGA接收后返还给PC。
串口通信其实没我们想象中的那么难,只要花点时间去理解,很快就会上手,在直入正题前,先来一点基础知识。
串口是指发送和接收数据的串行口,就是我们打开电脑设备管理器后看到的COM口。FPGA或单片机的板子中很多都用到的是UART(通用异步收发传输器)和RS232。
UART:计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。它是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
RS232:个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口,通常为9个引脚,但在我们的应用中RS-232口一般只使用RXD、TXD、GND三条线。
现在很少能看到这种口了,基本上都用的是USB,所以在下面我们FPGA的实际例子中,大家只要认准RXD、TXD两个引脚就好。
在进入实际工程中前我们要明白什么叫波特率:波特率指1s内所要发送的数据,在我们的串口设置中有很多种波特率,比如4800、9600和19200等,根据你的实际需要选择不同的波特率。波特率应提前被协议双方确定,在我们的实验中,我们是通过PC向FPGA发送一个16bit的数据,FPGA接收后再返还给PC。那么在这个过程中,PC发了16位的数据,FPGA要知道每一位发送的时间有多长,FPGA才能在数据送过来时,去取样,将数据提取出来。比如我们给定的波特率是9600,那么发送一位的时间为1/9600=0.000104166667s约等于104ns,那么我们就可以让FPGA每隔52ns的中间点去采一次样,存下现在这一位数据是多少,16位数据,经过1664ns采集完。1664ns是一个时间段,它可以明确我们采集的是16bit的数据,当然现在这样说还不太准确,因为我们在串口通信时还存在奇偶校验位和停止位,这两个位的概念我们下面会讲到
以上为我们正式进入实际工程前的一些基础知识,下一篇博客中我会贴出实际的工程代码,为大家讲解。
最后
以上就是顺心小甜瓜为你收集整理的基于FPGA的UART串口通信的全部内容,希望文章能够帮你解决基于FPGA的UART串口通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复