名称:18路方波信号发生器设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
18路方波信号发生器设计
可以独立产生18路方波信号,方波信号的频率和占空比可调。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图(结构图)
5. Testbench
6. 仿真图
仿真图分析
以第一路为例,第一路设置频率参数为200,对应200*50Hz=10000Hz=10KHz。设置的高电平时间参数为100,对应1000ns。
下图测得方波1的周期为100000000ps=100us对应10KHz,以此频率正确
测得高电平时间为1000000ps=1000ns,因此高电平时间正确,周期与高电平时间均正确,则占空比正确
部分代码展示:
//频率50Hz到10KHz,高电平10ns~1000ns module?signal_generator( input?clk,//100M时钟,周期10ns input?[7:0]set_freque,//设置方波频率(1~200) input?[7:0]set_high,//设置高电平时间(1~100) output?reg?square_wave//输出方波 ); //set_freque(1~200)对应频率50Hz到10KHz,乘以50 //set_high(1~100)对应高电平10ns~1000ns,乘以10 //分频参数调整 wire?[31:0]?div_parameter;//分频参数 assign?div_parameter=32'd100000000/(set_freque*8'd50);//set_freque(1~200)对应频率50Hz到10KHz //占空比调整(设置高电平时间) wire?[31:0]?high_parameter;//高电平参数 assign?high_parameter=(set_high*8'd10)/8'd10;//对应的100M时钟周期数 reg?[31:0]?div_cnt=32'd0; always@(posedge?clk) if(div_cnt>=div_parameter-1) div_cnt<=32'd0; else div_cnt<=div_cnt+32'd1;//分频计数 always@(posedge?clk) if(div_cnt<high_parameter)//设置方波高电平周期数 square_wave<=1;//高电平 else square_wave<=0;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1362
阅读全文