FPGA串口(rs422)调试笔记 | 您所在的位置:网站首页 › fpga串口通信程序详解图 › FPGA串口(rs422)调试笔记 |
目录 前言 一、串口到底指的什么? 二、调试记录 1.先通过串口助手实现uart的发送与接收 2.编写top文件,把连续接收的8bit的数据拼接成16bit数据(之后需要的位数) 3.删去原USB程序,把串口程序拼上去 总结 前言团队项目需求,由于USB通信存在数据被测试环境干扰的问题,且考虑到所需通信速率不高,所以转为串口通信,下面是自己的调试记录,方便自己理解与日后回顾。 一、串口到底指的什么?了解之前,我也很疑惑,听到大家都在说串口啦,uart啦,rs232啦,rs422啦,rs485啦,说的我一脸懵逼。后来自己了解后,才发现其实类别都不同,不能放在一起说。 串口包含了uart,还包含usb等等,可以说是uart是串口,但串口不一定是uart,我是这样理解的,不知道对不对。串口是物理层次上说的,一般有两种形式的物理接口,DB9和4针的杜邦线插口。 uart包含了rs232,rs422和rs485这些接口标准。可以说这三种接口的物理层不同,输出的电平不同,但通信协议是一样的,也就是说,编程实现是一样的,只是硬件电路电路上不同,当然其传输速率,抗干扰能力等等也自不相同。 二、调试记录 1.先通过串口助手实现uart的发送与接收从Xilinx嫖的uart接收与发送的例程,改改引脚定义:团队做的pcb用芯片把rs422电平转化为FPGA芯片识别的ttl电平,所以要做的就是得输进去一个rs422电平。 懵逼的我拿了个一头是usb另一头是DB9的线插上去,咦~怎么不管用啊。后来才发现这根线是usb转rs232的线。。。。。我拿了个rs232转rs422的转换器,接上后,咦~~~管用了。 后来加购了个usb直接转rs422电平的线,就可以了。(嘘,我原本以为,usb连接电脑,那边出来的只能是rs232的电平,之后回来再看的时候,不准笑话自己,哈哈哈) 代码如下(by Xilinx): `timescale 1ns / 1ps // //Module name uart_rx //Description: 16 个 clock 接收一个 bit,16 个时钟采样,取中间的采样值 //(by_Xilinx) // module uart_rx( input clk, //采样时钟 input rst_n, //复位信号 input rx, //UART 数据输入 output reg[7:0] dataout, //接收数据输出 output reg rdsig, output reg dataerror, //数据出错指示 output reg frameerror//帧出错指示 ); reg [7:0] cnt; reg rxbuf, rxfall, receive; parameter paritymode = 1'b0; reg presult; reg idle;//线路状态指示,高为线路忙,低为线路空闲 always @(posedge clk) //检测线路的下降沿 begin rxbuf |
CopyRight 2018-2019 实验室设备网 版权所有 |