基于软核Nios的宽谱正弦信号发生器设计(zz)

上一篇 / 下一篇  2007-07-18 17:10:35 / 天气: 晴朗 / 心情: 高兴 / 个人分类:DSP

转载自:
http://www.ee365.cn 2006-04-21 13:08

摘要:本 设计运用了基于Nios II嵌入式处理器的SOPC技术。系统以ALTERA公司的Cyclone 系列FPGA为数字平台,将微处理器、总线、数字频率合成器、存储器和I/O接口等硬件设备集中在一片FPGA上,利用直接数字频率合成(DDFS)技 术、数字调制技术实现所要求波形的产生,用FPGA中的ROM 储存DDS 所需的波形表,充分利用片上资源,提高了系统的精确度、稳定性和抗干扰性能。使用新的数字信号处理(DSP)技术,通过在Nios软件编程解决不同的调 制方式的实现和选择。系统频率实现1Hz~20MHz可调,步进达到了1Hz;完成了调幅、调频、二进制PSK、二进制ASK、二进制FSK调制和扫频输 出的功能。

关键词:片上可编程系统;Nios II ;数字频率合成;数字调制技术

A Wide-band Sine Wave Signal Generator Based on Nios

This designation uses the SOPC technology based on Embedded Processor of Nios II. The system, using the Cyclone series FPGA as a digital bench, connects the MPU, BUS, DDFS CELL, MEMORY and I/O interface and makes them all into a FPGA chip. It uses the technologies of DDFS, Digital Modulate, and stores the datum of the Sine wave into the On Chip Memory in order to generate the required wave. With full using of the chip’s resources, the precision, stabilization and influence resisting were significantly improved. Using the new technology of DSP, it can carry out and choose the modulation of different mode by software .The programmable frequency synthesis is also carried out. The frequency of the output wave can range from 1Hz to 20MHz,and the frequency step change can reduced to 1Hz.We also achieve the functions all in the development section.eg:AM,FM,2PSK,2ASK, the Sine wave of 1KHz and the binary serials of 10Kbps.Fother,we also achieve the function of 2FSK and frequency sweep.

 

Keyword: SOPC ;Nios II;DDFS;digital modulate technology

 

SOPC(System on a Programmable Chip片上可编程系统)是Altera公司提出来的一种灵活、高效的SOC解决方案。它将一个软核放入FPGA,占用片上资源少,成本很低;却扩展了目 前世界上最流行的软核嵌入式处理器的性能。可将处理器、存储器、I/O口等系统设计需要的功能模块集成到一个FPGA器件上,构建成一个可编程的片上系 统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。在可编程器件内,还具有小容量高速RAM资源和足够的可编程逻辑资 源,用于实现其他的附加逻辑。

正弦信号发生器以嵌入式处理器Nios II 为核心,将微处理器、总线、外设、数字频率合成器、存储器和I/O接口等硬件设备集中在一片FPGA上,创建一个可编程单芯片上系统,实现了一个软件无线电开发平台,并完成五大方面的功能:

l        控制键盘和显示器;

l        根据输入的频率值,通过数据计算得到频率控制字;

l        实现数字频率合成器;

l        实现数字调制器;

l        实现对数模转换器的控制。

这种设计方式使用数字信号处理器技术,通过软件编程实现不同调制方式的选择,充分利用了FPGA的资源,减少了CPU与外设的接口,在很大程度上提 高了系统的速度、可靠性以及系统的成本。其中,片内正弦表ROM传出的数据经DAC904完成数模转换,由调制系统完成幅度控制,以及各种调制方式的实 现,继而经过低通滤波器进行滤波,再经过宽带运算放大器,从而得到任意一种具有一定带负载能力的所需波形。

系统总框图如下:

  

1  系统总体框图

自定义逻辑包括数字频率合成和数字调制IP核;数字调制部分包括正弦波产生模块和调制控制模块;其中调制控制又分为AM控制、FM控制、ASK控制、PSK控制模块等。以下我们将分别论述其产生的原理。

1.各模块实现原理

1.1正弦波产生模块实现原理

2正弦波产生框图

相位累加器为32位累加器,输出为0 ~ (232-1),作为正弦查询表的地址输入端。正弦表中存放一个周期的正弦波内的232个点的数据,输出 为一正弦波,其频率由“频率控制字”进行调节,输出频率:

                             (1-1)  

 最小频率分辨率:                                        (2-2)

其中 为相位累加器的位数,FTW为频率步进控制字, 为时钟频率,输出信号频率主要取决于频率控制字FTW。当FTW增大时, 可以不断增加,综合考虑Nyquist采样定理,最高输出频率应小于 。根据实验所得,实际工作频率应小于 。

的取值受D/A转换速率的限制,由于数模转换部分采用的是高速DAC904,其转换速率约为160MHz。则在最高频率20 MHz时,所产生的波形在一个周期内仍有8个点,经后级处理后效果很好,并无明显失真。

                                 (1-3)

所以可以实现1Hz步进,当输出1Hz时,频率控制字FTW=1/fmin=26.8435465,在Nios内部浮点运算所占资源太多,所以把浮点运算改为定点运算。则当输出其他任意频率 时Nios内部算法为:  

1.2调制系统实现原理

 

1.2.1 AM硬件实现原理

 

图 3    标准调幅产生硬件框图

调制波产生模块中,在输入时钟频率为256KHz条件下,循环计数器的为数为八,则累加器为数为八,即M=8,根据公式(1-1),当 =256KHz, FTW =1时, =1KHz,且正弦表中存放的是正弦波一个周期的内256个点的数据,即输出调制波为频率为1KHz的正弦波。设8位的幅度控制字大小为Am,则经幅值放 大后生成的调制频率表达式为:

   ( = )               (1-4)

经直流叠加,且与载波信号相乘后,得出已调波为:

                                                 (1-5)

变换表达式形式:

                

幅值放大部分可进行调制度 的调节,则可得到调制度可调,载波可变的调幅波。

 

1.2.2 FM硬件实现原理

4    调频波产生硬件框图

频率调制就是载波信号的瞬时频率偏移随调制信号线性变化。根据调频波的表达式:  

                                                           (1-6)

     

瞬时频率:                                                (1-7)          

在幅频变换IP核的参数设计算时有:

                 (1-8)

   令:

                        (1-9)

为载频频率控制字, 为调制频率频率控制字, 由输入载频计算得出。当最大频偏 为10K时。

                      (1-10)

调频波的瞬时频率偏移与调制信号的幅度成线性关系。因为累加器对误差有积累作用,所以为了同时达到精度与速度的要求,我们直接用其幅度去查它所对应的频偏。由于幅度累加器为8位,且正负对称。则最小的频率控制字:

                                   (1-11)

要实现5KHz最大频偏时,只要对 进行二分频即可。这样,我们就实现了调频功能。

1.2.3 ASK硬件实现原理

 

 

5    二进制ASK硬件框图

设计中,二进制基带序列信号为m序列由八位移位寄存器产生,由于m序列一周期内的码元数大概相等(“1 ”比“0 ”只多一个),这个特征保证了在扩频系统中,用m序列作为平衡调制实现扩频是具有较高的载波抑制度,保证了在后续扩张其它功能的可能性。ASK信号由m序 列和载波相乘实现,即移位寄存器输出为一随机1、0序列,当mResult(m序列输出值)为1时,幅值选择控制器输出幅值为最大值,当mResult为 0时,幅值选择控制器输出幅值为0。

m序列是最长线性移位寄存器序列,它是由带线性反馈的移位寄存器产生的周期最长的一种序列。一般来说,一个n级的反馈移存器可能产生的最长周期为: ,则8位的移位寄存器能产生的最长周期为127。

能产生周期最长的线性移位寄存器的结构由其本原多项式决定,该本原多项式应满足:

(1)    是既约多项式,即不能再进行因式分解

(2)    可除尽   ( )

(3)    整除不尽   ( )

我们采用八级移位寄存器产生小m序列,由本原多项式 可知移位寄存器的结构为:

 

16    m序列产生框图

 

 

1.2.4 PSK硬件实现原理

 

FTW[31..0]

载波频率控制字

 


6   PSK硬件框图

 

PSK调制信号产生模块中 m序列产生器输出为一随机1、0序列,当mResult为1时,相位选择控制器输出0(对应 相位),当mResult为0时,相位选择控制器输出 (对应 相位)。在频率累加器与正弦表查询之间添加一相位相加器,即可实现m序列输出为1时,已调波输出波形与载波波形一致,m序列输出为0时,输出波形出现 相位的二进制PSK调制。

 

1.3频率稳定度的实现

 

我们采用20MHz,频率稳定度不超过10个PPM的晶振作为频率参考源,经FPGA内部PLL倍频后得到160MHz作为系统主频。因为PLL对波形有提纯能力,所以最后频率稳定度优于 。

 

1.4显示及键盘部分实现

 

显示及键盘部分由ZLG7289芯片驱动。为了提高Nios II处理器的执行效率,需要自定义控制ZLG7289芯片的逻辑指令,减少CPU对键盘显示模块的操作时间,使整个系统的效率得到了很大的提升。以下是CPU通过自定义逻辑指令读取键盘值的时序图:

7   读取键盘时序图

 

2 .后级处理电路设计

 

运算放大器选用低功耗、高速、宽带运放,其电流反馈型设计使它可以在高增益的条件下保持宽带特性。由于在设计程控增益放大器时还需要一个宽带放大 器,而 OPA2690恰好是一个双运算放大器,因此设计时非常方便,也有利于提高电路的稳定性。放大器模块中一组用于差分放大,将单极性变化为双极性,另一组用 于低通放大,用Multisim8分析得出:截止频率约为70 ,在20 以内幅度可以平坦输出。由于它自身具有很强的大电流驱动能力,从实验结果证明:在1kHz~20MHz范围内,在 的负载电阻上,电压峰-峰值达到6V 0.2V。

8后级处理电路图

 

3、软件设计

利用Altera的SOPC Builder系统开发工具和QuartusII5.0设计软件,通过使用Nios II集成开发环境(IDE),编制了5个功能函数,正弦波发生函数,调幅函数,调频函数,调相函数,扫频函数。CPU就可以通过读取键盘值,根据当前状态 执行相应功能。如要产生一个10KHz的正弦波,CPU通过查询内部状态寄存器选择所要执行的函数,再对选择开关赋值,选取所需的功能模块,从而把产生正 弦波所需的内部硬件接通,最后,CPU把从键盘读入的所需频率10K经过数据处理转为相应的频率命令字,于是我们就在输出端得到了相应的波形。

9软件流程图

 

4.主要元器件请单

 

类型

型号

数量

FPGA

EP1C6T144C8

1片

D/A转换器

DAC904         

1片

宽带放大器

OPA2690    

1片

FPGA配置芯片

EPCS1SI8

1片

有源晶振

20MHz

1只

电压变换芯片

TPS767D301

1片

稳压芯片

LM7806CT 

1片

稳压芯片

MC7906CD2T(3)

1片

电感

 

5个

LED指示灯

 

8个

电解电容

100uF

3个

电解电容

47 uF

2个

滤波电容

0.1 uF

22个

二极管

1N4007

2个

电阻

10K

30个

电阻

50

1个

 

5、系统测试

 

51测试使用的仪器与测试方法

 

⑴ 测试环境

   在实验室条件下,环境温度为常温25 ,无强电磁干扰,由市电220V供电,通过直流电压源(型号为DF17432L—3A)转化为+8V和 V对系统供电。

 

测试仪器设备

 

序号

名称、型号、规格

数量

备注

1

示波器   Agilent54622D

1

测试正弦波,AM,二进制PSK,二进制ASK等的波形

2

频谱分析仪  AgilentE4411B

1

测试FM,二进制 FSK,扫频输出

3

频率计  Agilent 531B1A

1

测试频率稳定度

 

⑶测试方法

按照设计要求,我们进行了以下测试:

采用了进口Agilent54622D示波器对正弦波、AM、PSK、ASK等波形进行了直观与定量的测量,主要由示波器观察波形输出失真程度和负载为 的电压输出的峰-峰值。通过示波器截取原波形由图10 ~图14所示。

由于扫频输出和FM的最大频率偏移只能用频谱分析仪观察和测量;所以我们采用AgilentE4411B频谱分析仪,对FM、FSK、扫频输出等参数进行的定性与定量测试。通过示波器截取原波形由图15 ~图31所示。

为了准确获得频率稳定度的指标,采用了Agilent 531B1A频率计对频率稳定度进行了严谨科学的定量的测试。当所测信号的输出比较大时我们通过测频率的办法得到系统的频率稳定度,当系统输出信号比较小 时,我们要通过测周期的办法先得到系统的周期,再转换为频率进而得到系统的频率稳定度。

 

5.2 指标测试和测试结果

 

1)输出正弦波频率范围和稳定度的测试

标称

频率

实测频率

平均频率

频率稳

定度

一次

二次

三次

1 k Hz

1000.062779

999.951426

999.3966824

999.993676

0.000006

10 k Hz

10000.15396

10000.15518

10000.15427

10000.15447

0.000015

50 k Hz

50000.82914

50000.83166

50000.83087

50000.83056

0.000017

100 k Hz

100001.6685

100001.6715

100001.6704

100001. 6701

0.000017

500 k Hz

500008.4038

500008.3776

500008.1788

500008.3867

0.000017

1M Hz

1000016.878

1000016.897

1000016.903

1000016. 893

0.000017

5 M Hz

5000084.111

5000084.175

5000084.232

5000084.172

0.000017

10 M Hz

10000169.19

10000169.13

10000169.28

10000169.20

0.000017

15 M Hz

15000254.07

15000254.28

15000254..32

15000254.22

0.000017

20 M Hz

20000338.86

20000338.53

20000339.74

20000339.38

0.000017

 

 

2)输出正弦波幅度范围的测试

 

频率

1  Hz

100  Hz

1  k Hz

10  k Hz

50  k Hz

100 k Hz

幅度(V)

6.13

6.13

6.06

6.06

6.06

6.06

频率

500 k Hz

1M Hz

5 M Hz

10 M Hz

15 M Hz

20 M Hz

幅度(V)

6.06

6.00

6.00

5.94

5.81

5.78

 

测量结果表明正弦波的频率输出范围可达到1 Hz 20 MHz,步进可以达到1 Hz,且频率输出和步进值均可以通过键盘设置。输出信号的频率稳定度可以通过下式计算:

                    

其中 为频率稳定度, 为频率的平均值, 为标称频率。由表中结果可以看道1k Hz 10 MHz的输出信号的频率稳定度均达到 ,优于 的要求。

 

5.3测试波形截取     

 

(1)1kHz正弦波波形

图10  1K正弦波波形

 

(2)1MHz正弦波波形

图111M正弦波波形

(3)10MHz正弦波波形

图12  10M正弦波波形

 

在波形的测试过程中,我们先后采用了多种国产与进口示波器进行了测试观察。采用国产示波器与进口泰克TDS3032B型示波器观察,在 的负载电阻上,电压峰-峰值达到6V 0.2V,且波形在1k Hz 10 MHz的范围内十分光滑,无明显失真。后用高级进口Agilent54622D仅在可以观察出在10 MHz的频率输出时具有轻微失真。失真原因主要是在10MHz的输出频率时,一个周期只采样了16个点,波形数据会产生快速跳变,从而引起波形的失真。这 种及其微小的失真变化,只有采用了极其高端的示波器才能够显示出来。

 

(4)标准调幅载波为10M,调制度 =0.1,幅度调制波形:

图13

 

(5)标准调幅载波为1M,调制度 =1的幅度调制波形:

图14

 

(6)二进制序列m伪随机序列的二进制ASK波形

 

图15

 

(7)二进制序列高低电平交替的二进制ASK波形

图16

 

(8)二进制序列为高低电平交替的二进制PSK波形

图17

 

(9)模拟调频信号载波为1MHz,最大频偏为10KHz的频谱图

图18

 

6、误差分析与改进方法

61相位截断误差分析

为了取得精细的频率分辨率,我们把DDS的相位累加器的位数都取得非常大,如取32, 48, 60。如果把相位累加器输出的所有位数全部用来查询正弦函数表,那正弦表的容量会非常的大。比如相位累加器有32位,正弦表数据为8位,则表的容量为 232 x 8 = 34,359,738,368(bits),如此巨大的容量难以实现。假如能实现,其成本和稳定性也不容乐观。所以在DDS中我们使用了相位截断这种方 法,它只取相位累加器输出的高多少位用来查表,而剩下的就简单的丢弃了。可想而知,这样做会使查表的相位值产生误差,导致输出的正弦幅度值也产生误差,表 现在输出的频谱上就会有杂散信号存在。

 

6.3  幅度量化误差分析

幅度量化误差,就是ROM存储能力有限引起的舍位误差,也可以认为是由

DAC分辨率有限引起的误差。幅度量化误差在DDS输出谱上表现为背景噪声,

其幅度远小于由相位截断和DAC非线性引起的杂散信号幅度,所以对ROM舍

位的频谱分析又称为DDS的背景杂散分析。下面给出分析的结论。

量化误差所引起的量化失真,用输出信号与量化噪声功率之比SQR来衡量。

当DAC满幅度输出时,有:

                    SQR=1.76+6.02B (dB)                        

其中B是幅度量化的位数,B一定,噪声的功率就一定。

由此可知,若B=8,则幅度量化的信噪比可达到49.92dB。

 

6.4电源噪声

这种随机噪声也会对我们的输出波形产生一定的影响,使输出波纹增大。为减弱这种噪声,一方面可选择纹波小的电源,另一方面可以通过电源退耦以减小其影响。所以本设计采用了 行滤波器对电源进行了滤波。

 

6.5后级运放产生的误差分析

 

由于集成运放自身存在的输入失调电压和输入失调电流的影响,以及运放本身增益带宽积与上长速率的影响,在输入频率较高时,不可避免的有相位失真的影响。

尽管上述误差是不可避免的,但是通过选取合适的K(频率控制字)、 (系统时钟频率)、N(累加器位数)和W (寻址位数)值,质量高的电源,适当的D/A变换器和滤波器平滑台阶,所得到的波形是可以很好的满足题目的要求。

 

7、小结

本文针对传统的信号尖输出步带窄、幅度不稳定的情况,通过研究SOPC技术、IP核调用技术、PLL技术、直接数字频率合成技术、FPGA与键盘接口技术,以一块Cyclone FPGA芯片为核心,开发设计了一个高性能的正弦信号发生器,且本设计具有以下优点:

将一个软核Nios放入FPGA,实现MCU的功能。

将除D/A转换外的几乎所有功能模块全部集成在一块FPGA芯片内,大大降低了电路设计的复杂性,缩小了产品体积,降低了功耗。

由于电路规模的大大缩小,使系统内部的干扰及串扰大大降低,这使系统调试的难度大降低。调用IP核建立系统较采用一般元器件搭建的系统性能更好,运行更加稳定。

 

参考文献

1. Altera, Corp. “NiosSoftware Development Tutorial”

2. Altera, Corp. “Nios 32-Bit Programmer’s Reference Manual”

3. Altera, Corp. “Avalon Bus Specification Reference Manual”

4. Altera, Corp. “SOPC Builde PTF File Reference Manual”

5. Altera, Corp. “Nios 3.0 CPU Data Sheet”

6. 彭澄廉,挑战SOC——基于NIOS的SOPC 设计与实践.北京:清华大学出版社,2004年

 

作者简介:

1.    辅导教师:邵舒渊,男,西北工业大学电子信息学院副教授,主要从事电子系统设计与微电子技术方面的科研与教学。

2.    李金晶,女,西北工业大学电子信息学院学生。

3.    蔡雪君,男,西北工业大学电子信息学院学生。

4.    刘  杰,男,西北工业大学电子信息学院学生。


FPGA/CPLD器件价格查询

TAG: Nios 正弦信号 DSP

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar