程序很简单,但是可以引申到很多小的细节
library IEEE;
use IEEE.std_logic_1164.all;
entity parity is
port (
a: in STD_LOGIC_VECTOR (8 downto 0);
b: out STD_LOGIC
);
end parity;
architecture parity_arch of parity is
begin
process(a)
variable even:std_logic;
begin
even:='0';
for i in a'range loop
if a(i)='1' then
even:=not even;
end if;
end loop;
b<=even;
end process;
end parity_arch;
在这里用到了LOOP语句,在VHDL里有3种循环方式
1:loop...........2whileconditionloop........3for identifier in range loop....
LOOP的形式实现一个无限循环,可以提供跳出循环的方法,但用处不大
第二种形式很有用,但退出循环的条件预先知道。1076。6RTL综合标准不支持while形式。
最后一种形式是最有用的,我们可以用这种形式循环处理长度为n向量的每一位
foriin0to n-1 loop
也可以采用for i in a'range loop这种形式a'range记取a的向量长度-1
我们可以采用synplify_pro综合一下,通过观察生成的RTL文件,我们可以了解LOOP语句生成的结构