jssd 发表于 2010-5-15 16:11:57

请教~~~~~~~~~~~~~~~~~~~~~~~关于数据与宏的问题

如果我想把counter_a和counter_b变大一点。大概大到32位。如果我这样
signal counter_a,counter_b: std_logic_vector(31 downto 0);
编译时会说总共用了161个宏,我用的是7128只有128个宏。不够。可是我又不想改小计数器。应该怎么办呢?

jssd 发表于 2010-5-15 16:18:28

我用signal counter_a,counter_b: std_logic_vector(15 downto 0);总用宏是86个;
signal counter_a,counter_b: std_logic_vector(17 downto 0);总用宏是93个。为什么会这样呢?

minux 发表于 2010-5-15 16:54:43

你仔细看看max 3000系列的Macrocell/LAB的结构就明白了,首先它一个Macrocell的最大扇入
是32+16,一个macrocell对应一个Flip-flop,如果你把位数增加了,决定一位的逻辑可能不能
在一个marcocell里面完全实现,需要占用临近的macrocell的资源。另外,由于一个LAB内恰好有
16个macrocell,如果你把位数提高到16位以上,那么一个计数器就不能在一个LAB内部实现,但
由于LAB之间的布线资源不如LAB内部的那样丰富、灵活,所以也会导致这种非线性资源使用。

只是两种可能,具体的话,你可以看看RTL图。
页: [1]
查看完整版本: 请教~~~~~~~~~~~~~~~~~~~~~~~关于数据与宏的问题