3.1.2 硬件FFT IP CCore的定制与集成
FFT运算器采用FFT Core实现,其引擎结构为双Sin—gle—output,I/O数据流采用突发(Burst)方式。FFT Core采用Atlantic Interface协议,输入接口视为主接收器,输出接口视为主发送器。
具体的工作流程:系统复位后,数据源将master sink day置位,表示有采样数据等待输入;作为回应,FFTCore将mas—te_sink_ena置位,表示可以接收输入数据;数据源加载第一个复数数据,同时master_sink_sop置位,表示输入数据块的起始;下一个时钟,master_sink_sop被清零,输入数据按照自然顺序被加入。输入数据达到512点时。系统自然启动FFT运算。通过inv_i信号的置位/清零可以改变单个数据块的FFT转换方向,inv_i信号必须和master_sink_sop信号严格同步。当FFT转换结束时,子接收器已经将master_source_dav信号置位,表示子接收器可以接收FFT的转换结果:同时,master_source_ena信号置位,FFT Core按照自然顺序输出运算结果:在输出过程中.master_source_sop和mas—ter_soure_eop信号被置位,表示输出数据块的起始和结束。具体接口定义如表1所示。
3.1.3 FIFO硬件设计
FIF0是一种先进先出的数据缓存器,根据FIFO工作的时钟域,可以将FIF0分为同步FIF0和异步FIFO。FIF0的一些重要参数如下:
FIFO的宽度:指的是FIF0一次读写操作的数据位。
FIFO的深度:指的是FIFO可以存储多少个N位的数据。
设计中采用了宽度为16位,深度为256的异步FIF0。
3.1.4 I2C总线设计
I2C总线是由数据线SDA和时钟SCL构成的串行总线.可发送和接收数据。I2C总线在传送数据过程中共有3种类型信号,分别是:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8 bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。其数据传送过程如图4所示。
3.1.5 串转并数据采集模块设计
由于从FPGA音频接口采集来的信号是串行的,故此处理前应将此串行信号转成并行信号,然后送NIOS核处理器进行处理。
设计中只需要16位数据,而从FPGA音频采集输出端ADCDAT输出的24位的串行数据,考虑到数据计算可能溢出造成失真,因此必须对采样所得数据作近似处理,故取其高15位数据,并将高位补零从而得到16位数据。其设计接口包括:clk为系统时钟;AUD_ADCDAT为音频采集数据输入;data_out为并行输出;Wr为输出使能信号,用于控制向外输出完整的数据。其仿真波形如图5所示。