基于Xilinx Artix7的FPGA高级应用(三) USB转串口通信

本项目采用CP2102-GMR USB转串口芯片

UART之间采用双全工通信方式,理想的UART只有三个引脚:

在这里插入图片描述
我们知道CPU中的数据是并行的,所以在发送数据时,CPU将数据写入UART,然后UART以一定的格式将数据从TXD口串行输出;在接受数据时,RXD口串行接受数据然后存放在缓冲区内以供CPU读取。GND作为地为数据提供参考电位。

UART采用标准TTL/CMOS标准,但是为了提高抗干扰能力以及数据的长度,我们通常把它转换到RS-232逻辑标准(3到12V表示0,-3到 -12V表示1)

数据线以bit为单位串行收发数据,而UART有它自己的数据帧标准,有开始位、数据位、校验位(非必需)、停止位。在开始传输之前我们还需要约定好数据传输速率(每位占用时间,其倒数叫做波特率)和数据格式。

数据传输流程如下:

(1)平时数据线处于空闲状态(1状态)

(2)当要发送数据时,UART改变TxD数据线的状态(变为0状态)并维持1位的时间,这样接收方检测到开始位后,在等待1.5位的时间就开始一位一位地检测数据线的状态得到所传输的数据。

(3)UART一帧中可以有5、6、7或8位的数据,发送方一位一位地改变数据线的状态将他们发送出去,首先发送最低位。

(4)如果使用校验功能,UART在发送完数据后,还要发送1位校验位。有两种校验方法:奇校验、偶校验——数据位连同校验位中,1的数据等于奇数或偶数。

(5)最后,发送停止位,数据线恢复到空闲状态(1状态)。停止位的长度有3种:1位、1.5位、2位。

接下来我们看代码:
先来看发送部分
在这里插入图片描述
模块输入时钟、数据、还要有一个使能信号,输出串行数据。
首先设置波特率,我们选择每秒9600bit这种常见的速度标准,经过计算可以算出波特率,然后我们设置中间采样点。
接下来设置标志位等必要的环节。然后我们设置待发送数据寄存器,这里我们选用1bit开始位+8bit数据位+1bit停止位,除此之外我们还得设置一个一位的数据寄存器,数据将会从这个寄存器一位一位地输出,正好对应了我们前面讲的,数据流程如下:

在这里插入图片描述
接下来看一下波特率时钟产生:
在这里插入图片描述
当数据发送标志位有效时我们让波特率时钟开始计数,这里我们令到达中点时产生采样信号让数据开始发送。值得注意的是,在串行通信中波特率和比特率两个概念不一样,在二进制传输数据时它们的值相等,但一个单位是bit一个单位是次数。

在这里插入图片描述
当数据开始传输,我们按照流程先将input的八位数据填充上开始位和结束位,交给我们的待发送数据寄存器,然后我们之前定义了一个数据位数计数器,一旦完成写入,立刻清零标志位和待发送数据寄存器。

在写入数据寄存器的同时,我们用发送寄存器把待发送寄存器中的数据一位一位地取出来并且交给output输出。
上面两部操作是并行执行的,这样可以利用FPGA的优势,加快通信速度。

接下来我们看一下接受代码:

在这里插入图片描述
前面不用说,还是产生波特率时钟。

在这里插入图片描述
接收部分我们先定义一个数据接收缓冲器,第一个函数的功能是每个时钟上升沿就从输入口往缓冲器里写入一位数据。当接收到5个连续的0时作为开始接收数据的标志。

这里比较重要的是设置一个接受数据个数计数器来一位一位地接收数据。我们令了两个数据接收寄存器,一个r0,一个r1.随着波特率时钟到达中点,我们用不断计数数据个数计数器表示数据接收寄存器的每一位,然后从低到高依次写入r0,当接收结束时我们将r0的值赋给r1,将各项标志位,计数器清零。最后我们把r1输出给input完成数据接收。

我们的顶层驱动模块如下图:
在这里插入图片描述
今天就讲到这里了,如果需要完整工程文件的朋友可以私信我,或者发邮件到459007310@qq.com
谢谢观看!

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Xilinx Artix 7是一款FPGA芯片系列,OLB是该系列芯片的库文件。OLB全称为"Output Library",它是一种用于存储、管理数字逻辑电路模型元件信息的文件格式。 Xilinx Artix 7芯片是业内较为流行的低成本、低功耗的FPGA芯片,广泛应用于嵌入式系统设计、通信系统、图像处理、音频处理等领域。它具有高性能、灵活性和可编程性的特点,能够满足不同应用场景的需求。 在FPGA设计中,OLB文件是非常重要的一部分。它包含了FPGA芯片中各个逻辑元件的模型信息。例如,AND门、OR门、XOR门等逻辑元件的输入输出端口、真值表、时序特性等信息都保存在OLB文件中。这些模型信息可以帮助设计者在开发过程中正确地使用逻辑元件,确保设计的正确性和可靠性。 通过使用Xilinx Artix 7的OLB库文件,设计者可以轻松地在设计工具中选择逻辑元件并引入设计中。设计者可以利用OLB文件中定义的模型属性,如输入输出端口的个数、位宽、时序要求等,进行电路仿真、综合和布局布线等步骤。这样可以大大提高设计效率,减少工作量。 总之,Xilinx Artix 7.OLB是该系列FPGA芯片的库文件,提供了各个逻辑元件的模型信息,对于FPGA设计者来说,它是进行电路设计的重要工具,能够帮助设计者快速、准确地完成FPGA设计任务。 ### 回答2: Xilinx Artix 7 是一款由Xilinx公司推出的低成本、低功耗可编程逻辑器件系列。Artix 7系列使用了先进的28纳米的工艺,提供了丰富的资源和高性能的特点。 Artix 7的.olb文件是其中一种文件格式,它是用于Xilinx ISE或Vivado软件中设计工程的库文件。这个库文件包含了Artix 7器件的原语和函数的定义,可以用来描述器件的各个特性和功能。.olb文件具体包含了Artix 7的逻辑门、触发器、计数器、加法器等元件的信息。 在设计工程中,我们可以使用.olb文件中定义的元件来搭建各种逻辑电路。通过选择适当的元件并进行连接,我们可以实现各种不同的功能,如组合逻辑、时序逻辑等。.olb文件的存在可以方便工程师在设计中使用已经定义好的元件,提高设计的效率和准确性。 总的来说,Xilinx Artix 7.olb文件是Artix 7系列FPGA器件的库文件,其中包含了逻辑器件的信息和定义,可以在设计工程中使用,简化设计过程,提高设计的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值