毕业设计(论文)基于FPGA的NCO设计与仿真_第1页
毕业设计(论文)基于FPGA的NCO设计与仿真_第2页
毕业设计(论文)基于FPGA的NCO设计与仿真_第3页
毕业设计(论文)基于FPGA的NCO设计与仿真_第4页
毕业设计(论文)基于FPGA的NCO设计与仿真_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科学生毕业论文论文题目:基于fpga的nco设计与仿真学 院:电子工程学院年 级:2012级专 业:电子信息工程姓 名:学 号:指导教师: 2015 年 06 月 23 日摘要数控振荡器是数字通讯中调制解调单元必不可少的部分,同时也是各种数字频率合成器和数字信号发生器的核心。随着数字通信技术的发展,对传送数据的精度和速率要求越来越高。如何得到可数控的高精度的高频载波信号是实现高速数字通信系统必须解决的问题,可编程逻辑器件和大容量存储器的发展为这一问题的解决带来了曙光。本文从nco概念入手,简要介绍nco的概念与应用,进而介绍nco系统结构及工作原理、nco各组成部分设计、系统仿真等几个方面,

2、将基于fpga的nco设计与仿真过程展现在读者面前,简洁明了,并且在研究的过程中取得了一定的成果。关键词nco;数控振荡器;fpga;abstract nco is a crucial part of the modem as a unit of digital communications, and various digital frequency synthesizer and the core of digital signal generator. with the development of digital communication technology, the transm

3、itting data accuracy and rate of demand is higher and higher. how to get to the high frequency carrier signal is of high accuracy of the numerical control implementation must solve the problem of high speed digital communication system, programmable logic devices and the development of large capacit

4、y storage brought the dawn for the solution of the problem. this article obtains from the concept of nco, briefly introduces the concept and application of nco, then introduce the nco system structure and working principle, nco each component design, system simulation and so on several aspects, the

5、nco based on fpga design and simulation process show in front of the reader, simple, and has obtained certain achievements in the process of research.key wordsnco; numerical controlled oscillator; fpga目录摘要iabstractii第一章 绪论1第二章 nco概述22.1 nco概念22.2 基于nco的应用22.2.1 dds的实现22.2.2 fsk的实现32.2.3 扫频电路的实现3第三章

6、nco实现原理及设计方法43.1 nco实现原理43.2 nco几种常见设计方法5第四章 nco的结构及仿真54.1 nco的结构54.1.1 nco的顶层电路结构54.1.2结构设计64.2 nco的及仿真10结论12参考文献13致谢14第一章 绪论数控振荡器是数字通讯中调制解调单元必不可少的部分,同时也是各种数字频率合成器和数字信号发生器的核心。随着数字通信技术的发展,对传送数据的精度和速率要求越来越高。如何得到可数控的高精度的高频载波信号是实现高速数字通信系统必须解决的问题,可编程逻辑器件和大容量存储器的发展为这一问题的解决带来了曙光。在研究数控振荡器nco工作原理的基础上,通过分析对比

7、几种不同的nco设计方法,采用了算法简单、节省资源的基于rom查找表的设计方法。针对正交数控振荡器nco的主要部件正余弦存储表、可变模计数器进行了算法设计和电路设计,并在altera公司的fpga上进行了验证,波形仿真结果表明了电路设计的正确性。采用查找表的方法可以有效提高系统功能的可扩展性和系统的可集成性,使得nco功能模块可以通过配置存储表、频率控制字来满足多种应用场合下的nco设计需要,可以广泛地应用于各种现代通信系统中。随着数字通信技术的飞速发展,软件无线电的应用愈加的广泛,而影响软件无线电性能的关键器件数控振荡器nco(numerical controlled oscillator)

8、的设计至关重要;nco的设计采用直接数字频率合成(dds)技术;1971年3月美国学者j.tierncy、c.m.rader和b.gold首次提出了直接数字频率合成(dds)技术。这是一种从相位概念出发直接合成所需要的波形的新的全数字频率合成技术。同传统的频率合成技术相比,dds技术具有频率精度高、转换时间短、频谱纯度高以及频率相位易编程、输出的频率稳定度与系统的时钟稳定度相同等一系列优点,广泛应用于现代各种通信系统中,包括数字上下变频、中频变换、频率合成以及扩频系统和各种频率相位数字调制解调系统中。在软件无线电及通信领域,经常使用正交的数字信号;针对此类应用,本文给出了一种基于fpga的正交

9、nco设计方法,可以实现正交的、连续相位、高性能、高精度、可重利用的数控振荡器,适合于多种应用场景的片上系统的设计。第二章 nco概述2.1 nco概念nco(numerical controlled oscillator)即数控振荡器用于产生可控的正弦波或余弦波,其实现的方法目前主要有计算法和查表法等。计算法以软件编程的方式通过实时计算产生正弦波样本,该方法耗时多且只能产生频率相对较低的正弦波,而需要产生高速的正交信号时,用此方法无法实现。因此,在实际应用中一般采用最有效、最简单的查表法,即事先根据各个nco正弦波相位计算好相位的正弦值,并以相位角度作为地址把该相位的正弦值数据存储在表中,然

10、后通过相位累加产生地址信息读取当前时刻的相位值在表中对应的正弦值,从而产生所需频率的正弦波。 用查表法实现nco的性能指标取决于查表的深度和宽度,即取决于表示相位数据的位数(查表存储器地址线的位数)和表示正弦值数据的位数(查表存储器数据线的位数)。改善nco性能最简单和最根本的方法是加大查找表的深度和宽度。目前,用查找表法实现nco的普遍做法是用片内rom作为查找表,由于片内资源的限制,查找表的深度和宽度一般不会很大(通常为2568bits),大大限制了nco性能的提高,用独立的大容量sram作为查找表,把查找表从片内移到片外,可以较好解决这个问题.nco采用全数字技术,具有分辨率高、频率转换

11、时间快、相位噪声低等特点。将其应用于通信系统和其他电子设备中,可以大大简化系统,2.2 基于nco的应用2.2.1 dds的实现数字频率合成器(dds-directdigitalsynthe2sis)是近年来发展非常迅速的一种器件。它由nco、数/模转换器(dac)和低通滤波器组成,拥有nco的诸多优点,广泛应用于通信系统。dds的工作过程如下:在fclk的推动下,nco输出频率的量化振幅值,通过d/a变换,得到连续的量化振幅值,再经过低通滤波器滤波后,就得到所需频率的模拟信号。2.2.2 fsk的实现 从影响nco的几个参数我们可以看出,利用其变化的特点,在nco中可以实现各种数字调制。频率

12、调制可以用改变频率控制字来实现,相位调制可以通过改变瞬时相位字来实现,振幅调制可用rom和dac之间加数字乘法器来实现。这里我们利用nco频率控制字可变的特点来实现2fsk调制。从nco结构框图可看出,频率控制字m可以是一常数,也可以是一变量。m为常量时,输出一个固定的频率。当m在信息比特的控制下跳变时,我们就可以利用它来完成2fsk调制。这里,我们取n=15,fclk=100mhz,每样点用16bit来表示。控制字m的产生如下:当信息比特为1时,m1=4094,则f1=10034094/32768=1215mhz;当信息比特为0时,m2=2047,则f2=10032047/32768=612

13、5mhz; 波形分析:当bit为0时,频率控制字control输出2047,相应的输出的正余弦信号为6125mhz的信号(这一点可以从输出的样点数看出来,每周期输出16个样点,8个正数,8个负数,有规律变化);当bit为1时,频率控制字control输出为4094,相应的正余弦信号为1215mhz(每周期输出8个样点,4个正数,4个负数,有规律的变化)2.2.3 扫频电路的实现 根据频率控制字可变,我们在dds前端加上控制电路,就可以实现扫频,我们取n=15,fclk=312768mhz,每样点用16bit来表示。输入intiate-seq=257,则初始频率f0=2573312768/327

14、68=010257mhz=2517khz。频率步进128个时钟周期递增1,也即128个钟周期步进3127683106/32768=100hz ,终频率fe=3863312768/32768=010386mhz=3816khz。从所有信号点中取0500的样点与1550016000的样点进行比较。可以得出,在相同的时间范围内,出现的正弦波的个数增加,也即频率变大了。这样我们就实现了扫频功能。第三章 nco实现原理及设计方法3.1 nco实现原理直接数字频率合成(dds)技术是一种全数字技术,同传统的频率合成技术相比,dds技术具有多项优点:频率切换时间短、频率分辨率高、相位变化连续、容易实现对输出

15、信号的多种调制等。dds的原理框图如图1所示,其实质是以基准频率源(系统时钟)对相位进行等间隔的采样。由图1可见,dds由相位累加器和波形存储器(rom查询表)构成的数控振荡器(nco)、数模转换器(dac)以及低通滤波器(lpf)3部分组成。而dds的核心是nco的设计与实现,nco一般是由相位累加器和正余弦查找表两部分组成,其中相位累加器的设计较简单,故设计nco的关键是设计正、余弦函数发生器。实现函数发生器的方法为查表法(lut),对于一个相位位数为l,输出信号幅度位数为m的nco,所需查找表的大小为m2l。图1 dds基本原理框图在每一个时钟周期,l位相位累加器与其反馈值进行累加,其结

16、果的高n位作为rom查询表的地址,然后从rom中读出相应的幅度值送到dac。低通滤波器lpf用于滤除dac输出中的高次谐波。因此通过改变频率控制字k就可以改变输出频率fout。容易得到输出频率fout与频率控制字k 的关系为:fout=kfc/2l,其中fc为相位累加器的时钟频率,l为相位累加器的位数。定义当k=1为系统频率分辨率,即f=fc/2l。3.2 nco几种常见设计方法常见的nco实现的方法目前主要有计算法、cordic(coordinated rotation digitalcomputer)算法和查表法等。计算法是一种以软件编程的方式通过实时计算产生正弦波样本,该方法耗时多且只能

17、产生频率相对较低的正弦波,而需要产生高速的正交信号时,用此方法不能很好的满足要求。cordic算法即坐标旋转数字计算方法,其基本思想是用一系列固定角度的不断偏摆逼近所需旋转的角度,实现包括乘除、平方根、三角函数、向量旋转(即复数乘法)以及指数运算,该算法往往需要通过乘法器和查找表才能实现多种超越函数的计算,这会导致硬件电路实现复杂、运算速度降低,此外它能够计算的角度范围也有限,故cordic算法在实际使用时有较大的限制条件。在实际应用中一般采用最有效、最简单的查表法,即事先根据各个nco正弦波相位计算好相位的正弦值,并以相位角度作为地址把该相位的正弦值数据存储在表中,然后通过相位累加产生地址信

18、息读取当前时刻的相位值在表中对应的正弦值,从而产生所需频率的正弦波;同时由于正余弦波形的对称性,只需要存储部分数据即可完成全相位的数值输出。这种实现方法,设计简单、运算速度较高,可以很好的满足在数字变频、扩频、调制解调等多种场合的要求。第四章 nco的结构及仿真4.1 nco的结构4.1.1 nco的顶层电路结构cordic迭代算法的一种最直接的实现方法是,只设计一级cordic运算迭代单元,然后在系统时钟的驱动下,将本级的输出作为本级的输入,通过同一级迭代完成运算。这种方法虽然很直观,但是为了将计算结果提供给下一级运算而导致占用了大量的寄存器,带来许多额外的资源消耗。而最大的缺点是运算速度较

19、慢(需要n-1个时钟周期才能输出一个数据),不利于数据的高速实时处理。因此在实际设计中,采用的是由16级cordic运算单元组成的流水线结构,正常工作时只需1个时钟周期就能输出1个数据,为数据实现高速实时处理提供了前提。每一级实现的功能是根据式(5)进行一次迭代,移位的位数等于当前的迭代级数,加减法选择由该级中z 的最高位(符号位)决定,得到下一级的x 、y 和z 的值。经过16级流水线运算后,z的值变为0,x 和y 的值则为初始值z0的余弦和正弦值。每一级电路结构主要包括2个移位器和3个加(减)法器,级与级之间直接相连,不需要额外的寄存器。i 的值为arctan(2-i),可将该小数转换为二

20、进制数后,存储于存储单元中,为每一级流水线提供查找表。若对于16级的流水线结构,则的范围是015。cordic迭代算法的流水线结构设计中还应该注意迭代序列所能覆盖的角度范围,若直接采用n 级迭代序列:0 ,1 ,2 ,n - 1 ,则迭代所能覆盖的角度范围仅有- 99.999.9。本设计采用了增加迭代次数的方法来扩大角度覆盖范围,即增加两个i = 0 的迭代,将迭代序列扩展为0,0,0,1,2,n-1,从而使角度覆盖范围也扩大到-。4.1.2结构设计用fpga和sram实现的nco的结构如图2所示。大框内部分是由fpga完成,主要部件分为频率控制字寄存器,相位控制字寄存器、通道控制字寄存器、累

21、加器、加法器、通道选择器和锁存器等。微处理器对nco进行控制,可用单片机或dsp(数字信号处理器)实现。图2 nco的结构框图(1) 频率控制字寄存器 频率控制字寄存器和相位控制字寄存器都是32位并行输入/并行输出寄存器,它们通过微处理器接口进行读写。频率控制字寄存器确定载波的频率,相位控制字寄存器确定载波的初始相位。32位累加器对代表频率的频率控制字进行累加运算,累加结果与代表初始相位的相位控制字通过32位加法器进行相加运算,相加结果的高16位数据读取查找表的地址信息。频率控制字寄存器、相位控制字寄存器、累加器和加法器可以用vhdl语言描述,集成在一个模块中,其vhdl源程序如下:entit

22、y addr_sin isport(clock:in std_logic;时钟信号 reset:in std_logic;同步复位信号 定义频率控制字寄存器 g_sin:in std_logic; data_con_sin:in std_logic_vector(31 downto 0); d_con_sin:out std_logic_vector(31 downto 0); 定义相位控制字寄存器 g_sin1:in std_logic; data_con_sin1:in std_logic_vector(31 downto 0); d_con_sin1:out std_logic_vect

23、or(31 downto 0); dout:out std_logic_vector(15 downto 0)加法器输出信号 ); end addr_sin; architecture behavioral of addr_sin is signal a_sin,a_sin1,count,count1:std_logic_vector(31downto0): “00000000000000000000000000000000”;定义中间变量并初始化 begin d_con_sina_sin;用于微处理器读频率控制字寄存器 d_con_sina_sin1;用于微处理器读相位控制字寄存器 dout

24、count1(31 downto 16);加法器输出 process(g_sin,data_con_sin)写频率控制字寄存器begin if(g_sin“1”)thena_sindata_con_sin;end if;end process; process(g_sin1,data_con_sin1)写相位控制字寄存器 begin if(g_sin11)then a_sin1data_con_sin1; end if; end process;process(clock,reset)加法器输出逻辑 begin if reset1then count“000000000000000000000

25、00000000000”;累加器清零 count1“00000000000000000000000000000000”;加法器清零elsif(clock1and clock event)then countcounta_sin;累加器输出 count1counta_sin1;加法器输出 end if ; end process;end behavioral; (2) 通道控制字寄存器和通道选择器 通道控制字寄存器和频率控制字寄存器与相位控制字寄存器的结构完全一样,都是32位并行输入/并行输出寄存器,通过微处理器接口进行读写。通道控制字寄存器仅用最后一位对通道选择器进行控制。通道选择器是二选一复

26、用器,当sel控制端为0时选择通道1,当sel控制端为1时选择通道2,通道选择器作为sram与fpga的接口,每个通道不仅包括16条地址线,而且还有3条控制线和32条数据线,在图1中,为了使nco的结构更加清晰,通道选择器的控制线和数据线没有表示出来。 (3)sram和锁存器 sram是64k32的高性能静态ram,由2个cy7c1021(64k16)并联构成,用作查找表。sram通过微处理器进行配置,直接存放2路、1个周期、65 536个16位载波样本(高16位存放正弦波,低16位存放余弦波)。虽然sram是异步器件,但由于工作速度极高,在简单控制逻辑配合下完全可以工作在同步模式下。nco工

27、作时,控制逻辑(用vhdl语言描述)通过通道1使sram的控制信号线处于读有效电平,用相位地址直接驱动sram,从sram读出的数据进入32位锁存器,分2路直接输出,不需要任何地址和数据转换逻辑。用于锁存器的时钟和用于累加器、加法器时钟在相位上相差180,这是由sram的开关特性决定的。 4.2 nco的及仿真本次设计采用性价比较高的altera公司的stratix芯片进行设计仿真,该系列芯片是基于1.5v工作电压、0.13m全铜布线sram工艺的fpga芯片。此系列芯片拥有最多114140个逻辑单元(les)和最多10mbits的内部ram。该系列芯片支持多种i/o标准,提供了最多可达12个的用于处理复杂时钟信号的锁相环(plls)。同时,stratix系列芯片提供了最多可达28个的数字信号处理单元(dsp),它们由总共224个内置硬件乘法器(9位乘9位)组成,利用它们可以有效地实现例如快速傅立叶变换(fft)、有限冲击响应(fir)滤波器、无限冲击响应(iir)滤波器等高性能的数字信号处理单元或者乘法器。图3 nco模块的主要端口定义quartus仿真输出波形,如图4所示。 图4 nco的仿真输出波形 此仿真波形为3个频点的nco输出波形,用matlab绘出输出的载波的波形如图5所示。图5 输出载波的波形由上面的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论