差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
波形信号发生器设计 [2018/10/23 10:10] anran [实验原理] |
波形信号发生器设计 [2020/01/18 21:56] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====波形信号发生器设计===== | + | ### 基于DDS的任意波形、信号发生器设计 |
- | ----- | + | |
- | ====实验任务==== | + | --- |
+ | |||
+ | #### 实验任务 | ||
* 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成波形信号发生器设计并观察调试结果 | * 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成波形信号发生器设计并观察调试结果 | ||
- | * 要求:通过底板上的旋转编码器控制串行DAC芯片DAC081S101基于DDS技术产生波形可选、频率可调的常见波形信号。 | + | * 要求:通过底板上的旋转编码器控制串行[[DAC]]芯片DAC081S101基于[[DDS]]技术产生波形可选、频率可调的常见波形信号。 |
- | * 解析:FPGA驱动旋转编码器得到操作信息,通过逻辑控制波形和频率寄存器,设计DDS模块根据波形和频率寄存器控制波形数据的输出,波形数据通过串行DAC驱动模块传送到底板的DAC芯片进行转换,得到波形信号输出。 | + | * 解析:[[FPGA]]驱动旋转编码器得到操作信息,通过逻辑控制波形和频率寄存器,设计[[DDS]]模块根据波形和频率寄存器控制波形数据的输出,波形数据通过串行DAC驱动模块传送到底板的[[DAC]]芯片进行转换,得到波形信号输出。 |
- | ====实验目的==== | + | #### 实验目的 |
- | 前面章节我们学习了旋转编码器的工作原理及驱动方法,本实验主要学习DDS技术的原理及实现,IP核rom模块的例化使用,串行DAC芯片DAC081S101的驱动设计。 | + | 前面章节我们学习了旋转编码器的工作原理及驱动方法,本实验主要学习[[DDS]]技术的原理及实现,IP核rom模块的例化使用,串行[[DAC]]芯片DAC081S101的驱动设计。 |
- | * 学习数模转换器DAC的相关知识 | + | * 学习数模转换器[[DAC]]的相关知识 |
- | * 串行(SPI接口)DAC芯片DAC081S101的驱动设计 | + | * 串行([[SPI]]接口)[[DAC]]芯片DAC081S101的驱动设计 |
- | * 学习DDS技术的原理及实现 | + | * 学习[[DDS]]技术的原理及实现 |
* 完成波形信号发生器设计实现 | * 完成波形信号发生器设计实现 | ||
- | ====设计框图==== | + | #### 设计框图 |
根据前面的实验解析我们可以得知,该设计总体可以拆分成如下功能模块实现, | 根据前面的实验解析我们可以得知,该设计总体可以拆分成如下功能模块实现, | ||
行 28: | 行 30: | ||
+ | #### 实验原理 | ||
+ | ##### DAC及DDS介绍 | ||
- | + | 上一节我们学习了[[ADC]]的相关知识,[[DAC]]与[[ADC]]功能相反,DAC是数字模拟转换器(英语:Digital to analog converter,英文缩写:DAC)是一种将数字信号转换为模拟信号(以电流、电压或电荷的形式)的设备。在很多数字系统中(例如计算机),信号以数字方式存储和传输,而数字模拟转换器可以将这样的信号转换为模拟信号,从而使得它们能够被外界(人或其他非数字系统)识别。 | |
- | ====实验原理==== | + | |
- | + | ||
- | ===DAC及DDS介绍=== | + | |
- | + | ||
- | 上一节我们学习了ADC的相关知识,DAC与ADC功能相反,DAC是数字模拟转换器(英语:Digital to analog converter,英文缩写:DAC)是一种将数字信号转换为模拟信号(以电流、电压或电荷的形式)的设备。在很多数字系统中(例如计算机),信号以数字方式存储和传输,而数字模拟转换器可以将这样的信号转换为模拟信号,从而使得它们能够被外界(人或其他非数字系统)识别。 | + | |
{{:8-DAC模型.png?600|DAC模型}} | {{:8-DAC模型.png?600|DAC模型}} | ||
- | 上图两个都是8位DAC模型,转换精度为 2的8次方等于256,即将Vref分成256份,DAC转换输出模拟电压最小步进为Vref / 256,模拟电压 Vout = N * Vref / 256 。 | + | 上图两个都是8位[[DAC]]模型,转换精度为 2的8次方等于256,即将Vref分成256份,DAC转换输出模拟电压最小步进为Vref / 256,模拟电压 Vout = N * Vref / 256 。 |
* 并行DAC与数字电路接口包含一根clk和8根data管脚,clk为芯片时钟管脚,data为芯片数据管脚,每个clk周期从data管脚输出8bit的数据,完成一次数模转换,所以clk频率等于转换率。 | * 并行DAC与数字电路接口包含一根clk和8根data管脚,clk为芯片时钟管脚,data为芯片数据管脚,每个clk周期从data管脚输出8bit的数据,完成一次数模转换,所以clk频率等于转换率。 | ||
* 串行DAC(以DAC081S101为例)与数字电路接口为三根线(sync,clk,din),兼容三线SPI总线,sync为帧同步管脚,clk为芯片时钟管脚,din为芯片数据管脚,当DAC帧同步信号拉低后每个clk周期从din发送1bit的数据,但是根据DAC081S101的时序,需要16个clk完成一次DA转换,所以clk频率至少等于采样率的16倍。 | * 串行DAC(以DAC081S101为例)与数字电路接口为三根线(sync,clk,din),兼容三线SPI总线,sync为帧同步管脚,clk为芯片时钟管脚,din为芯片数据管脚,当DAC帧同步信号拉低后每个clk周期从din发送1bit的数据,但是根据DAC081S101的时序,需要16个clk完成一次DA转换,所以clk频率至少等于采样率的16倍。 | ||
- | DDS是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。DDS是一种全数字化的频率合成器,由相位累加器、波形ROM、D/A转换器和低通滤波器构成。时钟频率给定后,输出信号的频率取决于频率控制字,频率分辨率取决于累加器位数,相位分辨率取决于ROM的地址线位数,幅度量化噪声取决于ROM的数据位字长和D/A转换器位数。 | + | [[DDS]]是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。DDS是一种全数字化的频率合成器,由相位累加器、波形[[ROM]]、D/A转换器和低通滤波器构成。时钟频率给定后,输出信号的频率取决于频率控制字,频率分辨率取决于累加器位数,相位分辨率取决于ROM的地址线位数,幅度量化噪声取决于ROM的数据位字长和D/A转换器位数。 |
{{:8-DDS框图.png?800|DDS框图}} | {{:8-DDS框图.png?800|DDS框图}} | ||
- | ===DAC模块电路连接=== | + | ##### DAC模块电路连接 |
这里我们以STEP BaseBoard V3.0底板上的DAC模块电路,其电路图如下: | 这里我们以STEP BaseBoard V3.0底板上的DAC模块电路,其电路图如下: | ||
行 53: | 行 52: | ||
{{:8-DAC模块电路.png?800|DAC模块电路}} | {{:8-DAC模块电路.png?800|DAC模块电路}} | ||
- | 如DAC模块电路所示,FPGA直接连接DAC081S101芯片的控制端,ADC有6个管脚,2脚VCC为VCC和Vref功能复用,即VCC = Vref。DAC后端是运放电路LMV721,运放模块为电压跟随电路,再往后端射频端子输出。 | + | 如[[DAC]]模块电路所示,[[FPGA]]直接连接DAC081S101芯片的控制端,[[ADC]]有6个管脚,2脚VCC为VCC和Vref功能复用,即VCC = Vref。[[DAC]]后端是运放电路LMV721,运放模块为电压跟随电路,再往后端射频端子输出。 |
- | ===DAC模块驱动设计=== | + | ##### DAC模块驱动设计 |
前面我们了解DAC081S101芯片和FPGA之间连接有三根线(sync、clk、din),兼容三线SPI总线,关于SPI串行总线上节已详细介绍,这里我们直接查看DAC081S101的芯片手册。 | 前面我们了解DAC081S101芯片和FPGA之间连接有三根线(sync、clk、din),兼容三线SPI总线,关于SPI串行总线上节已详细介绍,这里我们直接查看DAC081S101的芯片手册。 | ||
行 131: | 行 130: | ||
</code> | </code> | ||
- | ===DDS设计实现=== | + | ##### DDS设计实现 |
{{:8-波表数据示意图.png?600|波表数据示意图}} | {{:8-波表数据示意图.png?600|波表数据示意图}} | ||
行 267: | 行 266: | ||
</code> | </code> | ||
- | ===系统总体实现=== | + | ##### 系统总体实现 |
底板上旋转编码器带有按键功能,我们使用按键消抖模块完成按键信号的消抖处理,前面章节我们还学习了旋转编码器旋转功能的驱动,刚刚讲到控制波形信号发生器的波形选择和频率输出其实就是控制两个端口参数wave和f_inc,所以从旋转编码器的驱动输出到DDS端口参数的控制,我们还需要一个逻辑模块。 | 底板上旋转编码器带有按键功能,我们使用按键消抖模块完成按键信号的消抖处理,前面章节我们还学习了旋转编码器旋转功能的驱动,刚刚讲到控制波形信号发生器的波形选择和频率输出其实就是控制两个端口参数wave和f_inc,所以从旋转编码器的驱动输出到DDS端口参数的控制,我们还需要一个逻辑模块。 | ||
行 317: | 行 316: | ||
- | ====实验步骤==== | + | #### 实验步骤 |
- 双击打开Quartus Prime工具软件; | - 双击打开Quartus Prime工具软件; | ||
- | - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | + | - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,[[EDA]]工具选择); |
- | - 新建文件:File → New → Verilog HDL File,键入设计代码并保存; | + | - 新建文件:File → New → [[Verilog]] HDL File,键入设计代码并保存; |
- 设计综合:双击Tasks窗口页面下的Analysis & Synthesis对代码进行综合; | - 设计综合:双击Tasks窗口页面下的Analysis & Synthesis对代码进行综合; | ||
- 管脚约束:Assignments → Assignment Editor,根据项目需求分配管脚; | - 管脚约束:Assignments → Assignment Editor,根据项目需求分配管脚; | ||
行 328: | 行 327: | ||
- | ====实验现象==== | + | #### 实验现象 |
- | 将设计加载到FPGA中,使用示波器观察底板DAC射频端子信号输出,按动旋转编码器观察不同的波形输出,转动旋转编码器观察频率的变化。 | + | 将设计加载到[[FPGA]]中,使用示波器观察底板[[DAC]]射频端子信号输出,按动旋转编码器观察不同的波形输出,转动旋转编码器观察频率的变化。 |
- | {{:8-波形输出.png?800|默认输出}} | + | {{:8-波形输出.png?600|默认输出}} |
{{:8-正弦波输出.png?500|正弦波输出}} {{:8-锯齿波输出.png?500|锯齿波输出}} | {{:8-正弦波输出.png?500|正弦波输出}} {{:8-锯齿波输出.png?500|锯齿波输出}} | ||
{{:8-三角波输出.png?500|三角波输出}} {{:8-方波输出.png?500|方波输出}} | {{:8-三角波输出.png?500|三角波输出}} {{:8-方波输出.png?500|方波输出}} |