当前位置:   article > 正文

verilog中移位寄存器的代码实现_移位寄存器verilog代码csdn

移位寄存器verilog代码csdn

移位寄存器是指在每个时钟脉冲来时,向左或向右移动一位,由于 D 触发器的特性,数据输出同步于时钟边沿,其结构如下,每个时钟来临,每个 D 触发器的输出 q 等于前一个 D 触发器输出的值,从而实现移位的功能。

代码如下:

(CSDN代码块不支持Verilog,代码复制到notepad++编辑器中,语言选择Verilog,看得更清楚)

  1. module top(d, rst, clk, q) ;
  2. input d ;
  3. input rst ;
  4. input clk ;
  5. output reg [7:0] q ;
  6. always @(posedge clk or negedge rst)
  7. begin
  8. if (rst == 1'b0)
  9. q <= 0 ;
  10. else
  11. q <= {q[6:0], d} ; //向左移位
  12. //q <= {d, q[7:1]} ; //向右移位
  13. end
  14. endmodule

激励文件如下:

  1. `timescale 1 ns/1 ns
  2. module top_tb() ;
  3. reg d ;
  4. reg rst ;
  5. reg clk ;
  6. wire [7:0] q ;
  7. initial
  8. begin
  9. d = 0 ;
  10. clk = 0 ;
  11. forever
  12. begin
  13. #({$random}%100)
  14. d = ~d ;
  15. end
  16. end
  17. initial
  18. begin
  19. rst = 0 ;
  20. #200 rst = 1 ;
  21. end
  22. always #10 clk = ~clk ;
  23. top
  24. t0(.d(d),.rst(rst),.clk(clk),.q(q)) ;
  25. endmodule
仿真结果如下,可以看到复位之后,每个 clk 上升沿左移一位
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/725169
推荐阅读
相关标签
  

闽ICP备14008679号