采用Altera FPGA芯片和DSP实现多串口数据通信系统的应用方案

时间:2025-09-12  作者:Diven  阅读:0

通用异步接收/发送器(UART)是通用串行数据总线,用于异步通信,可以实现全双工通信。UART IP核是用在外部设备和Atera FPGA芯片上的SOPC间进行串行通信的实现方式。可以替代RS-232实现芯片与外设的输入/输出(I/O)操作。

采用Altera FPGA芯片和DSP实现多串口数据通信系统的应用方案

GPS RTK(Real Time KinematIC)可以即时提供厘米级的定位解。在进行动态定位时,基准站将精确已知的GPS坐标和观测数据实时用微波链路传给流动站,在流动站实时进行差分处理,得到基准站和流动站坐标差;坐标差加上基准站坐标得到流动站每个点坐标。基准站向终端用户接收机提供的信息包括对GPS卫星钟、星历数据、用户测量伪距和载波相位等参数的修正。

本文所用的信号处理板可以作为GPS RTK基站使用,可以与其基站组网接收差分修正数据定位或者本身的高精度单点定位输出定位结果和差分修正数据。作为基准站,不仅要实时输出精确定位信息,而且需要与外界进行差分数据交换。由于同一时间需要大量持续差分数据的输入与输出和用户控制指令的输入,设计采用了3个串口。

1 硬件结构

信号处理板为FPGA+DSP结构,具有多路A/D、D/A转换器件。中频信号经A/D采样后进入FPGA完成去载波,PRN码相关运算,IQ变换等操作后由DSP芯片进行定位解算。通过串口输入的用户控制指令任意选择串口对GPS定位结果的输出和GPS差分修正数据的输入输出。

FPGA芯片上配置了3个串口,分别为UART0、UART1、UART2,由SOPC Builder分配相对应的存储映射空间和中断请求。每个模块均使用默认的基地址,并分别设定UART0、UART1、UART2的数据输入中断请求号为IRQ1,IRQ2,IRQ3。另外,DSP芯片可能在任意时刻通过3个串口发送不同数据。

如果DSP对每个串口发送数据时均向NIOS II CPU发出中断申请,则需要3根PIO管脚,占用太多针脚资源。本实现方案通过增加个串口控制寄存器,仅占用1根PIO管脚。

对和DSP芯片进行交互控制的PIO信号分配中断请求号为IRQ0。

每个UART口都有输入、输出两块RAM作为缓存,数据位宽为16bits。其中,串口输入缓存命名为ReadFromMemInterface,串口输出缓存命名为WriteToMemIntedace(见图2)。需要注意的是实际传输数据时,外部设备的串口参数的数据位长度设置为8 bits,因此需要在串口的软件处理进行字与字节的转换。

图3是NIOS II CPU在Quatus中的连线示意图,即位于中心的inST6模块。该CPU主要管脚定义如表1所示。

值得说明的是,ts_clk输入时钟20.46 MHz即为NIOS IICPU的时钟频率,串口波特率为115 200 bps,可由该时钟分频得到。DSP6713的EMIF为输入输出双向32位,在本设计中串口部分仅使用低16位,使用三态门来控制数据流向。三态门输入输出的使能信号是dsp给出的ce空间使能信号ce_6713。

串口输入数据先由NIOS II CPU写入每个串口的输入缓存,当满足条件时由out_pio管脚向dsp发出中断,用以告知其可以读取相应串口的数据了,缓存的数据由dspread0传递至三态门tri_16.dsp读取时三态门为dsp输入方向,dsp的EMIF数据线evm_D随即出现数据,配合EMIF地址线evm_A即可完成串口输入数据向dsp传递;当dsp有数据要经串口输出时,数据由dsp的EMIF数据线evm_D输入,dsp通过in_pio向NIOS II CPU发出中断信号,请求发送数据。详细的发送接收流程见下文。

2 软件设计

NIOS II CPU的控制代码部分分为主函数和各种中断响应函数。在主函数里完成寄存器初始化、各串口数据输出的任务。串口的中断响应函数则主要完成数据的输入任务。

为了便于FPGA和DSP之间的控制信息交换,每个串口设有地址固定的长度各为32位(4字节)的输入和输出两个控制寄存器。通过对各标志位的读写操作即可实现系统对各串口的控制。串口的输入控制寄存器定义见表2,输出控制寄存器与之类似。

由于用户控制指令(包括信号处理板配置参数、输出数据类型控制等)与差分修正数据的数据长度和数据持续性有很大区别,在常规数据传输方式之外对每个串口增设数据块传输模式。数据块传输模式可用于持续性大量数据的输入,采用每个串口对两块RAM进行乒乓读写操作的来方案实现。是否采用数据块传输模式由串口的控制寄存器中的第14位(P_flag)决定。对于非数据块输入模式中缓存大小需要根据常规数据最大长度来设定,过小会导致部分数据丢失。当有数据需要输出时,由DSP向NIOS II CPU的RAM写入各UART输出控制寄存器的设定值,并通过GPIO向其发出中断信号。可在NIOS II CPU的main函数中设置一个循环检测是否有由DSP输入的中断信号,若有再检测各UART的输出控制寄存器。输出流程图如图4所示。

图4中SET_EN用于设置个串口的输入模式(是否乒乓输入及乒乓输入时缓存的大小)和串口使能等操作,输入控制寄存器的默认值在系统初始化时由DSP写入。

当数据输入时,NIOS II CPU检测到来自串口的中断请求,进入对应的中断响应程序。首先对数据传输模式进行判断,P_flag默认值为0,表示非数据块输入模式。该模式下输入的数据有特定的结尾标志符组合,一旦检测到结束标志则发送已缓存的数据并完成状态清零以便下次接收;P_flag为1则为连续数据块输入,当Half_BAM0或Half_RAM1其中一块写满时即向DSP发出中断信号,DSP即进入中断服务程序读取数据。程序流程图如图5所示。

3 结束语

采用Altera FPGA芯片上的NIOS II CPU控制串口的优点是充分使用硬件资源,可以减轻DSP芯片的计算量。测试表明,NIOS II CPU工作频率为20.46 MHz,串口波特率设置为115 200,数据位为8 bit,各串口可以同时正常输入输出。多串口可以同时输入输出数据,由指令可以灵活配置传输模式,以适应不同数据传输类型的需求。

本文解决了单串口传输不能满足GPS高精度接收机对多种数据同时输入输出的要求,实现了GPS定位结果、RTK差分数据与外界的实时交换以及用户控制命令的输入。本方案的优点是通过增加各串口的输入/输出控制寄存器,使DSP芯片可以仅以两个GPIO资源实现原本需要3个串口输入/输出功能相对应的6个中断操作;采用NIOS II CPU进行多串口控制可以减少硬件调试时间,节约FPGA片内资源。不足之处是未实现串口波特率、数据位等实时配置。

猜您喜欢

无线收发芯片是现代通信设备中不可少的核心组件,其参数直接影响着设备的性能和稳定性。频率范围是评估无线芯片的重要指标,通常以MHz或GHz为单位,决定了芯片可以工...
2017-04-01 00:00:00

贴片电阻封装型号就像的衣服,标示着尺寸大小。 常见的型号如0402、0603、0805、1206等,这些数字并非随意排列,而是直接对应着电阻的长和宽。以0402...
2024-11-29 10:25:59

保险丝是重要的电气保护装置,其主要优势体现在以下几个方面。保险丝能够有效防止电路过载和短路,保护设备和线路安全。当电流超过设定值时,保险丝会迅速熔断,从而切断电...
2017-10-18 00:00:00

贴片二极管是应用于电子电路中的重要元件,主要用于整流、信号处理等功能。正确判断贴片二极管的正负极,对于电路的正常运行非常重要。本文将为您详细介绍如何判断贴片二极...
2025-04-06 19:30:35

空调中常用的贴片电阻主要起到限流、分压、温度补偿等作用,对可靠性和稳定性要求较高。选择合适的贴片电阻对于空调的性能和寿命很重要。一般来说,空调贴片电阻推荐选用厚...
2024-11-29 10:25:54

网络工具套装的应用领域,涵盖了多个行业和日常生活的方方面面。在企业管理中,网络工具可以帮助团队进行高效协作和项目管理,提升工作效率。在教育领域,在线学习平台和教...
2011-12-05 00:00:00

电子发烧友网报道(文/李弯弯)机器人是由计算机控制的复杂机器,它具有类似人的肢体及感官功能;动作程序灵活;有一定程度的智能;在工作时可以不依赖人的操纵。机器人传...
2024-07-10 00:16:00

油嘴是用于机械设备的组件,主要功能是为润滑系统提供油脂或润滑油。油嘴通常由金属或塑料材料制成,设计简单,但在机械保养中是重要配件。其基本结构包括一个连接管道和一...
2009-04-14 00:00:00

贴片电阻的阻值并非任意值,而是遵循一定的标准系列。常见的标准系列有E系列,如E24、E96等。E系列数字表示每个数量级内包含的阻值数量。例如,E24系列在一个数...
2025-04-14 15:02:43

贴片电阻上的「01R」表示其阻值为0.01欧姆,也就是10毫欧。贴片电阻通常使用数字编码来表示阻值。对于三位数的编码,前两位数字表示有效数字,最后一位数字表示1...
2024-11-26 11:29:22