×
嵌入式开发 > 详情

基于FPGA的数据采集及显示

发布时间:2020-07-03 发布时间:
|

摘 要: 在电力系统谐波分析中,模数转换(ADC)电路是影响系统检测性能的主要环节之一。基于NiosII谐波分析系统具有逻辑控制能力强、信号处理实时性高、系统抗干扰能力强等特点。以Altera公司的DE2开发板为平台,实现了采样电路的硬件设计;在Quartus II 中用Verilog HDL语言完成了与FPGA的接口设计,并最终实现VGA显示。
关键词: ADC;NiosIIFPGA谐波分析VGA

谐波是电力系统的一大公害,消除谐波污染,把谐波含量控制在允许范围内,已经成为主管部门和用电单位的共同奋斗目标。而要消除电网中的谐波,首先就要对谐波进行准确测量,谐波测量工作已经越来越引起人们的关注[1]。A/D转换电路是电力系统谐波测量中必不可少的一个重要环节,是电力系统谐波测量系统前端的核心。
FPGA因具有强大的逻辑控制能力、高速的运算能力、灵活的可编程性,已经越来越多的被用于各种数字系统。在FPGA内部一般都内嵌有可配置的高速RAM、PLL、LVDS、LVTTL以及硬件乘法累加器等DSP模块。用FPGA模块来实现数字信号处理可以很好地解决并行和顺序性的矛盾,直至速度问题,而且其灵活的可配置性,使得FPGA构成的DSP系统非常易于修改,易于测试及硬件升级。在QuartusII开发软件中用Verilog HDL硬件描述语言能够很容易进行逻辑电路设计,并且在FPGA中可以实现用硬件进行配置,可有效降低软件运行时间和软件设计复杂程度[2]。因此,FPGA非常适合在电力系统谐波测量系统中作为核心器件。
本文中采样电路选用AD73360,在QuartusII中用Verilog HDL硬件描述语言实现了AD73360及VGA与FPGA的接口设计,最后通过实验验证了设计的正确性。
1 系统总体方案
系统以Altera公司的DE2开发板为平台,系统框图如图1所示。信号采集单元核心器件为电压、电流互感器。互感器将待测高压、大电流信号线性转换为合适的微弱电压信号,该微弱电压信号经信号调理电路放大为合适的电压信号,经低通滤波电路滤除高于2 500 Hz的高频噪声,然后送到A/D转换单元进行A/D转换,转换后形成数字信号存储到存储器中,再送到FFT处理单元进行快速傅里叶变换,变换后得到的数据再储存到存储器中,再进行一系列相关运算,如:谐波电压含有量、谐波电流含有量、各次谐波电压含有率、各次谐波电流含有率等,最后经VGA进行显示出波形和相关数据。

2 AD73360的配置[3]
2.1 A/D电路设计

A/D电路如图2所示。A/D电路可分为以下三个部分。

(1)电源部分。AD73360有5 V和3 V两种工作模式,为了能够与FPGA实现直接连接,采用3 V供电(FPGA接口电平为3.3 V左右),这样无需外加电平转换电路,可以简化电路设计、降低系统功耗、节约成本。
(2)模拟输入部分。AD73360有6个通道,每个通道又分为正端VINP和负端VINN,每个通道都可以由AD73360内部控制寄存器配置为差分输入和单端输入两种方式,本设计采用单端交流耦合输入方式。
(3)与FPGA接口部分。AD73360采用六线制串行接口,能很方便与外部电路实现接口连接,为了实现AD73360与FPGA的连接,就需要在FPGA中设计一个控制器,在Quartus II中设计的A/D控制器AD_controller如图3所示。

2.2 AD73360的配置
AD73360为可编程A/D转换器,每次启动系统都要对其进行配置。对AD73360的配置有两种方式,一种方法是用程序来实现,另外一种方法是利用FPGA具有很强的逻辑控制能力,用硬件实现对AD73360的配置,后者虽然会占用一些硬件资源,但是这样可以大大简化系统程序设计,节约软件运行时间,因此本设计采用后者。系统上电或者手动复位后,AD73360被复位,在复位状态下,AD73360的八个控制字寄存器被初始化为00H,同时AD_controller也被复位到初始状态,SE被置1,从而AD73360串口进入工作状态。当复位信号变为高时,AD73360进入编程模式,该模式下,AD73360数字端接口时序如图4所示。在编程模式下,AD73360的SDOFS引脚以主时钟频率的1/2048的频率产生输出数据标志信号,当控制寄存器被正确配置后,将产生与设定采样频率同频的SDOFS标志信号,每个输出标志信号以后SDO引脚将连续输出16位随机数据,这时候的数据是随机产生的,不是有效的A/D转换数据。与此同时,在SCLK时钟的下降沿,若SDIFS标志位有效,则AD73360于下一个SCLK下降沿开始读取SDI引脚数据,并存到AD73360中的串行寄存器。

撤销复位信号后,AD_controller开始对AD73360进行配置,配置过程如图4所示。系统复位后标志信号GO被置1,经过三个SCLK时钟周期后GO被置0,此时把第一个配置数据赋给SD,标志信号GO保持一个SCLK时钟周期后,又被置1。当标志信号GO=0时,AD_controller进入下一状态检测SDOFS,当检测到SDOFS由1变为0时,进入写数据状态,从SD最高位开始由高到低逐位往SDI端口写数据,每个SCLK时钟周期写一位,直到写完16位数据,AD73360根据这16位数据的前8位数据针对把后8位数据写入相应AD73360的相应控制寄存器,写完16位数据后,系统把SDIFS引脚设为高阻状态,并产生一个SCLK周期的END(对END置1)信号,作为一个控制字配置完成的标志。系统检测到END标志信号后,在未对所有控制字进行有效配置的情况下,把下一个控制字赋给PDATA,并产生一个SCLK周期的GO(把GO置0)标志信号,系统检测到GO标志信号后,再检测SDOFS,在SDOFS为1的下一个SCLK开始通过SDI端口向AD73360写下一个控制字,直到8个控制字都被写入AD73360,配置完成后,AD73360进入数据模式,开始进行A/D转换。完成配置任务后AD_controller结束配置状态,把SDI设为高阻状态,并开始接收SDO引脚的数据,并把接收到的串行数据转换成16位并行数据[4]。
在QuartusII开发工具中,用Verilog HDL语言完成了对AD73360的配置,并进行了功能仿真,功能仿真结果如图5所示。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430单片机硬件知识-复位