我对这个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;
有没有更好的方法来执行这些操作?
答案 0 :(得分:0)
也许它可能非常简单,但你们的州会发生什么?
[...]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
并在模拟中进行测试,这会产生较早的错误。
答案 1 :(得分:-2)
您正在为不同地方的led(i)分配一个值(在您的情况下有多种可能性),这就是问题所在。你应该分配一个变量。并根据变量的值为led(i)赋值。