基于FPGA器件的DDS与并行的ADC、DAC实验

文章目录

一、顶层结构与频谱分析

1.顶层结构:

2.在SignalTap中观察ADC的输出信号:

3.用Matlab分析频谱:

该设计由一个PLL从50MHz晶振生成80MHz的DAC时钟、 20MHz的ADC时钟

一个单周期的DDS生成补码正弦波,转成无符号后送至DAC

拨码开关SW9 SW8用于控制DAC的输出幅度

其余的SW开关用于控制DDS频率字

2.在SignalTap中观察ADC的输出信号:

调整幅度使溢出信号为0:

3.用Matlab分析频谱:

ADC_OUT:(fs=20MHz)                               DAT_DAC:(fs=80MHz)

        采样频率fs=20MHz,最高频率6.25MHz;采样频率fs=80MHz,最高频率1.56MHz。符合奈奎斯特理论

二、修改参数

        把DDS的rom改成16比特,高12位送给DAC。生成不同频率的正弦波 。仍然保持80MHz的DAC时钟速率。

        用3比特的拨码开关设定输出正弦波频率

– 000~ 0.5MHz、001 ~ 1MHz 、010 ~ 1.5MHz、011 ~ 2MHz

– 100~ 2.5MHz、101 ~ 3.5MHz、110 ~ 4.5MHz、111 ~ 5.5MHz

使用20MHz的ADC采样频率,把数据导入到Matlab

观察频谱纯度、确认生成的信号频率正确

1.改rom为16比特,取高12位。

1.使用matlab的DDS ROM生成代码,生成7位输入,16位输出的rom

// ************************************************************** //
// FILE    : DDS_CORE_ROM.v 
// DSCP    : DDS CORE ROM FILE
// ABOUT   : auto generated rom file by gen_rom_rtl.m
// DATE    : 15-Jul-2021 18:59:05 
// ************************************************************** //
module sine_rom(
  CLK    ,           // clock
  RA     ,           // read address
  RD     );          // read data
input          CLK;
input  [6  :0] RA;
output [15 :0] RD;
reg    [15 :0] RD;
always @ (posedge CLK)
  case(RA)
     7 'd 0     :RD = #1 16'b 0000000000000000; //      0 0x0 
     7 'd 1     :RD = #1 16'b 0000011001000111; //   1607 0x647 
     7 'd 2     :RD = #1 16'b 0000110010001011; //   3211 0xC8B 
     7 'd 3     :RD = #1 16'b 0001001011000111; //   4807 0x12C7 
     7 'd 4     :RD = #1 16'b 0001100011111000; //   6392 0x18F8 
     7 'd 5     :RD = #1 16'b 0001111100011001; //   7961 0x1F19 
     7 'd 6     :RD = #1 16'b 0010010100100111; //   9511 0x2527 
     7 'd 7     :RD = #1 16'b 0010101100011110; //  11038 0x2B1E 
     7 'd 8     :RD = #1 16'b 0011000011111011; //  12539 0x30FB 
     7 'd 9     :RD = #1 16'b 0011011010111001; //  14009 0x36B9 
     7 'd 10    :RD = #1 16'b 0011110001010110; //  15446 0x3C56 
     7 'd 11    :RD = #1 16'b 0100000111001101; //  16845 0x41CD 
     7 'd 12    :RD = #1 16'b 0100011100011100; //  18204 0x471C 
     7 'd 13    :RD = #1 16'b 0100110000111111; //  19519 0x4C3F 
     7 'd 14    :RD = #1 16'b 0101000100110011; //  20787 0x5133 
     7 'd 15    :RD = #1 16'b 0101010111110100; //  22004 0x55F4 
     7 'd 16    :RD = #1 16'b 0101101010000001; //  23169 0x5A81 
     7 'd 17    :RD = #1 16'b 0101111011010110; //  24278 0x5ED6 
     7 'd 18    :RD = #1 16'b 0110001011110001; //  25329 0x62F1 
     7 'd 19    :RD = #1 16'b 0110011011001110; //  26318 0x66CE 
     7 'd 20    :RD = #1 16'b 0110101001101100; //  27244 0x6A6C 
     7 'd 21    :RD = #1 16'b 0110110111001001; //  28105 0x6DC9 
     7 'd 22    :RD = #1 16'b 0111000011100001; //  28897 0x70E1 
     7 'd 23    :RD = #1 16'b 0111001110110101; //  29621 0x73B5 
     7 'd 24    :RD = #1 16'b 0111011001000000; //  30272 0x7640 
     7 'd 25    :RD = #1 16'b 0111100010000011; //  30851 0x7883 
 
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于FPGADDS(Direct Digital Synthesis)信发生器是一种利用数字信号处理技术生成高精度、高稳定性的信号的设备。DDS信号发生器通过数字方式生成信号,可以实现频率、相位和幅度的精确控制,具有较低的相位噪声和频率稳定性。 FPGA作为硬件平台,提供了灵活性和可编程性,可以实现复杂的信号处理算法和实时控制。在基于FPGADDS信号发生器中,通常包含以下几个主要模块: 1. 相位累加器(Phase Accumulator):用于累加相位增量,生成相位信息。 2. 数字控制振荡器(Digital Control Oscillator,DCO):根据相位信息生成数字信号。 3. 数字到模拟转换器(Digital-to-Analog Converter,DAC):将数字信号转换为模拟信号。 4. 滤波器:对DAC输出的模拟信号进行滤波,去除高频噪声。 5. 控制接口:提供外部控制接口,用于设置频率、相位和幅度等参数。 基于FPGADDS信号发生器具有以下优点: 1. 高精度和高稳定性:由于采用数字方式生成信号,可以实现非常精确的频率和相位控制,具有较低的相位噪声和频率稳定性。 2. 灵活性和可编程性:FPGA作为硬件平台,可以根据需求进行灵活的算法设计和功能扩展,适应不同的应用场景。 3. 实时性:基于FPGADDS信号发生器可以实时生成信号,响应速度快。 4. 可靠性:FPGA具有较高的可靠性和抗干扰能力,适用于各种工作环境。 相关问题: 1. 什么是DDS信号发生器? 2. FPGADDS信号发生器中的作用是什么? 3. 基于FPGADDS信号发生器有哪些优点? 4. 如何控制基于FPGADDS信号发生器的频率和相位?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值