好文档 - 专业文书写作范文服务资料分享网站

基于DSPBuilder数字信号处理课程设计.docx

天下 分享 时间: 加入收藏 我要投稿 点赞

上 海 电 力 学 院

基于 DSP Builder 数字信号处

理课程设计

实验名称: 专 姓 班 学

业: 名: 级: 号:

AM调制 FM调制及 DDS信号

通信工程

一、设计目的

通过本次课程设计,巩固已学数字电路与逻辑设计的理论知识,掌握数字信号处理方法,引导学生从

功能设计转向系统设计,掌握由现场可编程逻辑器件实现数字信号处理的方法,掌握现场可编程逻辑器件 的应用设计,从而拓宽数字技术及处理的知识和设计能力,提高学生动手能力,培养学生分析问题与解决 问题的能力。

二、设计内容

本设计利用 FPGA 开发软件 QuartusII , DSP BUILDER , MATLAB ,设计实现各类波形信号的发生电

路,如 AM 调制、 FM 调制、 DDS 控制等,进行引脚锁定、全编译通过后,完成 配置工作,并在 Matlab Simulink 中使用 Scope 显示仿真结果,在 示波形情况。

FPGA 器件 Cyclone II 的

DE2 开发板上下载并通过七段数码管,显

三、设计要求

1. 独立完成 AM调制、 FM调制、 DDS控制电路的设计、译码显示电路的设计。 2. 熟悉 QuartusII , DSP BUILDER, MATLAB环境下系统开发设计流程。 3. 在 DE2 上验证设计结果,并认真写出设计报告。

四、设计原理及步骤

(一) .AM 调制的设计

AM幅度调制函数信号可以用式

F Fdr (1 Fam m) 来表述,其中, Fdr 、 Fam 、 F 分别是被调制的

AM的输出信号,它们都是有符号数,

m是调制度,

载波信号,需要被调制的信号和调制后

0 m 1 。

s( t ) =m( t ) *sin ( t )其中 m( t )是 1 或者是 0, sin ( t )是载波

观察 s( t )如果有波形输入的是 基于 DSP Builder

1 没波形是 0。

的数字的 AM系统如下图所示

元器件的主要参数设定在这里省略介绍

仿真如下图所示:

通过 matlab 转化成 VHDL语言通过 Quartus2 并下到板上验证, 在这里需要添加几个模块一是分频器因为我

们晶振频率较高反映在数码管上分辨不出所以叫频率降低,二是把

8 位的二进制传化成三位的十进制数,

clock 、使能端 sw,一个数字输入

三是把十进制的数显示在数码管上;最后通过引脚分配输入端口有时钟

拨码开光,输出有四个数码管显示。

通过图形编辑法最终的实现电路为下图所示:

Rom中的 mif 表格: 分配引脚: 波形仿真:

下载到板上进行验证

:

0 交替跳动,

可以看到的数码管的数字在以不同的值在跳动,调制前的数据没有变,调制后的数据和

因为输入的数字信号是

1 和 1 交替变化的,因此出现了这样的结果。

(二). DDS控制电路的设计

DDS,即直接数字合成器,是采用数字技术的一种新型技术,他通过控制频率、相位增量的步长,产

生各种不同频率的信号。它的优点在于:有较高的频率;可以实现快速的频率切换;在频率改变时能够保

持相位的连续;很容易实现频率、相位和幅度的数控调制等。目前可采用专用或可编程逻辑芯片实现

DDS,

专用的 DDS芯片产生的信号波形、功能和控制方式固定,常不能满足具体需要。具有器件规模大、工作速

度快及可编程的硬件特点,并且开发周期短,易于升级,因为非常适合用于实现

DDS。

主要由 16 位

DDS(直接数值合成器) 信号发生器, 通过不同的频率控制字产生各种不同频率的信号。

加法器、 16 位寄存器正弦波形数据查找表(

LUT)、频率控制字组成,并且其输出计算波形为:

K

c(t)

cos(2 2 N f ct) 。

DDS 原理:

DDS的结构原理图如图所示,

相位累加器、相位、正弦 字控制的功能。

DDS以数控的方式,产生频率、相位和幅度可控的正弦波。电路包括了

DDS结构中的数字部分,具有数

ROM查找表、基准时钟源等组成。其中前三者是

相位字输入

频率字输入

相位累加器

基准时钟

相位调制器 正弦 ROM 查找表

D/A

图 基本 DDS结构框图

如图所示, DDS系统的核心是相位累加器,完成相位累加过程。在基准时钟的控制下,频率控制字由

累加器累加, 以得到相应的相位数据, 相位调制器接收相位累加器的相位输出,

主要用于信号的相位调制,

其输出的数据作为取样地址来寻址正弦

ROM查找表,完成相位 - 幅度变换,输出不同的幅度编码;再经过

D/A 转换器得到相应的阶梯波;最后经低通对阶梯进行平滑处理,即可得到由频率控制字决定的连续变换 输出的正弦波。

由以上原理可以得到

DDS的输出频率

f

B

out

2 N

f clk ,式中, B 是频率的控制字,它与系统时钟

频率呈正比; f clk 是系统基准时钟的频率值; N 是相位累加器数据位宽,也是频率输入字的数据位宽。

DSP Builder 简介:

DSP Builder

是美国 Altera 公司推出的一个面向 DSP开发的系统级工具,他作为 Matlab 的一个

Simulink ,使得用 FPGA设计 DSP系统完全通过 可直接向硬件描述语言转换,并自动调用

Simulink 的图形化界面进行建模、系统级仿真,设计模型

Quartus Ⅱ等 EDA设计软件,完成综合、网表生成以及器件适配

乃至 FPGA的配置下载, 使得系统描述与硬件实现有机的融合为一体, 点与优势。 基于 DSP Builder 基于 DSP Builder

充分体现了现代技术自动化开发的特

的 DDS设计与仿真

的 DDS系统如图所示:

图 DDS 直接频率合成器

DSP Builder/Matlab Simulink

模型

仿真图如下图:

图 DDS 仿真图

通过 matlab 转化成 VHDL语言通过 Quartus2 并下到板上验证, 在这里需要添加几个模块一是分频器因为我

们晶振频率较高反映在数码管上分辨不出所以叫频率降低,二是把

8 位的二进制传化成三位的十进制数,

clock ,输出由三个数码管显示。

三是把十进制的数显示在数码管上;最后通过引脚分配输入端口有时钟

通过图形编辑法最终的实现电路为下图所示:

最后分配引脚下载到板上验证实验现象

引脚分配如下图:

通过 matlab 得到下载到 DE2 板子上的数据:

下载到 DE2板子上,观察实验现象可以看到数码管显示的是同

scope 里面出来的波形一直的数据,数据我

通过 matlab 显示出来,对照可以看到其变化一致。

五. 设计结论

本设计使用了 DSP Builder ,建立了基于 DDS, AM调制系统模型,使用 Quartus Ⅱ下到板上进行验证,

结果表明该模型可以正确地产生

AM调制信号、 DDS信号。

DSP Builder ,它作为一个算法级的设计工具,只需在

Signal Compiler

Simulink 中进行图

本方案最大的特点是采用了

形化设计,仿真通过后,即可使用

把 MATLAB/Simulink 模型文件( .mdl )转换成相应的

TCL 脚本。根据这些文件后续步骤可

硬件描述语言 VHDL设计文件( .vhd ),以及用于控制综合与编译的

以由 Quartus Ⅱ自己完成。大大减少了编程的复杂度,使硬件描述更加的直观。

此外,本方案采用

DDS技术,获得了较高的频率分辨率,同设计方法简单快捷,降低了实现的复杂度,

而且便于修改和功能扩充。

通过该设计使我全面熟悉、掌握

VHDL语言基本知识,掌握利用 VHDL语言对信号发生器的编程和时序逻

辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一

步提高动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。

通过了本次实验使我对程序设计有了新的认识与体会,做实验不单单是在软件上运行出结果就表明对

了,当其与硬件连接后能否对应现象也是非常重要的,我们不仅要学好软件,也要将硬件部分做好,多学

习,多思考,在今后的运用中也将会更加的得心应手。总之,这次课程设计我受益匪浅。

源程序:

AM调制的分频器:

library ieee; use

entity clk_1_gen is port(

clkin :in std_logic; clkout:out std_logic); end clk_1_gen;

architecture behave_clk_1_gen of clk_1_gen is signal Counter:Integer RANGE 0 TO N; signal Clk: Std_Logic; begin

process(clkin) begin

if rising_edge(clkin) then -- 每计到 4 个( 0~3)上升沿,输出信号翻转一次 if Counter=N then

Counter<=0; Clk<=NOT Clk; else

Counter<= Counter+1;

end if; end if;

end process; clkout<= Clk;

end behave_clk_1_gen;

DDS调制的分频器:

library ieee; use

entity clk_1_gen is port(

clkin :in std_logic; clkout:out std_logic); end clk_1_gen;

architecture behave_clk_1_gen of clk_1_gen is constant N: Integer:=390624;

signal Counter:Integer RANGE 0 TO N; signal Clk: Std_Logic; begin

process(clkin) begin

if rising_edge(clkin) then

if Counter=N then

Counter<=0; Clk<=NOT Clk; else

Counter<= Counter+1;

end if; end if;

end process;

clkout<= Clk;

end behave_clk_1_gen;

8 选 3 选择器:

library ieee; use

eigth_to_3 is

7kerz9aldj3z01x0bvw21wxgu8k84a00ngn
领取福利

微信扫码领取福利

微信扫码分享