实验内容
在FPGA上设计一个DDS模块,在DE0 开发板上运行,在FPGA芯片内部合成出数字波形即可。不用输出模拟信号,本模块满足以下条件:
- 使用板载晶振的50MHz时钟,合成以下频率的信号
- 1、500KHz 正弦波信号。 2、1MHz 正弦波信号。 3、3MHz 正弦波信号。
- 频率字字长32位,波表ROM尺寸为 10比特地址,1024个word
- 波形格式为2补码格式,12比特量化
- 每个CLK输出一个有效样点。
- 输入信号为频率字和频率字输入使能信号
- 使用板载的拨码开关(Switch)控制生成的波形信号的不同频率。
注:波表ROM代码是用matlab或C打印生成的。不要手写
实验要求
- 人工绘制的 电路结构RTL设计图,该图片用于说明你设计电路时的想法,注意要在RTL图中画出Verilog代码中的 生成D触发器 reg 变量
- Quartus扫描生成的电路RTL图,该图片用于说明Quartus的电路编译结果
- 相位累加器的输出,SignalTap截图
- 波表ROM的输入地址,SignalTap截图
- 至少捕获 一个完整的输出正弦波形周期的上述数据数值的SignalTap截图。
- 输出正弦波的样值波形,SignalTap截图
- 提交Verilog、相关MATLAB 代码,请使用博客中提供的代码块功能
- 分析输出的正弦波信号的频谱,Matlab 截图
Visio绘制的RTL
Quartus扫描生成的RTL
- 顶层RTL
- SwitchRTL
- dds_core RTL
- RAM RTL
SignalTap截图
- 频率控制字FQWD=10:
注:此时正弦波一个周期采样102个点,50MHz下采样周期0.02us,输出正弦波频率约为 f=1102∗0.02≈0.5(MHz) 。
- 频率控制字FQWD=20:
注:此时正弦波一个周期采样52个点,50MHz下采样周期0.02us,输出正弦波频率约为 f=152∗0.02