VHDL 错误:无法解析网络的多个常量驱动程序... : for 循环



我对这个 vhdl 代码有一点问题,它说:

错误 (10028(:无法解析 net 的多个常量驱动程序 "LEDS[25]" 在 pong_game.vhd(1049( ...

这是我代码的一部分:

architecture led_matrix of pong_game is 
...
type etat is 
(led1,led2,led3,led4,led5,led6_1,led7_1_g,led7_1_d,led8_1_g,led8_1_d,led9_1_g 
...)
signal etat_present, etat_futur : etat;
...
affichage_sequence : process(etat_present)
begin
case etat_present is
when led1 =>
for i in 1 to 30 loop
if i = 1 then
leds(i)<='1';
else
leds(i)<='0';
end if;
end loop;
when led2 =>
for i in 1 to 30 loop
if i = 2 then
leds(i)<='1';
else
leds(i)<='0';
end if;
end loop;
when led3
...
end case ;
end process affichage_sequence ;
end architecture led_matrix;

有没有更好的方法来执行这些操作?

也许这可能非常简单,但是你的州发生了什么?

[...]led5,led6_1,led7_1_g,led7_1_d[...]

各种奇怪的名字。你想实现什么?

至于过程:

begin
case etat_present is
when led1 =>
leds <= (1 <= '1', others => '0');
when led2 =>
leds <= (2 <= '1', others => '0');
[...]

begin
case etat_present is
when led1 =>
leds <= (others => '0'); leds(1) <= '1';
when led2 =>
leds <= (others => '0'); leds(2) <= '1';
[...]

begin
leds <= (others => '0');
case etat_present is
when led1 =>
leds(1) <= '1';
when led2 =>
leds(2) <= '1';
[...]

根据您的要求和合成工具的支持。

但是我们缺少代码来了解为什么leds(25)有多个驱动程序。所以帮不了你。

模拟说了什么?我希望你模拟了这一点。直接使用FPGA通常是一个坏主意。

leds信号类型更改为std_ulogic_vector并在仿真中进行测试,这将给出更早的错误。

您正在不同的地方(在您的情况的多种可能性中(为 led(i( 分配一个值,这就是问题所在。您应该分配一个变量。并根据变量的值为 led(i( 分配一个值。

最新更新