本系统设计10组数据进行滤波处理,取N=8。为了节约FPGA内部资源,滤波器的设计中采用移位寄存器代替除法器来实现平均滤波部分的算法。滤波模块的设计从采样数据的输入、数值累加、去极值、求平均值到数字量的输出共5个处理步骤,并且整个数据处理是“单流向”的,前一步骤的输出是下一步骤的输入,符合流水线设计要求。采用流水线设计方法可以提高系统的工作频率,从宏观上看数字滤波模块不占用额外的处理时间,对于超高速A/D转换控制中显得格外重要。从VHDL语言的角度看,流水线操作是用面积换速度思想的具体体现[3]。
定义滤波器端口类型见表2所示。
从仿真图中可以看出,当时钟处于上升沿,AD_START变为高电平时,启动A/D转换,依次读2个通道的数据。当读满10组时,进行滤波处理。当CPU发出读信号时,数据读出。可见,设计的A/D控制器和滤波器完全符合设计要求。
对设计程序进行编译,可以看出,EP1C12Q240C8总的逻辑元数目为12 060,本控制模块只占用了227个,完全达到数据采集及滤波处理功能,极大地减轻了CPU的负担,可以让CPU专注于其他的任务。是一种可行且值得推广的方法。
3 总体功能仿真及编译结果
设计完成,生成顶层模块。该模块可直接加入到体积修正仪的SOPC设计中。其总体功能仿真如图5所示。
从仿真图中可以看出,当时钟处于上升沿,AD_START变为高电平时,启动A/D转换,依次读2个通道的数据。当读满10组时,进行滤波处理。当CPU发出读信号时,数据读出。可见,设计的A/D控制器和滤波器完全符合设计要求。
对设计程序进行编译,可以看出,EP1C12Q240C8总的逻辑元数目为12 060,本控制模块只占用了227个,完全达到数据采集及滤波处理功能,极大地减轻了CPU的负担,可以让CPU专注于其他的任务。是一种可行且值得推广的方法。