FPGA时序约束(一)基本概念入门及简单语法

2023-11-03


文章目前大部分参考明德扬时序约束,只是一个学习总结,侵权删
原文链接:FPGA时序约束分享04_output delay 约束


一、建立时间和保持时间是什么?

时序逻辑电路的基础是触发器FF:

建立时间:Setup Time,缩写是 Tsu,即在时钟上升沿之前数据必须稳定的最短时间
保持时间:Hold Time,缩写是 Th,即在时钟上升沿之后数据必须稳定的最短时间
亚稳态;semi-stable state,在数据的建立时间和保持时间中对信号进行采样,导致输出无法预测的状态。

在这里插入图片描述
建立时间和保持时间是触发器的固定属性,也就是说同一FPGA型号其所有的FF的建立时间和保持时间都是相同的。

关于FPGA对应的建立时间和保持时间可以通过手册来查询,也可以用vivado做时序分析时查询。

高级的FPGA芯片其建立时间和保持时间会比低级的FPGA芯片较小,这也是其能运行频率更高的原因。

二、时序分析分类

时序分析的目的就是检查设计中所有的 D 触发器的同步端口(数据输入端口)的变化是否满足建立时间要求 (Setup)和保持时间要求(Hold);检查 D 触发器的异步端口(异步复位端口)的变化是否满足恢复时间要求(Recovery)和移除时间要求(Removal)。

动态时序分析:将布局布线生成的布线延迟信息反标注到门级网表中进行仿真,检查是否存在时序违例。此时的仿真包括门延迟和布线延迟信息,能够较好反应芯片的实际工作情 况。因为不可能产生完备的测试向量,覆盖门级网表中的每一条路径。因此在动态时序分析 中,无法暴露一些路径上可能存在的时序问题。

静态时序分析:遍历提取出整个电路存在的所有时序路径,计算信号的传播延时,检查建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。运行速度很快、占用内存较少,不仅可以全面的时序检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析应用多。

三、时钟约束方法

主要分为四部分:时钟约束、输入延时约束、输出延时约束、时序例外。

3.1 时钟约束

时钟约束有三种情况:输入时钟、PLL等衍生时钟、自己分频的时钟。

  1. 输入时钟就是时钟从FPGA管脚进来的,可分为单端、差分、GT或恢复时钟。

  • 单端:普通低速晶振,单端信号

在这里插入图片描述
生成时钟约束,名字叫SysClk(随意命名)周期为10ns(单位默认ns),在第0时刻上升,在第5时钟下降(占空比),约束对象(get_ports)是代码中的Clk信号。

如果Clk经过了内部的PLL或者MMCM(时钟管理单元),约束对象还是Clk
在这里插入图片描述


  • 差分:高速晶振、LDVS接口
    ALTER:接口信号只有一个,管脚定义有P和N
    约束方法和单端一样
    XILINX:顶层接口中,差分时钟有两个接口信号P和N
    只对P端约束:
    create_clock -name SysClk -period 10 -waveform {0 5} [get_ports Clk_p]

  • GT或恢复时钟,使用了告诉的收发器,在高速收发器管脚中,是没有时钟的,时钟已经嵌入到数据里面,使用FPGA的GTX IP核接收数据,并且从数据恢复出时钟。这个恢复出来的时钟就是此种情形。最常见的就是光纤接口。
    在这里插入图片描述
    使用GTX、GTY IP核来接受数据并且提取时钟,就像图中的GT模块
    这里注意约束对象的语法不同,不是通过get_ports,而是通过get_pins找到对象(ports是输入管脚端口,这里是一个模块的pins),/前面是模块,后面是pins的名字,这里的名字不能是例化后的名字了,需要找到GT模块的输出时钟名字

  1. 一般PLL时钟由FPGA自行推导,无需约束,但是实际中强烈建议约束

在这里插入图片描述
输出时钟是CLKOUT0。

一般这些在生成IP核的时候,就设置了输入输出的时钟频率,相位等信息。XILINX可以不用约束,但是ALTER需要添加命令:derive_pll_clocks(约束起的时钟名看不到 -name后面那个),这种可能导致失效

所以还是自己添加约束:
create_clcok –name clk_200 –period 5 [get_ports Clk]

create_generated_clock -name my_clk [get_pins MMCM/CLKOUT0] \
-source [get_pins MMCM/CLKIN]
-master_clock clk_200

对输入管脚Clk约束,之后create_geneated_clock对MMCM产生的CLKOUT0约束,-source表明来源于MMCM/CLKIN,即MMCM的输入管脚。通过-master_clock表明其主时钟是clk_200。


  1. 不建议自己分频时钟,如果用到了,要记得约束
    建议利用PLL的IP核来产生分频,如果自己分频了,如下
    在这里插入图片描述

create_clcok –name CLK1 –period 5 [get_ports CKP1]

create_generated_clock -name CLK2 [get_pins REGA/Q] \

-source [get_ports CKP1] –divide_by 2

对输入管脚CKP1的时钟约束,周期定为5,名字为CLK1。

通过create_generated_clock(生成时钟约束)产生二分频后的时钟约束,对象是REGA/Q,即D触发器的输出信号;然后要指示该时钟来自于CKP1,通过-source来指定;最后还要说明频率,通过-divide_by来说明几分频,-divide_by 2是表示二分频,即CKP1时钟的一半频率。一定要通过-divide_by来指定频率,因为工具无法从您的代码中推导出频率的。

强烈建议,分频时钟一定要约束,经验之谈,没有约束的话,时钟是不稳定的,会产生莫名其妙的问题的,这方面我们已经吃过亏的。

3.2 输入延时约束

主要包括了系统同步、源同步和有数据无时钟


在这里插入图片描述
FPGA接收到的数据(Din)是由上游器件产生的,理想情况下,输入数据的变化应该在时钟的上升沿对齐,但是由于器件和传输延时
在这里插入图片描述
每次延时都是不确定的,相位差在不断变化
在这里插入图片描述
所以需要把延时确定在最大和最小值之间,就是上面中间的灰色划分区域,上图就是FPGA接收的数据和时钟

输入延时(input delay)的定义:数据相对于时钟的延时,即数据时间-时钟上升沿时间。当延时在时钟右边时,输入延时是正的,当延时变化点在时钟上升沿左边时,输入延时是负的。

set_input_delay -clock <clock_name>
设置输入延时约束,<clock_name> 时钟名(之前已经约束好的,可以是真实时钟也可以是虚拟时钟),是想要设定input约束的端口名,可以是一个或数个port(数据输入端口)。
-max ,输入的最大延时,用于建立时间setup的分析
-min ,输入的最小延时,用于保持时间hold的分析

例如:
set_input_delay -clock [get_clocks clk0] -min 0.5 [get_ports Din[*]]

set_input_delay -clock [get_clocks clk0] -max 1.5[get_ports Din]*]]

上面约束了信号Din相对于时钟域clk0,有最小延时0.5和最大延时1.5ns。(clk0是之前已近约束好的名字)

综合工具发现不满足条件的时候,就会自动调整内部延时,例如增加一些BUF,或者增加线长等方式,使得信号最终到达D触发器时,能够满足建立时间和保持时间的要求。所以需要知道输入的延时才能调整。


参数来源:
这个延时时间通常在数据手册会清楚地标明输出数据和时钟的延时范围,通常是寄存器延时TCKO等,走线延时需要根据长度计算,第二种就需要用示波器测量了,如眼图模式测量

眼图模式:
眼图,是由于示波器的余晖作用,将扫描所得的每一个码元波形重叠在一起,从而形成眼图。


  1. 系统同步:整个电路板上FPGA以及上游器件都共用一个时钟,并且相位严格相同。板级走线也要对齐。主要是所有器件一个时钟,大部分也只是用在SDR。
    时钟到各个器件的延时是一样的,这意味着设置输入延时时,不需要考虑时钟的延时,可以认为时钟延时是0,我们只需要考虑数据延时。

在这里插入图片描述

假设通过查阅数据手册,得到TCKO最小是1ns,最大是2ns;通过计算布线长度,得到线延时最小是0.3ns,最大是0.4ns。由此可计算得到,输入最小延时:最小的TCKO+最小的线延时,即1.3ns;输入最大延时:最大的TCKO+最大的线延时,即2.4ns。

set_input_delay -clock sysclk -min 1.3 [get_ports Din]

set_input_delay -clock sysclk -max 2.4 [get_ports Din]

利用示波器看:
在这里插入图片描述
这里选A为时钟的上升沿,我猜:因为要估计延时,所以时钟选已经稳定的时候,B和C是数据变化最近和最远的地方(或者因为A是数据中心,此时离边界最远,估算的最保险?时钟也不知道接进示波器没,采用中心对齐方式?应该是中心对齐方式)
在这里插入图片描述


  1. 源同步:上游器件把数据和时钟信号一起送到FPGA上:
  • 2.1 SDR:SDR是指时钟是单沿有效的方式,比如只用上升延采集数据。SDR约束的参数,其获取的方法有两种:查看上游器件手册(通过查看上游器的数据手册,获取参数)以及通过示波器测量(通过示波器测量信号的相位差,获取参数)。

在这里插入图片描述
在这里插入图片描述
通过示波器观察:(还是中心对齐方式)
在这里插入图片描述
A是时钟上升沿处,B是眼图的左侧,定义为DV(befre),C处是眼图的右侧,定义为DV(altera)
在这里插入图片描述
这个最小延时应该是AC之间吧,AB应该就是负数了。
在这里插入图片描述


  • 2.2 DDR:DDR是时钟双沿有效。也就说上升延和下降延都采集。例如说我们的DDR2、DDR3的时钟,都是上下降沿一直采数据的;包括千兆网的RGMII接口,也是通过双沿的方式。

  • 中心对齐方式指时钟边沿始终在数据的中间,时钟上升沿的左右两边,数据都是稳定的。

  • 边沿对齐指时钟和数据边沿对齐的,在时钟变化沿两边,其数据是不稳定的。


下面介绍的是中心对齐

上升沿:

在这里插入图片描述
最小延时:B到A的时间,dv_are
最大延时:C到A,半个时钟周期-dv_bfe。

下降沿:
在这里插入图片描述

最小延时:B到A的时间,dv_are
最大延时:C到A,根据周期性,上图中的C和D是相同的点。

假设:时钟的频率为:100M,即周期为10ns;
数据data的dv_bre:0.4ns
数据data的dv_are:0.6ns
数据data的dv_bfe:0.7ns
数据data的dv_afe:0.2ns

前两个上升沿的约束,后面的下降沿的约束,使用-clock_fall表示下降沿;使用-add_delay表示与前面的约束一起生效。

set_input_delay -clock clk -max 4.3 [get_ports data]
set_input_delay -clock clk -min 0.6 [get_ports data]
set_input_delay -clock clk -max 4.6 [get_ports data] -clock_fall -add_delay
set_input_delay -clock clk -min 0.2 [get_ports data] -clock_fall -add_delay


边沿对齐:
在这里插入图片描述
最小延时:B到A的时间
最大延时:C到A
输入延时的定义,是“产生的数据”到“产生该数据的时钟沿”的距离。Fall_data是由A产生的,B到C区域,都是Fall_Data的变化区域,所以应该看的是B和C到A的距离 。这个时候,B在A的左边,说明该值是负数。

时钟的频率为:100M,即周期为10ns;
数据data的skew_bre:0.6ns
数据data的skew_are:0.4ns
数据data的skew_bfe:0.3ns
数据data的skew_afe:0.7ns

set_input_delay -clock clk -max 0.4 [get_ports data]
set_input_delay -clock clk -min -0.6 [get_ports data]
set_input_delay -clock clk -max 0.7 [get_ports data] -clock_fall -add_delay
set_input_delay -clock clk -min -0.3 [get_ports data] -clock_fall -add_delay

  1. 有数据无时钟:例如串口这种,根据波特率匹配采集数据。这就要做好同步化和处理好亚稳态(参考之前的文章)
    这里也要做时钟约束,不是为了调整延时,是为了不产生警告,防止遗漏。
    一般构造一个虚拟时钟,随意频率,同时输入延时也是随意设置的
    create_clock -period 20 -name clk_50_virtua
    set_input_delay -max 5.2 -clock clk_50_virtual [get_ports i_data]

3.3输出延时约束

主要包括系统同步和源同步

  1. 系统同步:FPGA往下游器件发送数据,这时候只传送数据线就可以了。而时钟跟FPGA共用一个的,不需要传时钟。
  2. 源同步:同上

3.4时序例外

一般用在clock与IO都约束后,还是不满足时序要求的情况下。主要包括多周期路径、不需要检查的路径和组合电路延时等三种情况。

  1. 多周期路径:完成一个运算需要超过1个时钟周期的情形,多周期路径在IC设计领域运用较多,但在FPGA里应用较少。
  2. 常量或伪常量信号、互斥路径和异步时钟不需要分析。常量一般不会变。互斥路径简单认为是双向端口。异步时钟一般会进行同步化操作。
  3. 组合电路延时就是说我从这个管脚到另一个管脚之间,另一个管脚进来,这个管脚出去中间没有任何一个时钟,这是组合电路给延时的一种情况。

四、时序约束语法补充

1.从所有输入端口中去除时钟clk:
[ remove_from_collection [ all_inptus ] [ get_ports clk ] ]

2.移除多个时钟:
[remove_from_collection [all_inptus] [get_ports “clk1 clk2”]]

3.对除时钟外的所有输入端口设置约束:
set_input_delay 3.5 -clock clk -max [remove_from_collection [all_inputs] [get_ports clk]]

4.输出延时:
set_output_delay -max 5 -clock clk [get_ports B]

5.时钟不需要输入延迟约束:
remove_input_delay [get ports clk]

6.对时钟的偏移和抖动进行建模,通常只约束建立时间:
建立时间的偏移:set_clock_uncertainty -setup 0.5 [get_clocks clk]
保持时间的偏移:set_clock_uncertainty -hold 0.5 [get_clocks clk]
上升沿和下降沿的偏移:set_clock_uncertainty -rise 0.2 -fall -0.5 [get_clocks clk]

7.约束最大的转换时间(升转换时间为电压的20%上升至80%的时间,下降的转换时间为电压的80%下降至20%的时间):
set_clock_transition -max 0.2 [get_clocks clk]

8.时钟延迟建模:
对时钟源延时进行约束:set_clock_latency -source 3 [get_clocks clk]
布局布线前对network latency的约束:set_clock_latency 3 [get_clocks clk]
在布局布线后可以计算实际的network latency,使用该命令代替上述命令:set_propagated_clock 2 [get_clocks clk]

参考链接:DC(三)——时钟约束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA时序约束(一)基本概念入门及简单语法 的相关文章

  • 数字芯片流程

    芯片设计分为前端设计和后端设计 前端设计 逻辑设计 和后端设计 物理设计 并没有同意严格的界限 这个过程中涉及到了与工艺有关的设计就是后端设计 一 需求分析 产品需要解决的问题 预测3 5年的趋向和走势 确保前瞻性 确保芯片是有卖点的 客户
  • Verilog的奇技淫巧[更新中]

    1 Verilog常用的数据选择语句vect a b 或vect a b 转载自 MDY常用的数据选择语句Verilog明德扬论坛 Powered by Discuz vect为变量名字 a为起始位置 加号或者减号代表着升序或者降序 b是进
  • 平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真

    在过去的几年里 阿里集团平头哥陆续推出了几款RISCV处理器 有些处理器已经在产业界得到了应用 比如在某志的D1处理器中 就嵌入了平头哥的玄铁C906内核为 芯 RISCV虽然是一个开放标准 并且网络上也不乏一些开源核的RTL实现 但是商用
  • Vivido添加pynq-Z2开发板

    一 下载pynq z2开发板文件 下载地址 https www tulembedded com FPGA ProductsPYNQ Z2 html 二 将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards fi
  • modelsim 关联 notepad++

    modelsim 控制窗口敲入 1 proc external editor filename linenumber exec I notepad notepad exe filename 2 set PrefSource altEdito
  • MIPI D-PHY介绍(二) FPGA

    MIPI D PHY介绍 二 FPGA 随着移动设备的广泛普及 MIPI D PHY作为其最主要的物理层标准之一 被越来越多地使用在各种嵌入式系统中 本文将详细介绍MIPI D PHY的工作原理和在FPGA设计中的实现方法 MIPI D P
  • 【科普】波特率和比特速率的理解

    什么是波特率 单位时间内传输的码元个数称为波特率 单位为 Baud 那码元又是什么呢 码元又称为 符号 即 symbol 维基百科上对码元的解释 持续一段固定时间的通信信道有效状态就是码元 这么解释比较抽象 可以解释码元的物理意义 在通信信
  • 硬件基础知识

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 SCLK SCLK是一种有固定周期并与运行无关的信号量 CLK CLK是一种脉冲信号 TDNN 时延神经网络 它的两
  • 手把手教你Modelsim仿真【2020.4版本】

    首先新建一个文件夹 test5 打开Modelsim 依次选择 File gt Change Directory 把目录选择到创建的 test5 文件夹 创建库 依次选择 File gt New gt Library 一般我们选择第三个 库
  • 笔试

    文章目录 前言 40 复位电路设计 1 recovery time和removal time 2 同步复位和异步复位 3 异步复位同步释放 本文参考 往期精彩 前言 嗨 今天来学习复位电路设计相关问题 微信关注 FPGA学习者 获取更多精彩
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • 八、RISC-V SoC外设——GPIO接口 代码讲解

    前几篇博文中注释了RISC V的内核CPU部分 从这篇开始来介绍RISC V SoC的外设部分 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 目录 0 RISC V SoC注解系列文章目录 1 结构
  • 吃透Chisel语言.18.Chisel模块详解(五)——Chisel中使用Verilog模块

    Chisel模块详解 五 Chisel中使用Verilog模块 上一篇文章讲述了用函数实现轻量级模块的方法 可以大幅度提升编码效率 Chisel中也提供了一些好用的函数 方便我们编写代码 也方便Chisel编译器优化生成的硬件电路 在Chi
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • FPG—VGA显示器字符显示(附代码)

    目录 1 实操 1 1 字符取模 1 2 顶层模块 1 3 图像数据生成模块 1 3 1 模块框图 1 3 2 波形图绘制 1 3 3 代码编写 1 3 4 仿真验证 2 总结 本例程大部分与VGA显示驱动内容相同 只是显示部分改变了 故此
  • [从零开始学习FPGA编程-24]:进阶篇 - 基本组合电路-编码器与译码器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 125247358 目录 前言 Veri
  • 硬核 | 从零制作一个激光雷达需要多久?

    编辑 ADS智库 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 硬件交流 技术交流群 本文只做学术分享 如有侵权 联系删文 激光雷达 LiDAR 是激光探测及测距系统的简称 目前广泛应用在无
  • 【ZYNQ学习】PL第一课

    这节课讲什么 这节课的名字本来是想写为LED 但这一课里除了LED也有按键 又想换为GPIO控制 但关于PL的GPIO控制 不应该这么草率和简单 而且这一课有很多和ZYNQ或者PL关联性不强的东西要说 所以我写了删删了写改了好几遍 终于定为
  • 无线网络管理系统与无线路由器的区别

    第5章 波形发生器软件设计 本章我们将介绍系统的软件设计 系统中控制软件占有很重要的地位 它不仅要产生波形数据 控制波形的发生 还要控制显示电路和键盘电路 因此系统软件的好坏直接决定着系统的功能和稳定 5 1软件的总体结构 在本系统中 由于
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主

随机推荐

  • git进行commit撤销,并撤销远程push,回退到之前的版本

    刚开始使用版本管理工具 选择的是git 各种git终端 常用的有SourceTree TortoiseGit git GUI等 本人选择的是第一个 闲话不多说 当你commit并push本地代码到云服务器后 发现自己修改的有问题 但又不想重
  • 知识图谱学习--网易云唐宇迪老师课程记录

    一 知识图谱是什么 知识图谱是一种图模型 可以将各个实体的信息联系在一起 形成一个整体 知识图谱会应用各种不同技术 不仅限于NLP 还包括图像 推荐系统等 构建一整个关系网络 知识图谱在医疗领域的作用 二 知识图谱的数据怎么处理 1 数据怎
  • GPT「高仿」问世:GPT-Neo,最大可达GPT-3大小,已开源

    GPT 高仿 问世 GPT Neo 最大可达GPT 3大小 已开源 近日 有个名叫 EleutherAI的团队 创始成员为 Connor Leahy Leo Gao和Sid Black 宣布推出GPT Neo开源项目 可用于复现GPT系列的
  • 强化学习-论文调研-experience replay

    experience replay 论文调研 一 论文概要 1 Hindsight Experience Replay 2017 NeurIPS 在奖励稀疏的情况下 要用强化学习算法训练是很困难的 本文提出一种通过增设不同的目标 增加状态转
  • Amazon Linux 2上面安装Amazon Corretto 8(JDK)

    shell 启用Amazon Linux 2 中的aws yum扩展库 sudo amazon linux extras enable corretto8 安装jre sudo yum install java 1 8 0 amazon c
  • spring cloud jackson自定义文本转换器

    由于 spring jackson default property inclusion 配置失效 所以得自定义文本转换器 废话不多说上代码 Configuration EnableWebMvc public class WebAppCon
  • pytorch中torchvision.utils包下的save_image函数

    雷郭出品 函数的用途 将NCHW的tensor以网格图的形式存储到硬盘中 该图也叫做雪碧图sprite image 如下图所示 将多张图以网格的形式拼凑起来 每张图的大小是28 28 单通道 那宽高如何确定 我们可以来看看该函数的源码 de
  • K8S的DaemonSet控制器

    1 什么是DaemonSet DaemonSet确保全部 或者一些 Node上运行一个pod的副本 当有Node加入集群时 也会为他们新增一个pod 当有Node从集群移除时 这些pod也会被回收 删除DaemonSet将会删除它创建的所有
  • 牛客剑指offer之【JZ13 机器人的运动范围】

    1 题目 2 示例解读 示例1输入的第一个参数为1 即threshold的值 第二 三个参数分别为2 3 即一个二行三列的格子 返回行坐标和列坐标的数位之和大于 threshold 的格子数 为3 具体如下 3 解题思路 根据题目分析可得
  • Android之使用PackageManager取得程序的包名、图标等

    图 Model代码 public class AppInfo private String appLabel private Drawable appIcon private Intent intent private String pkg
  • vue3中使用vuex状态管理

    vue3和vue2中使用vuex 基本一样 首先是配置vuex store下 index js为总文件 import createStore from vuex import actions from actions import gett
  • 如何在DIrectFB显示BMP图片

    下载directfb extra 编译安装好就行了 里面有bmp文件接口 接下来显示bmp和显示png方法是一样的
  • Android优雅的进行混淆——使用@Keep注解

    转自 https www jianshu com p be7ec1819d2f 综述 对于ProGuard工具想必我们都不陌生 它能够通过移除无用代码 使用简短无意义的名称来重命名类 字段和方法 从而能够达到压缩 优化和混淆代码的目的 最终
  • Centos7安装使用Docker

    Centos7安装使用Docker 系统环境与软件版本说明 名称 详情 系统环境 CentOS Linux release 7 5 1804 Core Docker docker ce 18 06 1 ce 3 el7 Docker安装 官
  • 电子学会 青少年软件编程等级考试 C语言 8 级

    8级 2022 9 01 道路 POJ 1724 ROADS POJ 1724 ROADS 望穿秋水 晴的博客 CSDN博客 roads daima POJ No 3352 道路建设 Road Construction POJ No 335
  • 抖音seo账号矩阵源码系统

    1 开通多个抖音账号 并将它们归纳为一个账号矩阵系统 2 建立一个统一的账号管理平台 以便对这些账号进行集中管理 包括账号信息 内容发布 社区交互等 3 招募专业的运营团队 对每个账号进行精细化运营 包括内容制作 社区互动 数据分析等 4
  • c语言输入姓名输出姓和名_C输入和输出

    c语言输入姓名输出姓和名 Input means to provide the program with some data to be used in the program and Output means to display dat
  • Eclipse注释中文格式没对齐

    遇到的问题 一格式化 号就出现以下情况 老是对不齐 解决的办法 java code style formatter edit 去掉Enable block comment formatting复选框 然后把下面的数字调大一点就可以了 如果不
  • FPGA实现ADC采样芯片ADS8688的采样

    在电机控制中 一般需要对电机三相电流Iu Iv Iw采样 并通过采样补偿 坐标变换等将采样电流反馈值输出到电流环闭环控制 中 除此之外 还需要对母线电压 驱动器温度进行采样 监控采样值 以此为根据 来对运行中的驱动器做过压 过温保护 ADS
  • FPGA时序约束(一)基本概念入门及简单语法

    文章目录 一 建立时间和保持时间是什么 二 时序分析分类 三 时钟约束方法 3 1 时钟约束 3 2 输入延时约束 3 3输出延时约束 3 4时序例外 四 时序约束语法补充 文章目前大部分参考明德扬时序约束 只是一个学习总结 侵权删 原文链