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所示。
写辅助控制模块在主控状态机进入写工作模式时激活,通过将原始数据分为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的读写控制,完成了具有数据重组帧功能的缓存系统设计。系统具有速度快,可靠性好,灵活性强,功能扩展容易的优点。该系统已应用于实际项目试验,在基于实时复杂信号处理的缓存系统中有很好的应用前景。