DDS,实验报告分析和总结

来源:自查报告 发布时间:2022-10-25 20:45:06

下面是小编为大家整理的DDS,实验报告分析和总结,供大家参考。

DDS,实验报告分析和总结

 

 1 / 33

 电子线路硬件课程设计实验报告

 课题:DDS 信号发生器设计班级:电信 0802

 作者:丁高强

 学号:U200812809 指导老师:罗杰课设评价:

 课设成绩:

 2 / 33

 一. 实验目的

 1. 通过本课程的训练,较系统地完成电子系统设计过程的方案论证、电路设计、电路实现、装配调试、系统测试等各个环节, 加深对模拟电路、数字电路、微机原理等相关课程的理论知识的分析理解和综合应用,从而掌握工程设计的基本方法和一般规律。

 2. 充分发挥学生的自我能动性和创造力,引导学生由原理分析向工程设计过渡; 3. 进一步熟悉用集成器件实现电路与系统的方法。

 4. 培养撰写综合实验报告的能力。二 二. 实验原理

 DDS 的基本原理是利用采样定理,通过查表法产生波形。DDS 的结构有很多种,其基本的电路原理可用下图来表示。

 相位累加器由 N 位加法器与 N 位累加寄存器级联构成。每来一个时钟脉冲fc,加法器将频率控制字与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的

 3 / 33

 输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行 线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时, 把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位, 相位累加器的溢出频率就是DDS 输出的信号频率。用相位累 加器输出的数据作为波形存储器( ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出, 完成相位到幅值转换。波形存储器的输出送到D/A转换器,D/A 转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形 式信号。低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的信号波形。

 DDS 在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传 统频率合成技术所能达到的水平,为系统提供了优于模拟信号源的性能。

 在实现此DDS 波形产生器时有很多方式,在此我们选择FPGA 方式。原理图如下:

 DDS 原理框图

  DATA

 B B

  fclc 20 12 储 据

 数

 DA转

 换器

 输出模拟波形 32 数据器寄

 存存

 32 器 存

 F

 32 20 低20位不用

 4 / 33

 假设时钟为fclc,数据保持寄存器选择 32 Bit,在时钟驱动下,累加器输出结果 F 被反馈到累加器输入端B,B 和 DATA的数据被累加到F,下一个时钟脉冲又将 F 反馈到 B,再次与 DATA累加到 S,下一个时钟脉冲又将F 反馈到B,如此循环累加,实现按步进值,按时钟节拍循环累加,使得N Bit 数据被徐循环累加,产生循环扫描的地址码 0~4096(高 12 Bit)。完成一次地址循环需要的时间由时钟和步进值决定,可以由公式计算:

 T  2 M

 DATA

 * 1 fclc

 一次地址循环可以输出一个完整的波形,既T 就是输出波形的周期, 转换成频率f,得到计算公式:

 1  2 M

  f  fclc * DATA

 f fclc * DATA 2 M

  当晶振 fclc 和计数器位宽 M 确定之后,既与步进值 DATA成正比, 对 DATA的调整可以完成对的设定,当 M 足够大时,比例常数可以很小,

 三 三. 实验内容基本要求:

 (1)正弦波输出频率范围:1kHz~1MHz;

 5 / 33

 (2)

 具有频率设置功能,频率步进:100Hz; (3)

 输出信号频率稳定度:优于 10-4; (4)

 输出电压幅度:在负载电阻上 Vopp≥1V; (5)

 失真度:用示波器观察时无明显失真。

 (6)

 能产生三角波、方波信号,频率范围自定。扩展要求:

 1)

 产生模拟频率调制 (FM) 信号:在 100kHz~10MHz 频率范围内产生 10kHz 最大频偏,且最大频偏可分为 5kHz/10kHz 二级程控调节,正弦调制信号频率为 1kHz,调制信号自行产生; 2)产生二进制 PSK 和 FSK 信号:在 100kHz 固定频率载波进行二进制键控,二进制基带序列码速率固定为 10kbps ,二进制基带序列信号自行产生; 3) 利用 DDS 的原理来设计分频电路,由系统 50MHz 时钟,分出一个 20.48 kHz 的时钟信号。

 四 四. 实验过程

 此次试验中所用的软件为 Quartus II 9.1 1.

 打开 Quartus II 9.1 选择 File New Project Wizard 并建 立一个工程命名为 dds_top。如下图所示

 6 / 33

 然后点击 next,给所建工程命名如下图

  2.

 然后点击 next ,会出现导入文件的界面,因为我不需要导入文件, 所以直接点击 next 进入下一步进行器件选择。本次试验中我们所用的器件为 cycloneII EP2C35F672C6R 如下图所示

 7 / 33

 8 / 33

 3.

 点击 Finish,至此一个完整工程就建立完毕。

 此次试验我们采用画原理图的方式来实现

 DDS 功能,DDS 的核心部分包括相位累加器和波形存储器,下面通过原理图来实现

 4.

  选择 File->New 选项出现如图所示界面,我们选择Block Diagram/Schematic File 文件,点击 OK

 9 / 33

  5.

 首先用锁相环,对 50Mhz 的系统时钟进行分频和倍频

 10 / 33

 建立好的锁相环如下图

 KEY[0]用来复位,锁相环的输入时钟信号有 DE2 板子提供的50MHz 时钟。此时得到 100Mhz 和 10MHz,其中 100Mhz 作为其他逻辑器件的时钟,10MHz 在进行一次分频得到 1Hz 的信号用于频率改变。

 altpll0

 CLOCK_50 KEY[0]

 INPUT VCC

 INPUT VCC

 NOT

 areset

 inclk0

 areset areset

 inclk0 frequency: 50.000 MHz c1

 c0

 clock_100

 clock_10

 Operation Mode: Normal

 inst2 Clk

 Rati o Ph (d g D )

 C

 (%)

 c0

  2/1

  0.00 50.00 c1

  1/5

  0.00 50.00 inst Cyclone II

 11 / 33

  6.

 建立相位累加器 从 从

 10MHz 中分得

 1Hz 的原理图

 a. 首先建立一个加减法器,用来实现信号频率的加或者减的,此模块通过调节 DATA 的值来改变频率,用 SW【0】来控制加或者减,KEY【0】控制时钟的使能。

  b. 此模块使用了一个选择器通过 SW[3:1]来选择每次的递增或递减量,和上面的加减法器来实现DATA的加或者减。

 sload

 Freq_div up counter

 data[23..0]

 clock_10

 clock

 inst20 q[23..0]

 cout

 clock_1hz

 Div_pre 6777216 24 inst21 Add_Sub

 SW[0] INPUT VCC

 add_sub

 clock_1hz

 areset

 dataa[31..0] A clock datab[31..0] B clken aclr inst15 A+B/A-B result[31..0] T

 91

 O

 t s

 N n

 i

 2

 D

 6 2

 7 N 1 D

 1 A

 t s

 N N n

 i

 A

 t s

 N n

 i

 NOT

 KEY[3]

 INPUT VCC

 inst18

 12 / 33

 c.将上

 Freq_1M

 42949673 32 inst8 Freq_100K 4294963 32

 inst9 Freq_10K 429497

 32

 inst10

 Freq_1K

  FrqStepSel

  data6x[31..0]

 data5x[31..0]

 data4x[31..0]

 data3x[31..0]

 42950

 32

 inst11

 Freq_100 4295

 32

 inst12

 Freq_10 429

 32

 inst13

 Freq_1 43

 32

 inst14

 data2x[31..0] data1x[31..0] data0x[31..0] clock

 inst6

 result[31..0]

  sel[2..0]

  clock_100

  PIN_N26 PIN_P 25

 PIN_AE 14

 SW[3..1] INPUT VCC

 面产生的DATA偏移量和原始 DATA(原始 DATA对应的频

 率为 5000Hz )

 相加, 就可以产生新的 DATA, 即新的频率。

 Freq_init

 dataa[31..0] A

 lpm_constant7 214750

 32 inst23

 clock_100 clock datab[31..0] inst22 A+B B result[31..0] tem[31..0]

  d.产生新的DATA值后在通过累加器,就可以产生数据存储器的地址值。如下图:

 7. DDS 的另外一个部分就是数据存储器,下面就介绍一下数据存储器的生成。

 a. 在系统的元件库中招lpm_rom 如下图,并设置存储器的位宽为 10。寻址范围为 0~4095. FreqencyAdd dataa[31..0] A

 clock

 datab[31..0] B

 inst4 A+B result[31..0]

 13 / 33

  b. 将正弦信号的采样数据放到 ROM 中如图。然后点击 Finish 一个 ROM 就建立完毕。

 14 / 33

  c. 建立完毕后如图所示。

 d. 同理在分别建立存储方波、三角波采样数据的存储器,如下图三角波数据存储器

  方波数据存储器:

 此模块的总体原理图如下图,用相位累加模块所产生的地址信号 的高 12 位(Ctrlword[31:20])做存储器的地址信号,此时三个存储器都会有数据输出,我们可以通过多路选择器来选择我们想要的波形。

 SinRom

 address[11..0]

 q[9..0]

 clock

  inst31 TranwaveRom address[11..0] clock

 q[9..0]

 inst32 SquareRom address[11..0] clock

 q[9..0]

 inst33

 15 / 33

 SquareRom Ctrlword[31..20] address[11..0] q[9..0] clock

 inst33 WaveSel TranwaveRom address[11..0] q[9..0] clock data3x[9..0] data2x[9..0] data1x[9..0] result[9..0] data0x[9..0] clock OUTPUT WaveOut[9..0] inst32 inst34 sel[1..0] SinRom clock_100 address[11..0] q[9..0] clock

 inst31 choice[1..0] SW[5..4] INPUT

  VCC

  e. 上面所用到的.mif 文件是通过专门的软件产生大家也可以通过 C 语言或者 Matlab 产生这里就不再赘述,正弦波的存储数据如下图。同理也可以产生三角波,方波的存储数据。

 16 / 33

 17 / 33

 通过以上的试验后可以产生基本的波形,下面在介绍一下扩展部分的原理图。

 8.

 首先介绍利用 DDS 的原理来设计分频电路,由系统 50MHz 时钟,分出一个 20.48 kHz 的时钟信号。其实时钟信号就是上面已经产生的方波,只要将其的频率调整为 20.48KHz,占空比调为 0.5 即可。当DATA=1759219 时f=20.48KHz,输出在通过多路选择器选中就可以输出 20.48KHz 的时钟,下图就是产生 20.48KHz 时钟的原理图

 输出

 产生20.48KHz时钟信号的原理图

 9.

 对于2FSK我们用频率为5KHz,占空比为0.5的方波信号当作调制信号。当信号为1时对应的频率为 150KHz 当信号 FreqencyAdd

 addrs[31..0]

 result[31..0] A

 dataa[31..0]

 A+B

 clock

 CLOCK_50 B

 datab[31..0]

 lpm_constant1

 1759219 inst39 32 inst43 lpm_rom0

 addrs[31..20] CLOCK_50 address[11..0]

 clock q[9..0]

 inst41

 18 / 33

 为0时对应的频率为 100KHz。原理图为

  FreqencyAdd dataa[31..0] tema[31..0] result[31..0]

 A+B A clock CLOCK_10 datab[31..0] B

 inst40

 lpm_constant2

 2147484

 32

  inst7

  产生5KHz方波信号的原理图

 通过调制信号来选择不同频率载波的原理图

 10.

 对于2PSK,我们所用到的调制信号是频率为5Khz,占空比为0.5的方波信号(将 2FSK 的调制信号和 SW[16]相与得到)。当信号为1时相位偏移180度,当信号为0时相位偏移 0 度。如下图所示:

 lpm_rom1

 tema[31..20]

 address[11..0] clock inst30

 FSK[9..0]

 q[9..0]

 CLOCK_50 FSK[9]

 SW[16]

 INPUT VCC PIN_V1

 Parameter Value

 lpm_constant4

 6442451 WIDTH

 32

 inst51 32 BUSMUX

 dataa[]

 lpm_constant3

 2147484 0 result[]

 datab[]

 1 inst50 32 inst47

 sel

 FSK[9]

 19 / 33

 2PSk 原理图

 11.对于FM来说载波的频率随着输入信号的幅值的变化而变化, 所以我们将产生的调制信号乘以常数K后,当做DATA来用。因为信号的值一直在变所以DATA一直在变,因此载波的频率也随着改变。但必须保证1023×K=858994(此时对应的最大频偏为10K)或者1023×K=429496(此时对应最大的频偏为5K Hz)。所用调制信号为1KHz。

 PhaseAdd Ctrlword[31..20] clock_100 dataa[11..0] A

 clock

 datab[11..0] B

 inst5 A+B

 result[11..0] Phase_0 0 12 inst24 Parameter Value WIDTH 12

 BUSMUX dataa[]

 0

 Phase_180 2048 12 inst26 result[] datab[] 1

 inst44 sel

 FSK[9] AND2 2PSK SW[16] INPUT VCC inst38 lpm_add_sub0 lpm_constant8 42950 32 inst35 clock_100 clock

 dataa[31..0] A

 result[31..0] kk[31..0] A+B datab[31..0] B

 inst42 lpm_rom2 kk[31..20] clock_100 address[11..0] clock

 f m[9..0] q[9..0]

 inst46

 20 / 33

 lpm_constant11 4190

 inst57

 32

 BUSMUX dataa[] 0 Param eter Value WI DTH 32 result[] datab[] 1 lpm_constant10 8380 inst53 inst56 sel 32 产生1KHz的信号的原理图

 VCC INPUT

 SW[14]

 FM的调制过程原理图

 12、最后介绍一下显示模块,显示模块就是将频率控制字转换成对应的频率,然后再显示出来。此模块的代码和绘制的原理图如下图所示。

 module dec2seg(clk_100,datain,seg7,seg6,seg5,seg4,seg3,seg2,seg1,seg0); input clk_100; input [31:0] datain; output [6:0]seg7,seg6,seg5,seg4,seg3,seg2,seg1,seg0; reg [3:0] tmp7,tmp6,tmp5,tmp4,tmp3,tmp2,tmp1,tmp0; always @(posedge clk_100) begin tmp7 <= datain / 32"d429760409;// 得到十兆位数据

 lpm_mult0 clock_100

 clock f m[9..0]

 dataa[9..0] rere[41..0]

 datab[31..0] result[41..0] Unsigned multiplication

 inst48

 dec2seg clock_100 DATA clk_100 datain[31..0] seg7[6..0] seg6[6..0] seg5[6..0] seg4[6..0] seg3[6..0] seg2[6..0] se...

推荐访问:实验报告分析和总结 实验 报告 分析
上一篇:董事会履职报告(共2篇)
下一篇:AJL04施,工,放,样,报,验,单三层(2022年)

Copyright @ 2013 - 2018 小艾秘书网 All Rights Reserved

小艾秘书网 版权所有 湘ICP备11019447号-75