71c677d66de5879dc88e2149a90ff253ba80a36a
[bos2k9.git] / fhw_rs232_t / rs232_globals_parity_t.vhd
1 -----------------------------------------------------------------------
2 -- Copyright (c) 2009 Malte S. Stretz <http://msquadrat.de> 
3 --
4 -- Testing the parity generator.
5 -----------------------------------------------------------------------
6 -- This entity is part of the following library:
7 -- pragma library fhw_rs232_t
8 library fhw_rs232_t;
9 library fhw_rs232;
10 use fhw_rs232.rs232_globals_p.all;
11
12 library ieee;
13 use ieee.std_logic_1164.all;
14 use ieee.numeric_std.all;
15
16 library stefanvhdl;
17 use stefanvhdl.txt_util.all;
18
19 -----------------------------------------------------------------------
20
21 entity rs232_globals_parity_t is
22 end rs232_globals_parity_t;
23
24 architecture test of rs232_globals_parity_t is
25   procedure t(
26     word   : in std_logic_vector;
27     expect : in std_logic) is
28     variable e_p_v, e_e_v : std_logic;
29     variable o_p_v, o_e_v : std_logic;
30   begin
31     e_e_v := expect; o_e_v := not expect;
32     o_p_v := get_parity(word, '0'); assert o_p_v = o_e_v report "wrong O parity for " & str(word) & ": " & str(o_p_v) & " != " & str(o_e_v);
33     e_p_v := get_parity(word, '1'); assert e_p_v = e_e_v report "wrong E parity for " & str(word) & ": " & str(e_p_v) & " != " & str(e_e_v);
34   end t;
35 begin
36   t("0", '0');
37   t("1", '1');
38   
39   t("00", '0');
40   t("01", '1');
41   t("10", '1');
42   t("11", '0');
43   
44   t("000", '0');
45   t("001", '1');
46   t("010", '1');
47   t("011", '0');
48   t("100", '1');
49   t("101", '0');
50   t("110", '0');
51   t("111", '1');
52   
53   t("0000", '0');
54   t("0001", '1');
55   t("0010", '1');
56   t("0011", '0');
57   t("0100", '1');
58   t("0101", '0');
59   t("0110", '0');
60   t("0111", '1');
61   t("1000", '1');
62   t("1001", '0');
63   t("1010", '0');
64   t("1011", '1');
65   t("1100", '0');
66   t("1101", '1');
67   t("1110", '1');
68   t("1111", '0');
69 end test;