【FPGA】8位奇偶校验 / 加(减)法器 VHDL程序

奇偶校验

功能

识别错误,要求重传

方法

附加一个位,表明其信息满足某特定校验要求。

  奇校验表示所发送的N+1位有奇数个1;

  偶校验表示所发送的N+1位有偶数个1;

例如

给定“0101”,首先附加一位。

如果是奇校验,那么该位的数字为“1”

如果是偶校验,那么该位的数字为“0”

8位奇偶校验的VHDL程序:

library ieee;
use ieee.std_logic_1164.all;

entity parity8 is 
    port ( ain : in std_logic_vector(7 downto 0);
             pin : in std_logic;   -- odd = '1' , even = '0'
             pout : out std_logic );
end parity8 ;

architecture behave of parity8 is 
    signal s10 : std_logic ;
    signal s23 : std_logic ;
    signal s45 : std_logic ;
    signal s67 : std_logic ;
    signal slw : std_logic ;
    signal shg : std_logic ;
    signal s : std_logic ;
begin
    s10 <= ain(0) xor ain(1) ;
    s23 <= ain(2) xor ain(3) ;
    s45 <= ain(4) xor ain(5) ;
    s67 <= ain(6) xor ain(7) ;
    slw <= ain10 xor ain23 ;
    shg <= ain45 xor ain67 ;
     s  <= slw xor shg ;
    pout <= s xor pin;
end behave

加法器/减法器

需求:

两个8位输入端口

EAS 位控制位

  EAS = 1 , Adder

  EAS = 0 , Substractor

一个8位输入

使用的关键包

Package:

  std_logic_signed

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all ;

entity cas8 is
    port ( a : in std_logic_vector(7 downto 0);
             b : in std_logic_vector(7 downto 0);
           eas: in std_logic ;
             c : out std_logic_vector(7 downto 0));
end cas8;

architecture behave of cas8 is
begin
    c <= a + b when eas = '1' else
          a - b ;
end behave;

猜你喜欢

转载自www.cnblogs.com/Osea/p/13191877.html