失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > zynqsd的读写数据_数据存储结构图 - Zynq7000 FPGA的高速信号采集处理平台的设计搭

zynqsd的读写数据_数据存储结构图 - Zynq7000 FPGA的高速信号采集处理平台的设计搭

时间:2019-01-10 11:14:18

相关推荐

zynqsd的读写数据_数据存储结构图 - Zynq7000 FPGA的高速信号采集处理平台的设计搭

通过FPGA搭建A/D数据高速缓存机制,A/D数据经过FPGA的片上缓存,写入DDR A/D数据区,作为高速缓存,DDR其他空间作为ARM控制系统的运行程序,与A/D转换器进行数据交互。数据存储结构图如图3所示。

图3 数据存储结构图

对于设定的10位100 Msps的A/D转换器,数据在片上缓存按16位读取,片上缓存到DDR按64位读取,配置DDR控制时钟为533 MHz,可计算得存储速度约为采样速率的40倍,这将大大地保证采样数据的有效存储,而且保证了DDR有足够的时间与控制系统进行数据交互。

2.3数据处理

ARM CortexA9核的运算能力,基本能满足日常的各种数据处理需求,在搭建的平台上有两种可选的数据处理方案。

第一种方案是在Linux系统下的数据处理。Xilinx提供了MicroZed上精简的Linux系统,由于添加了A/D转换器外设,仍然需要对系统的内核和设备树作一些修改,Xilinx SDK上提供了相关的工具,在Xilinx wiki和Xilinx github上也提供了完备的教程与资源,使得Linux系统的搭建相对比较轻松。系统搭建完成后,可在Linux下进行算法的编写或移植。

第二种方案是在Zynq7000上进行数据处理。注意有别于在其他ARM上进行数据处理的方案,因为Zynq7000是FPGA内嵌ARM的架构,所有数据的处理可以是FPGA和ARM部分共同完成的。Xilinx提供的SDK工具支持C++对ARM编程,使得算法的移植比较简捷。Xilinx还提供了高层次综合工具(HLS),可以使用C和C++对FPGA进行IP核编写与封装,通过这些工具可以使得ARM和FPGA共同完成数据处理过程,这将比ARM单独完成在速度上有不少优化。

第一种方案具有更高的普遍性与可扩展性,算法的移植要比第二种方案简单,后续系统的搭建与研发都在Linux平台上进行。但是Linux系统将失去更多的系统资源,在数据处理速度上会慢于方案二。方案二最大的特点是使用ARM+FPGA架构对算法进行优化提速,但其可扩展性低,要求设计人员对并行计算有一定的了解。因此,方案二适用于单一算法的优化处理,或是对算法速度和实时性要求比较高的场合,而且其系统稳定性会高于方案一。

2.4平台实现

根据设计的平台架构,在Vivado上搭建系统,图 4 为Vivado上框图(Block Diagram)。PS核通过AXI总线对FPGA上的IP核进行控制和交互。

图4 Vivado 框图

A/D转换器控制IP包括A/D差分数据读入、片上高速缓存及DDR写入控制。外设都通过AXI总线控制器访问及控制,综合后得到图5所示的资源消耗统计图,可见主要消耗的LUT(逻辑单元表)资源在1/3左右,仍然有很多扩展的余量,MMCM为Xilinx的混合模式时钟管理器,片上共2个,使用了1个,所以消耗占50%。

2.5运行情况

图6为在Vivado上捕捉的A/D数据,数据源为20 MHz的方波信号。测试信号只通过射频隔离器进入A/D转换器,所以波形有轻度失真,后续可根据具体信号的频率与特征对输入运放进行调试,可获得更好的采样效果。

图5 资源消耗统计图

图6 Vivdo Hardware Manager上捕捉的20 MHz方波

为对平台运算能力进行评估,在ARM核上对50 000个采样点进行了3层小波分解算法,结果耗时约500 ms,同样的算法在Matlab软件上耗时约200 ms,可见本平台的数据运算能力相当优秀。

为后续扩展,修改了MicroZed的Linux内核,加入了常用的系统工具,如gcc编译器、文本编辑器等,系统启动时间在40 s左右,在可接受范围。图7为在MicroZed的Linux系统上挂载SD卡,编译并运行的SD卡上的Hello World程序。

图7 MicroZed上的Linux系统操作

zynqsd的读写数据_数据存储结构图 - Zynq7000 FPGA的高速信号采集处理平台的设计搭建以及后续拓展...

如果觉得《zynqsd的读写数据_数据存储结构图 - Zynq7000 FPGA的高速信号采集处理平台的设计搭》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。