EDA论文4532 付伟伟.docx

上传人:b****2 文档编号:2571070 上传时间:2023-05-04 格式:DOCX 页数:17 大小:267.34KB
下载 相关 举报
EDA论文4532 付伟伟.docx_第1页
第1页 / 共17页
EDA论文4532 付伟伟.docx_第2页
第2页 / 共17页
EDA论文4532 付伟伟.docx_第3页
第3页 / 共17页
EDA论文4532 付伟伟.docx_第4页
第4页 / 共17页
EDA论文4532 付伟伟.docx_第5页
第5页 / 共17页
EDA论文4532 付伟伟.docx_第6页
第6页 / 共17页
EDA论文4532 付伟伟.docx_第7页
第7页 / 共17页
EDA论文4532 付伟伟.docx_第8页
第8页 / 共17页
EDA论文4532 付伟伟.docx_第9页
第9页 / 共17页
EDA论文4532 付伟伟.docx_第10页
第10页 / 共17页
EDA论文4532 付伟伟.docx_第11页
第11页 / 共17页
EDA论文4532 付伟伟.docx_第12页
第12页 / 共17页
EDA论文4532 付伟伟.docx_第13页
第13页 / 共17页
EDA论文4532 付伟伟.docx_第14页
第14页 / 共17页
EDA论文4532 付伟伟.docx_第15页
第15页 / 共17页
EDA论文4532 付伟伟.docx_第16页
第16页 / 共17页
EDA论文4532 付伟伟.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA论文4532 付伟伟.docx

《EDA论文4532 付伟伟.docx》由会员分享,可在线阅读,更多相关《EDA论文4532 付伟伟.docx(17页珍藏版)》请在冰点文库上搜索。

EDA论文4532 付伟伟.docx

EDA论文4532付伟伟

EDA论文

论文题目:

基于FPGA的NCO设计与仿真

学院:

电子工程学院

年级:

2012级

专业:

电子信息工程

姓名:

付伟伟

学号:

20124532

任课教师:

杨自恒

 

2015年6月27日

摘要

本文介绍了NCO"title="NCO">NCO数字控制振荡器的工作原理,详细分析了数控振荡器的性能指标和其在FPGA"title="FPGA">FPGA中的实现方法,最后给出了新设计的数控振荡器在QUARTUSII中的仿真结果。

关键词

数控振荡器(NCO);无杂散动态范围(SFDR);FPGA;频率控制字

目录

摘要I

第一章NCO的概念1

一、概述1

二、NCO的发展1

三、NCO的背景知识1

第二章NCO在实际工程中的作用3

一、高精度范围3

二、调制灵活性3

三、数控振荡器的基本实现原理3

四、足够的精度6

第三章NCO的系统结构及工作原理6

一、数字控制振荡器的组成7

(一)相位累加器7

(二)函数发生模块7

(三)相位寄存器7

二、数字控制振荡器的性能参数7

第四章NCO各组成部分设计9

一、NCO实现原理9

二、NCO几种常见设计方法10

(一)计算法10

(二)CORDIC算法10

(三)查表法10

三、正交NCO的查找表实现方法11

四、可变模计数器的设计11

五、正余弦查找表的设计11

六、正余弦表的装载12

第五章系统仿真13

一、设计实现及其仿真波形14

二、Quartus仿真输出波形14

三、资源占用情况15

总结16

第一章NCO的概念

一、概述

数字控制振荡器(NCO,numericallycontrolledoscillator)是软件无线电、直接数据频率合成器(DDS,Directdigitalsynthesizer)、快速傅立叶变换(FFT,FastFourierTransform)等的重要组成部分,同时也是决定其性能的主要因素之一,用于产生可控的正弦波或余弦波。

随着芯片集成度的提高、在信号处理、数字通信领域、调制解调、变频调速、导控制、电力电子等方面得到越来越广泛的应用。

二、NCO的发展

随着数字通信技术的飞速发展,软件无线电的应用愈加的广泛,而影响软件无线电性能的关键器件数控振荡器NCO(NumericalCONtrolledOscillator)的设计至关重要;NCO的设计采用直接数字频率合成(DDS)技术;1971年3月美国学者J.Tierncy、C.M.Rader和B.Gold首次提出了直接数字频率合成(DDS)技术。

这是一种从相位概念出发直接合成所需要的波形的新的全数字频率合成技术。

同传统的频率合成技术相比,DDS技术具有频率精度高、转换时间短、频谱纯度高以及频率相位易编程、输出的频率稳定度与系统的时钟稳定度相同等一系列优点,广泛应用于现代各种通信系统中,包括数字上下变频、中频变换、频率合成以及扩频系统和各种频率相位数字调制解调系统中。

三、NCO的背景知识

在实际的通信系统中,携带数字信息的信号通常是由某种类型的载波调制方式发送的,传送信号的带宽限制在以载波为中心的一个频段上,如双边带调制,或在邻近载波的频段上,如单边带调制。

无论何种调制方式,在发送端均需要一个高频载波将信息调制上去,以减小信号衰落,相干解调时在接收端也需要一个与发送端同频同相的高频载波将信息从高频上解调下来。

为了产生这个高频载波,在数字电路中是采用数控振荡器(NCO),也称为直接数字频率合成器〔DDS),它的输出频率和相位可以受人为控制,从而满足各种需要。

 

第二章NCO在实际工程中的作用

一、高精度范围

在正交数字混频器中,采用,可以将数字处理延续到正交调制之后或正交解调之前,滤波器和增益控制就可以用数字方法实现,I、Q两路也就不会存在增益的不平衡,加上数控振荡器(NCO)的低正交误差,可以使系统误差降低到数据的最低比特(LSB)的高精度范围。

 

二、调制灵活性

此外,正交数字混频器更容易与数字信号处理技术结合,使得数字调制更加灵活,进而实现软件无线电所要求的软件可更改的调制解调。

数控振荡器是正交数字混频器的核心部分,它具有频率分辨率高、频率变化速度快、相位可连续线性变化和生成的正弦P余弦信号正交特性好等特点。

而且NCO的相位、幅度均已数字化,可以直接进行高精度的数字调制解调。

随着数字通信的发展,传送的数据速率越来越高。

如何得到一个可数控的高频载波信号是实现高速数字通信系统必须解决的问题。

三、数控振荡器的基本实现原理

数控振荡器的作用是产生正交的正弦和余弦样本。

传统方法是采用查表法(LUT),即事先根据各个正余弦波相位计算好相位的正余弦值,并按相位角度作为地址存储该相位的正余弦值,构成一个幅度P相位转换电路(即波形存储器)。

在系统时钟的控制下,由相位累加器对输入频率字不断累加,得到以该频率字为步进的数字相位,再通过相位相加模块进行初始相位偏移,得到要输出的当前相位,将该值作为取样地址值送入幅度P相位转换电路,查表获得正余弦信号样本。

对于一个相位位数为n,输出信号幅度位数为M的数控振荡器,所需查找表大小为M×2n。

为了提高数控振荡器的频率分辨率,往往需要扩大波形存储器的容量,造成存储资源的大量消耗。

而且,当需要外挂RAM来存储波形时,由于受到RAM读取速度的影响,数控振荡器的输出速率必然受到制约。

因此,当需要设计高速、高精度的数控振荡器时,不宜采用查表法。

 

为了避免使用大容量存储器,可以考虑利用算法来产生正余弦样本。

基于矢量旋转的CORDIC算法正好满足了这一需求,该算法主要用于计算三角函数、双曲函数及其它一些基本函数运算。

它有线性的收敛域和序列的特性,只要迭代次数足够,即可保证结果有足够的精度。

WaltherJS于1971年提出了统一的CORDIC形式。

假定初始向量V1(x1,y1)旋转角度θ后得到向量V2(x2,y2):

 

        

        即:

 

                                   

                    

若每次旋转的角度θ是正切值为2的倍数,即θi=arctan(2-i),则cosθi=(1+2-2i)-1/2。

假设以δi代表矢量的旋转方向,+1表示逆时针旋转,-1表示顺时针旋转,故第i步旋转可用下式表示:

 

        

 其中:

(1+2-2i)-1/2为模校正因子。

对于字长一定的运算,该因子是一个常数,用K表示,以16bits字长为例,则:

 

        

  可见,迭代运算不能使幅值比例因子恒为1。

为了抵消因迭代产生的比例因子的影响,可将输入数据X,Y校正后再参与运算,以避免在迭代运算中增加校正运算,降低CORDIC算法的速度。

由此运算迭代式可以简化成:

        

 

式(5)运算仅通过加法器及移位器就可以实现。

此外,若用Zi表示第i次旋转时与目标角度之差, 

则:

         

 经过n次旋转后,式(5)的n次迭代可以得到以下结果:

        

  本文介绍的数控振荡器的设计是在式(7)的基础上,给定x0=K,y0=0,则迭代结果为:

 

        

 

将所需产生的角度值作为z0输入,通过式(5)、(6)的迭代运算,迭代结果输出的xn和yn就是所需要的三角函数值。

 

四、足够的精度

为了避免使用大容量存储器,可以考虑利用算法来产生正余弦样本。

基于矢量旋转的CORDIC算法正好满足了这一需求,该算法主要用于计算三角函数、双曲函数及其它一些基本函数运算。

它有线性的收敛域和序列的特性,只要迭代次数足够,即可保证结果有足够的精度。

第三章NCO的系统结构及工作原理

一、数字控制振荡器的组成

数控振荡器一般由基准时钟(fclk)、相位字寄存器、相位累加器以及幅度/相位转换电路等部分组成。

 

(一)相位累加器

相位累加器对输入频率控制字M不断累加,得到以该频率字为步进的数字相位。

  

(二)函数发生模块

函数发生模块,对当前相位进行对应幅度转换后,可以输出任意函数的波形。

  函数发生模块最直接的实现方法是只读存储器查找表(ROMLUT)法,将正、余弦波形的抽样存放在ROM中,并通过一个DAC周期地进行输出,从而产生输出波形。

如输出信号幅度位数为a,相位地址位数n所需查找表的大小为a×2n。

结合上文结论可知,频率分辨率越高,所需要的ROM越大,和n为指数增长关系。

可见,ROMLUT法很难兼顾功耗、性能、成本三方面,而CORDIC算法的应用能够很好地解决这一问题。

(三)相位寄存器

相位相加器将相位寄存器中的数字相位与相位控制字相加,得到偏移后的当前相位。

设系统的时钟频率为fc,频率控制字为M,相位寄存器位数为N,则数控振荡器输出信号频率为。

根据Nyquist抽样定理,fs最大值为1/2fc,而在实际设计中,一般不应大于时钟频率的1/4。

其频率分辨率为,根据此式,在系统时钟频率不变的情况下,相位寄存器位数N越大,产生信号的频率分辨率越高。

二、数字控制振荡器的性能参数

∙  NCO的性能指标包括信号频率分辨率、信噪比(SNR)、无杂散动态范围(SFDR)和输出的信号正交性。

这些性能指标取决于NCO的数据位数。

NCO的数据位数包括用于表示相位数据的位数n和表示相位的正弦值数据的位数nb,二者之间存在nb取决于n的关系,且前者必须能够表示相位变化时其相位正弦值变化的最小值和最大值。

而这又分为两种情况:

  第一种情况是相位最小变化值的正弦值最小变化发生在π/2-△φ~π/2,π/2~π/2+△φ,3π/2-△φ~3π/2,3π/2~3π/2+△φ,同时其相位的取值是在0~2π间且等间隔地分为2n爪取值点,因此,由正弦波的特性可知:

只需要讨论相位在π/2-△φ与π/2取值点的正弦值之差,

  第二种情况是相位最小变化值的正弦值的最大变化发生在0~△φ,π-△φ~π,π~π+△φ,2π-△φ~2π取值点处。

该情况可以通过类似于第一种情况的推导方法得到。

NCO的噪声是因为存在正弦值的量化误差而引入的,且量化误差由表示正弦值的位数决定。

 

第四章NCO各组成部分设计

一、NCO实现原理

直接数字频率合成(DDS)技术是一种全数字技术,同传统的频率合成技术相比,DDS技术具有多项优点:

频率切换时间短、频率分辨率高、相位变化连续、容易实现对输出信号的多种调制等。

DDS的原理框图如图1所示,其实质是以基准频率源(系统时钟)对相位进行等间隔的采样。

由图1可见,DDS由相位累加器和波形存储器(ROM查询表)构成的数控振荡器(NCO)、数模转换器(DAC)以及低通滤波器(LPF)3部分组成。

而DDS的核心是NCO的设计与实现,NCO一般是由相位累加器和正余弦查找表两部分组成,其中相位累加器的设计较简单,故设计NCO的关键是设计正、余弦函数发生器。

实现函数发生器的方法为查表法(LUT),对于一个相位位数为L,输出信号幅度位数为M

的NCO,所需查找表的大小为M×2L。

图1DDS基本原理框图

在每一个时钟周期,L位相位累加器与其反馈值进行累加,其结果的高N位作为ROM查询表的地址,然后从ROM中读出相应的幅度值送到DAC。

低通滤波器LPF用于滤除DAC输出中的高次谐波。

因此通过改变频率控制字K就可以改变输出频率fout。

容易得到输出频率fout与频率控制字K的关系为:

fout=Kfc/2L,其中fc为相位累加器的时钟频率,L为相位累加器的位数。

定义当K=1为系统频率分辨率,即f=fc/2L。

二、NCO几种常见设计方法

常见的NCO实现的方法目前主要有计算法、CORDIC(CoordinatedRotATIonDigitalComputer)算法和查表法等。

(一)计算法

计算法是一种以软件编程的方式通过实时计算产生正弦波样本,该方法耗时多且只能产生频率相对较低的正弦波,而需要产生高速的正交信号时,用此方法不能很好的满足要求。

(二)CORDIC算法

CORDIC算法即坐标旋转数字计算方法,其基本思想是用一系列固定角度的不断偏摆逼近所需旋转的角度,实现包括乘除、平方根、三角函数、向量旋转(即复数乘法)以及指数运算,该算法往往需要通过乘法器和查找表才能实现多种超越函数的计算,这会导致硬件电路实现复杂、运算速度降低,此外它能够计算的角度范围也有限,故CORDIC算法在实际使用时有较大的限制条件。

(三)查表法

在实际应用中一般采用最有效、最简单的查表法,即事先根据各个NCO正弦波相位计算好相位的正弦值,并以相位角度作为地址把该相位的正弦值数据存储在表中,然后通过相位累加产生地址信息读取当前时刻的相位值在表中对应的正弦值,从而产生所需频率的正弦波;同时由于正余弦波形的对称性,只需要存储部分数据即可完成全相位的数值输出。

这种实现方法,设计简单、运算速度较高,可以很好的满足在数字变频、扩频、调制解调等多种场合的要求。

三、正交NCO的查找表实现方法

基于FPGA的正交NCO设计原理框图如图2所示,主要由3部分组成:

可变模计数器、正余弦查找表和输出单元3个模块组成。

图2NCO的设计原理框图

下面以输入的频率控制字为1200Hz为例进行设计。

Fre_sample,表示系统采用时钟;Fre_cnt_word表示频率控制字。

四、可变模计数器的设计

可变模计数器是根据频率控制字,计算出正余弦表的查表所需的地址;同时要保证产生的正余弦波的相位保持连续(有些应用场合常常要求输出的相位连续),即置于相应的余数值。

在第1个工作时钟周期读入频率控制字,第2个工作时钟周期内计算出mod(Fre_sample,Fre_cnt_word)作为相位控制字,第3个工作时钟周期内部计数器复位置入相位控制字,第4个时钟周期开始以频率控制字为步长,相位控制字为初始值进行计数输出。

五、正余弦查找表的设计

正余弦查找表是根据可变模计数器的输出查表得到相应载频波形的输出。

基于FPGA的NCO设计的一个关键就是波形存储器ROM相位累加器的输出地址作为ROM的地址输入,经查表和运算后,ROM输出正余弦波形的量化数据;设计中主要是要节省存储器资源的开销,即减小ROM存储表的空间;由于存储表的尺寸随着地址位数或数据位数的增加呈现指数级递增关系,所以在满足频率分辨率、信号性能的前提下,主要考虑较小ROM存储表的开销;在实际的应用中,可以充分利用正余弦信号在一个周期内的对称性来减少ROM存储表的开销,例如正弦信号,在一个周期内对于X轴是对称的,基于此可以将ROM存储表减少至原来的1/2,再利用半周期内的左右对称性,又可以将ROM存储表减少至原来的1/2,因此通过一个正弦查找表的前1/4周期就可以变换得到整个正弦波周期查找表,这样就节省了3/4的存储器资源。

正余弦表的具体设计思想如下:

取频率分辨率为df=1Hz;假设频率控制字为1200Hz的频率左右,现考虑对1200Hz的正余弦波形每一个周期采8个样点,则可得采样率为fs=1200×8=9600Hz。

设对于每一个样点值取8bit量化,则每个表格共需存储9.6kB;(如果考虑到正、余弦信号的对称性,设计时可优化为上每个表格存储1/4个波形即可,即每个表格只需存储2.4kB;)使用时是用步长STep来调节输出频率,同时保证输出的正余弦波的相位连续。

如果每隔0样点取1,即step=1,输出频率为1Hz;每隔1点取1,即step=2,输出频率为2Hz;……;每隔1199点取1,step=1200,输出频率为1200Hz。

六、正余弦表的装载

采用Quartus软件中的。

mif文件格式可以方便的完成存储表的装载;同时对于装载文件的生成可以使用matlab输出。

mif的文件格式很方便的生成;如下文中给出了位宽为8bit,深度为9600,地址为无符号数,数据为十进制数的9600个单元的mif文件,在初始化RAM时,按照Quartus软件的引导直接配置即可。

WIDTH=8;

DEPTH=9600;

ADDRESS_RADIX=UNS;

DATA_RADIX=DEC;

CONTENTBEGIN

0:

0;

1:

2;

2:

10;

3:

30;

4:

50;

5:

50;

6:

10;

7:

100;

……

9598:

0;

9599:

0;

END

第五章系统仿真

一、设计实现及其仿真波形

本次设计采用性价比较高的ALTERA公司的STRATIX芯片进行设计仿真,该系列芯片是基于1.5V工作电压、0.13μm全铜布线SRAM工艺的FPGA芯片。

此系列芯片拥有最多114140个逻辑单元(Les)和最多10Mbits的内部RAM。

该系列芯片支持多种I/O标准,提供了最多可达12个的用于处理复杂时钟信号的锁相环(PLLs)。

同时STRATIX系列芯片提供了最多可达28个的数字信号处理单元(DSP),它们由总共224个内置硬件乘法器(9位乘9位)组成,利用它们可以有效地实现例如快速傅立叶变换(FFT)、有限冲击响应(FIR)滤波器、无限冲击响应(IIR)滤波器等高性能的数字信号处理单元或者乘法器。

图1NCO模块的主要端口定义

二、Quartus仿真输出波形

图2NCO的仿真输出波形

此仿真波形为3个频点的NCO输出波形,用matlab绘出输出的载波的波形如图3所示。

图3输出载波的波形

由上面的仿真结果可以看出,NCO正确输出了3个频点的仿真波形;同时通过实际的FPGA硬件测试和验证,该设计达到了所要求的性能指标。

三、资源占用情况

使用Altera公司的STRATIX芯片进行编译、综合,所得的资源占用结果如图4所示。

图4NCO资源占用情况

总结

本文给出了一种基于FPGA的正交NCO的设计方法,在实际应用过程中可参考给出的设计实例,通过改变频率控制字、系统采样频率、存储正余弦查找表的深度和存储表的位宽,即可得到不同输入频率范围的NCO;同时如果涉及需要的精度及频率较高,也可采用外置的存储器,如FLASH,SRAM等与FPGA配合使用,较大的扩展存储表的深度和位宽,可最终达到设计的要求。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2