多功能计数器

[复制链接]

150

主题

445

帖子

1900

积分

审核员

Rank: 9Rank: 9Rank: 9

积分
1900
查看: 2261回复: 2 发表于 2020-1-3 08:41:35   只看该作者
本帖最后由 secret 于 2020-1-3 10:59 编辑

摘要:
本设计给出了以 CycloneII 型 FPGA EP2C8 为核心的多功能计数器的基本原理与实现方案。FPGA片内包括测频模块,测相模块,DDS 查表模块及NIOSII 处理器;NIOS 核调节频率字与相位字控制DDS 查表模块并经片外高速DA DAC900输出正弦波。测频测相模块的片外输入采用TI公司的宽带运放 0PA699放大,并使用TL3116构建迟滞比较器整形为方波送入FPGA片内,由可编程逻辑在FPGA内部组建的测频测相逻辑单元,采用等精度测量方法测得结果并送NIOS 核处理,在LCD上显示。经测试,频率测试范围达到 1Hz~14MHz,准确度达0. 1ppm,相位测量范围 0~360°准确度1°,信号灵敏度达到 8mvRMS。

关键词:频率测量 相位测量 DDS NiosII SOPC

方案论证与设计
1.1方案设计
1.1.1频率测量方案
方案一:快速傅里叶变换
数据由AD离散后,经FIR滤波,送入基-4快速傅里叶变换引擎进行多级蝶形运算,从3组ROM表中取出旋转因子乘入每次蝶形运算,对每级计算输入数据进行定浮点动态指数处理,在蝶算单元之外对存放每级输入输出数据的多组双口RAM的地址用逻辑模块进行调序来实现连贯的log4N级蝶算。对所得正弦余弦结果,通过CORDIC算法,经大面积逻辑单元的移位及流水线操作得到信号在整数倍基频处的模量。即完成时域到频域的转换。

方案二:等精度计数
将正弦信号进行迟滯比较转化为同频率的方波信号,在FPGA内,通过逻辑模块实现等精度频率测量并送NIOS核处理。测得ls左右闸门时间内整周期待测信号的时间段中,低频待    测信号和高频参考信号周期累计数之比,乘以参考频率即得带测信号频率。

对于以上两种方案进行比较,方案一速度快,可达到实时性测量,测量频率范围宽,但因频率分辨率完全依靠离散博里叶变换的点数。逻辑单元和RAM的限制使得PFT不可能达到高频率分辨率,仅适合多频率混合时的测频。而方案二可在极小的消耗下实现非常精确的分辨率,在信号失真度较小,且外国环境稳定时是测频的理想方案。

1.1.2相位测量方案
方案一:将两路同频信号在时域叠加,经PFT运算后,求得频域实部与虚部的模量之比的反正切值,即为正交分离下的正弦余弦相位差,作处理得到两路正弦相位差。

方案二:将被测的两路正弦波信号经比较器整形成方波信号,利用异或门电路进行鉴相处理,将得到的脉冲序列经过AD637真有效值-直流转换芯片,测出该脉冲序列的有效值,该有效值与脉冲序列的占空比成正比,从而反推出两信号的相位差。

方案三:测得两同颊率待测信号对应跳沿的时间差中时钟脉冲的个数,与整周期时钟脉冲数比较,从而得出相位差。

比较三种方案,方案在二分之取样频率内整倍取样频率时的幅值可轻易达到的8位以上分辨率,因而计算出的相位准确度较高,但在时域上将两信号叠加所引入的误差难以很好控制,导致最终效果差。方案二在低频段时,AD637响应不平坦,转换精度有限。方案三在两信号相差较小或频率较高时,将导致相差时间计数脉冲数量不足,导致下降,但其实现简单方法简单可靠,误差最小。

1.1.3移相信号发生器方案
方案一:使用成品DDS芯片AD9851, AD9851是ADI公司的一-款成品DDS发生芯片,该芯片的相位累加器为32位,而相位分辨率仅有四位,换算为仅有16种相移角度。

方案二:在FPGA内建查找表实现的程控DDS模块。在相位字的基础上频率字自累加作为ROM表地址,查表输出数据到DA:

比较两种方案,方案一移相能力无法满足本题需要:方案二的控制更灵活。

1.2主要器件型号
本设计中使用的主要器件为TI公司制造,分别为输出正/负可变电压集成三端稳压块LM317LM337,低压差线性稳压芯片TPS78633.TTL 集成施密特触发器SN74LS14,宽带高增    益限压放大器 OPA699,单电源 Rail-to-rail 双运放 OPA2350.以及超快低功耗精密比较器TL3116

3端1.5A可调正/负电压稳定器LM317/LM337具有高达1.5A的最大输出电流,内管过热、过流保护和短路保护,宽输入电压范围(最高 40V), 全温度范目内最大 0.7%的温度系数,其具有极大的灵活性,与稳定性,为系统提供土5V电源。

单输出低压差1.5A线性稳压器 TPS78633具有高达1.5A的最大输出电流,具有超低噪声、高电源抑制比等优点.0.4V的低压差使其能够在5V的电源下稳定提供可靠的3.3V系统电源,其内置的过流过热保护提高的系统的稳定性。

OPA699是宽带高增益限压放大器,其高增益稳定的特性、典型 1400Vus 的压摆率和260MHz的带宽增益积满足了本方案所要求的高增益(10倍)、宽带(1Hz~-10MHz):OPA699配合外部电阻构成的增益共100倍的两级前级放大器能够将最小10mVms 的小信号放大到整形系统所要求的范围。

TL3116是一款低功耗、超高速精密电压比较器,10ns的建立时间能够满足本方案要求的 10MHz信号比较,并有一定的裕度,3mV 的失调电压充分保证了比较门限的精度,14.7mA的通道消耗电流降低了系统能耗,5V的输出电平兼容后级整形电路。本方案中TL3116用来构造迟滞比较器将前级送来的放大后的信号转换为方波信号。

SN74LS14是一款TTL集成6施密特反相器,在本方案中用来做后级信号整形输入至FPGA.

二系统实现
2.1原理分析与硬件电路图
该系统由 FPGA片上数字部分及其片外模拟环境组成:
总系统框图为:

01.jpg

2.1.1相位差测量模块
相位测量部分的实现原理为:通过测量两路波形异或时间和整周期时间内多考脉冲数之比以及超前滞后情况来求得相位差。具体时序如图

01.jpg

    为避兔由于斯密特触发器导致的方波占空比不为50%时对相位测量所造成的麻烦,首先对两路方波按周期交替取高低电平,再对处理后的两路待测方波取异或,对一周期区域内参考脉冲及异或区域内的参考脉冲分别计数。(图中结果分别为100和56)异或区域脉冲的一半比上整周期脉冲数,即为相位差。同时在第一个待测方波的上升沿判断超前滞后情况并给出标记。经一周期测量后数据和标记保持至下次复位,待NIOS读取。

2.1.2频率测量模块
频率部分呆用等精度测量法,在整局期的待测信号时间内同时对待测信号和参考脉冲进行周期计数。由两周期数之比及参考脉冲频率可得频率测量结果,逻辑时须如图:

01.jpg

在外界复位后,对参考脉冲sclk进行计数,提供1s的参考时间second(图中仅为1/500脉冲时间)。在1s爹考时间内取整周期的待调信号,此过程的时间由 frq_second 标记,在这段时间内同时对待测信号和参考信号进行按令一路参考信号 clk 进行计数。为了避免两路参考信号相位差较小时导致的不稳定因素及误差,两路参考信号分别使用 NIOS 核时钟及同频率-72”的SDRAM时钟。所测得待测信号与爹考信号周期数保持至下次复位,等待NIOS 读_取。

2.1.3相移产生部分:
数字部分由 FPGA内部通过Matlab 的 Simuink 建立基于延迟查表的DDS为两路频率相这可调的正弦信号。单个DDS 模块如图:

01.jpg

综合考虑到低频频率需求及逻辑资源消耗,选取1024 点的10位宽ROM表及32位的频率字与相位字,频率字经一级乒乓延迟后自累加,并加上相位字,削去溢出位,取高10位作为ROM表的地址。DDS 模块直接输出数据到片外高速DA,经过缓冲放大输出,作为相位计部分的被测信号。

2.1.4频率计片外调理部分:
输入信号幅度要求为10mVrms~ 5Vrms,频率范围为1Hz ~ 10MHz。信号的幅度小,频率高,跨度范围大。我们才用了比较简便的办法,将输入的小信号进行足够倍数的放大,而大信号则被二极管箝位,保护了运放。

01.jpg

输入信号采用了50欧电阻+双1N4148高速二极管的箝位方式,保证了输入放大器的信号的幅度在正负二极管压降的范围内。若采用对电源和地的箝位方式则运放有可能工作在超电源电压的状态下,导致不稳定。

两级放大均采用了TI公司的宽带运放0PA699构成同相10信放大器。本方案要求运放的带宽大于10MHz, 带宽增益积大于100MHz,压摆率大于314V/us. 而0PA699的各项指标为带宽260MHz,高增益稳定工作,带宽增益积100MHz,压摆率1400V/us,满足方案要求并有裕度。

放大器输出要被整形为正方波信号才能被FPGA识别。信号整形采用了TI公司的超高速低功耗比较器TL3116和SN74LS14. 由于信号的最低频率低, 上升缓慢,若采用过零比较则会造成比较器多次翻转产生错误,而具有双门限的迟滞比较器则能很好解决此问题。比较器输出被741.SI4进一步整形输入FPGA题目要求频率计的输入范围能达到10mVrms 5Vms,对应的峰峰值为28mV-14V。为使电路后级施密特触发器能够正常工作并识别脉冲,信号幅度最大的放大值为110倍,故前级采用了两级11倍共121倍的同相放大,并采用7414施密特触发器对信号进行整形,对运放的选型要求,放大倍数11倍,带宽10Mhz同时为避免小信号时的直流漂移对整形的影响,必须采用低失调运放。运放选用了TI公司的OPA699 宽带高增益运算放大器,其1400Mhz带宽增益积,高增益特性,典型1.5mV的失调,能够很好的满足本题的需要,特别是需要运放进行饱和放大时,较低的过载恢复时间能够减小运放带来的波形失真。1400V/uS的高压摆率能最大提高波形的前沿。

电路测试时发现前级电路的输入频率与输出方波脉冲频率在低频段有较大误差。输入信号500Hz而读数却有2000多。示波器观察放大器输出发现,放大器输出有明显毛刺。

分析后得出,由于方案采用了饱和放大的做法,以至前一级放大器在过零点的噪声毛刺被后级放大器放大到可使比较器翻转的幅度,导致产生毛刺脉冲,计数错误。而在高频段由于毛刺宽度窄,信号上升沿陡以及系统带宽的原因被忽略掉。

因此我们采取了在施密特触发器整形前加装一级RC低通滤波器的简便做法,将低频段(100KH)毛刺滤掉,而在高频段将滤波器断开,减小高频信号的损耗。实践表明,该改进取得良好效果。

2.2软件设计流程

01.jpg

另:开机校准。如有更精确频率的信号源(如温补晶振),可选择开机外部校准,即接入外部信号源,输入准确频率值,系统会根据测试结果对精度进一步 校正。最后得到的值以开机外部校准为参考。默认情况下为系统已进行过的内部校准。

三系统测试与误差分析
4.1片上部分测试
4.1.1 .FPGA 测频模块与测相模块经时序仿真通过。DDS模块经MATLAB仿真通过。

4.1.2.使用FPGA硬件级调试,NIOS控制DDS输出信号,送往片内测频测相模块计算,再读取测量结果,作基本运算并通过JTAG UART控制台显示出来。以联合测试整个数字系统。(系统时钟50M)ROM表地址线10位,在32位控制字中的步进为0x0040 000设Fn(00为频率字相对于0x004000000的倍数,即相当于0x004000000的步进数。同理设Pn (50为相位字步进数。
由计算可得:
待测信号频率=DDS频率* Fn (000/ 1024(1)
待测信号每周期参考脉冲数=参考脉冲频率1待测信号频率= (参考脉冲频率李1024) 1 (DDS频率* Fn(0000b)= 1024/ Fn (0x00(2)待测信号每周期相差时间内多考脉冲数= △Pn (0000 *待测信号每周期参考脉冲数/ 1024=△Pn(001Fn(0x0....

01.jpg

经测试,数字部分的片内模块及处理器合格,精度在设计范围内.

4.2片外部分测试:
4.2.1 测试环境25° C
4.2.2测试仪器:
TDS1012 100M数字存储示波器:固纬GFC-8270 8位等精度频率计:
EE1643C型函数信号发生器: Fluke F17B型数字万用表4.2.3测试方法标准频率计与自制频率计同时测量函数信号发生器频率。

4测试数据

01.jpg

Vi=10mVrms5

误差分析高频时由于系统带宽原因,信号不能得到充分放大,从而被比较器滤除,导致测试数据误差。
五总结
本系统实现了题目基本部分以及发挥部分的要求,经过测试,相位测量仪的测量范围为:电压(峰峰值):20mV~15V:频率:1Hz~—100kHz:显示分辨率为0.1度,测量的绝对误差在1以内,数字式移相信号发生器在1Hz-100KHz 范围内波形能够稳定输出,并且扩展到0.IHz-1MHz KHz,频率相位步进字为32位·,幅值在0.4V-4V范围内可调。

系统有待进一步完善,verilog 部分的稳定性及保护指施可以提高,外围电路AGC 的使用将提高准确度.对有效位数要求高时,应将数据分为整数和小数部分,分开存储,使用 mutex双核NIOS分开处理和星示,在更高实时性或更多任务时,有必要引入uCIOS 可利夺性RTOS_

43

主题

241

帖子

509

积分

单晶硅锭

Rank: 3Rank: 3

积分
509
发表于 2020-1-3 08:45:56   只看该作者
谢谢分享

20

主题

124

帖子

290

积分

二氧化硅

Rank: 2

积分
290
发表于 2020-1-3 08:50:52   只看该作者
谢谢分享
快速回复 返回顶部 返回列表