所以我使用算法来创建类似链接(http://ars.els-cdn.com/content/image/1-s2.0-S0140366499000031-gr1.gif)中的结构。所以我创建了一个函数,它将确定跳转到下一个的位置。 在我的VHDL交换机架构中,我试图使用generate语句来定义节点并适当地映射它们的端口但是当我合成它时说 " "榕树"不能用在这个表达式中#34; (榕树是图书馆的一个功能)。下面是一些示例代码:
INPUT: IF ( l = 1 ) GENERATE
NODE_Element : BN PORT MAP(
clk, reset,
Input((2*n)-1),
Input((2*n)),
SyncIn,
con(l+1,Banyan(l,n),BanyanPort(l,n)),
con(l+1,Banyan(l,n),BanyanPort(l,n)),
sync(l+1,n)
); --GENERIC MAP(...)
END GENERATE INPUT;
有没有人知道如何解决这个问题......这似乎是根本性的,但我可以找到解决方案。
答案 0 :(得分:2)
看起来问题不是生成,而是端口映射。您在端口映射中可以执行的操作有一些限制,许多工具(您没有说这是哪个合成工具!)会对自己施加严格的限制。
我建议将功能结果分配给临时信号,并在端口映射中使用该信号。
INPUT: IF l = 1 GENERATE
Banyan1 <= Banyan(l,n);
BanyanPort1 <= BanyanPort(l,n);
Con1 <= con(l+1,Banyan(l,n),BanyanPort(l,n));
NODE_Element : BN PORT MAP(
clk, reset,
Con1,
);
END GENERATE INPUT;
您可能会发现并非所有这些变化都是必要的;可能从端口映射中移出con(...)就足够了。