summaryrefslogtreecommitdiff
path: root/rapport/assets/code/thermo2bin.tex
blob: b4e60a4536b45866f7cfbb0ad88490a0c761bb6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
\begin{verbatim}
architecture Behavioral of Thermo2Bin is
    signal first_segment_of_four : STD_LOGIC_VECTOR(3 downto 0);
    signal second_segment_of_four : STD_LOGIC_VECTOR(3 downto 0);
    signal third_segment_of_four : STD_LOGIC_VECTOR(3 downto 0);

    component Add4Bits is
        Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
            B : in STD_LOGIC_VECTOR (3 downto 0);
            C : in STD_LOGIC;
            R : out STD_LOGIC_VECTOR (3 downto 0);
            Rc : out STD_LOGIC);
    end component;

    signal first_plus_second : STD_LOGIC_VECTOR(3 downto 0);
    signal carry_out_first_plus_second : STD_LOGIC;
    signal last_carry_out : STD_LOGIC;

begin
    first_segment_of_four(3) <= '0';
    first_segment_of_four(2) <= thermo_bus(11);
    first_segment_of_four(1) <= NOT thermo_bus(11) AND thermo_bus(9);
    first_segment_of_four(0) <= NOT thermo_bus(11) AND ((NOT thermo_bus(9) AND thermo_bus(8)) OR (thermo_bus(10) AND thermo_bus(9)));

    second_segment_of_four(3) <= '0';
    second_segment_of_four(2) <= thermo_bus(7);
    second_segment_of_four(1) <= NOT thermo_bus(7) AND thermo_bus(5);
    second_segment_of_four(0) <= NOT thermo_bus(7) AND ((NOT thermo_bus(5) AND thermo_bus(4)) OR (thermo_bus(6) AND thermo_bus(5)));

    third_segment_of_four(3) <= '0';
    third_segment_of_four(2) <= thermo_bus(3);
    third_segment_of_four(1) <= NOT thermo_bus(3) AND thermo_bus(1);
    third_segment_of_four(0) <= NOT thermo_bus(3) AND ((NOT thermo_bus(1) AND thermo_bus(0)) OR (thermo_bus(2) AND thermo_bus(1)));

    first_plus_second_adder : Add4Bits port map (
      A => first_segment_of_four,
      B => second_segment_of_four,
      R => first_plus_second,
      Rc => carry_out_first_plus_second,
      C => '0');

    plus_third_adder : Add4Bits port map (
      A => first_plus_second,
      B => third_segment_of_four,
      R => binary_out,
      Rc => last_carry_out,
      C => carry_out_first_plus_second);

    error <= (
    (thermo_bus(11) AND NOT thermo_bus(10)) OR
    (thermo_bus(10) AND NOT thermo_bus(9)) OR
    (thermo_bus(9)  AND NOT thermo_bus(8)) OR
    (thermo_bus(8)  AND NOT thermo_bus(7)) OR
    (thermo_bus(7)  AND NOT thermo_bus(6)) OR
    (thermo_bus(6)  AND NOT thermo_bus(5)) OR
    (thermo_bus(5)  AND NOT thermo_bus(4)) OR
    (thermo_bus(4)  AND NOT thermo_bus(3)) OR
    (thermo_bus(3)  AND NOT thermo_bus(2)) OR
    (thermo_bus(2)  AND NOT thermo_bus(1)) OR
    (thermo_bus(1)  AND NOT thermo_bus(0)));

end Behavioral;
\end{verbatim}