奇偶校验的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’的个数为奇数。