0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA实现多路UART/SPI通信系统

FPGA技术江湖 来源:FPGA技术江湖 2023-02-20 11:10 次阅读

第一部分 设计概述 /Design Introduction

本次的设计为多路UART/SPI通信系统,可以实现一对多的通信。系统可以运行在UART模式,也可以运行在SPI模式。我选择这一课题的原因主要是目前我所在的实验室需要写基于UART的快速通信。这一课题既可以帮助我巩固之前学习的知识,又可以为我后面的项目做准备。在完成课题的过程中,主要用到了FPGA状态机、总线等方面的知识。这一课题可以应用在需要高速异步串行或同步串行通信的应用场合,如实时控制、监测等。

当系统运行在UART模式下,可以实现一个发送端最多向四个接收端发送信息,且有效信息中包含地址码,接收端可以根据发送端发送的地址码判断该信息是否是发送给自己的,实现信号线复用。UART通信简单,仅需要一根信号线,但是其缺点是只能实现单向通信,接收端无法给发送端反向发送数据。但是这一缺点也可以通过采用两个UART系统来弥补。

当系统运行在SPI模式下,可以实现一个主机与多个从机之间的通信,且在通信过程中,系统是全双工的。主机通过选择性拉低某一个或者某几个从机的片选信号,实现对于从机的选择。

ce247f6c-b013-11ed-bfe3-dac502259ad0.png

ce610914-b013-11ed-bfe3-dac502259ad0.png

第二部分 系统组成及功能说明 /System Construction & Function Description

计划功能

程序实现UART和SPI的通信,并可以通过按键的方式在两种模式之间切换。在UART模式下,发送端给接收端发送一串数据,接收端判断是否和已知数据相符。如果相符则点亮LED,如果不符则不点亮。在SPI模式下,主机给从机、从机给主机同时发送数据,若接收到的数据和已知数据相符,则点亮LED,如果不符,则不点亮。同时,UART和SPI均有寻址功能。UART的寻址方式是在数据位前面加两位地址位,实现对最多四个接收端的区分;SPI的寻址方式是通过拉低需要选定的从机的SS信号,实现对最多四个接收端的区分。

目前所有的功能均已实现。最初计划通信系统在两个不同的FPGA板上实现,但是另外一块板出了问题,目前只能在一块板上验证。发送端和接收端、主机和从机均写在一块板子里,内部的通信线也直接用FPGA内部的线连接。总的框图如下。其中,inst_clkwiz是系统自带的分频器,将外部100M的始终编程10M,降低了通信速率,但是可以使通信系统更加稳定;inst_SPIpart是SPI通信模块;inst_UART是UART通信模块;inst_modeselection是通信模式选择模块。

cf127cd0-b013-11ed-bfe3-dac502259ad0.png

SPI内部的构造如下。其中,inst_SPItop为从机;inst_SPItop1为主机。当主机的信号选择信号为0111时系统中的从机被选中。在主机、从机内部, inst_SPImaster为SPI主机端口,inst_SPIslave为SPI从机端口,inst_leddriver为led驱动电路,负责判断接收到的信号和已知信号是否一致,当接收到的信号和一直信号一致时,驱动LED点亮。

cf488960-b013-11ed-bfe3-dac502259ad0.png

UART部分的框图如下。其中,inst_UARTtop1为发送端;inst_UARTtop为接收端。发送端给接收端发送数据。当接收端接收到的数据和已知数据相同,驱动LED点亮。

cf7a418a-b013-11ed-bfe3-dac502259ad0.png

第三部分 完成情况及性能参数 /Final Design & Performance Parameters

除了两块板相互通信以外,所有的功能均可以在一块板子上实现。

测试方法:

接通电源后,首先按动RST,对板卡进行复位,复位后的通信模式默认为UART模式。红色的LED被点亮。这证明在该模式下,接收端已经完整接收到了十位信号,完成了地址的判断。将接收到的信号传送给LED驱动模块后,经过判断符合已知的8’hbb。LED2信号置位,点亮红色LED2,而在UART模式下,绿色的LED1不被点亮。综合以上现象,UART模式可以运行。

按动KEY1,红色和绿色的LED均被点亮,且绿色LED亮度弱于红色LED。红色LED点亮证明主机成功选中从机、发送给从机数据且从机已经接收到主机发来的数据,且经过LED驱动模块的判断,和已知数据相符。绿色LED灯点亮证明从机给主机也成功发送数据,且也和已知数据相符。绿色LED亮度弱于红色LED的原因是,主机只接了一个从机,因此只有1/4的时间,接收到的信号和已知信号相同,在其他3/4时间中接收到的均为8’bzz,和已知信号不符,不点亮LED。因此亮度更弱。

KEY1,系统又转换到UART模式,绿色LED熄灭,红色LED点亮。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21328

    浏览量

    593251
  • 通信系统
    +关注

    关注

    6

    文章

    1066

    浏览量

    53056
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89647
  • uart
    +关注

    关注

    22

    文章

    1159

    浏览量

    99973
  • 串行通信
    +关注

    关注

    4

    文章

    536

    浏览量

    35023

原文标题:往期精选:基于 FPGA 实现多路UART/SPI通信系统

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA实现多路UART/SPI通信系统

    本次的设计为多路UART/SPI通信系统,可以实现一对多的
    发表于 10-24 10:55 1038次阅读

    一种基于FPGAUART实现方法设计

    UART实现方法,具体描述了发送、接收等模块的设计,恰当使用了有限状态机,实现FPGA片上UART的设计,给出了仿真结果。关键词:通用
    发表于 06-21 07:17

    怎么使用FPGA实现SPI总线的通信接口?

    受到限制。因此,我们采用ALTERA公司的FPGA器件设计SPI总线的通信接口,该总线接口具有高速、配置灵活等优点,大大地缩短了系统的开发周期。
    发表于 08-09 08:14

    DSP和FPGASPI通信不能实现怎么办

    用的贵公司的TL138F-EVM A2开发板。想利用SPI协议实现FPGA和DSP通信。看了核心板引脚说明 没有看到FPGA这边
    发表于 04-24 06:46

    基于FPGA和TOE架构实现多路采集与切换系统的方案

    时间。针对上述研究现状和分布式采集场景分析,本文介绍了一种基于FPGA和TOE架构,实现TCP/IP协议数据传输的多路采集与切换系统。该系统
    发表于 07-12 08:30

    CPU数字通信接口和FPGA进行数据通信设计实现

    ,这里的接口主要指板间通信,像422、485之类的就不展开描述(协议层都是uart)。低速接口低速接口时单片机常用的接口,在和FPGA对接时候主要进行小数据量的通信。低速接口的优点就是
    发表于 08-19 16:32

    利用FPGA实现UART的设计

    利用 FPGA 实现UART 的设计引 言随着计算机技术的发展和广泛应用,尤其是在工业控制领域的应用越来越广泛,计算机通信显的尤为重要。串行通信
    发表于 03-24 09:23 49次下载

    异步收发通信端口(UART)的FPGA实现

    文章介绍了一种在现场可编程门阵列(FPGA)上实现UART 的方法。首先阐述了UART 异步串行通信原理,然后介绍了
    发表于 08-06 16:24 55次下载

    FPGA与CPLD实现UART

    UART 是广泛使用的串行数据通讯电路。本设计包含UART 发送器、接收器和波特率发生器。设计应用EDA 技术,基于FPGA/CPLD 器件设计与实现
    发表于 12-17 00:15 57次下载
    <b class='flag-5'>FPGA</b>与CPLD<b class='flag-5'>实现</b><b class='flag-5'>UART</b>

    UART功能集成到FPGA内部实现多模块的设计

    实现RS-232电平和TTL/CMOS电平转换可以用接口芯片来实现实现数据的串行到并行转换用的是UART,它们是实现串行
    的头像 发表于 10-18 07:54 2347次阅读
    将<b class='flag-5'>UART</b>功能集成到<b class='flag-5'>FPGA</b>内部<b class='flag-5'>实现</b>多模块的设计

    使用FPGA和模块化设计方法实现UART的设计论文

    UART作为RS232协议的控制接口得到了广泛的应用,将UART的功能集成到FPGA芯片中,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统
    发表于 07-07 17:28 10次下载
    使用<b class='flag-5'>FPGA</b>和模块化设计方法<b class='flag-5'>实现</b><b class='flag-5'>UART</b>的设计论文

    基于FPGAUART模块设计与实现简介

    基于FPGAUART模块设计与实现介绍说明。
    发表于 06-01 09:43 19次下载

    基于FPGASPI协议及设计实现

    基于FPGASPI协议及设计实现博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来投稿,谢谢!引言介绍在电子通信领域里采用的
    发表于 11-05 19:05 22次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>SPI</b>协议及设计<b class='flag-5'>实现</b>

    FPGA实现SPI

    FPGA实现SPI协议
    发表于 03-20 10:35 0次下载

    UARTSPI、I2C比较 串口通信介绍

    ,较少用于远距离通信SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。
    的头像 发表于 11-09 18:06 751次阅读
    <b class='flag-5'>UART</b>、<b class='flag-5'>SPI</b>、I2C比较 串口<b class='flag-5'>通信</b>介绍