FPGA的高速多通道数据采集控制器IP核设计
随着可编程逻辑器件的不断进步和发展,FPGA在嵌入式系统中发挥着越来越重要的作用。本文介绍的在电能质量监测系统中信号采集模块控制器的 IP核,是采用硬件描述语言来实现的。首先它是以ADS8364芯片为控制对象,结合实际电路,将6通道同步采样的16位数据存储到FIFO控制器。当FIFO 控制器存储一个周期的数据后,产生一个中断信号,由PowerPC对其进行高速读取。这样能够减轻CPU的负担,不需要频繁地对6通道的采样数据进行读取,节省了CPU运算资源。
1 ADS8364芯片的原理与具体应用
A/D转换芯片ADS8364是TI公司推出的专为高速同步数据采集系统设计的高速度、低功耗、6通道 (三相电压、三相电流)同步采样的16位A/D转换芯片。采用模拟和数字分别供电,在模拟输入端,有模拟参考电压输入、输出引脚和信号六通道正反相输入引脚;在数字端,主要包括控制ADS8364的读/写、复位、片选引脚和转换结果输出总线。
ADS8364芯片的转换过程为:当ADS8364的HOLDX保持至少20 ns的低电平时,转换开始。当转换结果被存入输出寄存器后,引脚EOC的输出将保持半个时钟周期的低电平,以提示数据分析处理器进行转换结果的接收,处理器通过置RD和CS为低电平可使数据通过并行输出总线读出。在转换数据的接收过程中,ADS8364芯片各引脚工作的时序达到协调一致,才能保证监测设备良好工作,具体时序安排如图1所示。
ADS8364芯片的数据输出方式分别由BYTE、ADD与地址线A2、A1、A0组合控制,转换结果的读取方式由电能质量监测系统中采用的数据分析处理器决定,一般可取直接读取、循环读取和FIFO方式的任何一种。根据BYTE为0或者为1可确定每次读取时得到的数据位数,根据ADD为0或者为1可确定第一次读取的是通道地址信息还是通道A/D转换结果。在实际应用中,我们结合了ADS8364模数转换器中的6个16位ADC可以成对同步工作的能力,3 个保持信号(HOLDA、HOLDB、HOLDC)可以同时被选通,其转换结果将保存在6个寄存器中。对于每一个读操作,ADS8364均输出16位数据,最高位为符号位。根据图2所示的ADS8364循环读取方式工作时序,需设置BYTE为0,A2、A1、A0分别为1、1、0。
2.3 A/D转换芯片控制模块及顶层文件的设计
控制器模块的设计:
①根据ADS8364的工作原理:HOLDX保持至少20ns的低电平,转换开始,所以控制器需根据时序要求产生 HOLD周期信号。
②转换结束后根据EOC的响应状态,需要置RD和CS为低电平,使数据通过并行输出总线读出。下面是根据EOC的状态改变RD值的 Verilog描述:
根据图1的工作时序和图2的循环读取方式以及对数据采集频率(12.8 kHz)的要求,对芯片相应的引脚进行控制,并和FIFO进行连接使采集的数据能够按照循环方式写入FIFO。采用Verilog硬件描述语言实现上述功能,并建立顶层文件正确连接各个功能模块。
顶层文件的Verilog描述如下:
如图3所示,时钟分频部分的输出与FIFO的数据写入时钟、AD_Ctrl的时钟和A/D转换芯片的时钟相连接。AD_Ctrl部分主要对ADS8364 芯片进行控制,其中输出RD也连接到FIFO的写使能端,对FIFO的数据写入进行控制。FIFO的读时钟接到系统时钟,读使能由CPU控制。当FIFO 写入一个周期的数据后,由prog_full产生中断信号,CPU响应并对FIFO进行读取。
2.4 仿 真
对顶层文件进行综合,并在Mode-lsim中对其进行仿真。数据采集控制器的仿真结果如图4所示。当holdx_n为低电平时,启动A/D转换,完成后根据EOC_n的低电平信号产生6个RD_n的低电平信号,循环读取数据。当FIFO存储了一个周期的数据后,CPU置FIFO的读使能端口为高电平,对 FIFO中的数据进行高速读取。若FIFO中数据为空,empty为高电平。
3 使用Xilinx嵌入式开发工具EDK设计IP核
嵌入式开发软件EDK为设计人员提供了自动化设计向导—— Base System Builder(BSB),可以指引工程师快速完成整个设计过程。使用BSB创建工程,在创建完成之后使用EDK自带的CIP(Create and Import Peripheral Wizard)添加用户自定义IP核,生成的用户IP核保存在EDK工程目录下的pcore文件夹。用户IP核目录如图5所示。
其中文件夹data用于存放用户IP的配置文件,如.prj文件、.mpd文件和.pao文件等;文件夹hdl用于存放用户IP的HDL代码,即.v或者.vhd文件;而devl(simmodels)文件夹中的工程可以使用户在ISE平台对工程进行设计、综合与仿真,如果设计需要加入网表,可以放在 ne
- 一种消防应急灯具专用控制芯片的设计(11-02)
- 基于FPGA的8段数码管动态显示IP核设计(02-03)
- 基于FPGA和IP Core的定制缓冲管理的实现(08-14)
- 基于Altera ASI IP核的ASI发送卡实现(02-25)
- 基于EDA或FPGA的IP保护的实现(09-16)
- 基于PicoBlaze软核的TFT液晶显示控制(09-16)