当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]O 引言面对不同的应用场景,原始采样数据可能包含多种不同样式的信号,这给传统基于连续存储方式的数据缓存系统带来了挑战。除此之外,由于对不同信号的处理往往需要不同的

O 引言

面对不同的应用场景,原始采样数据可能包含多种不同样式的信号,这给传统基于连续存储方式的数据缓存系统带来了挑战。除此之外,由于对不同信号的处理往往需要不同的数据帧结构,缓存系统的设计需要保存原始采样数据并能够实现数据的重组帧,以满足不同处理需求。针对以上问题,本文提出了一种基于文件结构存储方式的数据缓存系统,该系统利用FPGA设计结构化状态机实现对SDRAM的控制,完成了对数据的缓存与重组帧,具有速度快、可靠性高、灵活性强和功能可扩展等优点。

1 系统总体设计

在系统设计上,采样的数据都会采用数据帧结构,一般的设计大多是基于帧头加数据的格式。在帧头中包含一些数据的特征信息,其中最常见的有数据到达时间和数据结束时间。

传统缓存系统的设计一般是采用帧头加数据,帧头加数据的连续存储方式,系统发读命令将帧头和数据连续读出送往后端,后端处理系统通过识别帧头信息判断该数据帧的长度,然后把该长度的数据做进一步处理。这种设计在单一的信号环境下具有结构简单,控制容易的优点,但是它仅适应于单一处理模式的系统,扩展性和移植性较差。

面对不同的应用场景,传统设计已经不能满足不同的处理需求,因为单次采样的原始数据可能包含多种不同信号样式的信号,对不同信号的处理往往也需要不同的数据帧结构,如不同的抽取,不同的数据帧长等。而连续存储结构很难在缓存系统中实现对数据的灵活操作及数据的重组帧,只能把重组帧任务放在后端系统来处理,加重了后端系统的负担。基于此,本文提出了一种基于文件结构的存储方式,并且在缓存系统中实现了数据重组帧的任务,减轻了后端的负担。

整个系统的设计以FPGA为核心控制器来组织工作,它由系统总控System Master与SDRAM驱动控制器SDRAM Controller组成。System Mas-ter接收高层控制指令,向SDRAM Controller发出命令,SDRAM Controller将命令翻译为底层SDRAM芯片的读写指令字精确控制其完成读写操作。系统主要解决的问题是基于文件结构的数据存储,数据重组帧和数据事后读取。系统整体框图如图1所示。

 

2 系统工作原理

2.1 文件结构的存储方式

所谓文件结构指的是,将帧头与其所对应的数据分区存储,在存储时将存储数据的首地址添加到帧头信息中,在读出时,先读取帧头找到数据的首地址,然后加上系统给定的偏移地址算出读取的起始地址,从该地址开始顺序读取要求长度(小于等于帧长)的数据,在送往后端系统时更新帧头信息,后端系统收到数据无需做预处理直接进行计算即可。图2是2种存储结构的比较。

 

基于文件结构的存储方式便于对数据进行管理与操作,功能扩展容易。例如有些处理只对数据的帧头信息进行相关操作,基于文件结构的存储模式可以很方便地支持这种工作模式,只需对缓存介质的帧头区进行操作,而传统的设计则很难满足这种需求,因此新的设计极大地提高了系统的灵活性。

2.2 数据重组帧的实现

在设计上,用SDRAM的BANK0(BANK地址“00")和BANKl(BANK地址“01”)存储原始数据,BANK2(BANK地址“10”)存储要送往后端计算的数据,BANK3(BANK地址“11”)存储数据的帧头信息。系统在接收到数据重组帧命令后,按照要求抽取,帧数,帧长和帧间隔从低 BANK区读取原始数据送入数据重组帧模块形成新的数据帧结构,然后将新的数据帧结构按照文件结构存储到高BANK区中。其实现框图如图3所示。

 

3 控制模块的结构化状态机设计

在系统架构上采用了结构化状态机的设计方法,通过分层有限状态机实现了主控状态机与具体操作控制状态机的分离,使设计结构清晰,划分合理。降低了设计的复杂性,同时使系统更具有通用性。

3.1 高层工作模式主控状态机设计

该缓存系统有3种工作模式:写模式,读模式和数据重组帧模式。其状态转移图如图4所示。

 

系统在空闲状态等待SDRAM初始化完成,当SDRAM完成初始化以后进入准备状态,表示系统可以接收命令,在收到写命令后进入写工作模式,低层写辅助控制模块激活,当完成写操作命令后产生一写完成标志信号,反馈回主控系统促使主控系统完成状态跳转回到准备状态等待下一次命令,收到读取命令后系统进入读工作模式,低层读辅助控制模块开始工作当完成读取操作后产生一读完成标志信号,反馈回主控系统使其回到准备状态等待命令,同样系统收到数据重组帧命令后进人数据重组帧模式,低层重组帧辅助控制模块开始工作完成重组帧任务后产生标志信号控制主控状态机再次回到准备状态,等待下一次命令。

这种结构化状态机的设计,层次划分合理清晰,工作模式的切换只在主控状态机中实现,各低层辅助控制模块仅仅实现其特定的功能,完全没有交互。因此这种设计可以很方便地进行功能扩展,以后系统要增加新的工作模式,只需再加入一个状态,并单独设计其辅助控制模块即可,无需对原有工作模式进行改动。同时,这种分层设计符合模块化设计的思想,降低了设计的复杂性,易于调试。

3.2 低层写辅助控制模块的设计

写辅助控制模块用来实现对原始数据和第1次计算数据基于文件结构的存储。为了提高系统效率,第1次计算所需的数据和原始数据同时存储。其总体设计框图如图5所示。

 

[!--empirenews.page--]

写辅助控制模块在主控状态机进入写工作模式时激活,通过将原始数据分为2路,一路进入原始数据缓存控制模块实现对原始数据的缓存,当原始数据的数据量积累到SDRAM一次突发写所需长度时,该控制模块发出写标志信号通知写模式控制状态机,写模式控制状态机响应写标志信号,向SDRAM驱动控制器发出写指令字控制SDRAM将原始数据写入SDRAM的原始数据区;另一路进入1st计算数据构造与缓存控制模块,该模块用来完成1st计算数据的帧头与数据的构造和缓存,当帧头构造完毕时,通知写模式控制状态机,将帧头(包含数据存储首地址信息)写入到SDRAM的帧头区中,同时当新数据量达到一次突发写入时,将新数据写入SDRAM的计算数据区中,直到将所有数据都写入到SDRAM的对应区内,写模式控制状态机发出写完成标志信号,反馈给高层主控状态机。

3.3 低层读辅助控制模块的设计

读辅助控制模块,接收读指令字,该指令字包括帧数、帧长和偏移地址。帧数表征着本次命令要从SDRAM中读取多少帧数据,帧长表示每帧数据要读取的长度 (按采样点数算),偏移地址控制对数据的移位读操作。按照指令要求从SDRAM的高BANK区,读出数据送往后端。图6是其总体设计框图。

 

读辅助控制模块在主控状态机进入读工作模式开始工作,它先控制SDRAM驱动器从SDRAM帧头区中读取一个帧头,送入缓存及帧头更新模块,该模块一方面按照指令字更新帧头信息中的数据到达与结束时间,另一方面从帧头信息中找到本帧数据的存储首地址然后加上读指令字中的偏移地址算出本次对数据读操作的起始地址,该地址反馈给读模式控制状态机,控制SDRAM从该地址开始顺序读出数据,完成一帧数据的读取操作送往数据缓存模块,重复以上操作直到完成读指令任务,读模式控制状态机发出读完成标志信号,反馈给高层主控状态机。

3.4 低层数据重组帧辅助控制模块的设计

数据重组帧辅助控制模块,接收重组帧指令字,该指令字包括重组帧帧数、帧长、帧间隔以及抽取因子,控制SDRAM读取原始数据,生成新的需要的数据帧结构,并按文件结构将其写到SDRAM的计算数据区中。其总体设计框图7所示。

 

数据重组帧辅助控制模块在主控状态机进入重组帧工作模式时开始工作,新数据帧结构生成及缓存模块先构造第一帧数据的帧头信息,当帧头构造完毕后,它向重组帧模式控制状态机发出帧头完毕信号,状态机收到信号后向SDRAM发出写命令将新的数据帧头写入到帧头区中,然后它按照重组帧指令字的要求从SDRAM的原始数据区读出原始数据送往新数据生成模块,当新数据的数据量达到一次突发写长度时,再控制SDRAM将新的数据写入到SDRAM的重组帧数据区中,直到将一帧新的数据都存储到SDRAM中,记录此时的写地址并将其作为下一帧数据的存储首地址加入到下一帧帧头信息中,并发出构造第2帧帧头的命令,等待第2 帧帧头完毕标志,重复上面的操作,直到完成要求的重组帧指令。完成操作后重组帧模式控制状态机发出重组帧完成标志信号,反馈给高层主控状态机。

4 硬件平台及实测结果

在xilinx的开发工具ISE环境下完成了系统的整体设计与仿真,利用xilinx公司的xc2v3000-4fg676FPGA芯片和MICRONE公司的MT48LC32M1 6A2SDRAM芯片搭建了硬件平台,并进行测试。其实测结果如图8所示。

 

主控状态机接收上层的控制命令(写命令、读命令和重组帧命令)分别启动写工作模式、读工作模式和重组帧工作模式;低层各控制模块在完成任务时将完成标志 (写完成标志、读完成标志和重组帧完成标志)反馈给主控状态机控制其跳转到就绪状态继续等待下次命令。结果证明该缓存系统实现了预定功能,可以对数据进行更方便的操作与管理。

5 结语

本文提出一种基于文件结构存储方式的新数据缓存系统,利用FPGA设计结构化状态机通过对SDRAM的读写控制,完成了具有数据重组帧功能的缓存系统设计。系统具有速度快,可靠性好,灵活性强,功能扩展容易的优点。该系统已应用于实际项目试验,在基于实时复杂信号处理的缓存系统中有很好的应用前景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用

嵌入式开发是一种专门针对特定硬件平台设计和实现软件系统的工程实践,它涵盖了从需求分析、系统设计、编程实现、调试测试直到产品部署及维护的全过程。本文将深入探讨嵌入式开发的主要阶段,分解其流程并阐述每个步骤的关键要点,以便于...

关键字: 嵌入式开发 嵌入式软件
关闭
关闭