set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

117.set_property BITSTREAM.GENERAL.COMPRESS true [current_design]压缩bit流 **加载过程**:FPGA 从 `.bit` 文件中读取压缩后的数据 -> 内部的解压缩引擎实时地将其解压 -> 然后将解压后的配置数据写入到正确的配置存储器中。* **加快配置速度**:虽然需要时间解压,但总体来看,从 JTAG 传输较小文件所节省的时间远远超过内部解压所需的时间,因此总配置时间通常是减少的。FPGA 的配置逻辑内部包含一个**解压缩引擎**。* **生成过程**:Vivado 生成完整的配置数据 -> 进行压缩 -> 将压缩后的数据打包成 `.bit` 文件。 阅读详情

      在Verilog中,set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 是Xilinx Vivado工具中的Tcl约束命令,用于配置比特流生成选项。

一、命令解析

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
  • set_property: Vivado属性设置命令

  • BITSTREAM.GENERAL.COMPRESS: 比特流压缩属性

  • TRUE: 启用压缩

  • [current_design]: 当前设计对象

二、功能说明

这个命令启用比特流压缩,主要作用:

  • 减小比特流文件大小:通常可减少30-50%的文件大小

  • 加快配置时间:减少FPGA加载时间

  • 节省存储空间:特别适用于嵌入式系统

三、使用方法

1. 在XDC约束文件中使用

# design_constraints.xdc

# 启用比特流压缩
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

# 其他常用比特流配置
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]    # 配置速率
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]   # SPI总线宽度

2. 在Vivado Tcl控制台中使用

# 打开设计后执行
open_design my_design.xpr
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
write_bitstream -force my_design.bit

四、完整设计流程示例

1. Verilog设计文件

// compressed_design.v
module compressed_design(
    input wire clk,
    input wire [7:0] data_in,
    input wire enable,
    output reg [7:0] data_out,
    output reg valid
);
    
    always @(posedge clk) begin
        if (enable) begin
            data_out <= data_in + 8'd1;
            valid <= 1'b1;
        end else begin
            valid <= 1'b0;
        end
    end
    
endmodule

2. 对应的XDC约束文件

# constraints.xdc

# 时钟约束
create_clock -period 10.000 -name clk [get_ports clk]

# 比特流配置
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

# I/O约束
set_property IOSTANDARD LVCMOS33 [get_ports {clk data_in[*] enable data_out[*] valid}]
set_property PACKAGE_PIN AJ14 [get_ports clk]

五、相关比特流配置命令

1. 配置速率

# 设置配置时钟频率 (MHz)
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]  # 50MHz

2. SPI配置

# SPI总线宽度
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]  # 四线SPI

# SPI回读
set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]

3. 安全配置

# 加密比特流
set_property BITSTREAM.ENCRYPT.ENCRYPT YES [current_design]
set_property BITSTREAM.ENCRYPT.KEY0 "0123456789ABCDEF" [current_design]

# 写保护
set_property BITSTREAM.CONFIG.PROHIBIT TRUE [current_design]

4. 调试配置

# 启用调试
set_property BITSTREAM.CONFIG.CONFIGFALLBACK Enable [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT Disable [current_design]

六、实际应用场景

1. 嵌入式系统

# 嵌入式应用的比特流优化
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design]

2. 生产编程

# 生产环境的比特流配置
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.USR_ACCESS "0x12345678" [current_design]
set_property BITSTREAM.CONFIG.VALID_MASK true [current_design]

3. 多启动配置

# 多启动映像配置
set_property BITSTREAM.CONFIG.CONFIGFALLBACK Enable [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0x6800000 [current_design]

七、验证压缩效果

1. 生成比特流后检查

# 生成比特流
write_bitstream -force my_design.bit

# 查看比特流信息
report_bitstream -file bitstream_report.txt

# 检查压缩比例
report_drc -file drc_report.txt

八、在Makefile或脚本中使用

1. Tcl脚本

# build.tcl
open_project my_design.xpr

# 设置比特流属性
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

# 生成比特流
launch_runs impl_1 -to_step write_bitstream -jobs 4
wait_on_run impl_1

2. Shell脚本

#!/bin/bash
# build.sh

vivado -mode batch -source build.tcl -tclargs $@

# 检查生成的比特流大小
BIT_SIZE=$(stat -c%s "my_design.bit")
echo "Bitstream size: $((BIT_SIZE/1024)) KB"

九、注意事项

  1. 兼容性:压缩功能在所有Xilinx FPGA中都支持

  2. 解压开销:FPGA内部需要解压,增加少量配置时间

  3. 调试影响:压缩比特流可能影响某些调试功能

  4. 工具版本:确保Vivado版本支持该特性

十、性能影响

  • 文件大小:减少30-50%

  • 配置时间:总体减少(传输时间减少 > 解压时间增加)

  • 资源占用:FPGA内部有专用解压硬件,不占用逻辑资源

这个约束命令在需要优化存储空间和配置时间的应用中非常有用,特别是在使用SPI Flash存储比特流的嵌入式系统中。

Vivado固化程序的压缩方法 Vivado使用XDC约束文件定义固化程序的压缩方法 阅读详情

相关推荐

Vivado 2024.1 配置约束详解:纯FPGA与ZYNQ的5个关键参数差异

本文深入解析了Vivado 2024.1中纯FPGA与ZYNQ平台在配置约束上的5个关键差异,包括配置架构、电压参数、配置效率优化、配置模式支持及设计迁移实践。通过详细对比和实用示例,帮助开发者优化bit文件生成,提升配置效率,避免常见陷阱。

weixin_30326741的博客 475

Vivado使用指南之:三、如何设置VIVADO压缩BIT文件

    在调试VIVADO 过程中,由于生成的BIT文件过大,而我使用的FLASH又是32MBIT的,出现了FLASH过小,无法烧录的情况。网上搜索到的方法都是说“generate progamming file下会有一个属性,进去了在-g compress后面打勾”,但是我使用的是VIVADO2017.2,该版本根本找不到这个选项。于是只能自己慢慢摸索,终于,找到了两种方法:1:set_prop...

weixin_39438479的博客 1万+

告别JTAG依赖:手把手教你将ZYNQ程序固化到SD卡和QSPI Flash(基于Vivado 18.3)

本文详细介绍了如何将ZYNQ程序固化到SD卡和QSPI Flash的实战指南,基于Vivado 18.3平台。内容涵盖ZYNQ启动架构解析、SD卡和QSPI Flash的配置步骤、常见问题排查及高级优化技巧,帮助开发者实现从调试到量产的平滑过渡,特别适合FPGA和ARM嵌入式系统开发者。

weixin_30633405的博客 399

Xilinx FPGA——Vivado生成bit文件时需要添加的约束

Vivado设计过程中生成的bit流文件需要通过特定的配置引脚导入到FPGA中。专用配置引脚上的不同电压级别决定了不同的配置模式。不管是哪种配置模式,配置数据都是存储在FPGA中的CMOS锁存器中,每次掉电后数据都会丢失,上电之后重新配置。但是选择一个片外存储器如SPI Flash存储配置数据,并设置相应的配置模式,上电后可以自动配置FPGA。UG470和UG570分别对7系列和UltraScale系列的配置方法做了详细介绍。本文只介绍在Vivado中的设置方法。

Alonger1988的博客 1万+

ZYNQ 7020开发板PL端程序固化保姆级教程:不用SDK,Vivado 2018.3手把手教你烧录到QSPI Flash

本文提供ZYNQ 7020开发板PL端程序固化的详细教程,使用Vivado 2018.3实现无需SDK的QSPI Flash烧录方案。针对纯PL逻辑开发者,涵盖ZYNQ IP核配置、硬件导出、启动镜像制作等关键步骤,并分享常见错误处理与优化建议,帮助开发者高效完成FPGA程序固化。

weixin_30321449的博客 397

Xilinx FPGA——Vivado配置约束实战:从bit生成到Flash固化的关键设置

本文详细解析了Xilinx FPGA在Vivado环境下的配置约束实战,从bit文件生成到Flash固化的关键设置。涵盖了主从模式选择、SPI/BPI接口优化、ZYNQ平台差异处理以及加密认证等高级技巧,帮助工程师规避常见配置陷阱,提升FPGA开发效率。

SAN_YUN的专栏 639

Vivado Bit文件压缩

前言 Vivado编译生成的Bit文件太大,想要小一点该咋办呢?那么就需要给bit文件瘦身。 流程 直接在约束文件xdc中添加下述语句即可: set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 未压缩前 压缩后 根据工程不同,还是有点效果的。 ...

小翁同学 2204

Xilinx Vivado 2023.1 配置 SM25QH256M:3个关键 XDC 参数解决 DONE 信号拉低

本文详细介绍了在Xilinx Vivado 2023.1中配置SM25QH256M Flash芯片时,如何通过三个关键XDC参数解决DONE信号拉低的问题。针对FPGA配置失败现象,提供了SPI_32BIT_ADDR、SPI_FALL_EDGE和CONFIGRATE参数的详细设置方法及技术原理,帮助开发者高效完成国产Flash的FPGA配置。

dengkuituo0680的博客 542

vivado下bit压缩

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

u011376967的博客 1407

别再为MicroBlaze程序断电丢失发愁!手把手教你用Vitis 2020.1和SPI Flash实现DDR3程序固化

本文详细介绍了使用Vitis 2020.1和SPI Flash实现MicroBlaze程序在DDR3中固化的完整解决方案。通过硬件架构设计、软件工程调整、Bootloader配置及调试技巧,确保程序断电后可靠加载。特别适用于FPGA开发中解决程序丢失问题,提升系统稳定性。

weixin_30482383的博客 316

Xilinx Vivado 2023.1 配置国徽 SM25QH256M:3步环境变量设置与 SPI_32BIT_ADDR 关键参数

本文详细介绍了在Xilinx Vivado 2023.1中配置国产SM25QH256M Flash芯片的全流程,包括环境变量设置、SPI_32BIT_ADDR关键参数配置及烧录验证。通过三步环境变量设置和SPI参数调整,解决国产Flash在FPGA开发中的兼容性问题,提升烧录成功率和配置效率。

ckkay800264的博客 325

set_property BITSTREAM.CONFIG.

set_property CFGBVS GND [current_design] set_property CONFIG_VOLTAGE 1.8 [current_design] set_property BITSTREAM.GENERAL.COMPRESS true [current_design] set_property BITSTREAM.CONFIG.EXTMASTERCCLK_EN DIV-1 [current_design] set_property BITSTREAM.CONFIG.SPI_

oldmoney 1161

FPGA 学习笔记:Vivado 生成的 Bitstream bit 文件 超大的解决方法

FPGA 学习笔记:Vivado 生成的 Bitstream bit 文件 超大的解决方法

坚韧与专注 8363

vivado 烧写/固化程序 --看这一篇就够了

但是这里有个地方需要注意:就是这里选择X2或者X4等等 需要 和bit文件相对应 也就是说 如果选择了X2 但是你的bit流文件设置的是X4的 在最后点击ok的时候会报错;(这里注意MB和Mb的转换MB=Mb/8​)64Mb=8MB:后面会用到。有两个一样的时候 注意看 后面给他的供电可能一个是1.8v一个是3.3v 选择和你原理图对应的。这个地方是4说明生成的是X4的bit流文件 在下面这个③的位置也需要选择对应的SPIx4。这里是Mb 如果是我用的这个flash就写64Mb;

qq_53689575的博客 2万+

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

f作者: 寒小阳 &&龙心尘 时间:2015年10月。 出处: 声明:版权所有,转载请注明出处,谢谢。手把手机器学习之逻辑回归应用——Kaggle泰坦尼克之灾1.引言先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非常简单: 写完前两篇逻辑回归的介绍和各个角度理解之后,小伙伴们纷纷表示『好像很高级的样纸,

寒小阳 43万+

用Verilog搭出RISC-V架构单周期CPU

这是笔者学校暑期学期的必修课,难度并不高(仅追求及格的话),但相当耗时,对于在硬件设计方面完全不感冒的同学更是一场避不开的折磨,所以笔者想通过自己的成果和被折磨经验来帮助有此方面需求的同学,或是对于CPU设计有浓厚兴趣的人。

paticita的博客 1万+

FPGA与flash固化

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]—压缩固化文件的大小(如果flash空间局促这个操作必要)set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]—设置spi4线上电拿取速度会比1快(必要)固化文件bin文件最小,hex文件最大,mcs大小居中。

Pual_Georg的博客 1029

制作Ubuntu22.04启动盘

现在越来越多程序代码都需要运行在linux环境下,运行这些代码的前提是安装一个稳定的linux操作系统。本文选择Ubuntu 22.04去制作系统启动盘。本文主要对ubuntu22.04的启动盘制作过程进行了详细的说明,希望能帮助到有需要的朋友。

lyx_ok的博客 1万+

Vivado中绕过综合快速生成.bit文件的DCP方法

FPGA比特流(bitstream)生成是硬件部署的关键环节,其本质是将已实现的设计状态序列化为可配置的二进制文件。传统流程依赖RTL综合→实现→比特流的全链路执行,但工程实践中大量时序优化、约束调整和ECO变更仅需复用已有布局布线结果。DCP(Design Checkpoint)作为Vivado中封装网表、布局、布线与时序信息的完整实现快照,支持跳过综合阶段直接调用write_bitstream命令生成.bit文件。该技术显著提升调试效率,适用于Zynq、Kintex、Virtex等Xilinx 7系列及

weixin_34302561的博客 507

threejs开发可视化数字城市效果

theme: condensed-night-purple 灵感图 现在随着城市的发展,越来越多的智慧摄像头,都被互联网公司布到城市的各个角落,举一个例子,一个大楼上上下下都被布置了智能摄像头,用于监控火势,人员进出,工装工牌佩戴等监控,这时候为了美化项目,大公司都会将城市的区域作为对象,进行3d可视化交互,接下来的内容,就是基于以上元素,开发的一款城市数据可视化的demo,包含楼宇特...

weixin_41770018的博客 1580

VASPKIT绘制平面平均电荷差分密度

平面平均密度差(planar-averaged electron density difference)是密度差的衍生。密度差是个三维空间函数,经常通过绘制平面图、等值面图方式图形化考察。虽然这两种图很直观,但平面图会受到截面选取的影响,而等值面图会受到等值面数值(isovalue)选取的影响,因此都有一定任意性,也不容易定量讨论。对于电子转移有比较明确方向的情况,可以绘制平面平均密度差曲线,由此可以清楚地考察垂直于选取的方向上每个截面上的密度差积分值,在定量讨论、对比上比较便利。

weixin_43948934的博客 1万+

基于 UltraScale+系列 SPIX8模式dual quad spi 实现mutiboot 详细教程

使用IPROG Using ICAP(7series使用ICAPE2,Ultrascale使用ICAPE3原语,两者有区别),在配置逻辑接收到 IPROG 命令后,FPGA 会重置除专用重新配置逻辑之外的所有内容,并且 INIT_B 和 DONE 引脚会变为低电平。设计中设定的 WBSTAR 地址是 0x01000000,而用于 write_cfgmem的多启动地址需要乘以 2,因此地址变为 0x02000000。它告诉FPGA内部的配置逻辑:“接下来的数据是正式的配置指令包,请开始解析”。

Crazydrams的博客 1349

python机器人编程——用python实现一个写字机器人

本篇我们构建一个可以跟人一样写字的机器人python软件。实现如下功能:打开一个写字板,人类在屏幕上写或画出任意形状,机器人同步在纸面上画出和人类一样的形状,就好像人类在远程操控机械臂,又或是机械臂是人的另一只手。这个软件是可以扩展的,如果连上互联网,可以实现人在北京写了一行字,在上海的机器臂同时也在自己的本子上写了一行字。

JAMES费的空间 7995
上一篇: VCCAUX_IO
下一篇: set_property BITSTREAM.CONFIG.SPI_BUSWIDTH value [current_design]
Js_cold
博客等级 码龄4年 143粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值