我是VHDL的新手。我正在尝试使用代码来查找位向量是否为r(使用位向量的汉明权重)。我写的代码是:
entity hw_mod is
generic(
bits:integer );
port (
inp : in std_logic_vector((bits-1) downto 0;
cout : out std_logic );
end entity hw_mod
architecture hw_arch of hw_mod is
begin
process(inp)
variable count : Integer:=0;
begin
labelloop: for i in 0 to (bits-1) loop
if(inp(i)=='1') then
count:= count+1;
end if;
end loop;
if ((count mod 2)== '0') then
cout:=1;
else
cout:=0;
end if;
end process;
end hw_arch;
我一直得到的错误是“near”=“:语法错误 在两个地方。
答案 0 :(得分:1)
答案 1 :(得分:0)
我检查了你的代码:
- 通用不太好
- cout是一个信号,所以它需要<=
- :=
仅适用于变量
它没有错误,但仍然有锁存器。在使用之前,变量需要初始化。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
entity hw_mod is
generic(
bits : integer range 0 to 3 := 3);
port (
inp : in std_logic_vector((bits-1) downto 0);
cout : out std_logic );
end entity hw_mod;
architecture hw_arch of hw_mod is
begin
process(inp)
variable count : Integer:=0;
begin
labelloop:
for i in 0 to (bits-1) loop
if(inp(i)='1') then
count:= count+1;
end if;
end loop;
if ((count mod 2)= 0) then
cout <= '1';
else
cout <= '0';
end if;
end process;
end hw_arch;