当前位置:   article > 正文

基于FPGA的移位寄存器_vivado shift register

vivado shift register

介绍

移位寄存器shift register是在相同时钟脉冲下级联的若干触发器,一个触发器的输出引脚q连接到下一个触发器的数据输入引脚d。 每一个时钟脉冲,寄存器阵列左移或右移一个bit。

串进并出

1. 左移

1位数据的串行输入,4位数据的并行输出。当时钟上升沿到达时,1位输入数据din进入qtemp的最低位,qtemp的低3位依次向左移动1位。在assign 赋值语句中,将qtemp连续赋值给dout,实现4位的数据并行输出。

clk

dinqtemp

1

1

0001

2

2

0012 

3

3

0123

4

4

1234

  1. input din;
  2. output [3:0] dout;
  3. reg [3:0] qtemp;
  4. always @ (posedge CLK_50M or negedge RST_N)
  5. begin
  6. if(!RST_N)
  7. qtemp <= 4'b0;
  8. else
  9. qtemp = {qtemp[2:0] , din};
  10. end
  11. assign dout = qtemp;

  2. 右移

当时钟上升沿到达时,1位输入数据din进入qtemp的最高位,qtemp的高3位依次向右移动1位。

qtemp <= {din,qtemp[3:1]};        

                                                                                                     

clk

din

qtemp

 1

1

1000

2

2

2100

3

3

3210

4

4

4321

循环移位

  1. always@(posedge clk or negedegerst_n) begin
  2. if(!rst_n) begin
  3. qtemp <= 'd0;
  4. end
  5. else if(i_load) begin
  6. qtemp <= din;
  7. end
  8. else begin
  9. qtemp <= {qtemp[2 : 0], qtemp[3]};//循环左移
  10. end
  11. end
  12. assign dout = qtemp;

  添加了一个信号,叫装载信号i_load,这个信号有效的时候,将输入din赋值给中间寄存器qtemp。这样才能实现每一个时钟上升沿来临时,都对输入左移一次。 

 用途

用来实现串并转换                                                                                                                
                                 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/321425
推荐阅读
相关标签
  

闽ICP备14008679号