基于可编程逻辑器件实现多路数据采集系统的设计

可编程逻辑

1339人已加入

描述

对于国内而言,正如DSP在20年前出现的情形一样,如今,FPGA正处于数字信号处理技术的前沿。而DSP都是基于一种精简指令集的计算机体系架构,其固定的硬件结构和数据总线宽度已不适合许多面向用户型(可重配置型)的DSP应用系统;其速度也受制于CPU的指令顺序执行的基本工作模式,这已成为DSP处理器一个难以突破的瓶颈。

现代的大容量、高速度FPGA器件通常都内嵌有可配置的高速RAM、PLL、LVDS、LVTTL以及硬件乘法累加器(MAC)等DSP模块,而且都提供了支持以低系统开销、低成本实现高速乘-累加(MAC)超前进位链的DSP算法。 在许多宽带信号处理领域(如无线通信、多媒体系统、卫星通信、雷达系统等),FPGA技术具有更广阔的应用前景,已代替DSP实现许多前端的数字信号处理算法。用FPGA来实现数字信号处理可以很好地解决并行性和速度问题,而且其灵活的可配置特性,使得FPGA构成的数字信号处理系统易于修改、测试及系统升级,能降低设计成本,缩短开发周期。

本文应用FPGA技术针对一个远程监控系统的多路数据采集系统,实现了64bit位宽的海量数据实时采集、存储以及时钟匹配。

1 数据存储板的结构

图1为数据采集系统中数据存储板的基本框图,数据采集时钟为20MHz,远低于SDRAM存储的工作时钟100MHz,需要进行缓冲处理。通用CPU的SDRAM控制器只支持32bit位宽数据,而且容量也很难做到480M,笔者运用Altera公司的Cyclone系列高性价比EP1CQ240C8定制SDRAM控制器。

EP1CQ240C8是该数据存储板的核心器件,其主要功能有:完成数据的缓冲;对SDRAM的读写时序控制;完成EPP(增强型并口)协议与计算机通信;提供SDRAM的100MHz工作时钟;产生SDRAM所需的定时刷新、充电、配置等控制命令;提供SDRAM的地址空间等。SDRAM选择HYNIX公司32M×8bit×16组的HYM72V64636BT8。

20MHz晶振为EP1CO240C8提供输入时钟,同时被EP1CQ240C8内部的PLL倍频到100MHz和跟随的20MHz,前者被CY2309功分到SDRAM,为SDRAM的存储器组提供工作时钟;后者被时钟驱动芯片74FCT3807分为多路,为A/D提供采样时钟。

2 EP1CQ240C8与SDRAM的接口设计

SDRAM的工作模式配置

监控系统

HYM72V64636BT8具有同步接口,其所有输入和输出都与系统时钟CLK上升沿同步,由输入信号RAS、CAS、WE组合产生SDRAM控制命令,完成相应的模式寄存器设置、刷新、激活、读写、预充电等操作。

SDRAM在工作之前必须设置模式寄存器,其读写工作模式分为普通模式和页模式。普通模式的数据长度可以为1,2,4,8;页模式和普通模式不同,一旦确定行列地址,则数据按照工作时钟(本系统工作时钟为100MHz)读出或写完一页(1024列)。

为了编程方便,笔者选取读写不同的工作模式:向SDRAM写入数据时采用页模式,写满后读出数据时采用是突发长度为1的普通模式。读写操作完成后用PCH命令或BT命令预充电中止读或写操作。在没有读写操作的时候,每64ms必须用ARF命令刷新存储单元,防止数据丢失。

SDRAM的控制接口设计

根据本系统SDRAM的工作要求, EP1CQ240C8与SDRAM的接口电路方框图如图2示,笔者对FPGA的内部硬件资源进行了详细配置。

(1)PLL(锁相环)完成时钟管理。

(2)地址产生模块由计数器构成,包括写地址模块和读地址模块。写地址模块产生的地址同时送到双口RAM和状态机,状态机发出初始化、刷新、读写、充电等命令,交给仲裁机制,在不冲突的情况下完成命令的译码和地址的行列复用,这时数据被存入到由地址的行和列所确定的SDRAM地址中去。数据存满SDRAM后再切换到读地址模块,通过读地址模块产生读地址将数据读出到并口,然后导入计算机进行相关的处理。

(3)仲裁机制完成对读写命令和刷新命令的仲裁,杜绝同时操作;命令译码主要用于控制SDRAM的各种时序,完成SDRAM的读写和刷新。

(4) 刷新控制电路主要完成对SDRAM数据刷新进行计时,确保每64ms刷新8192行数据;刷新控制电路主要由781计数器构成。由于SDRAM工作时钟是100MHz,SDRAM要求在64ms之内刷新8192行数据,因此该计数器应小于:64ms/8192/0.01us=781.25 。当计数器计满781次后,刷新控制电路向仲裁电路发出刷新请求,仲裁机制根据请求向SDRAM发出刷新命令。

(5)状态机是SDRAM控制器的核心。在程序方案上,笔者设计了两个模块:一个模块产生状态机命令和控制命令;另一个模块完成命令的译码,包括读写、刷新、充电等操作,将命令翻译成SDRAM的命令码字,完成特定的操作。

监控系统

在本系统中,由于多通道数据采集后进入FPGA的时钟是20MHz,而FPGA的状态机以及SDRAM的时钟是100MHz,因此,数据需要做缓冲处理。笔者利用FPGA内部的硬件资源构造双口RAM解决时钟匹配问题,同时又考虑到SDRAM工作在页模式,因此将双口RAM的容量构造成SDRAM一页的数据容量1024×64bits,这样数据缓冲一页就存入一页。双口RAM作为FPGA配置中的关键模块,下面将详细介绍双口RAM的设计。

3 双口RAM的构造

由于本系统中数据读出时钟是写入时钟的五倍,所以必须注意时钟追赶的问题,即读出一定要滞后写入,否则读出的数据就不是存入双口RAM的数据。

笔者的编程思路是:当数据以20MHz时钟写入到双口RAM容量的7/8时,便以100MHz时钟开始读出,读完一页后必须就等待下次写满7/8。读出的一页数据刚好存满SDRAM的一页,依次类推,这样就完成了数据的缓冲。当然,读写地址的产生是FPGA内部用计数器实现的,因此,就得到如图3示的算法流程图。

监控系统

图3中clk1为20MHz时钟,clk2为100MHz时钟;count1[9:0]输入到双口RAM的wraddress[9:0],count2[9:0]输入到rdaddress[9:0]。并和“1110000000”比较,判断是否写满了双口RAM的容量的7/8,如果写满了就触发100MHz的读出时钟,数据开始从双口RAM读出。根据上述思路,利用Altera公司的开发平台QUARTUS II完成编译、仿真得到双口RAM的功能仿真波形如图4示,由仿真结果可知该方案很好地解决了时钟追赶问题,完成了数据缓冲。

监控系统

4 数据存储板的性能测试

笔者利用在FPGA内部资源编写了一个测试模块,用它产生有规律的数据信号(模拟采样的数据),并存入SDRAM,当存满后通过EPP将数据存储到计算机,利用相关软件读出保存到计算机的数据如图5示,仿真结果表明存入的数据与测试模块产生的数据一致,存储板能正常工作。

监控系统

本文作者的创新点:

在本监控系统中,充分利用了FPGA内部的硬件资源—嵌入式逻辑块,应用软件编程解决了64位宽的海量数据缓冲、分页存储及系统时钟匹配问题,发挥了FPGA技术在信号处理领域的重要作用。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分