一种基于FPGA的复数浮点协方差矩阵实现

时间:2010-10-29来源:网络

  2 仿真结果

  可编程逻辑设计有许多内在规律可循,其中一项就是面积和速度的平衡与互换原则。面积和速度是一对对立统一的矛盾体,要求一个设计同时具备设计面积最小,运行频率最高,这是不现实的。于是基于面积优先原则和速度优先原则,本文分别设计了协方差矩阵的串行处理方案和并行处理方案,并用Altera\stratix\EP1S20F780C7进行板上调试。其调试结果表明,串行处理方案占用的资源是并行处理方案的1/4,但其运算速度却是后者的11倍。

  2.1 串行处理方案仿真结果

  如图5所示,clk为运算的总控制时钟;reset为复位控制信号,高电平有效;rd为读使能信号,低电平有效;wr为写使能信号,低电平有效;wr_clk为写时钟信号,上升沿触发;q_clk为读时钟信号,上升沿触发;ab_re(31:O)和ab_im(31:O)为乘法器输出的实部和虚部。q_t2为矩阵乘累加模块的同步时钟信号;clkll,state(3:O),clkl和state(3:0)是状态机的控制信号,控制矩阵运算规则。

串行处理方案仿真结果

  如图5所示,在100 ns时reset信号有效(即reset=‘1’),所有状态清零。从335~635 ns间,写使能信号有效(wr=‘O’)且有两个写时钟信号的上升沿到来,即向任意一个通道的FIFO中存入两个快拍采样数据,最后输出结果应该有两个矩阵,如图6所示。当FIFO为空时,运算停止,所有状态清零。等待新采样数据的到来。

串行处理方案仿真结果

  图5中,在350 ns时,读使能有效(rd=‘0’)且有一个读时钟信号的上升沿到来,所以empty信号存在短暂的不空(empty=‘O’)状态,捕获到这个信息,便触发单稳态触发器模块,产生具有121个clk时钟周期长度,占空比为120:1的q_clk信号,进行FIFO的读操作。

  在350~535 ns时间段,因为写时钟信号没有到来,所以FIFO为空(empty=‘1’)。从550 ns~24.75 μs时间段读时钟信号没有上升沿到来,整个设计处于第一个矩阵的运算过程中,即运算一个矩阵所需要的时间为24.2 μs。与此同时,第二个数据写入FIFO,empty一直处于不空状态(empty=‘O’)。

  在第一个矩阵运算结束之后,即24.6μs时,系统检测到empty=‘0’,开始读数据并触发第二个矩阵运算的时钟控制信号。如图6所示,在24.6μs时,empty=‘1’。FIFO中的第二个数据被读出,处于空状态。从24.85~49.05μs进入第二个矩阵的运算周期。

  在仿真时,输人数据为16位的定点数(1+j1;O+jO;2+j2;3+j3;4+j4;5+j5,6+j6;7+j7;8+j8;9+j9;A+jA),输出结果为32位的单精度浮点数。选择的主时钟周期为200 ns。在实际调试过程中,整个系统可以在50 MHz主时钟频率下正常工作。

1 2 3 4 5

关键词: FPGA 协方差矩阵 复数浮点 FIFO 信号处理

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版