FPGA实现串口通信(RS232)含代码

这篇具有很好参考价值的文章主要介绍了FPGA实现串口通信(RS232)含代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

硬件需求

带有CH340的FPAG开发板

接收模块

该模块的功能是接收通过 PC 机上的串口调试助手发送的固定波特率的数据,串口接收模块按照串口的协议准确接收串行数据,解析提取有用数据后需将其转化为并行数据;简单的说,接收模块的功能就是解析+串转并
具体实现步骤如下:
1、算出波特率和FPGA时钟的对应关系
每个码元的持续时间=FPGA时钟计数Fclk/Baud次
例如波特率为9600,代表着每秒传输9600个码元,每个码元的持续时间为1/9600秒,设FPGA时钟为50MHz,则需要计数约5028次(细微的近似计数差别不会产生数据错误)。
2、产生读取数据标志
在1的例子中,每个码元都持续了5028个时钟周期,那我们该什么时候取数据呢?理论上讲,在中间位置时取数最稳定,所以我们选择当计数器计数到 2603时取数据。
3、串并转换
串口发送的每一帧包含了10bit数据,其中第一个码元是开始位,最后一个码元是停止位,第2位到第9位的数据为有效数据。我们取出中间的8位有效数据转换为并行数据即可。
4、串口状态的确定
我们可以设置一个使能信号。当串口处于空闲状态时,数据线为高电平,当起始位到来时变为低电平,我们只要找到第一个下降沿就认为串口开始进行数据传输。此时拉高使能信号,等待10bit数据传输完成,再将使能信号拉低,等待下一个下降沿的到来。因此可以通过设置使能信号来确定串口状态,当使能信号为高时串口在传输数据,使能信号为低时串口处于空闲状态。文章来源地址https://www.toymoban.com/news/detail-434383.html

module usart232_rx(
input wire sys_clk,
input wire sys_rst,
input wire data_in_1bit,
output reg [7:0] po_data,
output reg po_flag
);
parameter BOUND_CNT_MAX = 13'd5208;//波特率9600,时钟频率50MHz
reg  reg1;
reg  reg2;
reg  reg3;
reg [7:0]data_out;
reg [12:0] bound_cnt;//波特率计数器
reg start_flag;//开始标志(下降沿标志)
reg enable;//使能信号
reg bit_flag;//读取数据标志
reg [3:0] bit_cnt;//用于计数该时刻接收的数据是第几个比特的计数器
reg data_out_flag;//串并转换完成标志
//时钟同步数据
always@(posedge sys_clk or negedge sys_rst)
if (sys_rst==0)
reg1<=1;
else
reg1<=data_in_1bit;
//打一拍,减少出现亚稳态的概率
always@(posedge sys_clk or negedge sys_rst)
if (sys_rst==0)
reg2<=1;
else
reg2<=reg1;
//再打一拍,再次减少出现亚稳态的概率
always@(posedge sys_clk or negedge sys_rst)
if (sys_rst==0)
reg3<=1;
else
reg3<=reg2;

//时钟计数
always@(posedge sys_clk or negedge sys_rst)
if (sys_rst==0)
bound_cnt<=0;
else if (bound_cnt==BOUND_CNT_MAX-1'b1||enable==0)
bound_cnt<=

到了这里,关于FPGA实现串口通信(RS232)含代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习笔记】串口通信RS232

         UART 是一种通用的数据通信协议,也是异步串行通信口(串口)的总称,它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。串口作为常用的三大低速总线之一。不同于 SPI、IIC 是同步通信接口,UART是全双工异步通信

    2024年02月06日
    浏览(30)
  • Java 串口通信(RS232/485)

    Java 实现串口通信,同时通过 WebSocket 与 UI 实时交互传递通信数据 准备工作: 虚拟串口工具:Launch Virtual Serial Port Driver 串口调试助手:SSCOM RS485 在线 CRC检验码计算:CRC 测试链接 1.扩展包和依赖库 以上两个包可以直接网上下载,注意和JDK版本搭配即可 2.Pom配置 串口通信包:

    2024年02月13日
    浏览(32)
  • 串口通信协议--UART、RS-232、RS-485、RS-422

    近期学习了单片机及数电相关知识,故决定系统地学习一些通信协议。手边书本仅介绍了串口低速接口的相关协议。 串行通信 是指通过使用一条数据线(需要地线或控制线),将数据一位一位地一次传输,每一位数据占据一个固定的时间长度。 特点 :抗干扰,节省数据线,

    2024年02月05日
    浏览(47)
  • 【以太网通信】RS232 串口转以太网

    最近和 RK 研发同事在调试通信接口,排查与定位 RK3399 接收数据出错的问题。FPGA 与 RK3399 之间使用一路 RS232 串口进行通信,由于串口数据没有分包,不方便排查问题,想到可以开发一个 RS232 串口转以太网的工具,将串口接收到的数据封装为 UDP 数据报文,并通过网线传输到

    2024年02月11日
    浏览(48)
  • STM32CubeIDE开发(二十二), stm32的RS485/232串口通信开发要点

    目录 一、stm32串口通信         1.1 硬件流控          1.2 软件流控         1.3 串口通信参数 二、新建RS485通信工程         2.1 项目实现背景信息         2.2 项目配置         2.3 代码实现    三、RS485驱动调用及测试         3.1 接口调用        3.2 编

    2024年01月20日
    浏览(44)
  • 学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础

    百度百科:串口通信的概念 什么是通信? 例如U盘和电脑,我们电脑需要往U盘存东西,而U盘上只有四个触点,除去一个电源一个地,只剩下两个引脚了。此时我们坑定不能像点亮LED那样单纯的给他两个引脚上输出个高低电平就能写数据了对吧。总不至于输出一个高电平就能

    2024年02月07日
    浏览(39)
  • fpga verilog rs232 发送模块实现

    RS-232是一种串行通信协议,用于在计算机和其他外部设备之间进行数据传输。RS-232定义了电气特性、信号级别、机械特性和传输速率等规范,为串行通信提供了一种标准化的接口。 RS-232通常使用DB9连接器,用于传输和接收数据、控制信号以及地线连接。 但除了235脚其它基本

    2024年02月03日
    浏览(39)
  • FPGA串口(RS422)调试笔记:理解串口通信与调试记录

    探索FPGA串口(RS422)通信的调试过程与记录,包括串口通信概念解析、调试步骤、代码示例以及数据拼接方法。记录调试中遇到的问题与解决方案,展示对串口通信功能的实现与乐趣体验。

    2023年04月08日
    浏览(32)
  • RS232&RS485串口的区别

    一、接口物理结构不同  1、RS232接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组RS232 接口,分别称为COM1和COM2。 2、RS485接口没有具体的物理形状,是根据工程的实际情况而采用的接口。 二、接口电子特性不同 RS232接口的信号电平值较高,易损

    2024年02月05日
    浏览(29)
  • 串口RS232、RS485最本质区别

    由下图可看出不管是RS232还是RS485,其本质都是串口通信,只不过是串口通信电平上的变种而已。所以,我们首先从串口通信讲起。 1、串口通信 任何一种通信都要有物理接口和通信协议。串口通信物理接口如下图: 串口通信协议首先要约定好帧格式和波特率。下图是我们常

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包