名称:可编程三角波信号发生器设计Verilog代码Quartus DE1-SOC开发板
软件:Quartus
语言:Verilog
代码功能:
可编程三角波信号发生器
可编程三角波信号发生器的上升、下降时间间隔由两个4位无符号整数控制信号m和n指定。上升持续时间和下降持续时间分别是m×100ms和n×100ms。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE1-SOC开发板验证,DE1-SOC开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
部分代码展示:
//可编程三角波信号发生器 module square_gen ( input clk,//系统时钟50M,一个周期20ns input rstn,//复位 input [3:0]in_m,//控制信号m input [3:0]in_n,//控制信号n output [31:0] wave_out//输出三角波 ); //可编程三角波信号发生器的上升、下降时间间隔由两个4位无符号整数控制信号m和n指定。上升持续时间和下降持续时间分别是m×100ms和n×100ms。 reg add_sub = 0; reg [31:0] wave; reg [31:0]cnt = 32'd0; wire [31:0]on_time ; wire [31:0]off_time; //上板用该句 //assign on_time = 5000000*in_m;//时间乘以100ms,对应5_000_000个时钟周期,即乘以5_000_000 //assign off_time = 5000000*in_n;//时间乘以100ms,对应5_000_000个时钟周期,即乘以5_000_000 //仿真为减小耗时用该句 assign on_time = 50*in_m;//时间乘以100ms,对应5_000_000个时钟周期,即乘以5_000_000 assign off_time = 50*in_n;//时间乘以100ms,对应5_000_000个时钟周期,即乘以5_000_000 //递增或者递减标志 always @(posedge clk) begin if(!rstn) add_sub = 0; else if(cnt<on_time)//小于on_time递增 add_sub = 1;//递增 else//否则递减 add_sub = 0;//递减 end always @(posedge clk) begin if(!rstn) wave<=32'd0; else if((cnt >= on_time+off_time)) wave<=32'd0; else if(add_sub==1)////递增 wave<=wave+in_n;//上升 else if(wave>=in_m) wave<=wave-in_m;//下降 end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1277
阅读全文
515