加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2023/12/08
4421
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。“煮酒言欢”进入IC技术圈,这里有近50个IC技术公众号。

第一部分 设计概述 /Design Introduction

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

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

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

第二部分 系统组成及功能说明 /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是通信模式选择模块。

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

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

第三部分 完成情况及性能参数 /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点亮。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
XC6SLX25T-2CSG324C 1 AMD Xilinx Field Programmable Gate Array, 1879 CLBs, 667MHz, 24051-Cell, CMOS, PBGA324, 15 X 15 MM, 0.80 MM PITCH, LEAD FREE, BGA-324
$129.32 查看
A3P1000-FGG144I 1 Microsemi FPGA & SoC Field Programmable Gate Array, 1000000 Gates, CMOS, PBGA144, 1 MM PITCH, GREEN, FBGA-144
$133.31 查看
A3P400-PQG208I 1 Microchip Technology Inc Field Programmable Gate Array, 9216 CLBs, 400000 Gates, 350MHz, CMOS, PQFP208
$32.04 查看

相关推荐

电子产业图谱

任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。