FLASH芯片 用于保存NiosⅡ中运行的程序代码和FPGA中的配置数据。在SoPC Builder中定制NiosⅡ系统时集成了CFI(通用FLASH接口)控制器。这样就可以很方便地使用FLASH芯片;SDRAM通常用于需要大量易失性存储器且成本要求高的的应用系统。SDRAM比较便宜,但需要实现刷新操作、行列管理、不同延迟和命令序列等逻辑。NiosⅡ系统中集成的SDRAM芯片接口能够处理所有的SDRAM协议要求,使SDRAM的使用方便。
CLOCK时钟模块,通过FPGA内部自带的数字锁相环将开发板上的晶振(50 MHz)提供的信号分别提供给NiosⅡ处理器和外部的SDRAM作为时钟。
Interface在该设计中为了方便地验证算法的正确,采用JTAG_UART接口实现PC和NiosⅡ系统之间的串行通信,通过在程序中调用相关驱动函数传输数据,可以在集成开发环境IDE的Console窗口中观察到运行数据。
A/D转换器采用串行12位A/D转换器ADS7822,其最高采样率位75 KS/s,将它设置为挂接在AVALON总线上的从设备,通过NiosⅡ操作系统发起询问传输获取数据。
键盘 用于用户输入信息给处理器。
在FPGA中有着丰富的存储器资源,对于验证的试验板,AItera公司提供的CycloneⅡ系列FPGA芯片EP2C20F484C8含有18 752个LE(Logic elements,逻辑单元),52个嵌入式RAM模块,35个18×18乘法器模块,4个数字锁相环,完全能实现中小规模的数字信号处理运算,在FPGA中的整体算法框图如图3所示。
2 外围处理逻辑的设计与实现
2.1 “乒乓”RAM的设计与实现
为了保持数据处理的连续性,这里采用“乒乓”RAM数据缓冲模式,即两组功能能相互切换且长度相同的RAM。它的工作原理是:其中一组RAM在进行储存操作时;另一组RAM进行读取操作,并且读取和存储的速率相同,当进行存储操作的RAM存储满,进行读取操作的RAM被清空时两者被外部控制逻辑功能互换,这样可以使两组RAM能连续不断地对A/D采集数据进行缓冲处理。如图4所示。
为了提高自相关计算的处理速度,每一组RAM均含有两个完全相同的RAM。在存储时存储相同的数据;在读取数据时其中一个RAM输入地址码从0开始依次读取数据形成序列x(n),另一个RAM在输入地址码加上k后读取数据形成序列x(n-k),然后将两列数列送人乘法器中进行运算完成自相关运算。这样虽然牺牲了FPGA中的存储空间,但是较之于单RAM分时读取数据的操作方式,提高了运算速率(减少2个总线读取周期)。如图5所示。
从式(4)可以看出:存储器输出的第一个数据为第一个记录数据往后延迟k个记录数据。这样就会出现一个问题:在RAM中记录的所有数据不能都用于自相关计算,当RAM1_2读取到倒数第N-1-k个数据时,RAM1_1的数据已经读取完毕,再进行计算均为无效数据(见表1)。