前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vivado综合属性之SRL_STYLE

Vivado综合属性之SRL_STYLE

作者头像
黑马Amos
发布2023-03-21 13:35:33
5410
发布2023-03-21 13:35:33
举报
文章被收录于专栏:李家杂货铺zi

本文介绍综合属性SRL_STYLE取register、srl、srl_reg、reg_srl、reg_srl_reg和block中的值时,对Schematic的影响。

SRL_STYLE用于指导Vivado将SRL(移位寄存器)映射为何种形式。

目录

默认值

测试代码

原理图

SRL_STYLE配置为register

测试代码

原理图

SRL_STYLE配置为srl

测试代码

原理图

对应的Device视图

资源利用率

SRL_STYLE配置为srl_reg

测试代码

 原理图

SRL_STYLE配置为reg_srl

测试代码

原理图

SRL_STYLE配置为reg_srl_reg

测试代码

原理图

SRL_STYLE配置为block

测试代码

原理图

Device视图

资源利用率


默认值

测试代码

代码语言:javascript
复制
module top(
    input clk_i,
    input data_i,
    output data_o);
    parameter SHIFT = 4;
    reg[SHIFT-1:0] reg_shift;

    always @(posedge clk_i)
    begin
        reg_shift <={data_i,reg_shift[SHIFT-1:1]};
    end
    assign data_o = reg_shift[0];
endmodule

综合后的Schematic如下: 

原理图

FDRE表示一个单D型触发器。 

SRL_STYLE配置为register

用FF(Flip Flop,触发器)生成SRL。

测试代码

代码语言:javascript
复制
module top(
    input clk_i,
    input data_i,
    output data_o);
    parameter SHIFT = 4;
    (*srl_style = "register"*) reg[SHIFT-1:0] reg_shift;

    always @(posedge clk_i)
    begin
        reg_shift <={data_i,reg_shift[SHIFT-1:1]};
    end
    assign data_o = reg_shift[0];
endmodule

原理图

SRL_STYLE配置为srl

用LUT生成SRL。

测试代码

代码语言:javascript
复制
module top(
    input clk_i,
    input data_i,
    output data_o);
    parameter SHIFT = 4;
    (*srl_style = "srl"*) reg[SHIFT-1:0] reg_shift;

    always @(posedge clk_i)
    begin
        reg_shift <={data_i,reg_shift[SHIFT-1:1]};
    end
    assign data_o = reg_shift[0];
endmodule

原理图

SRL16E表示一个可以最大实现16位移位寄存的移位寄存器。 

对应的Device视图

红色大框框表示一个SLICEM,红色MARK对应上上图的SRL16E,上图将红色MARK部分放大,可以看出SRL16E其实是LUT构成的,见下图。

资源利用率

资源利用率报告中的LUT是指设计中消耗的所有LUT,包括SLICEL中的LUT和SLICEM中的LUT。

资源利用率报告中的LUTRAM是指设计中消耗的SLICEM中的LUT。

SRL_STYLE配置为srl_reg

用LUT和FF(Flip Flop,触发器)生成SRL,最后一级深度用FF。

测试代码

代码语言:javascript
复制
module top(
    input clk_i,
    input data_i,
    output data_o);
    parameter SHIFT = 4;
    (*srl_style = "srl_reg"*) reg[SHIFT-1:0] reg_shift;

    always @(posedge clk_i)
    begin
        reg_shift <={data_i,reg_shift[SHIFT-1:1]};
    end
    assign data_o = reg_shift[0];
endmodule

 原理图

SRL_STYLE配置为reg_srl

第一级深度用FF(Flip Flop,触发器),其他用LUT。

测试代码

代码语言:javascript
复制
module top(
    input clk_i,
    input data_i,
    output data_o);
    parameter SHIFT = 4;
    (*srl_style = "reg_srl"*) reg[SHIFT-1:0] reg_shift;

    always @(posedge clk_i)
    begin
        reg_shift <={data_i,reg_shift[SHIFT-1:1]};
    end
    assign data_o = reg_shift[0];
endmodule

原理图

SRL_STYLE配置为reg_srl_reg

第一和最后一级深度用FF(Flip Flop,触发器),其他用LUT。

测试代码

代码语言:javascript
复制
module top(
    input clk_i,
    input data_i,
    output data_o);
    parameter SHIFT = 4;
    (*srl_style = "reg_srl_reg"*) reg[SHIFT-1:0] reg_shift;

    always @(posedge clk_i)
    begin
        reg_shift <={data_i,reg_shift[SHIFT-1:1]};
    end
    assign data_o = reg_shift[0];
endmodule

原理图

SRL_STYLE配置为block

用BRAM生成SRL。

测试代码

代码语言:javascript
复制
module top(
    input clk_i,
    input data_i,
    output data_o);
    parameter SHIFT = 4;
    (*srl_style = "block"*) reg[SHIFT-1:0] reg_shift;

    always @(posedge clk_i)
    begin
        reg_shift <={data_i,reg_shift[SHIFT-1:1]};
    end
    assign data_o = reg_shift[0];
endmodule

原理图

RAMB18E2表示UltraScale系列FPGA(我的环境是XCZU21DR)使用Block RAM构成的18Kb 存储单元。

Device视图

 黄色框框表示1个Block RAM。

资源利用率

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 默认值
    • 测试代码
      • 原理图
      • SRL_STYLE配置为register
        • 测试代码
          • 原理图
          • SRL_STYLE配置为srl
            • 测试代码
              • 原理图
                • 对应的Device视图
                  • 资源利用率
                  • SRL_STYLE配置为srl_reg
                    • 测试代码
                      •  原理图
                      • SRL_STYLE配置为reg_srl
                        • 测试代码
                          • 原理图
                          • SRL_STYLE配置为reg_srl_reg
                            • 测试代码
                              • 原理图
                              • SRL_STYLE配置为block
                                • 测试代码
                                  • 原理图
                                    • Device视图
                                      • 资源利用率
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档