FPGA开发--移位寄存器SRL

介绍(针对K7系列)
\quad SLICEM可以不用SLICE中的FF生成一个最大深度为32bit的移位寄存器。用这种方法,每个LUT能够延迟串行数据1~32个时钟周期。
\quad 移位寄存器的输入端D和输出端Q31可以级联成一个更大的移位寄存器。可以将不同的SLICEM组合成一个移位寄存器。
\quad LUT的地址A[4:0]可以选择在第几级深度输出数据,深度等于地址数值加一。输出端口为Q6 。
\quad 每个SLICEM有4个LUT,可以输入8bit位宽的数据。

特性
1)单时钟沿操作
2)时钟使能,高电平有效
3)D输入端的数据输入移位寄存器的第一个bit
4)每一个bit移位到下一个高bit位置
5)在级联模式下,在Q31端口输出数据
6)A[4:0]选择输出的bit位(深度),在Q6口输出数据

动态读取
1)A[4:0]地址决定了Q输出的深度
2)每一个新地址输入到A[4:0]地址上,经过一段时间延迟后到达LUT。一个新bit深度的数据将会出现在Q6上。
3)这个操作是异步的,独立于时钟和时钟使能。

命令
(srl_style = “ ”)
可选择的属性有:
register:用FF生成SRL
srl:用LUT生成SRL
srl_reg:用LUT和FF生成SRL,最后一级深度用FF
reg_srl:第一级深度用FF,其他用LUT
reg_srl_reg:第一和最后级深度用FF,其他用LUT
block:用BRAM生成SRL

srl_style命令只能用于静态读取操作!

例:
1)LUT生成SRL

(*srl_style = "srl"*)reg [3:0] temp[0:7];    
integer i;   
always @(posedge clk)begin
   temp [0] = in;
   for(i=0;i<7;i=i+1)
      begin:loop
         temp[i+1] <= temp[i];
      end
end    
assign out = temp[7]; 

在这里插入图片描述
在这里插入图片描述

2)FF生成SRL

(*srl_style = "register"*)reg [3:0] temp[0:7];    
integer i;   
always @(posedge clk)begin
   temp [0] = in;
   for(i=0;i<7;i=i+1)
      begin:loop
         temp[i+1] <= temp[i];
      end
end    
assign out = temp[7]; 

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值