赞
踩
本文介绍综合属性SRL_STYLE取register、srl、srl_reg、reg_srl、reg_srl_reg和block中的值时,对Schematic的影响。
SRL_STYLE用于指导Vivado将SRL(移位寄存器)映射为何种形式。
目录
- 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型触发器。
用FF(Flip Flop,触发器)生成SRL。
- 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
用LUT生成SRL。
- 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位移位寄存的移位寄存器。
红色大框框表示一个SLICEM,红色MARK对应上上图的SRL16E,上图将红色MARK部分放大,可以看出SRL16E其实是LUT构成的,见下图。
资源利用率报告中的LUT是指设计中消耗的所有LUT,包括SLICEL中的LUT和SLICEM中的LUT。
资源利用率报告中的LUTRAM是指设计中消耗的SLICEM中的LUT。
用LUT和FF(Flip Flop,触发器)生成SRL,最后一级深度用FF。
- 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
第一级深度用FF(Flip Flop,触发器),其他用LUT。
- 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
第一和最后一级深度用FF(Flip Flop,触发器),其他用LUT。
- 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
用BRAM生成SRL。
- 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 存储单元。
黄色框框表示1个Block RAM。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。