奇偶校验的VHDL设计

  • 格式:doc
  • 大小:214.50 KB
  • 文档页数:2

奇偶校验电路

1. 引言

串行数据在传输过程中,由于干扰,可能引起传输信息的错误,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误叫“检错”。最简单的检错方法是“奇偶校验”,即在传送字符的各个位的基础上,再传送1位奇偶校验位。可采用奇校验或偶校验。本文采用奇校验。

2.真值表

产生奇校验位的真值表如表一所示:

数据位 奇校验位

D2 D1 D0 ODD

0 0 0 1

0 0 1 0

0 1 0 0

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 0

表一

3. VHDL程序

3个数据位产生奇校验位odd的VHDL 程序如下:

LIBRARY ieee; --打开需要用到的库

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

USE ieee.std_logic_unsigned.all;

ENTITY odd_correct IS --实体说明

PORT

(

d : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

dout : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

odd : OUT STD_LOGIC

);

END odd_correct;

ARCHITECTURE behavior OF odd_correct IS --结构体定义

BEGIN

PROCESS (d)

VARIABLE odd_tmp : STD_LOGIC;

BEGIN

odd_tmp :='0'; --给变量赋初始值

FOR i IN 0 TO 2 LOOP --循环

odd_tmp := NOT(odd_tmp XOR d(i)); --有奇数个‘0’时odd_tmp=1

END LOOP;

odd<=odd_tmp;

dout<=d&odd_tmp; --使得输出数据dout中有奇数个‘1’

END PROCESS;

END behavior;

4.仿真结果如下:

实现的逻辑功能:根据输入的数位产生奇校验位odd, 使得输出数据dout 中‘1’的个数为奇数。