FPGA_ASIC-基于FPGA的正交数字混频器的设计与验证

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的正交数字混频器的设计与验证

摘 要:本文研究了用DDS加乘法器实现正交数字混频器的设计及其完整的验证方法,用DDS产生的正/余弦正交本振序列与模拟信号通过A/D采样数字化后的数字序列相乘,再通过数字低通滤波实现数字混频。其中DDS采用正弦和余弦波形幅值存储功能依靠片内EAB 实现,省去了片外ROM,符合片上系统(SoC)的思想;用MATLAB软件增强QUARTUS的仿真功能,得到的仿真结果完整而且直观。

关键词:FPGA;NCO;DDS;MATLAB 中图分类号:TN773

Design and Certification of Quadrature NCO Based on FPGA Abstrct: The paper mainly studies the design and certification of quadrature NCO realized by DDS and multiplication based on FPGA, sin and cos sequences are produced by DDS, and the two output sequences then multiplicate with the input digital sequence, after by LPF we can get the results of quadrature NCO. in which, the wave amplitude are stored in memory of on-chip EAB. The emulational function of QUARTUS are enganced by MATLAB, and the result is rounded and intuitionistic.

Key Words: FPGA;NCO;DDS;MATLAB

1 概述

数字混频器是数字通讯中调制解调单元必不可少的部分,同时也是各种数字频率合成器和数字信号发生器的核心。随着数字通信技术的发展,对传送数据的精度和速率要求越来越高。如何得到可数字的高精度的高频载波信号是实现高速数字通信系统必须解决的问题,利用FPGA(现场可编程逻辑门阵列)实现数字混频具有设计灵活、精确度高、频率高和稳定性好等优点,可以产生各种调制信号,广泛应用于通信、遥测、电子对抗和仪表工业等领域。

数字混频可采用CORDIC加累加器或DDS加乘法器实现,由于DDS加乘法器实现比较简捷因此得到普遍应用, DDS产生正/余弦正交本振序列与模拟信号通过A/D采样数字化后的数字序列相乘,再通过数字低通滤波实现数字混频。

2 DDS的实现

2.1 DDS的原理与设计

DDS的作用是产生正交的正弦和余弦样本。正(余)弦样本可以用实时计算的方法产生,但这只适用于信号采样频率很低的情况。在软件无线电超高速信号采样频率的情况下,用实时计算的方法实现比较困难。此时,产生正弦波样本的最有效、最简便的方法就是查表法,即事先根据各个正弦波相位计算好相位的正弦值,并按相位角度作为地址存储该相位的正弦值数据,因此,DDS采用图1所示的顶层电路。其基本功能包括:接收频率控制字FSW进行相位累加;以相位累加器的输出为地址,对存有正 (余) 弦幅度值的存储器进行寻址。输出的离散幅度码即为DDS的输出结果,用查表法实现DDS的性能指标取决于查表的深度和宽度,即取决于表示相位数据的位数和表示正弦值数据的位数。

假设存储器有1024个波形数据,系统时钟频率FCLK为1.024MHZ,相位累加器字长N=10:当频率字FSW=1,在系统时钟作用下,相位累加器累加1024个系统时钟后溢出,即经过1024个系统时钟输出波形循环一周,系统输出频率FOUT=FCLK/1024=1KHZ。当频率字FSW=2,相位累加器累加512个系统时钟后溢出,即经过512个系统时钟输出波形循环一周,系统输出频率

FOUT=FCLK/512=2KHZ。可见,输出频率FOUT与系统时钟频率FCLK关系为FOUT=FSW*FCLK/2N,从存储器中读出数据的过程是对存储器所存储波形的再次采样,一个周期查表的点数即为采样点数,根据奈奎斯特定理,每个周期至少采样2点才能重构波形,这样理论上最大输出频率

FMAX=FCLK/2, 而最小输出频率FMIN=FCLK/2N,也是系统的频率分辨率。

根据上述原理, 系统输出频率FOUT只与频率字FSW, 系统时钟频率FCLK和相位累加器字长N有关, 当系统输出频率FOUT和相位累加器字长N固定时,通过改变频率字FSW可以方便地改变系统输出频率FOUT; 频率分辨率则只与系统时钟频率FCLK和相位累加器字长N有关。

图1 DDS的顶层电路

因此,DDS的设计可分为两个功能模块:相位累加器模块和正 (余)弦幅值存储器模块。两个模块的设计过程如下。

(1)相位累加器模块采用VHDL语言实现:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity jia is

port( clk: in std_logic;

freqin: in std_logic_vector(9 downto 0);

fankui: inout std_logic_vector(9 downto 0);

adder: inout std_logic_vector(9 downto 0);

romadd: out std_logic_vector(9 downto 0));

end entity jia;

architecture behave of jia is

signal temp:std_logic_vector(9 downto 0);

begin

process(clk)

begin

temp<=freqin;

if clk'event and clk='1' then

adder<=temp+fankui;

相关文档
最新文档