Vivado综合属性之SRL_STYLE

news2025/1/22 13:06:56

本文介绍综合属性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视图

资源利用率


默认值

测试代码

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。

测试代码

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。

测试代码

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。

测试代码

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。

测试代码

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。

测试代码

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。

测试代码

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。

资源利用率

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE】String类

目录 前言&#xff1a; 1.1、了解字符串构造方法 1.2、求字符串长度&#xff08;xxx.length()&#xff09; 1.3、isEmpty()方法 1.4、String对象的比较 1.4.1、通过&#xff08;str1 str2&#xff09;来比较&#xff0c;这样比较的是两个引用当中的地址 1.4.2、 boolea…

【ONE·C++ || vector (一)】

总言 学习笔记&#xff0c;慢慢补充。 文章目录总言1、整体介绍&#xff1a;2、常用各种接口介绍2.1、vector的基本结构&#xff1a;构造、析构、赋值2.1.1、总体情况预览2.1.2、各项函数使用演示2.2、vector增删查改相关2.2.1、增删查改总览2.2.2、如何在vector中插入、删除、…

Kotlin之使用协程编写高效的并发程序

文章目录1.协程的基本用法2.更多的作用域构建器3.使用协程简化回调的写法协程属于Kotlin中非常有特色的一项技术&#xff0c;因为大部分编程语言中是没有协程这个概念的。那么什么是协程呢&#xff1f;它其实和线程有点相似&#xff0c;可以简单地将它理解成一种轻量级的线程。…

Linux学习入门

1、Linux简介 操作系统分类&#xff1a;桌面操作系统、、服务器操作系统、移动端操作系统、嵌入式操作系统桌面操作系统主要针对个人电脑&#xff0c;Linux在桌面操作系统的应用主要有国产操作系统&#xff0c;Ubuntu。服务器操作系统有windows和linux以及苹果&#xff0c;主流…

微信小程序是如何实现快速编译的?

过往中小企业或技术团队开发一个 App 的时间成本和人力成本居高难下&#xff0c;但是随着微信上线小程序&#xff0c;更像是为这部分群体打开了一扇天窗&#xff0c;此后小程序呈现出井喷式发展的状态&#xff0c;不仅微信&#xff0c;支付宝、百度、抖音等超级 App 都跟上步伐…

线程进阶

常见的锁策略乐观锁 vs 悲观锁乐观锁&#xff1a;预测锁竞争不是很激烈悲观锁&#xff1a;预测锁竞争会很激烈轻量级锁 vs 重量级锁轻量级锁加锁解锁开销比较小&#xff0c;效率更高重量级锁加锁解锁开销比较大&#xff0c;效率更低多数情况下&#xff0c;乐观锁&#xff0c;也…

在CSDN年收入竟达五位数?----大学生技术自媒体成长之路

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 还有不到两周就要过年了&#xff0c;自己也马上迈入了21岁&#xff0c;感慨时间飞快&#xff0c;从19岁开始入驻C站&#xff0c;到现在也已经整整两年了&#xff0c;把自己最好的两年青春时光留在了CSDN&#xff0c;超百万…

定义输出格式的使用-printf()函数

目录&#x1f4d6;printf()函数简介格式化规定符格式控制特殊规定字符示例printf()函数简介 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。 printf()函数的调用格式为:printf("<格式化字符串>", <参量表>);这里看输出很简…

Lua入门学习

一、初识Lua脚本 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。官网&#xff1a;https://www.lua.org/ 1、HelloWorld CentOS7默认已经安装…

什么是docker

文章目录简介Docker 架构特性局限Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c…

〖产品思维训练白宝书 - 产品思维认知篇⑨〗- 像 产品经理 一样去思考解决问题

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

数据结构:算法的初步认识

算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 什么是算法 要求你写一个求 123…100 结果的程序&#xff0c;你应该怎么写呢? 大多数人会马上写出下面的C语言代码(或者其他语言的代码): int a,…

seata的AT模式

seata 分布式事务解决方案 官网 &#xff1a; seata.io 事务模式&#xff1a; 名词 TC &#xff1a; transaction coordinator 事务协调者 维护全局事务 和 分支事务的状态&#xff0c;驱动全局事务提交或者回滚TM &#xff1a; transaction manager 事务管理器 定义全局事…

(考研湖科大教书匠计算机网络)第一章概述-第三节:计算机网络的定义、功能分类

文章目录一&#xff1a;计算机网络的定义&#xff08;1&#xff09;最简单定义&#xff08;2&#xff09;较好定义二&#xff1a;计算机网络功能三&#xff1a;计算机网络的分类&#xff08;1&#xff09;按照“覆盖范围”分类&#xff08;2&#xff09;按照“使用者”分类&…

【Linux学习】进程控制

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 在前面&#xff0c;我们学习了进程的相关概念&#xff0c;在这里本喵会给大家介绍如何控制进程。…

私人影院微信小程序源码,采用腾讯小程序云开发,包括影院动态,最新影讯,房间预约,后台预约管理,导出预约表格Excel数据等功能

功能介绍 私人影院是很多年轻人比较喜欢的地方&#xff0c;虽然空间小&#xff0c;但是他们喜欢在这样的空间里享受休闲的时光&#xff0c;通过提前预约订位&#xff0c;可以使商家和消费者节省时间&#xff0c;减少人力成本&#xff0c;大大方便业务的拓展&#xff0c;同时也…

Word控件Spire.Doc 【Table】教程(4):如何在C#、VB.NET中设置Word表格样式

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

备战蓝桥杯数学基础:位运算理论

[TOC](目录)位运算概述位运算就是基于整数的二进制表示进行的运算&#xff0c;由于计算机内部就是以二进制来村塾数据&#xff0c;位运算是相当快的。基本的位运算共6种&#xff0c;分别为按位与、按位或、按位异或、按位取反、左移和右移与、或、异或这三者都是两数间的运算&a…

【算法刷题】栈与队列题型及方法归纳

栈与队列的特点 1、栈&#xff1a;FIFO 栈是仅能对其一端进行操作的结构&#xff0c;实现后进先出的效果。在C中采用容器适配器的方式实现栈。&#xff08;容器适配器实际上就是对某一类型的对象进行泛化&#xff0c;定义了这一类泛化对象的可进行操作的逻辑&#xff09; 什么…

上半年要写的博客文章22

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…