OpenCores
URL https://opencores.org/ocsvn/microprocessor/microprocessor/trunk

Subversion Repositories microprocessor

[/] [microprocessor/] [trunk/] [bench/] [VHDL/] [ALU.vhd] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 yacinenet
-------------------------------------------------------------------------------
2
-- ALU 
3
-- 12 opcodes
4
-- 
5
-------------------------------------------------------------------------------
6
 
7
library IEEE;
8
 
9
use IEEE.STD_LOGIC_1164.all;
10
 
11
entity FA_8bits is
12
        port (
13
        clk : in std_logic ;
14
        selec : in  std_logic_vector (3 downto 0);
15
        FA_in1 : in  std_logic_vector (7 downto 0);
16
        FA_in2 : in  std_logic_vector (7 downto 0);
17
        FA_out : out std_logic_vector (7 downto 0);
18
    carry   : out std_logic ;
19
        overf : out std_logic
20
        );
21
end FA_8bits ;
22
 
23
architecture archi_FA_8bits of FA_8bits is
24
 
25
signal cc_FA :   std_logic_vector (8 downto 0);
26
signal out2FA1 : std_logic_vector (7 downto 0);
27
signal out2FA2 : std_logic_vector (7 downto 0);
28
signal ck :      std_logic_vector (7 downto 0);
29
signal c0 :      std_logic ;
30
 
31
 
32
component FA      -- Full adder
33
port (
34
      x,y,cin,clk : in std_logic ;
35
      s,cout : out std_logic
36
          );
37
end component ;
38
 
39
component selec1  -- select logic unit
40
port (
41
      a1,b1 : in std_logic ;
42
      selec : in std_logic_vector (3 downto 0);
43
          s1: out std_logic
44
          ) ;
45
end component ;
46
 
47
component selec2  -- select arithmitic unit
48
port (
49
      b1 : in std_logic ;
50
      selec : in std_logic_vector (3 downto 0);
51
          s2: out std_logic
52
          );
53
end component ;
54
 
55
begin
56
 
57
carry_unit : entity work.selec3(archi_selec3)
58
                port map (selec,c0);
59
cc_FA(0) <= c0;
60
 
61
 
62
Logic_unit :for k in 7 downto 0 generate
63
 
64
                   FA_8bits  : selec1 port map (FA_in1(k),FA_in2(k),selec,out2FA1(k));
65
 
66
            end generate Logic_unit ;
67
 
68
Arith_unit :for k in 7 downto 0 generate
69
 
70
                   FA_8bits  : selec2 port map (FA_in2(k),selec,out2FA2(k));
71
 
72
            end generate Arith_unit ;
73
 
74
 
75
FullA_unit :for k in 7 downto 0 generate
76
 
77
                   FA_8bits  : fa port map (out2FA1(k),out2FA2(k),cc_FA(k),ck(k),FA_out(k),cc_FA(k+1));  -- les blocs d'additionaire complet
78
                           ck(k)<=clk ;
79
 
80
            end generate FullA_unit ;
81
 
82
carry<=cc_FA(8);
83
overf<=cc_FA(7) xor cc_FA(8);
84
 
85
end archi_FA_8bits ;
86
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.