![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FPGA
文章平均质量分 61
Leo_9824
这个作者很懒,什么都没留下…
展开
-
FPGA功耗估计
1、背景\quad资源、速度、功耗是FPGA设计中的三大关键因素。温度与功耗成正相关性,功耗大必然会导致温度高,高温最常见的问题是系统重启,温度高对FPGA内部的时序不利,导致可靠性下降。2、功耗分类1)芯片静态功耗\quadFPGA在上电后还未配置时,主要由晶体管的泄露电流所消耗的功耗;2)设计静态功耗\quad当FPGA配置完成后,当设计还未启动时,需要维持I/O的静态电流,时钟管理和其它部分电路的静态功耗;3)设计动态功耗\quadFPGA内设计正常启动后,设计的功耗;这部分功耗的多少原创 2021-11-16 22:38:12 · 5116 阅读 · 1 评论 -
verilog整理
链接:http://www.cnblogs.com/xingshansi/p/7039237.html 前言Verilog是硬件描述语言,不算FPGA的核心部分,以前没有接触过,找了本书翻看一下(《Verilog数字系统设计教程第三版》),顺便记录一些基础知识,从第三章开始。 第三章:模块结构、基本数据类型、基本运算符 A-模块的结构0、模块基本定义一个基本的模块就是:module name(in1,in2,...out1,out2,...)//内部逻辑end转载 2021-08-31 17:11:13 · 848 阅读 · 0 评论 -
XDC约束技巧--CDC
1、CDC定义与分类\quadCDC 是 Clock Domain Crossing 的简称, CDC 时序路径指的是起点和终点由不同时钟驱动的路径。在电路设计中对这些跨时钟域路径往往需要进行特别的处理来避免亚稳态的产生,例如使用简单同步器、 握手电路或是 FIFO 来隔离。2、CDC设计与约束2.1、简单的同步器\quadASYNC_REG约束,把用作简单同步器的多个寄存器放入同一个SLICE,以降低走线延时的不一致和不确定。\quad约束命令如下:\quadset_property ASYN原创 2021-08-25 22:52:27 · 962 阅读 · 0 评论 -
XDC约束技巧--时钟
1、XDC\quadXDC本质上是tcl语言1) 顺序很重要\quad约束是一条一条执行的,后面输入的约束在有冲突的情况下会覆盖之前的约束(时序例外除外,由优先级决定)2) 时钟域\quad没有声明的情况下认为所有时钟都是同步的。没有时序例外的情况下分析每条跨时钟路径3) 约束\quad时钟约束、I/O约束、时序例外约束2、时钟约束\quadcreate_clock –name clk1 –period 4 [get_ports CKP1]\quadcreate_generate原创 2021-08-25 22:40:47 · 2206 阅读 · 0 评论 -
FPGA开发之时序收敛10个小技巧
1、好的代码风格1)代码要跟器件结构相关2)避免异步复位,异步复位同步化,全局复位局部化3)层次的边界要加流水寄存\quad例如:BRAM中有两级register,第一级在内部,第二级在外部slice里的寄器。不同功能模块内部的寄存器要求的速度也不一样,不同位置的寄存器速度不一样。如ILOGIC中的寄存器对setup要求最高(寄存器最慢),OLOGIC中的寄存器对setup的要求最低(寄存器最快)。Slice中的寄存器速度最快,所以经常在mem,clock模块输出端增加一个slice的registe原创 2021-08-25 22:28:59 · 2482 阅读 · 1 评论 -
DSP48E1(3)乘法运算实例
1.实现乘法25bit*18bit运算\quad由A端输入24bit数据,D端输入24bit数据,实现预加法。然后与B端输入的18bit数据实现乘法。最后P端输出。调用原语实现。1.1. 参数配置\quadUSE_DPORT = TRUE;\quadUSE_MULT = MULTIPLY;\quadUSE_SIMD = ONE48;乘法必须选择ONE48\quadUSE_PATTERN_DETECT = NO_PATDET;\quadAREG=2;BREG=2;A、B通道选择两级寄存器\q原创 2021-07-14 18:50:13 · 2038 阅读 · 0 评论 -
DSP48E1(2)加法运算实例
1. 实现48bit加法\quad由A:B组合一个48bit数据与C相加,D端口禁用。\quad调用原语实现。1.1. 参数配置\quadUSE_DPORT = FALSE;\quadUSE_MULT = NONE;乘法器必须禁用\quadUSE_SIMD = ONE48;\quadUSE_PATTERN_DETECT = NO_PATDET;\quadAREG=2;BREG=2;A、B通道选择两级pipeline\quadMREG=0;USE_MULT = NONE时MREG必须等于0原创 2021-07-14 18:41:33 · 1300 阅读 · 0 评论 -
DSP48E1(1)系统结构
DSP48E1能做哪些事情?1、加法运算1)SIMD$\$1个48bit加法2个24bit加法(并行输出)4个12bit加法(并行输出)2、乘法运算3、模式匹配4、累加运算5、计数器6、原创 2021-07-14 18:24:06 · 365 阅读 · 0 评论 -
CARRY4
超前进位链(CARRY)常用于加减法运算。超前进位链公式:设:FPGA中有专用的实现进位链的硬件模块CARRY4,其结构如下:接口:S[3:0]:“propagate”信号输入。输入信号为A^B。DI[3:0]:“generate”信号输入。输入信号为A或B,结果都一样。CYINIT:初始化输入。当做减法时,减数需要取反加1将减法操作转为加法操作。CYINIT=1时相当于加1操作。可动态赋值。CIN:用于级联slices生产一个更大的进位链 。O[3:0]:等于Sum[3:0]。C原创 2021-07-10 16:42:16 · 1800 阅读 · 0 评论 -
FPGA开发--移位寄存器SRL
介绍(针对K7系列)\quadSLICEM可以不用SLICE中的FF生成一个最大深度为32bit的移位寄存器。用这种方法,每个LUT能够延迟串行数据1~32个时钟周期。\quad移位寄存器的输入端D和输出端Q31可以级联成一个更大的移位寄存器。可以将不同的SLICEM组合成一个移位寄存器。\quadLUT的地址A[4:0]可以选择在第几级深度输出数据,深度等于地址数值加一。输出端口为Q6 。\quad每个SLICEM有4个LUT,可以输入8bit位宽的数据。特性1)单时钟沿操作2)时钟使能,高原创 2021-06-27 00:50:21 · 1950 阅读 · 0 评论 -
vivado时序设计之共享控制信号
\quad共享控制信号这一点充分体现了设计必须考虑到用于底层实现的芯片结构的重要性。在 Xilinx 的芯片上,时钟、置位/复位和时钟使能等信号通称为 Control Set,进入同一个 SLICE 的 Control Set 必须统一。换句话说,不同 Control Set 控制下的 FFs 不能被 Vivado 放进同一个 SLICE。\quad为了提升 SLICE 的利用率,获得更高效的布局方案,提升时序性能,我们必须控制一个设计中 Control Set 的总数,尽量共享控制信号。具体做法包括:原创 2021-06-08 22:35:38 · 257 阅读 · 0 评论 -
ZYNQ芯片底层结构
开发ZYNQ时了解它的底层是有一定帮助的。那么它的底层是啥样呢?1、总览它的每一个bank所包含的元素都是相同的2、bank41)bank中包含1个PLL、1个MMCM、若干IO、IDELAY、ODELAY、IN_FIFO、OUT_FIFO、BUFR、BUFIO、DSP48、SLICE、BRAM、BUFH、BUFG等。2)每个bank都是上下对称的(所含元素相同)。3)每个bank中只有两个时钟管理器,如果想用的更多就需要跨bank了。4)对输入/输出信号处理的元素,如IDELAY2、OD原创 2021-04-28 00:17:38 · 1182 阅读 · 0 评论 -
FPGA开发实例之后仿真
FPGA仿真包含前仿真和后仿真,当前仿真没问题时并不能代表布线后也没问题。可以看看后仿真时序如何才能判断是否真的没有问题。下图是一个后仿真的结果,可以看到输出的信号上有很多毛刺,但是否会有影响得综合去判断了。下图也很奇怪,在一个时钟周期内数据总线会多次出现变化。上图数据总线变化的原因是多根总线在不同时刻变化导致的(下图)。所以有的时候用独热码或格雷码还是有必要的。...原创 2021-04-29 00:40:41 · 788 阅读 · 0 评论 -
ZYNQ开发实例之布局约束
分享一例位置约束实例如下图所示,出现这个警告的意思是在一个bank中时钟管理器不够用需要到其他bank中找一个,但这不是最优的解决方案,如果要这么处理就需要在约束文件中进行约束先分配一下IO对应的时钟管理器。A1分配mmcm1,A2分配PLL,A3分配mmcm2,如下图:可以在属性中获取时钟管理器的坐标:mmcm1的坐标是MMCME2_ADV_X1Y3pll的坐标是PLLE2_ADV_X1Y2mmcm2的坐标是MMCME2_ADV_X1Y2可以在Schematic中找到时钟管理器的网络路径原创 2021-04-29 00:03:05 · 1162 阅读 · 0 评论 -
report_cdc
1、什么是report_cdc\quad时钟域交汇 (Clock Domain Crossings, CDC)”报告,可对设计中的时钟域交汇执行结构分析。此信息可用于识别潜在不安全的 CDC, 此类 CDC 可能导致亚稳态或数据一致性问题。虽然 CDC 报告与“时钟交互 (Clock Interaction)”报告类似, 但 CDC 报告侧重于结构及其时序约束, 不提供有关时序裕量的信息。简单说就是只分析跨时钟域的电路结构是否安全,不分析跨时钟域的时序裕量。2、专业术语安全的(safed):\qu原创 2021-04-19 22:59:07 · 488 阅读 · 0 评论 -
ASYNC_REG
ASYNC_REG属性通常应用在跨时钟域的数据同步上。它有如下特性:1)在仿真过程中发生时序违规时,寄存器会输出一个’X’,或未知状态(不是0或1)。当发生这种情况时,该元素驱动的任何东西都会在其输入上看到一个’X’,然后进入未知状态,这种情况会在整个设计中传播。这种情况下会导致设计的大部分变的未知,有时无法从这种状态中恢复。被ASYNC_REG约束的寄存器在这种情况下会输出最后的已知状态。2) ASYNC_REG约束的寄存器如同DONT_TOUCH约束的寄存器一样,不会被优化。3) 指定ASYNC原创 2021-04-18 20:25:10 · 1347 阅读 · 0 评论 -
FPGA开发实例之时序违规1
1、说明\qquad在用fpga做信号处理的时候用到了开根号运算,我直接调用ip核完成的。编译完成后出现了ip核路径时序违规,以下是解决方法。2、ip核时序违规如图所示\qquad打开第一个违规路径查看详细信息,可以看到信号路径都是CARRY和LUT,即信号路径中包含了很多组合逻辑。\qquad查看ip核发现,此ip是使用logic单元生成的,并且latency参数设置成了3,它为了保证运算速度所以用了大量的组合逻辑。组合逻辑很多时会导致信号延迟较高,所以产生了时序违规。我尝试着将lat原创 2020-06-17 10:50:48 · 1374 阅读 · 0 评论 -
FPGA开发之综合选项整理
本文介绍了fpga开发工具综合选项的功能与应用,EDA工具版本为vivado17.4\quad\enspace1、 -flatten_hierarchyfull:\quad\enspace综合时将原始设计打平,只保留顶层层次,执行边界优化none:\quad\enspace综合时完全保留原始设计层次,不执行边界优化。综合的输出与原始RTL有相同的层次化结构。rebuilt::\quad\enspace设置后,rebuild允许合成工具将层次结构扁平化。执行综合,然后基于原始RTL重建层次结构原创 2020-06-16 16:25:35 · 1395 阅读 · 0 评论 -
FPGA开发之上电加载过程
1、说明\quad\enspace此文概述了fpga上电后程序加载流程。参考文件Ug470 fpga configuration2、硬件架构图\quad\enspace以此硬件架构为例。3、加载流程及时序图4、加载过程详解\quad\enspacefpga在上电时自动开始配置流程。具体流程包括三大部分:setup、bitstream loading、startup sequence。4.1 setup1) 设备上电\quad\enspace上电完成后可将PROGRAM_B引脚拉低重原创 2020-05-30 09:08:20 · 3478 阅读 · 1 评论