程序很簡單,但是可以引申到很多小的細節
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語句生成的結構
[admin via 研發互助社區 ] 奇偶校驗器已經有4597次圍觀
http://cocdig.com/docs/show-post-43516.html