网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 技术交流 >> 文章正文
  [组图]数据采集系统中精确时标的CPLD实现方法         ★★★ 【字体:
数据采集系统中精确时标的CPLD实现方法
作者:陈靖 张承…    文章来源:Internet    点击数:    更新时间:2007-4-12    

摘要 :介绍一种利用复杂可编程逻辑器件给高速数据采集系统中的采集数据贴上精确时间标签的方法 ,并利用MAXPLUSⅡ开发环境验证设计方案的正确性。此设计方案已经成功地应用到自行设计的高速数据采集卡中。
 
    关键词 :ADuC812;  时间标签 ;  CPLD ;  GPS
 
    引言
 
    基于GPS的双端行波故障定位系统是利用行波的第一个波头到达线路两端的时间差来计算故障点的位置 ,由于行波的传播速度非常快 (约为光速的9 8% ) ,这就对线路两端行波波头到达时刻的时间精度要求非常高。但相对于高速数据采集系统而言 ,单片机系统对时间的分辨能力是很低的 (设 51系列CPU的时钟频率为 12MHz ,则计数器 (T0或T1)对时间的最小分辨能力为 2μs)。而且单片机系统还不能直接得到故障发生时对应于静态RAM的确切地址 ,所以如果只利用单片机系统给采集数据贴上时间标签 ,时间精度和时间标签的可靠性就会大大降低 ,这样会直接影响到故障测距的精度。 
 
    1  相关内容简介
    1. 1  GPS简介
 
    全球定位系统 (GPS)是美国于 19 9 3年全面建成并运行的新一代卫星导航、定位和授时系统。电力系统中主要是利用GPS的精确授时。GPS接收器在任意时刻能同时接收其视野范围内 4~ 8颗卫星信号 ,其内部硬件电路和处理软件通过对接收到的信号进行解码和处理 ,能从中提取并输出两种时间信号 :一是时间间隔为 1s的脉冲信号 1PPS ;二是经串行口或RS - 232输出的与 1PPS脉冲前沿对应的国际标准时间和日期代码 (年、月、日、时、分、秒 ) [1]。GPS接收器提供的 1PPS信号实际上是以秒为计时单位、精度为 1μs的国际标准时间信号 ,这种信号在地球上任何地方都能比较可靠地接收到。因此 ,若以该信号作为标准时钟源去同步电网内运行的各时钟 ,则能保证各厂站时钟的高精确度同步运行[1]。
 
    1. 2  ADuC8 12简介
 
    ADuC8 12芯片是由美国AD(AnalogDevice)公司推出的微转换器。它是一个完整的数据采集微系统 ,它的组成为 :一个 8通道、5 μs转换时间、精度自校准、12位精度、逐次逼近的ADC转换器 ;两个 12位的数模转换器 (DAC) ;10. 5KB的闪存E2PROM ; 具有 16位计数 /定时器和 32条可编程I/O接口的8 05 1/8 05 2微控制器 , 25 6字节的SRAM[2]。由于A DuC8 12的特殊功能寄存器组中添加了一个DPP(地址为 8 4H) ,它与特殊功能寄存器DPH、DPL配合 ,使得ADuC8 12能够访问 16MB的外部数据地址空间。ADuC8 12的应用开发比较方便 ,它的内核是国内技术人员都很熟悉的Intel8 05 1,用户现有软件都可以直接移植。
 
    1. 3  MAX 7 000系列CPLD器件及MAXPLUSⅡ开发平台简介
 
    本次设计选用ALTERA公司的MAX 7 000系列器件。MAX 7 000系列的高性能和高密度是基于它先进的多重阵列矩阵架构 (MultipleArrayMatrix) ,它采用E2CMOS工艺制作 ,传播延迟最小为 3. 5ns ,可以实现速度高于 200MHz的计数器 ,并且为高密度的器件提供了非常宽的选择余地 ,非常适合高速设计时应用。该公司推出的MAXPLUSⅡ软件是一款易于使用的开发工具 ,其界面友好 ,集成化程度高 ,兼容工业标准 ,支持FLEX \MAX \ACEX1K等系列产品[3]。CPLD要实现的逻辑功能一般是在MAXPLUSⅡ环境下通过硬件描述语言 (VHDL)开发出来的 ,并能脱离硬件(CPLD)对设计方案进行仿真 ,在确认逻辑功能正确无误的情况下 ,通过并行口下载“烧结”到CPLD器件中。“烧结”有不同设计人员“思想”的CPLD器件所实现的逻辑功能是千变万化的 ,正因为如此 ,对CPLD器件的开发是相当灵活的。
 
    2  实现方案
 
    针对前面提到的问题 ,本文提出一种利用CPLD器件巧妙解决此问题的方法。高速AD转换器件、地址发生器、地址计数器、计时器在时钟源CLK( 5MHz)的同步下以统一的步调工作。ADuC812初始化时P3. 5置“0” ,P3. 4发出清零脉冲同时对地址发生器和地址计数器清零。在故障信号出现时 ,A DuC812对P3. 5置“1” ,计时器和地址计数器同时停止计数 ,暂态信号记录完毕后 ,ADuC812分时读出计时器中的值并将该数值保存在双口RAM中 ,此值即为精度为 0. 2μs的时间信息 ,分时读出地址计数器中的值并将该数值保存在双口RAM中 ,此地址的精确时间即为计时器中的计数值。这样就为高速数据采集系统中的采集数据贴上精确的时间标签 ,本系统的硬件原理图如图 1所示。


    2 . 1  ADuC812的工作过程
 
    ADuC812初始化时P3. 5置“0” ,同时P3. 4发出清零脉冲使地址发生器和地址计数器同步计数。ADuC812控制内部的ADC转换模块对经过调整的取自电流互感器二次侧的电流进行AD转换 ,采用半波比较 ,在每个工频内采集 36个点 ,分别用第n个点和第n + 18个点、第n + 1个点和第n + 19个点比较 ,依此类推 ,如果大于事先设定的门槛值即认为故障已经发生。ADuC812使P3. 5置“1” ,计时器和地址计数器同时停止计数 ,计时器中的数据即为地址计数器记录的对应于静态RAM相同地址采集数据的时间标签 ,由于高速AD转换器件的转换频率固定 (本次设计为 5MHz) ,所以 ,可以以此为基准为整个静态RAM中的采集数据贴上时间标签。
 
    2. 2  计时器和地址计数器的工作过程
 
    当STOP端口为低电平时 (P3. 5置“0”) ,计时器在 5MHz的时钟源下以相同的频率计数 ,由于它是一个 24位的计数器 ,从而确保了计时器能够记录一个整秒 ,并为一个整秒刻上了 0. 2μs( 15× 106 MHz=0. 2μs)的最小刻度。同时GPS发出的 1PPS信号的上跳沿给计时器清零 ,从而为计时器提供精确的时间基准 ,以消除计时器的累计误差。当STOP端口为高电平时 (P3. 5置“1”) ,计时器停止计数 ,在此状态下GPS发出的 1PPS信号的上跳沿不能对计时器清零。地址计数器的工作过程与计时器的工作过程类似 ,唯一的区别是地址计数器的清零信号 (CLR)是在初始化时由ADuC8 12的P3. 4口发出的 ,由于地址发生器和地址计数器共用同一个清零信号 ,从而确保地址发生器和地址计数器中的计数值完全相同。同理 ,当STOP端口为高电平时 ,地址计数器也停止计数 ,在此状态下ADuC8 12发出的清零信号不能改变地址计数器中的计数值。 
 
    2. 3  将地址计数器和计时器中的数据送至双口RAM
 
    由于ADuC8 12是一种 8位单片机 ,所以地址计数器和计时器中的数据只能“分批”地送至双口RAM中保存。所以要设计锁存器、译码电路和总线隔离电路 ,避免总线冲突以及保证总线上的数据能正确无误地传递。在本次设计中 ,当ADuC8 12的特殊功能寄存器DPP高 3位的值为“00H”时将计时器的高 8位数据通过ADuC8 12送至双口RAM中 ,依此类推 ,当特殊功能寄存器DPP高 3位的值为“05H”时将地址计数器的低 8位数据通过ADuC8 12送至双口RAM中保存。当特殊功能寄存器DPP为其他值时释放数据总线 ,便于ADuC8 12进行其他操作。 
 
    2. 4  系统的VHDL描述及其仿真结果
 
    系统的上述功能可由硬件描述语言 (VHDL)来实现 ,源程序如下 :
ENTITYSHIBIAOIS
PORT(CLK ,STOP ,PPS,CLR ,ALE :INSTD_LOGIC ;
CPUP2:INSTD_LOGIC_VECTOR( 2DOWNTO 0) ;
DB :OUTSTD_LOGIC_VECTOR( 7DOWNTO 0) ) ;
ENDSHIBIAO ;
SIGNALCLR1,SEL ,PULSE :STD_LOGIC ;
BEGIN
QQ_TEMP <=QQ&STOP ;
SEL <=′1′ ;
PROCESS(CLK ,STOP)
BEGIN
IF(STOP =′1′)THEN
COUNT_TIME <=COUNT_TIME ;
ELSIF(CLK’EVENTANDCLK =′1′)THEN
  IF(PULSE =′1′)THEN
COUNT_TIME <=(OTHERS =>′0′) ;
  ELSE
COUNT_TIME <=COUNT_TIME + 1;
  ENDIF ;
ENDIF ;
ENDPROCESS ;
PROCESS(CLK ,CLR)
BEGIN
IF(STOP =′1′)THEN
  COUNT_ADD <=COUNT_ADD ;
ELSIF(CLK’EVENTANDCLK =′1′)THEN
  IF(CLR =′0′)THEN
COUNT_ADD <=(OTHERS =>′0′) ;
  ELSE
COUNT_ADD <=COUNT_ADD + 1;
  ENDIF ;
ENDIF ;
ENDPROCESS ;
PROCESS(CLK)
BEGIN
IF(CLK’EVENTANDCLK =′1′)THEN
  CLR1<=PPS;
  IFPPS =SELANDCLR1=NOTSELTHEN
PULSE <=′1′;
  ELSE
PULSE <=′0′;
  ENDIF ;
ENDIF ;
ENDPROCESS;
PROCESS(ALE)
BEGIN
IF(ALE =′1′)THEN
  QQ <=CPUP2;
ENDIF ;
ENDPROCESS;
PROCESS(QQ_TEMP)
BEGIN
  CASEQQ_TEMPIS
WHEN”0001” =>DB <=COUNT_TIME( 23DOWNTO
16) ;
WHEN”0011” =>DB <=COUNT_TIME( 15DOWNTO 8) ;
WHEN”0101” =>DB <=COUNT_TIME( 7DOWNTO 0) ;
WHEN” 0111” =>DB <=” 0000”&COUNT_ADD ( 19
DOWNTO 16) ;
WHEN”1001” =>DB <=COUNT_ADD( 15DOWNTO 8) ;
WHEN”1011” =>DB <=COUNT_ADD( 7DOWNTO 0) ;
WHENOTHERS =>DB <=”ZZZZZZZZ” ;
  ENDCASE ;
ENDPROCESS;
  ENDBEHAV
  其仿真结果如图 2所示。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    前置放大器在移动医疗服务系
    便携式多通道大容量生理信号
    防腐监测仪的设计与应用
    基于AD1674的酶标仪的设计
    基于C/S模式的JRTPLIB库的测
    ffmpeg与jrtplib相结合应用
    blackfin模拟摄像头驱动中的
    可编程逻辑在数字信号处理系
    发现VDSP4.5一个BUG:单步调
    VDSP5.0双核工程下sml3中的变
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:AnalogCN安诺电子 湘ICP备06016315号