小编use*_*133的帖子

是否有可能以低于2的系数来减少FPGA上二进制运算树的空间需求?

我有一个电路,在每个时钟周期,N个32位输入存在要计算.我有一个二进制操作,需要两个32位输入,并产生一个32位输出.此操作是关联的,我想将它应用于整个N 32位输入,以产生一个32位输出.目前,我通过实现流水线二进制操作树来实现这一目标.

举一个具体的例子,假设N = 4,我有输入{a,b,c,d},那么我会做以下事情:

a op b => reg1
c op d => reg2
reg1 op reg2 => result
Run Code Online (Sandbox Code Playgroud)

当树中的一个阶段不能被2整除时,我插入一个虚拟操作,只需要1个输入,产生1个输出,具有相同的延迟.

我遇到的问题是我关注N个输入的几个大小{9,25,49,81,121}.最大尺寸的N,121,在我的FPGA架构中需要110%的luts,而其他所有尺寸都很容易.这些二进制操作的树是我设计中最大的luts消费者.

我知道通过减少驻留在我板上的运算电路数量并多路复用它们的输入,我可以减少近一半的利用率.不幸的是,这意味着每隔一个时钟周期只能获得一个结果并将带宽减半.

因为完整的树只需要比电路板提供的资源多10%的资源,所以带宽减少50%似乎太重要了.是否有一种架构,我可以通过更细粒度的减小来减少带宽的细粒度减少?

architecture tree fpga

5
推荐指数
1
解决办法
104
查看次数

如果它们具有相同的名称并且我无法修改其他文件,如何在其他C文件中使用具有相同名称的多个函数?

我有程序生成包含单个函数的C文件void foo(float* n) {}.这些文件在函数中具有不同的代码,但名称始终相同.我想创建一个C文件,依次运行它们,但是当我尝试包含多个时,我得到一个重新定义错误(来自链接器?).我无法更改生成的C文件(否则我只会更改函数名称).生成的文件都有不同的唯一名称,即使这些函数都具有通用名称,我只需要一次使用一个函数(如果有任何类型的释放操作,如宏的#undef).

c linker

3
推荐指数
1
解决办法
392
查看次数

标签 统计

architecture ×1

c ×1

fpga ×1

linker ×1

tree ×1