功耗优化相关
额外的routing增加布线拥塞以及功耗,解决方法:
调整设置/设定/约束
增加pipeline流水线寄存器,减短长路径
存储资源功耗:
强制使用小块MLAB,避免使用大块M20K,适用于大位宽但深度浅的memory
功耗主要来自于动态时钟,充放电RAM core导致功耗增加,可减少memory器件clocking events来减少功耗
使用clock enable信号使得memory器件在不使用的时候达到几乎为0的功耗消耗(无RAM core充放电)
使用更窄/更深的memory实现,用max_block_depth控制RAM深度,此时编译器会加入额外的decoder和mux逻辑,
Pipeline流水线
提升速度,缩短逻辑深度,减少逻辑切换,不改变原有逻辑功能
会增加资源/寄存器使用量,影响延迟和吞吐率,若设计存在glitch可能会增加功耗
I/O功耗
功耗公式:


更低的I/O电压消耗功率更低
阻性上拉标准(SSTL/HSTL):输出波动小,高频应用中动态功耗较低,但由于持续驱动静态电阻,静态功耗高
不上拉的标准(LVTTL/LVCMOS):V = Vccio,高频率时高动态功耗,但由于无静态电阻驱动,低静态功耗
一些基本语法
赋值:
assign out = in;翻转赋值:
assign out = ~in;异或:
assign out = a ^ b;同或:
assign out = ~(a ^ b);casez:可在case中引入don't-care位:
always @(*) begin casez (in[3:0]) 4'bzzz1: out = 0; // in[3:1] can be anything 4'bzz1z: out = 1; 4'bz1zz: out = 2; 4'b1zzz: out = 3; default: out = 0; endcase endFPGA设计流程:
Intel官方FPGA设计流程相关文档,相当详细且带在线学习课程。竞争和冒险:
**竞争:**在组合逻辑电路中,信号经过多条路径到达输出端,每条路径经过的逻辑门不同存在时差,在信号变化的瞬间存在先后顺序。这种现象叫竞争。
**冒险:**由于竞争而引起电路输出信号中出现了非预期信号,产生瞬间错误的现象称为冒险。表现为输出端出现了原设计中没有的窄脉冲,即毛刺。
常见的逻辑代数法判断是否有竞争冒险存在:只要输出逻辑表达式中含有某个信号的原变量A和反变量/A之间的“与”或者“或”关系,且A和/A经过不同的传播路径,则存在竞争。解决办法一是修改逻辑表达式避免以上情况,二是采样时序逻辑,仅在时钟边沿采样,三是在芯片外部并联电容消除窄脉冲。
亚稳态产生原因及消除方式
在异步系统中,寄存器建立保持时间不满足,引起亚稳态。典型的场合为数据跨时钟域传输和异步复位电路。在异步传输过程中,通过单比特信号双寄存器同步,多比特信号FIFO桥接的方式消除亚稳态(实际上异步信号同步方式即为异步传输过程中亚稳态的消除方式)。通过异步复位,同步释放可消除异步复位引起的亚稳态。
锁存器(latch)和触发器(flip-flop)区别
电平敏感的存储器件称为锁存器。可分为高电平锁存器和低电平锁存器,用于不同时钟之间的信号同步。
有交叉耦合的门构成的双稳态的存储原件称为触发器。分为上升沿触发和下降沿触发。可以认为是两个不同电平敏感的锁存器串连而成。前一个锁存器决定了触发器的建立时间,后一个锁存器则决定了保持时间。
SR Latch,使用NOR门构建,Set/Rest为1时Q为1
~SR Latch,与上面相反,使用NAND门构建,输入输出和SR Latch相反
D触发器,CLK上升沿Q跟随D输入,其他情况保持FPGA芯片内有哪两种存储器资源
FPGA芯片内有两种存储器资源:一种叫BLOCK RAM,另一种是由LUT配置成的内部存储器(也就是分布式RAM)。BLOCK RAM由一定数量固定大小的存储块构成的,使用BLOCK RAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗的BLOCK RAM资源是其块大小的整数倍。
发
若无法加载请检查网络环境。
若无法加载请检查网络环境,或切回 Disqus 稍后再试。