基于FPGA和SRAM的数控振荡器的设计与实现_百度文库_第1页
基于FPGA和SRAM的数控振荡器的设计与实现_百度文库_第2页
基于FPGA和SRAM的数控振荡器的设计与实现_百度文库_第3页
基于FPGA和SRAM的数控振荡器的设计与实现_百度文库_第4页
全文预览已结束

下载本文档

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

文档简介

1、基于FPGA和SRAM的数控振荡器的设计与实现佟力永,肖山竹 1 引言 数控振荡器是数字通讯中调制解调单元必不可少的部分,同时也是各种数字频率合成器和数字信号发生器的核心。随着数字通信技术的发展,对传送数据的精度和速率要求越来越高。如何得到可数控的高精度的高频载波信号是实现高速数字通信系统必须解决的问题,可编程逻辑器件和大容量存储器的发展为这一问题的解决带来了曙光。本文介绍如何用FPGA(现场可编程逻辑门阵列)和SRAM(静态随机存储器)实现高精度数控振荡器。 2 NCO概述 NCO(Numerical Controlled Oscillator)即数控振荡器用于产生可控的正弦波或余弦波,其实

2、现的方法目前主要有计算法和查表法等。计算法以软件编程的方式通过实时计算产生正弦波样本,该方法耗时多且只能产生频率相对较低的正弦波,而需要产生高速的正交信号时,用此方法无法实现。因此,在实际应用中一般采用最有效、最简单的查表法,即事先根据各个NCO正弦波相位计算好相位的正弦值,并以相位角度作为地址把该相位的正弦值数据存储在表中,然后通过相位累加产生地址信息读取当前时刻的相位值在表中对应的正弦值,从而产生所需频率的正弦波。 用查表法实现NCO的性能指标取决于查表的深度和宽度,即取决于表示相位数据的位数(查表存储器地址线的位数)和表示正弦值数据的位数(查表存储器数据线的位数)。改善NCO性能最简单和

3、最根本的方法是加大查找表的深度和宽度。目前,用查找表法实现NCO的普遍做法是用片内ROM作为查找表,由于片内资源的限制,查找表的深度和宽度一般不会很大(通常为256×8bits),大大限制了NCO性能的提高,用独立的大容量SRAM作为查找表,把查找表从片内移到片外,可以较好解决这个问题,基于这种思想,笔者成功地用FPGA(Xilinx公司的XC2V1000型门阵列)和SRAM(Cypress公司的CY7C1021型存储器)实现了NCO。 3 NCO的实现 3.1 结构设计 用FPGA和SRAM实现的NCO的结构如图1所示。大框内部分是由FPGA完成,主要部件分为频率控制字寄存器,相位

4、控制字寄存器、通道控制字寄存器、累加器、加法器、通道选择器和锁存器等。微处理器对NCO进行控制,可用单片机或DSP(数字信号处理器)实现。 3.1.1 频率控制字寄存器、相位控制字寄存器、累加器和加法器 频率控制字寄存器和相位控制字寄存器都是32位并行输入/并行输出寄存器,它们通过微处理器接口进行读写。频率控制字寄存器确定载波的频率,相位控制字寄存器确定载波的初始相位。32位累加器对代表频率的频率控制字进行累加运算,累加结果与代表初始相位的相位控制字通过32位加法器进行相加运算,相加结果的高16位数据读取查找表的地址信息。频率控制字寄存器、相位控制字寄存器、累加器和加法器可以用VHDL语言描述

5、,集成在一个模块中,其VHDL源程序如下:entity 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_s

6、in1:out STD_LOGIC_VECTOR(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;用

7、于微处理器读相位控制字寄存器 doutcount1(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“00

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

9、对通道选择器进行控制。通道选择器是二选一复用器,当Sel控制端为0时选择通道1,当Sel控制端为1时选择通道2,通道选择器作为SRAM与FPGA的接口,每个通道不仅包括16条地址线,而且还有3条控制线和32条数据线,在图1中,为了使NCO的结构更加清晰,通道选择器的控制线和数据线没有表示出来。 3.1.3 SRAM和锁存器 SRAM是64K×32的高性能静态RAM,由2个CY7C1021(64K×16)并联构成,用作查找表。SRAM通过微处理器进行配置,直接存放2路、1个周期、65 536个16位载波样本(高16位存放正弦波,低16位存放余弦波)。虽然SRAM是异步器件,但

10、由于工作速度极高,在简单控制逻辑配合下完全可以工作在同步模式下。NCO工作时,控制逻辑(用VHDL语言描述)通过通道1使SRAM的控制信号线处于读有效电平,用相位地址直接驱动SRAM,从SRAM读出的数据进入32位锁存器,分2路直接输出,不需要任何地址和数据转换逻辑。用于锁存器的时钟和用于累加器、加法器时钟在相位上相差180°,这是由SRAM的开关特性决定的。 3.2 NCO的工作过程 NCO工作前必须对SRAM进行初始化,图2示出NCO的工作流程。首先,微处理器向通道控制字寄存器写入1,使通道选择器选择微处理器接口。然后,微处理器对SRAM进行配置,向SRAM中写入载波样本,接着,

11、微处理器向频率控制字寄存器和相位控制字寄存器写入频率控制字和相位控制字,确定载波的频率和初始相位,最后,向通道控制字寄存器写入0,通道选择器选择通道1,使NCO处于工作状态。此时微处理器可以对频率控制字寄存器和相位控制字寄存器进行动态读写,实现对NCO的动态实时控制,完成NCO频率与初始相位的调整。 3.3 NCO性能评估 按照上述结构,笔者设计了一种NCO系统。该系统的工作时钟为80MHz,用DSP作为微处理器。通过系统测试,该NCO的性能指标达到了设计要求,频率分辨率f0.0186Hz,信噪比(SNR)在100dB以上,图3示出NCO的典型特性曲线。4 结构特点 用FPGA和SRAM实现数

12、控振荡器有许多特点。 首先,查找表的容量可以进一步加大。此设计的结构把相位累加部分和查找表分开单独实现,由于FPGA具有可重复编程性且有丰富的I/O资源,因此只要稍加改动FPGA内的逻辑设计就可以外挂更大容量的SRAM。 其次,载波样本的数据位数可以灵活控制。在查找表容量一定的情况下,可以根据具体应用调整载波样本的数据宽度。实现的手段有二:一是在对SRAM配置时通过微处理器以软件编程的方式直接调整SRAM的数据宽度;二是在FPGA内对SRAM输出数据的位数进行截位处理,可通过调整FPGA中锁存器的输出实现。 第三,能够灵活应用到其他领域中,该NCO只消耗FPGA中的6的Slices资源,大量资源包括片内RAM和硬件乘法器都没有用到,利用这些资源可以对NCO进行功能扩展,实现数字下

温馨提示

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

评论

0/150

提交评论