PC和FPGA间的串口通信实现
|
应用笔记 V1.0 2015/03/26 |
PC和FPGA间的串口通信实现 |
|
概述 |
本文将介绍PC和FPGA间的串口通信实现的基本思路和Verilog代码,对于通信而言,收发双方都要有相应的控制。PC端采用MATLAB控制串口进行操作。本文档将详细介绍这一过程。 |

|
修订历史 |
以下表格展示了本文档的修订过程
|

|
简介 |
PC端程序基于MATLAB 2014a 编写,本文档中提到的"MATLAB"均指该特定版本MATLAB。 为何要做一套PC和FPGA之间通信的程序?之前的文档,包括《程序说明:MATLAB串口操作和GUI编程》和《应用笔记:采用FPGA实现UART转SPI》说明可以通过PC来"控制"FPGA进行相应的操作。在LDPC译码误码率仿真过程中,我们希望通过FPGA强大的计算能力来辅助计算,这时我们希望要能够完成PC传送数据,FPGA处理后发送回PC机的过程。本文档将介绍通过串口完成这一功能的整个过程。 当然,更广泛的来说,数据的处理过程,就应该包括数据的输入和输出。也就是说,对于FPGA来说,很多情况下必须要考虑将外界的数据接收、缓存、处理、缓存、输出的整个过程。这里数据的来源不仅仅能是PC,数据的格式或协议不仅仅能是串行通信协议。也就是说,本文档所介绍的是这一过程的一个特例。 本文档关注FPGA端的处理,对PC端处理不做详细说明。FPGA端处理包括
其中数据接收和发送采用串行通信协议,帧格式如图 1。
图 1 串行数据帧格式 PC端通过MATLAB操作串口,仅仅只需要采取如下命令即可 s=serial('COM1'); fopen(s); fwrite(s,100); %写一个字节 fread(s,[1 1],'unit8'); %读一个字节 fclose(s); delete(s); |

|
程序结构 |
程序结构如图 2所示
图 2 程序结构示意图
顶层文件仅仅只需要如下几个端口 input clk; //时钟 input rxd; //串口输入 input rst; //复位,高有效 output rxt; //串口输出 即输入输出数据即可。后文将详细介绍各个模块的功能。
图 3 数据读取、缓存
serialRead的输入时钟是16倍的波特率(时钟不同源),输出的是8bit的并行数据,同时有输出有效的表示。此时输出的时钟也是16倍的波特率。 然而往往数据的处理模块的时钟是不同的。对于隔离时钟域来说,FIFO是一个很好的选择,但是这里由于考虑到译码需要接收到所有的数据之后才能够开始,而且数据在整个译码过程中需要保持,所以选择了双口RAM来匹配不同速率的数据。当然还有一个原因是我不太记得FIFO这个核则么用了。 inputram的clka是16倍的波特率,通过输入地址控制,每次接收到out_rdy有效后地址增1将data_in保存到RAM内部。Inputram的clkb是数据处理模块的时钟,通过相应的规则控制ram的addrb,控制data_out和data_out_enable信号,得到满足数据处理要求的数据流。
图 4 数据处理模块
数据处理模块接收数据后处理输出data_out和data_out_enable
图 5 数据缓存输出
数据处理模块通过接收并存储data_out后,在满足一定条件下发送dout和dout_enable信号。其中clka为数据处理模块时钟频率,而clkb是1/16的波特率的频率。 serialWrite模块通过接收信号,在输出使能情况下,输出rxt。 |

|
信号说明 |
表格 1 confirm_top模块信号说明
表格 2 serialRead模块信号说明
剩余模块比较简单,不做说明,我也懒得写了…… |

|
参考 |
|

|
代码 |
注:以下代码介绍2560个PC的8bit的帧,之后处理取后1024帧的最高数据为,分为128帧传送回PC端。MATLAB代码略。
|
PC和FPGA间的串口通信实现的更多相关文章
- PC软件与PLC串口通信 奇偶检验问题
PC软件与PLC进行串口通信 波特率:19200 校验位:偶检验 数据位:8 停止位:1 现象 一,PC软件向PLC可以发送1,2,4,5,7,8,但是3,6,9发送出去后,PLC无法收到 二,使 ...
- Linux与Windows串口通信
串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.现在国际上不断有串口新技术及新规格推出,结合社会各方面需要,串口通信发展的空间庞大.串口通讯技术因其自身的优势和 ...
- VM中linux和windows主机进行串口通信
最近在做关于AIS的内容.为了对AIS电文进行解码,串口收发. 数据有PC机模拟发送,为了调试方便,不用次次将程序放到开发板上运行,所以利用pc主机和虚拟机进行串口通信模拟该过程. 首先需要用到一个软 ...
- 基于FPGA的红外遥控解码与PC串口通信
基于FPGA的红外遥控解码与PC串口通信 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<电子设计EDA>的课程设计作业(呵呵,这个月都拿 ...
- C语言dsPIC / PIC24 serial bootloader和C#语言bootloader PC端串口通信程序
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新dsPIC/PIC2 ...
- C语言PIC18 serial bootloader和C#语言bootloader PC端串口通信程序
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新PIC18 Boot ...
- C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信程序
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新PIC16 Boot ...
- 利用 SerialPort 控件实现 PC 串口通信
整理参考自<Visual C#.NET 串口通信及测控应用典型实例>1.3 节 以及 一篇博文:C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 硬件部分 如果是两个串 ...
- 创建C#串口通信程序详解
在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports.这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信.我们将使用标准 ...
随机推荐
- Linux入门——shell脚本常用信息小结
1.shell中的$默认变量 $n $1 表示第一个参数,$2 表示第二个参数 ... $# 命令行参数的个数 $0 当前 ...
- 20155308&20155316 2017-2018-1 《信息安全系统设计基础》实验三
20155308&20155316 2017-2018-1 <信息安全系统设计基础>实验三 并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现 ...
- 20155316 2016-2017-2 《Java程序设计》第3周学习总结
教材学习内容总结 类:创建类.使用类 基本类类型与类类型 数组 封装的概念 重载 类语法 static成员 教材学习中的问题和解决过程 1.既然数组在JAVA中就是对象,那么int[] 是否是一个类呢 ...
- 20155337 2016-2017-2 《Java程序设计》第一周学习总结
20155337 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 我们主要学习的是JAVA SE平台也就是标准平台-Java SE四个组成部分:JVM .JR ...
- Kettle定时执行
1,Kettle跨平台使用. 例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下: 1)进入到Kettle部署的路径 ...
- 「Leetcode」974. Subarray Sums Divisible by K(Java)
分析 这题场上前缀和都想出来了,然后就没有然后了...哭惹.jpg 前缀和相减能够得到任意一段连续区间的和,然后他们取余\(K\)看余数是否为0就能得到.这是朴素的遍历算法.那么反过来说,如果两个前缀 ...
- (python)剑指Offer 面试题51:数组中重复的数字
问题描述 在长度为n的数组中,所有的元素都是0到n-1的范围内. 数组中的某些数字是重复的,但不知道有几个重复的数字,也不知道重复了几次,请找出任意重复的数字. 例如,输入长度为7的数组{2,3,1, ...
- 数据库mysql的常规操作
1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...
- Halcon如何保存仿射变换矩阵
这里我们通过序列化来实现的,如下图,写到硬盘的HomMat2D_1内容和从硬盘里HomMat2D_2读出的内容一致,源代码在图片下方. Halcon源代码: hom_mat2d_identity (H ...
- .NET导出Excel之NPOI
前段时间研究过微软的Excel导出.table输出Excel,而它们也存在一些弊端: 1.对于微软的Excel导出存在一些弊端,如:需要安装Office软件.速度问题: 2.table输出Excel在 ...











