Fanout即扇出,模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛.因此,在写代码时应尽量避免高扇出的情况.但是,在某些特殊情况下,受到整体结构设计的需要或者无法修改代码的限制,则需要通过其它优化手段解决高扇出带来的问题.以下就介绍三个这样的方法: 首先来看下面这个实例,如图1所示为转置型FIR滤波器中的关键路径时序报告,在DSP in FPGA的FIR专题中有介绍转置型结构FIR滤波器输入数据的扇出较大,在图1中所示为11,因此n
FPGA中的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会.硬件逻辑实现的除法运算会占用较多的资源,电路结构复杂,且通常无法在一个时钟周期内完成.因此FPGA实现除法运算并不是一个"/"号可以解决的. 好在此类基本运算均有免费的IP核使用,本人使用的VIVADO 2016.4开发环境提供的divider gen IP核均采用AXI总线接口,已经不再支持native接口.故做除法运算的重点从设计算法电路转变成了调用AXI总线IP核以及HDL中有符号数的表示问题,极大降低了开
Libev中的信号监视器,用于监控信号的发生,因信号是异步的,所以Libev的处理方式是尽量的将异步信号同步化.异步信号的同步化方法主要有:signalfd.eventfd.pipe.sigwaitinfo等.这里Libev采用的是前三种方法,最终都是将对异步信号的处理,转化成对文件描述符的处理,也就是将ev_signal转化为处理ev_io. 一:数据结构 1:ev_signal typedef struct ev_signal { int active; int pending; int p
fpga中的存储器三种:RAM,ROM,FIFO. RAM和ROM已经比较熟悉了,记录一下FIFO. FIFO:first in first out ,顺序存取,先入先出.是一种数据缓存器,用来作不同接口的缓冲地,其应用场景有: ① 不同时钟域:数据产生速率 与 数据使用速率 不相等,这个时候用FIFO来缓冲 ,数据量够了再发送. ② 不同位宽 :发送和接收数据的位宽不相等,这个时候用FIFO来缓存,位宽匹配了再发送. 注意:硬盘 ≠ ROM ,但有关系 .硬盘是外部设备,ROM是内部设备