VHDL编程问题求助

2024年11月28日 22:53
有4个网友回答
网友(1):

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jiao is
port (a : in std_logic;
b : in std_logic;
q: out std_logic_vector(3 downto 0));
end jiao;
architecture behav of jiao is
begin
process(a,b)
variable cqi : std_logic_vector(3 downto 0);
begin
if b'event and b = '1' then
elsif a'event and a = '1' then
cqi :=cqi+'1';
else cqi :=(others =>'0');
end if;
q <= cqi;
end process;
end behav;

2个地方错误
cqi :=cqi+'1';
else cqi :=(others =>'0');

网友(2):

else cqi :=(others =>0); 这句中的0要加单引号
而且
if b'event and b = '1' then
elsif a'event and a = '1' then
这两句有问题 当 if条件句后面 一定要有个执行语句
你这样写就相当于b没有用了。。。那还不如改为
if a'event and a = '1' then 这一句的意思就是跟那两句一样的
而且在语法上也没有错误

网友(3):

http://group.ednchina.com/2762/

网友(4):

cqi :=cqi + 1;错了
cqi是std-logic_vector型的,1是整形,应该是
cqi:=cqi+'1';