当前位置:   article > 正文

Verilog学习笔记五(秒计数器,verilog执行顺序)_怎么查看verilog代码执行顺序

怎么查看verilog代码执行顺序

一、秒计数器

对于verilog执行顺序的理解(转载自这篇博文) 

        verilog主要的模块之间都是并行执行的,例如各个always之间 如果你在一个always中要对a赋值,而在另一个always中要使用a的值,这时候就要注意了,两者并行的,处理先后不能确定。 你当前处理的a,是这个时钟被赋值的还是上一时钟被赋值的,意义可能完全不同,这就是并行需要考虑的问题。
        而在always内部,一般使用了begin…end。这里面的内容都是顺序执行的,比如b=a; c=b,先执行一条,再执行下一条,那就是c=a了 如果里面有两组if/else,就是先执行前一组,再执行后一组。但是如果是非阻塞,那就要特殊对待,多个非阻塞赋值是在一个块结束时一起执行的,比如b<=a; c<=b,那就跟之前不同了,当执行c<=b 时b还没有变化成a的值,因此 这个赋值的结果是b被赋值前的值,这两条语句其实是独立的、并行的。好处是放得先后顺序没关系,只要在一个块内,随便写。这个不是很好理解,怎么说了begin…end之间是顺序,到了非阻塞就又变成并行执行的呢。 不好理解也没办法, 另外掌握几条原则:组合逻辑用阻塞赋值,时序逻辑用非阻塞赋值,同一个模块中不要既用阻塞又用非阻塞…
        掌握一条思路:verilog是硬件,是电路。所以调试的时候不能设置断点 所以所有模块都是并行,毕竟一上电整个板子都有电了,你不能说让它没电就没电,但是你可以在代码中加个控制,让它到了特定时候才干活。

 

看完上面的就知道为啥run-all会让s_num加1(明明没有到1s,却自增了1) 

 verilog代码:

  1. //2023/3/29 lzp
  2. //秒计数器 0-9循环, 24M HZ
  3. `timescale 1ns/10ps
  4. module s_counter(clk, res, s_num);
  5. input clk, res;
  6. output[3:0] s_num; //输出的秒\
  7. parameter frequency_clk=24; //24M Hz;
  8. reg[3:0] s_num;
  9. reg[24:0] con_t; //24M可以用252机制数来存,秒脉冲分频计数器;
  10. reg s_pulse; //秒脉冲尖;
  11. always@(posedge clk or negedge res) begin
  12. //计数
  13. if(~res) begin
  14. con_t<=0;
  15. s_pulse<=0;
  16. s_num<=0;
  17. end
  18. else begin
  19. if(con_t == frequency_clk*1000000-1) begin
  20. con_t<=0;
  21. end
  22. else begin
  23. con_t<=con_t+1;
  24. end
  25. //脉冲尖
  26. if(con_t==0) begin
  27. s_pulse<=1;
  28. end
  29. else begin
  30. s_pulse<=0;
  31. end
  32. //秒自增
  33. if(s_pulse) begin
  34. if(s_num == 9) begin
  35. s_num<=0;
  36. end
  37. else begin
  38. s_num<=s_num+1;
  39. end
  40. end
  41. end
  42. end
  43. endmodule
  44. //秒计数器,testbench
  45. module s_counter_tb;
  46. reg clk, res;
  47. wire[3:0] s_num;
  48. s_counter s_counter(.clk(clk), .res(res), .s_num(s_num));
  49. initial begin
  50. clk<=0;
  51. res<=0;
  52. #10;
  53. res<=1;
  54. #1000;
  55. $stop;
  56. end
  57. always#(5) clk=~clk;
  58. endmodule

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/614350
推荐阅读
相关标签
  

闽ICP备14008679号