搞个笑?用Verilog产生一个三角波吧!

举报
李锐博恩 发表于 2021/07/15 04:11:37 2021/07/15
【摘要】 写了这么一个幼儿级别的程序,描述一个三角波的Verilog产生办法,至于三角波的周期没有进行可调性设计,仅仅是为了测试而用,如果需要某个频率的三角波,可以自己调节代码。 本不想放上面的,但是也不舍得扔,就搞个笑吧。 `timescale 1ns / 1ps module Triangle_Wave_Gen( input clk, input rst_n, outpu...

写了这么一个幼儿级别的程序,描述一个三角波的Verilog产生办法,至于三角波的周期没有进行可调性设计,仅仅是为了测试而用,如果需要某个频率的三角波,可以自己调节代码。

本不想放上面的,但是也不舍得扔,就搞个笑吧。


  
  1. `timescale 1ns / 1ps
  2. module Triangle_Wave_Gen(
  3. input clk,
  4. input rst_n,
  5. output reg signed [15:0] wave_out,
  6. output signed [15:0] triangle_wave_out
  7. );
  8. reg [3:0] count;
  9. always@(posedge clk or negedge rst_n) begin
  10. if(!rst_n) begin
  11. count <= 0;
  12. end
  13. else if(count == 11) begin
  14. count <= 0;
  15. end
  16. else count <= count + 1;
  17. end
  18. always@(posedge clk or negedge rst_n) begin
  19. if(!rst_n) wave_out <= 0;
  20. else if( count <= 5) wave_out <= wave_out + 100;
  21. else wave_out <= wave_out - 100;
  22. end
  23. assign triangle_wave_out = wave_out - 300;
  24. endmodule

对这个波形产生函数进行仿真:


  
  1. `timescale 1ns / 1ps
  2. module Triangle_Wave_Gen_tb(
  3. );
  4. reg clk;
  5. reg rst_n;
  6. wire [15:0] wave_out;
  7. wire [15:0] triangle_wave_out;
  8. initial begin
  9. clk = 0;
  10. forever
  11. #20 clk = ~clk;
  12. end
  13. initial begin
  14. rst_n = 0;
  15. #100
  16. rst_n = 1;
  17. end
  18. Triangle_Wave_Gen u_Triangle_Wave_Gen(
  19. .clk(clk),
  20. .rst_n(rst_n),
  21. .wave_out(wave_out),
  22. .triangle_wave_out(triangle_wave_out)
  23. );
  24. endmodule

想必你一定知道,设计程序中的triangle_wave_out变量为什么在wave_out的基础上减去300,仅仅是为了让三角波的最大值以及最小值对称。

虽然说很简单,但至少很清晰。

如果要测试你做的一个FFT或者什么变换设计,对不对,不妨设计一个简单的三角波作为输入数据进行测试,而这个三角波,何苦费心呢?就这样随便写一个吧。

最后说说,如何模拟的方式显示这个三角波:

右击波形名字,选择波形样式即可,但是还需要设置下模拟波形:

让Y的范围包含你的波形的范围。

当然,高级的也有,参考别人的博文:任意波形产生,我没看。

 

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/95379872

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。