1、理论知识

实现方法:将数字量转换为模拟量,根据输出数字量的大小转换为模拟量以实现信号幅值的变化。

具体思路:提前声明一个ROM IP核,将正弦波、三角板、方波和锯齿波的数字量写入进去,或者也可以自己用Verilog写一个ROM,ROM作为只读的一个存储器,在声明的时候需要提前将数据写入到ROM中,然后给定其一个地址,便会输出该地址所对应的数据以实现信号波形的输出。

根据思路进行举例说明:

若要实现一个正弦波的输出,提前将ROM的深度定义为1024,宽度定义为10位宽。则ROM中有1024个数据,每个数据的位宽为10位二进制,这1024个数据代表了一个正弦波。

由于位宽为10位,则输出幅值的最大值为2^10-1=1023,最小为0,具体如下图

同理可以实现三角波、方波、锯齿波。

2、具体实践

目标:用Vivado中的ROM IP核,实现正弦波、三角波、方波、锯齿波的输出。

第一步 生成波形数据

可以使用mif精灵,或者matlab生成一个coe文件,文件内容格式具体如下图:

第二步 定义ROM IP核

定义一个但端口的ROM IP核,一个波形深度为1024,则存放四个波形的深度需要4096,对应的地址位为12位。

然后将第一步生成的coe文件写入ROM中。

第三步 编写源文件代码并调用IP核

具体源文件代码如下

module wave4_rom(input   wire        sys_clk,input   wire        ena,input   wire [11:0] addr,input  wire [9:0]  data_out);//调用第二步生成的ROM IP核
sinwave_rom inst1 (.clka(sys_clk),    // input wire clka.ena(ena),      // input wire ena.addra(addr),  // input wire [11 : 0] addra.douta(data_out)  // output wire [9 : 0] douta
);
endmodule

第四步 编写仿真代码

仿真代码如下:

`timescale 1ns / 1nsmodule tb_wave4_rom();reg               sys_clk ;reg                ena     ;reg    [11:0]  addr    ;wire   [9:0]   data_out;initialbeginsys_clk=1'b1;ena<=1'b0;#200ena<=1'b1;endalways #10 sys_clk=~sys_clk;always@(posedge sys_clk or negedge ena)if(ena==1'b0)addr<=12'd0;else if(addr==12'd4095)addr<=12'd0;elseaddr<=addr+1'b1;//实例化源文件
wave4_rom   inst1(.sys_clk  (sys_clk)   ,.ena       (ena)   ,.addr      (addr)  ,.data_out   (data_out));
endmodule

Vivado仿真波形

整体波形如下

方波的数据只有1023和0

3、拓展训练

可以使用FPGA的按键控制四种波形的输出,需要使用到按键消抖模块。

也可以进行输出波形的频率和相位调制,实现一个简易的DDS信号发生器。具体实现原理图如下

图中所展示的四大结构中,相位累加器是整个 DDS 的核心,在这里完成相位累加,生成相位码。相位累加器的输入为频率字输入 K,表示相位增量,设其位宽为 N,满足等式K = 2^N * fOUT / fCLK 。其在输入相位累加器之前,在系统时钟同步下做数据寄存,数据改变时不会干扰相位累加器的正常工作。

通过改变频率字输入和相位字输入实现输出波形频率和相位的调节。

Verilog实现正弦波、三角波、方波、锯齿波的输出相关推荐

  1. Verilog 代码编写 DDS信号发生器(幅频相可调正弦波、方波、三角波、锯齿波)纯VIVADO编写仿真

    DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有相对带宽大,频率转换时间短.分辨率高和相位连续性好等优点.较容易实现频率.相位以及幅度的数控调 ...

  2. MATLAB绘制正弦波、方波、三角波、锯齿波的mif文件

    MATLAB绘制正弦波.方波.三角波.锯齿波的mif文件 % 对波形进行等间隔采样,以采样次数作为 ROM 存储 % 地址,将采集的波形幅值数据做为存储数据写入存储地址对应的存储空间 % 采样次数为 ...

  3. MATLAB输出四种常用波形(方波、正弦波、三角波、锯齿波)

    1.我们在处理数学以及信号的时候经常会用到MATLAB,因为它可以使我们直观地观察到我们需要的信号的模型.因此掌握基本的MATLAB还是有必要的.这里我们来讲解一下如何用MATLAB产生四种常用波形( ...

  4. 基于stm32单片机的四种波形发生器正弦波、方波、三角波、锯齿波

    基于stm32单片机的四种波形发生器(源程序+仿真+设计报告)全套资料 资料编号:010 具体功能: (1) 可以实现四种波形:正弦波.方波.三角波.锯齿波: (2) 通过按键进行选择,频率可以调整: ...

  5. 函数信号发生器:本设计中要求输出方波、三角波、锯齿波、正弦波,电压0-10V可调,调节精度0.1V;输出信号的频率0-100Hz;占空比可调

    函数信号发生器:本设计中要求输出方波.三角波.锯齿波.正弦波,电压0-10V可调,调节精度0.1V:输出信号的频率0-100Hz:占空比可调. 本次课题设计将利用单片机控制来实现信号发生系统所要求的功 ...

  6. 【51单片机】DAC0832制作信号发生器(方波,三角波,锯齿波)

    [51单片机]DAC0832制作信号发生器(方波,三角波,锯齿波) 1 A/D与D/A 2 电路与元器件 3 源代码 3.1 程序开始 3.2 监视按钮操作 3.3 按钮控制显示波形 3.4 方波产生 ...

  7. 【51毕业设计案例】【006】波形发生器(正弦波、矩形波、三角波、锯齿波)-基于51单片机

    功能介绍: 1.输出 正弦波.矩形波.三角波.锯齿波 波形 2.设定波形输出频率 3.设定修改频率的步进值 整体功能简述: 通过按键可以修改输出的波形,一共可以输出四种波形,分别是:正弦波.矩形波.三 ...

  8. PWM呼吸灯之三角波、锯齿波、正弦函数波

    脉冲宽度调制(PWM),是英文"Pulse Width Modulation" 的缩写,简称脉宽调制,是利用 微处理器(MCU)的数字输出来对模拟电路进行控制的一种非常有效的技术. ...

  9. c语言编程三角波,DA转换 方波,锯齿波,三角波 C语言 编程

    DA转换(函数波形发生器) 功能说明:1.该程序可产生三种不同的波形分别是(方波,锯齿波,三角波) 2.分别可以通过三个按键选择对应的波形. #include #include #include #d ...

  10. matlab 实现三角波、倒锯齿波与锯齿波

    matlab生成锯齿波.倒锯齿波和三角波的函数都是 sawtooth 生成锯齿波 使用的函数 f=sawtooth(2*pi*f*t); 其中 f 为频率 锯齿波的频率控制和正弦波和三角波函数的控制是 ...

最新文章

  1. springboot日志logback配置
  2. Codeforces 1027F. Session in BSU
  3. kafka消费的三种模式_快速认识Kafka
  4. ikvm java转换成dll_利用IKVM.NET将Java jar包转换成可供C#调用的dll文件
  5. 7-28 搜索树判断 (25 分)(思路加详解) just easy!
  6. 【华为云技术分享】解析数据治理在过程可信变革中的运作流程
  7. 蓝桥杯小朋友排队java_1215. 小朋友排队
  8. Pandas 表连接(Merge,join,concatenate)
  9. 为什么更改总和顺序会返回不同的结果?
  10. 调用ICodeCompiler来计算字符串表达式
  11. iOS 代码命名规范 及Android 代码命名规范(2)Android
  12. matlab 调用 lingo,lingo和matlab用哪个
  13. 移动端屏幕宽度自适应原理及实现
  14. 怎么录制音频,什么录音软件好用?
  15. 无线射频专题《IEEE 802.11协议讲解4@可调参数,性能与兼容性考虑》
  16. 软件工程投资回收率计算
  17. Set 接口实现类-HashSet
  18. html怎么设置网页的大小怎么设置,css怎么设置字体大小
  19. Python web框架Django学习(1)
  20. 一篇文章带你全面了解“电脑”内外组成

热门文章

  1. 证明四元数表示旋转的过程实部为0,虚部为罗德里格斯公式结果
  2. 新房子没网络,怎么用光猫和路由器上网
  3. 【RuoYi框架】RuoYi框架学习超简单案例 - 新闻管理系统(附源码)
  4. 简述计算机用二进制的原因,简述计算机采用二进制的原因
  5. 【大学生软件测试基础】三角形类型 - 白盒测试 - 语句覆盖 -02
  6. 百度地图离线API2.0(含示例,可完全断网访问)
  7. CreateCompatibleDC工作原理
  8. 计算机在职研究生分数,在职研究生复试录取分数线-在职研招网-在职研究生招生信息网...
  9. Android7.0 Doze模式分析(三)alarm
  10. PPT模板的动画去掉或更改