移位寄存器笔记

 连续打拍

方法1:
always @ (posedge clk) begin
    r_a_d1  <= i_a;
    r_a_d2  <= r_a_d1;
    r_a_d3  <= r_a_d2;
    r_a_d4  <= r_a_d3;
end
assign o_a = r_a_d4;

方法2:
always @ (posedge clk) begin
    r_a_4ff <= {r_a_4ff[23:0],i_a};
end
assign o_a = r_a_4ff[31:24];

方法3:
always @ (posedge clk) begin
    r_a_4ff <= {i_a,r_a_4ff[31:8]};
end
assign o_a = r_a_4ff[7:0];

 方法1:

方法2:

方法3:

 

 标识节拍

假设我们有一个串行输入的8bit信号i_a,将提供给3个通道的数据顺序放在i_a上。即i_a输入的数据为:ch0的数据->ch1的数据->ch2的数据->ch0的数据。
例如i_a输入1,2,3,4,5,那么1是ch0通道的数据,2是ch1通道的数据,3是ch2通道的数据,4是ch0通道的数据,以此类推。

always @ (posedge clk) begin
    if (rst) begin
        r_ch_flag   <= 3'b001;
        r_a         <= 8'd0;
        r_ch0_valid <= 1'b0;
        r_ch1_valid <= 1'b0;
        r_ch2_valid <= 1'b0;
    end else begin
        if (i_a_valid) begin
            r_ch_flag   <= {r_ch_flag[1:0],r_ch_flag[2]};
            r_a         <= i_a;
        end
        r_ch0_valid <= i_a_valid & r_ch_flag[0];
        r_ch1_valid <= i_a_valid & r_ch_flag[1];
        r_ch2_valid <= i_a_valid & 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值