Vivado综合属性SRL_STYLE怎么用?

2024-04-20 16:12

本文主要是介绍Vivado综合属性SRL_STYLE怎么用?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“SRL_STYLE”属性是Vivado中用于控制移位寄存器(Shift Register Logic, SRL)映射方式的关键属性。

本文将详细介绍SRL_STYLE的工作原理、可选值及其在实际设计中的应用代码示例。

一、什么是SRL_STYLE?

SRL_STYLE属性用于指导Vivado综合工具如何将SRL映射为硬件实现。

在Xilinx FPGA中,SRL可以由不同类型的硬件资源实现,包括寄存器(Flip-Flops)、查找表(LUTs)以及块RAM(Block RAM)。

不同的实现方式具有不同的性能特点和资源消耗,因此选择合适的SRL_STYLE对于优化设计至关重要。

二、什么是移位寄存器?

移位寄存器是一种重要的数字逻辑电路,它能够在时钟信号的驱动下,将存储的数据按位进行左移或右移。

这种电路在串行通信、数据处理和存储器设计中有着广泛的应用。

三、SRL_STYLE的可选值

“SRL_STYLE”属性有六个可选值,分别是:

1、register

使用纯寄存器(Flip-Flops)实现SRL,默认是这个属性。

这种方式通常提供较好的时序性能,因为寄存器的时钟到输出的延迟(Tco)较小。

2、srl

使用查找表(LUT)来实现SRL。

这种方式可以节省寄存器资源,适用于小深度的SRL。

3、srl_reg

使用LUT和触发器的组合来实现SRL,最后一级深度使用触发器。

这种方式结合了LUT和寄存器的优点,适用于中等深度的SRL。

4、reg_srl

同时使用寄存器和LUT资源实现SRL,寄存器放在第一级。

这种方式适用于需要在SRL的输出端提供较好的时序特性的场景。

5、reg_srl_reg

第一级和最后一级深度使用触发器,中间级别使用LUT。

这种方式在SRL的两端使用寄存器,中间使用LUT,适用于需要两端时序保证的SRL。

6、block

使用块RAM(BRAM)来实现SRL。

对于大深度的SRL,这种方式可以有效节省LUT资源,并且提供稳定的存储能力。

四、SRL_STYLE的影响因素

1、性能

不同的SRL_STYLE实现方式对时序性能有不同的影响。

例如,寄存器实现的SRL通常具有更好的时序特性,而LUT实现的SRL可能在某些情况下提供更高的数据吞吐量。

2、资源消耗

SRL_STYLE的选择直接影响设计中LUT和寄存器的消耗。

例如,使用block实现方式可以节省大量的LUT资源,但可能会增加BRAM的使用。

一般不用使用默认的register就行,因为实际项目中大部分是LUT和BRAM资源不够用,FF资源都有富余。

3、功耗

不同的实现方式也会影响设计的静态和动态功耗。

寄存器实现的SRL可能具有较低的静态功耗,而LUT实现的SRL在活动因子较低时可能具有较低的动态功耗

五、如何使用SRL_STYLE?

为了更好地理解SRL_STYLE的应用,我们来看一个简单的设计示例。

假设我们需要实现一个4位移位寄存器,我们将使用不同的SRL_STYLE选项来展示它们的实现方式。

1、使用register选项

module srl_register_example (input wire clk,input wire data_in,output wire data_out
);parameter SHIFT = 4;reg [SHIFT-1:0] reg_shift;always @(posedge clk) beginreg_shift <= {data_in, reg_shift[SHIFT-1:1]};endassign data_out = reg_shift[0];endmodule

 

在这个例子中,我们没有SRL_STYLE属性,实际就是用了register选项,综合工具将使用触发器来实现SRL。

2、使用srl选项

module srl_lut_example (input wire clk,input wire data_in,output wire data_out
);
parameter SHIFT = 4;(* SRL_STYLE = "srl" *)  reg [SHIFT-1:0];always @(posedge clk) beginreg_shift <= {data_in, reg_shift[SHIFT-1:1]};end
assign data_out = reg_shift[0];endmodule

 

这里,我们指定了SRL_STYLE为srl,综合工具将使用LUT来实现SRL。

3、使用block选项

module srl_block_example (input wire clk,input wire [3:0] data_in,output wire [3:0] data_out
);
parameter SHIFT = 4;
(* SRL_STYLE = "block" *)  reg [4*SHIFT-1:0] block_srl;always @(posedge clk) beginblock_srl <= {data_in, block_srl[4*SHIFT-1:4]};
endassign data_out = block_srl[3:0];
endmodule

在这个例子中,我们使用了`block`选项,综合工具将使用BRAM来实现SRL。

六、结论

`SRL_STYLE`属性为FPGA设计师提供了灵活的SRL实现选项,可以根据设计的具体需求来选择最合适的实现方式,实现性能、资源和功耗之间的最佳平衡。

一般不用使用默认的register就行,因为实际项目中大部分是LUT和BRAM资源不够用,FF资源都有富余。


本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦

本文由FPGA入门到精通原创,有任何问题,都可以在评论区和我交流哦

@FPGA入门到精通获取免费学习资料,github开源代码:“FPGA知识库”

您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。

这篇关于Vivado综合属性SRL_STYLE怎么用?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/920720

相关文章

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has