FPGA SDR 实验 并行ADC、DAC

本次实验旨在掌握并行ADC和DAC接口时序,通过DDS合成信号经DAC输出,ADC采集信号。实验中,使用80MHz DAC时钟和20MHz ADC时钟,通过SignalTAP和Matlab分别在时域和频域分析信号。学生实验部分涉及DDS和DAC代码更新,以16比特波表文件和不同频率字。ADC频谱显示了良好的频谱纯度,但可能需要滤波器提高纯度。
摘要由CSDN通过智能技术生成

实验目标:
• 掌握并行DAC、ADC的接口时序
• 用DDS合成信号,经过DAC输出
• 用ADC采集信号
• 使用SignalTAP在时域观察信号
• 使用Matlab在频域观察信号

原始实验

50M晶振——经过FPGA片内的锁相环——倍频得到80MHz的DAC时钟,分频得到20MHz的ADC时钟
DAC时钟:用FPGA的逻辑对内部的80MHz时钟反相作为DAC芯片时钟,用于满足DAC数据的建立-保持时序
ADC时钟:ADC时钟同样进行反相,作为ADC接口逻辑的驱动时钟
在这里插入图片描述
分别编写时钟管理模块,DDS模块,DAC模块,ADC模块,并生成相应的元件
连接电路,分配管脚
在这里插入图片描述

  • 该设计由一个PLL从50MHz晶振生成80MHz的DAC时钟、20MHzADC时钟
  • 一个单周期的DDS生成补码正弦波,转成无符号后送至DAC
  • 拨码开关SW9 SW8 用于控制DAC的输出幅度
  • 其余的SW开关用于控制DDS频率字

用SMA同轴电缆连接ADC和DAC
在这里插入图片描述

抓取ADC
在这里插入图片描述
ADC
在这里插入图片描述

dac
在这里插入图片描述

思考题回答

在这里插入图片描述

  1. 符合奈奎斯特理论,由matlab分析出的频谱图可以看出,模拟信号的最高频率为0.5MHz,而ADC的时钟是20MHz,符合奈奎斯特理论
  2. 可以看到,ADC的最低噪大于DAC的输出。
  3. ADC是对模拟信号进行 取样-保持-量化-编码的过程使其变成更易存储,处理的数字形式。

补充知识
在这里插入图片描述
在这里插入图片描述

学生实验

在这里插入图片描述

1、rom改成16比特,利用matlab自动生成波表文件
在这里插入图片描述
DDS代码
其数据和输出都改为16比特的,然后给不同的按键输入赋不同的频率字,频率字求法为在这里插入图片描述
再将其转换为二进制,赋值给freqin_R

module mc_dds(
  CLK   ,   // clock posedge
  RST   ,   // reset posedge
  FREQIN,   // input frequency word
  FREQEN,   // frequency word input enable
  DDSEN ,   // multi-cycle dds work enable
  OUTVD ,   // dds output valid
  DDSOUT);  // dds  output wave

input           CLK   ;
input           RST   ;
input  [32-1:0] FREQIN;
input           FREQEN;
input           DDSEN ;
output          OUTVD 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值