基于FPGA的UART异步串行通信发送模块设计与实现 |
您所在的位置:网站首页 › 异步通信技术 › 基于FPGA的UART异步串行通信发送模块设计与实现 |
欢迎关注微信公众号“FPGA科技室”,更多内容请关注 [基于FPGA的UART异步串行通信接收模块设计与实现] 本文发送模块: 在电子系统中,需要板内,板间或者下位机与上位机之间进行数据的发送和接受,这就需要双方共同遵循一定的通信协议来保证数据传输的正确性。大家学过单片机,应该知道串口通信的原理,例如,在stm32中,编写UART,可以在上位机PC端利用串口调试助手,通过下位机stm32给PC机发送字符消息,反正也可以,这就是最简单的通信实例。那么在FPGA领域,常见的通信协议有UART(通用异步收发传输器),IIC(集成电路总线),SPI(串行外围总线),USB2.0/3.0(通用串行总线)以及以太网。当然了,最为基础的就是UART,应用很广泛。 那么本文就讲述UART通信的基础原理和它的硬件电路的设计,使用FPGA来实现UART通信(本文只讲解发送部分设计,其他部分后续文章讲述),在quartus ii开发软件中的ISSP工具进行验证。 要实现的功能是:输入需要串口发送的数据,通过开发板上按键,来控制FPGA将要发送的数据发送给PC机,并在PC机上串口助手中查看数据。 异步串行通信原理及电路设计RS232通信接口标准: 通用异步收发传输器(uart),其在数据发送的过程中将并行的数据转换为串行数据流进行传输,在数据接受的时候将接受到串行数据流转换为并行的数据,可以实现全双工传输接收。 本文的RS232RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始编号全称是EIA-RS-232(简称232,RS232)。它被广泛用于计算机串行接口外设连接。连接电缆和机械、电气特性、信号功能及传送过程。其中的DB9接口定义如下: UART在使用之前,我们需要对其进行初始设置,譬如:设置数据位数,波特率大小,奇偶校验,停止位。 数据位:这个参数定义的是单个UART数据传输在开始到停止期间发送的数据位数。 波特率:这个参数指的是从一个设备发送到另一个设备的波特率(每秒可传输的数据比特个数),一般通信双方要拥有相同的比特率。 奇偶校验类型:用来验证数据的正确性,可以作为奇校验或偶校验,在偶校验里,所有传输的数位(含字符各位数和校验位)中的1为偶数个;在奇校验里,所有传输的数位(含字符各位数和校验位)中的1为奇数个。通过这个特性,可用来接收方检查传输是否出错(1的个数错了,则传输出错),若奇偶校验正确,要不就是没错误,要不就是发生了偶数个错误。 停止位:在每个字节数据位发送完成,就要发送停止位,这就标志着一次的数据传输成功了。 在RS232标准里,最普遍的配置就是8+1(八个数据位,无奇偶校验,一个停止位),一个完整字节包括一个起始位,8个数据为,一个停止位。 本文要实现的串口发送模块框图
这个模块为了适应不同的波特率,只要修改不同波特率时钟对应计数器的计数值,使用查找表。 数据输出模块: 通过对波特率时钟进行计数,确定数据发送状态 这个模块作用就是根据bps_cnt来确定数据传输的状态,也就是说前文讲述的,一个完整数据由10个位组成,这个模块控制每一位传输的状态。即不同波特率时钟计数值bps_cnt,有不同传输数据位与之对应。
[基于FPGA的UART异步串行通信接收模块设计与实现] 欢迎转发关注***! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |