基于NiosII处理器的通用AD IP核的设计与实现
来源:电子工程世界 作者:—— 时间:2010-04-26 07:00
FIR滤波器模块采用Altera公司提供的FIR IP核来实现,具有高性能、可配置、可重用等特点。设计者只需根据整个系统的需求以及所选用AD芯片的采样速率等参数确定滤波器的类型与系数,并对该IP核进行参数化、实例化,即可完成针对该款AD芯片的FIR滤波器模块的设计。因此这部分的设计对于不同的AD芯片是相对独立的,具有很好的通用性。
2.3 FIFO缓存模块的设计
为了连续和正确地采集数据,实现无缝缓冲,本设计利用了FIFO做数据缓存。由于TLC549是8位的AD芯片,故本设计采用1个512×8 bit 的FIFO来存储采样的数据。当FIFO中的数据存满时,它会向Nios II CPU产生一个中断信号。顶层应用程序可以通过中断服务程序将FIFO中的数据读到内存中进行处理。这样既不会造成数据的丢失,同时可以保证CPU较高的效率,很好地解决了上述的速度不匹配的问题。
FIFO缓存模块的设计对于不同的AD芯片是相对独立的,设计者只需根据所选用AD芯片的精度、采样速率、时钟速率等参数确定FIFO缓存的位宽和深度,并对FIFO进行参数化、实例化,即可完成针对该款AD芯片的FIFO缓存模块的设计,因此具有很好的通用性。
2.4 带Avalon-MM Slave接口的寄存器文件模块的设计
本文设计的带Avalon-MM Slave接口[4]的寄存器文件模块是具有Avalon-MM Slave 从端口的外设。它内部共有2个8位寄存器,具体结构和功能如表1所示。NiosII处理器可以通过Avalon接口采用“基地址+地址偏移量”的方式来访问这2个寄存器,从而实现对AD IP核的控制以及AD采样数据的读取。
对于一些比较复杂的AD芯片(如AD73360),往往需要对其写控制字、读状态字,这就需要增加寄存器文件模块中的寄存器个数来完成相应的逻辑功能。Avalon接口采用“基地址+地址偏移量”的方式来访问寄存器,这样就可以简单地通过增加地址线的位数并进行译码来实现,因此对于各种复杂的AD芯片具有很好的可扩展性和适用性。
3 整个IP核在NiosII系统中的硬件测试
本设计采用Verilog HDL语言建立了一个顶层文件tlc549_adc_ip.v,通过对AD控制器模块、FIR滤波器模块、FIFO缓存模块和带Avalon-MM Slave接口的寄存器文件模块进行实例化与互连,最终完成了整个IP核的设计,它的模块图如图7所示。
本文采用C++语言做了一个基于NiosII处理器的顶层应用测试程序,利用描点法将不断采集到的AD数据绘制成波形显示出来,从而完成对整个IP核的硬件功能测试。测试过程中,在AD芯片的模拟输入端输入一个由1 kHz正弦信号和100 Hz的正弦信号叠加而成的混合信号,整个系统的运行结果显示在NiosII IDE软件的Console控制台中,如图8所示。
通过对图8中的正弦波形以及采样到的数据进行分析与计算可知,采集到的信号频率是100 Hz,信号的幅度与外界的模拟输入信号完全一致,从而验证了整个IP核的功能正确性。整个IP核使用5 275个LE,占总数的15.8%,4 096个存储单元,占总数的0.8%。系统的主频能达到199.64 MHz。
上一篇:大功率LED的散热设计