频率幅值可调波形发生器Verilog代码Quartus仿真

名称:频率幅值可调波形发生器Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

频率幅值可调波形发生器

1、输出方波;三角波;正弦波;阶梯波

2、可以控制波形频率、幅值

3、可以选择输出哪种波形

4、编写testbench,使用modelsim仿真

1.工程文件

2.程序文件

3.程序编译

4.Testbench

5.Modelsim仿真

整体仿真,不同波形,不同频率,不同幅值

1.幅度变化仿真,以方波为例,幅值根据amplitude_data变化而变化

2.波形切换仿真,正弦波变为锯齿波

3.频率(周期)改变仿真,频率(周期)根据frequency_data变化而变化,下图frequency_data=20周期为13311ns左右

下图frequency_data=40周期为26175ns左右,频率变化了

整体仿真图

部分代码展示:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2015/12/22 14:45:39
// Design Name: 
// Module Name: wave_generation
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
module wave_generation(
    input sys_clk,
    input sys_rst,//高电平复位
    
    input [1:0] wave_select,//00矩形波;01-三角波;10-正弦波;11-锯齿波
    input [7:0] frequency_data,//频率控制信号(该控制字越大频率越低)
 input [7:0] amplitude_data,//幅度控制
    output reg [15:0] wave_data//输出波形
    );
    wire clk;
 wire [7:0] triangular_wave;
    wire [7:0] sawtooth_wave;
 wire [7:0] square_wave;
 wire [7:0] sin_wave;
//波形产生模块 
carrier_wave carrier_wave(
    . clk(clk),
    . rst(sys_rst),
 . triangular_wave(triangular_wave),//三角波
    . sawtooth_wave(sawtooth_wave),//阶梯波
 . square_wave(square_wave),//矩形波
 . sin_wave(sin_wave)//正弦波
    );
reg [7:0] clk_cnt=8'd0;
always@(posedge sys_clk)
if(sys_rst)
clk_cnt<=8'd0;
else
if(clk_cnt==frequency_data)//频率控制frequency_data取值0~255,输出频率最大为50M/32Hz=1562500Hz,最低50M/256/32Hz=6103Hz
clk_cnt<=8'd0;
else
clk_cnt<=clk_cnt+8'd1;
assign clk=(clk_cnt==8'd0)?1'b1:1'b0;//通过控制clk来控制输出频率
always@(posedge sys_clk)//00矩形波;01-三角波;10-正弦波;11-锯齿波
case(wave_select)//amplitude_data幅度控制
2'b00:wave_data<=amplitude_data*square_wave;
2'b01:wave_data<=amplitude_data*triangular_wave;
2'b10:wave_data<=amplitude_data*sin_wave;
2'b11:wave_data<=amplitude_data*sawtooth_wave;
default:;
endcase
endmodule
源代码

 扫描文章末尾的公众号二维码

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值