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...........2while Condition Loop........3for Identifier In Range Loop....
LOOP的形式实现一个无限循环,可以提供跳出循环的方法,但用处不大
第二种形式很有用,但退出循环的条件预先知道。1076。6RTL综合标准不支持While形式。
最后一种形式是最有用的,我们可以用这种形式循环处理长度为N向量的每一位
For I In 0 To N-1 Loop
也可以采用 For I In A''Range Loop这种形式A''Range记取A的向量长度-1
我们可以采用Synplify_pro综合一下,通过观察生成的RTL文件,我们可以了解LOOP语句生成的结构