基于NiosII处理器的通用AD IP核的设计与实现
时间:11-09
来源:互联网
点击:
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。
为了验证AD IP核的通用性与适用性,本文还针对另外两款AD芯片(AD7476和AD73360)进行了IP核制作与测试,且测试信号与TLC549 IP核的测试信号完全相同。
AD7476 IP核采用了上述通用AD IP核的设计方法,它的AD控制器模块是针对AD7476这款 12位串行AD芯片而设计的。FIR滤波器模块的参数与TLC549 IP核中的FIR滤波器参数相同,只是输入数据的位宽设置为12位。由于AD7476芯片的采样速率比较快,所以FIFO 缓存模块的深度设置为1 024,位宽设置为12位,这样可以使NiosII CPU的效率更高。
AD73360 IP核同样也采用了上述通用AD IP核的设计方法,它的AD控制器模块是针对6路16位串行AD芯片AD73360设计的。它的FIR 滤波器模块的参数和FIFO 缓存模块的参数与TLC549中的相应参数设置相同,只是把位宽设置为16位。由于控制的过程中需要对AD73360芯片内部的寄存器进行读写,所以在寄存器文件模块中增加了两个寄存器(1个读状态字寄存器,1个写控制字寄存器),从而完成对AD73360芯片内部控制与状态寄存器的读写。
这两款AD IP核与TLC549 IP核的比较如表2所示。由表2可以看出,本文提出的基于NiosII处理器的通用AD IP核对于不同精度、不同采样速率、不同时钟速率、不同通道数的AD芯片都适用,并且具有较高的性能和灵活性。在实际应用中,如果对该IP核所占用的资源数有一定的限制,可以自行编写FIR滤波器模块,这样能大大降低IP核所占用的资源数,从而实现整个IP核的性能与资源之间的平衡。
本设计采用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。
为了验证AD IP核的通用性与适用性,本文还针对另外两款AD芯片(AD7476和AD73360)进行了IP核制作与测试,且测试信号与TLC549 IP核的测试信号完全相同。
AD7476 IP核采用了上述通用AD IP核的设计方法,它的AD控制器模块是针对AD7476这款 12位串行AD芯片而设计的。FIR滤波器模块的参数与TLC549 IP核中的FIR滤波器参数相同,只是输入数据的位宽设置为12位。由于AD7476芯片的采样速率比较快,所以FIFO 缓存模块的深度设置为1 024,位宽设置为12位,这样可以使NiosII CPU的效率更高。
AD73360 IP核同样也采用了上述通用AD IP核的设计方法,它的AD控制器模块是针对6路16位串行AD芯片AD73360设计的。它的FIR 滤波器模块的参数和FIFO 缓存模块的参数与TLC549中的相应参数设置相同,只是把位宽设置为16位。由于控制的过程中需要对AD73360芯片内部的寄存器进行读写,所以在寄存器文件模块中增加了两个寄存器(1个读状态字寄存器,1个写控制字寄存器),从而完成对AD73360芯片内部控制与状态寄存器的读写。
这两款AD IP核与TLC549 IP核的比较如表2所示。由表2可以看出,本文提出的基于NiosII处理器的通用AD IP核对于不同精度、不同采样速率、不同时钟速率、不同通道数的AD芯片都适用,并且具有较高的性能和灵活性。在实际应用中,如果对该IP核所占用的资源数有一定的限制,可以自行编写FIR滤波器模块,这样能大大降低IP核所占用的资源数,从而实现整个IP核的性能与资源之间的平衡。
电子 嵌入式 单片机 ARM Altera FPGA 滤波器 Verilog Quartus 仿真 DSP 低通滤波器 振荡器 示波器 相关文章:
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 周立功:如何兼顾学习ARM与FPGA(05-23)
- 初学者如何学习FPGA(08-06)
- 为何、如何学习FPGA(05-23)
- 学习FPGA绝佳网站推荐!!!(05-23)
- 我的FPGA学习历程(05-23)