Study Life/VHDL2010.11.04 19:13


◆ 패리티 비트 : 정보의 전달 과정에서 오류를 검사하기 위해 데이터에 추가되는 비트
    짝수(even) 패리티 : 전체 비트 수가 짝수가 되도록 패리티 비트를 추가
    홀수(odd) 패리티 : 전체 비트의 수가 홀수가 되도록 패리티 비트를 추가
    → 이렇게 패리티 비트를 정하여 데이터를 보내면 받는 쪽에서는 수신된 데이터의 전체 비트에서 ‘1’의 개수
    를 카운트하여 데이터 오류 발생 여부를 확인

 짝수 패리티를 발생하기 위해서는 데이터의 모든 비트에 XOR 연산을 한 결과를 원래 데이터에 추가해야함.
    XOR은 1의 개수가 홀수일 때 ‘1’이 되므로 전체 ‘1’의 개수는 짝수가 되지만 홀수 패리티의 경우에는 원래 데
    이터에 XNOR한 결과를 추가해야 함.


◆ 홀수 패리티 발생기 VHDL 및 시뮬레이션

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity parity1 is
  generic ( n : integer := 7);
  port ( input : in std_logic_vector(n-1 downto 0);
     output : out std_logic_vector(n downto 0));
end parity1;

architecture design of parity1 is
begin
 process(input)
  variable temp1 : std_logic;
  variable temp2 : std_logic_vector(n downto 0);
 begin
  temp1 := '0';
  for i in input' range loop
  temp1 := temp1 xnor input(i);
  temp2(i) := input(i);
  end loop;
  temp2(n) := temp1;
  output <= temp2;
 end process;
end design;



◆ 짝수 패리티 발생기 VHDL 및 시뮬레이션

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity parity2 is
  generic ( n : integer := 7);
  port ( input : in std_logic_vector(n-1 downto 0);
     output : out std_logic_vector(n downto 0));
end parity2;

architecture design of parity2 is
begin
 process(input)
  variable temp1 : std_logic;
  variable temp2 : std_logic_vector(n downto 0);
 begin
  temp1 := '0';
  for i in input' range loop
  temp1 := temp1 xor input(i);
  temp2(i) := input(i);
  end loop;
  temp2(n) := temp1;
  output <= temp2;
 end process;
end design;

'Study Life > VHDL' 카테고리의 다른 글

패리티 발생기 설계  (0) 2010.11.04
수의 정렬회로  (0) 2010.11.01
우선순위 인코더  (4) 2010.10.21
Posted by Rsubs

댓글을 달아 주세요