• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

串口测试试验设计Verilog代码VIVADO ARTIX-7开发板

3小时前
94
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24110R00SB15.docx

共1个文件

名称:串口测试试验设计Verilog代码VIVADO? ARTIX-7开发板

软件:VIVADO

语言:Verilog

代码功能:

串口测试试验

实现PC端通过UART发送数据到FPGA,FPGA将所接收到的数据同样通过UART发回PC端

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在ARTIX-7开发板验证,ARTIX-7开发板如下,其他开发板可以修改管脚适配:

ARTIX-7开发板.png

设计文档:

1简介

本试验用来验证开发板FPGA串口通信接口,实现PC端通过UART发送数据到FPGA,FPGA将所接收到的数据同样通过UART发回PC端。

2实验原理

本开发的串口指的是异步串行通信,异步串行是指 UART,通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平, MDS2710、MDSSD4、EL805等是RS232接口,EL806有TTL接口。

开发板的串口通信通过USB转换成串口的方式,主要是解决很多人电脑不带串口接口的问题,所以这里不涉及到电气协议标准,用法和 TTL 电平串口类似。FPGA 芯片使用2 个IO口和USB串口转换芯片CH340G相连。

开发板USB转串口设计如下:

起止式异步通讯协议:

特点与格式:

起止式异步协议的特点是一个字符一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。其格式如图3 所示。每一个字符的前面都有一位起始位(低电平,逻辑值0),字符本身有5~7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一 位,或意味半,或二位停止位,停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值),这样就保证起始位开始处一定有一个下跳沿。

起/止位的作用:起 始位实际上是作为联络信号附加进来的,当它变为低电平时,告诉收方传送开始。它的到来,表示下面接着是数据位来了,要准备接收。而停止位标志一个字符的结 束,它的出现,表示一个字符传送完毕。这样就为通信双方提供了何时开始收发,何时结束的标志。传送开始前,发收双方把所采用的起止式格式(包括字符的数据 位长度,停止位位数,有无校验位以及是奇校验还是偶校验等)和数据传输速率作统一规定。传送开始后,接收设备不断地检测传输线,看是否有起始位到来。当收 到一系列的“1”(停止位或空闲位)之后,检测到一个下跳沿,说明起始位出现,起始位经确认后,就开始接收所规定 的数据位和奇偶校验位以及停止位。经过处理将停止位去掉,把数据位拼装成一个并行字节,并且经校验后,无奇偶错才算正确的接收一个字符。一个字符接收完 毕,接收设备有继续测试传输线,监视“0”电平的到来和下一个字符的开始,直到全部数据传送完毕。

由 上述工作过程可看到,异步通信是按字符传输的,每传输一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率 略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以异步串行通信的可靠性高。但由于要在每个字符的前后加上 起始位和停止位这样一些附加位,使得传输效率变低了,只有约80%。因此,起止协议一般用在数据速率较慢的场合(小于19.2kbit/s)。在高速传送时,一般要采用同步协议。

3程序设计

本程序实现最简单的串口收发功能,即将收到的电脑串口数据通过FPGA串口回传给电脑。程序如下:

assign uart_out = uart_in;

FPGA串口管脚分配如下:

信号名

方向

管脚

BANK

端口说明

uart_rxd

input

K13

BANK15

USB串口接收

uart_txd

output

E16

BANK15

USB串口发送

4.实验现象

在电脑上安装CH340G的驱动,安装界面如下:

将目录“... at7_prj_011at7_prjat7_prj.runsimpl_1”文件夹下的 at7_prj.bit 文件下载到开发板上,并将USB线连接至USB串口接口。

安装完转换芯片的驱动,我们通过串口调试助手发送串口数据。其界面设置如下,选择波特率未9600,然后发送“hello,xilinx”,则收到回复同样的“hello,xilinx”:

部分代码展示:

`timescale?1ns?/?1ps
//////////////////////////////////////////////////////////////////////////////////
//?Company:?
//?Engineer:?
//?
//?Create?Date:?2019/04/13?17:54:08
//?Design?Name:?
//?Module?Name:?at7_prj
//?Project?Name:?
//?Target?Devices:?
//?Tool?Versions:?
//?Description:?
//?
//?Dependencies:?
//?
//?Revision:
//?Revision?0.01?-?File?Created
//?Additional?Comments:
//?
//////////////////////////////////////////////////////////////////////////////////
module?at7_prj(
????clk??,
????uart_in?,
????uart_out??
);
//declare?parameter
/**********************************************************************************/
//parameter
/**********************************************************************************/
/**********************************************************************************/
//ports
/**********************************************************************************/
//declare?input
input????????????????????????????????????????clk?????????????????????????????????????;
input????????????????????????????????????????uart_in?????????????????????????????????;
output???????????????????????????????????????uart_out

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1336

  • 2-24110R00SB15.docx
    下载

相关推荐