Vivado综合属性系列之二 SRL_STYLE

目录

一、前言

二、SRL_STYLE

        2.1 移位寄存器实现方式

        2.2 工程代码

        2.3 参考资料


一、前言

        移位寄存器SRL在工程中属于使用频率较高个模块,可用于存储数据,实现串并转换;

根据数据移动方向可分为左移寄存器,右移寄存器,左移是向数据高位移动,右移是向数据低位移动。

二、SRL_STYLE

        2.1 移位寄存器实现方式

        移位寄存器的实现方式多样,可以用寄存器,LUT,以及寄存器+LUT组合来实现,以及块状RAM来实现,对于采用哪种方式,Vivado提供了属性SRL_STYLE来控制生成方式,SRL_STYLE的可选值有6个,register,srl,srl_reg,reg_srl,reg_srl_reg,block,含义如下

register: 只使用寄存器来实现,不使用LUT资源

srl:不使用寄存器资源,只使用LUT来实现

srl_reg:同时使用LUT和寄存器来实现,并将寄存器放在最后一级

reg_srl: 同时使用寄存器和LUT资源来实现,寄存器放在第一级

reg_srl_reg:同时使用寄存器和LUT资源来实现,第一级和最后一级都为寄存器

block:使用块状RAM来实现

        不同的实现方式主要是对资源和时序的影响不同,通常,如果要时序性能佳,尽量避免最后一级用LUT来实现,如果是移位的深度较大,建议使用Block ram实现,可节省寄存器和LUT资源。

        2.2 工程代码

此处为一个12位右移寄存器的代码,设置实现方式为register

`timescale 1ns / 1ps
module srl_style( d,ce,clk,out );
parameter len=12;
input d,ce,clk;
output out;
(* SRL_STYLE="block"*) reg [len-1:0] srl;   //使用寄存器来实现移位寄存器
always@(posedge clk)
begin 
if(ce==1'b1)
srl[len-1:1]<=srl[len-2:0];
srl[0]<=d;
end
assign out=srl[len-1];
endmodule

        综合结果如下图,通过网表图可布局布线结果可知,使用了12个FDRE来实现 

        将属性SRL_STYLE改为SRL,实现使用了SRL16E,无寄存器 

        将属性SRL_STYLE改为BLOCK,此时实现采用了RAMB 18E1

        2.3 参考资料

        用户手册:ug901-vivado-synthesis.pdf

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值