State-of-the-Ars

知識蓄積備忘録

【VHDL】パリティ回路とセンシティビティリスト

パリティ回路

以下に,パリティ回路のVHDLソースコードを表示する.

-- Even Parity Circuit

library IEEE;
use IEEE.std_logic_1164.all;

entity ParityNbit is
    generic (N : integer := 4);
    port (
        A : in std_logic_vector(N - 1 downto 0);
        P : out std_logic
    );
end ParityNbit;

architecture RTL of ParityNbit is
    begin
        process(A)
        variable tmp : std_logic;
        begin
            -- even parity -> tmp := '0'
            -- odd parity -> tmp := '1'
            tmp := '0';
            for I in 0 to N - 1 loop
                tmp := tmp xor A(I);
            end loop;
            P <= tmp;
        end process;
end RTL;

今回のパリティ回路ではXORを使って,パリティビットを決定する.

手計算を行えば,理屈はわかると思うが, 偶数パリティの時,

tmp := '0';

奇数パリティの時,

tmp := '1';

とすればよい.

センシティビティリスト

センシティビティリストは,process文の機能で,

process(A)
begin
--<順次処理文>
end process;

という風に使用する.

この機能は,信号名をカンマで区切って並べたリストで,

ここに記述された信号に変化があると以下の式が活性化されて実行される.

参考文献

  1. process文