奇偶校驗器

admin @ 2014-03-26 , reply:0

程序很簡單,但是可以引申到很多小的細節

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 研發互助社區 ] 奇偶校驗器已經有1331次圍觀

http://cocdig.com/docs/show-post-43516.html