File: multi8.vhdl

package info (click to toggle)
alliance 5.0-20120515-6
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 70,324 kB
  • ctags: 39,977
  • sloc: ansic: 350,299; vhdl: 34,227; yacc: 27,122; sh: 12,416; cpp: 9,478; makefile: 7,057; lex: 3,684
file content (124 lines) | stat: -rw-r--r-- 3,102 bytes parent folder | download | duplicates (4)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Multi8 is


    port ( X  : in Std_Logic_Vector(7 downto 0) ;
           Y  : in Std_Logic_Vector(7 downto 0) ;
           R  : out Std_Logic_Vector(15 downto 0) );

end Multi8;

----------------------------------------------------------------------

architecture beh OF Multi8 is

  signal PP1 : Std_Logic_Vector(8 downto 0);
  signal PP2 : Std_Logic_Vector(8 downto 0);
  signal PP3 : Std_Logic_Vector(8 downto 0);
  signal PP4 : Std_Logic_Vector(8 downto 0);
  signal PP5 : Std_Logic_Vector(8 downto 0);
  signal PP6 : Std_Logic_Vector(8 downto 0);
  signal PP7 : Std_Logic_Vector(8 downto 0);
  signal PP8 : Std_Logic_Vector(8 downto 0);

  signal PP12 : Std_Logic_Vector(9 downto 0);
  signal PP34 : Std_Logic_Vector(9 downto 0);
  signal PP56 : Std_Logic_Vector(9 downto 0);
  signal PP78 : Std_Logic_Vector(9 downto 0);

  signal R1, R2   : Std_Logic_Vector(11 downto 0);

begin

   PP1(0) <= Y(0) and X(0);
   PP1(1) <= Y(0) and X(1);
   PP1(2) <= Y(0) and X(2);
   PP1(3) <= Y(0) and X(3);
   PP1(4) <= Y(0) and X(4);
   PP1(5) <= Y(0) and X(5);
   PP1(6) <= Y(0) and X(6);
   PP1(7) <= Y(0) and X(7);
   PP1(8) <= '0';

   PP2(0) <= '0';
   PP2(1) <= Y(1) and X(0);
   PP2(2) <= Y(1) and X(1);
   PP2(3) <= Y(1) and X(2);
   PP2(4) <= Y(1) and X(3);
   PP2(5) <= Y(1) and X(4);
   PP2(6) <= Y(1) and X(5);
   PP2(7) <= Y(1) and X(6);
   PP2(8) <= Y(1) and X(7);

   PP3(0) <= Y(2) and X(0);
   PP3(1) <= Y(2) and X(1);
   PP3(2) <= Y(2) and X(2);
   PP3(3) <= Y(2) and X(3);
   PP3(4) <= Y(2) and X(4);
   PP3(5) <= Y(2) and X(5);
   PP3(6) <= Y(2) and X(6);
   PP3(7) <= Y(2) and X(7);
   PP3(8) <= '0';

   PP4(0) <= '0';
   PP4(1) <= Y(3) and X(0);
   PP4(2) <= Y(3) and X(1);
   PP4(3) <= Y(3) and X(2);
   PP4(4) <= Y(3) and X(3);
   PP4(5) <= Y(3) and X(4);
   PP4(6) <= Y(3) and X(5);
   PP4(7) <= Y(3) and X(6);
   PP4(8) <= Y(3) and X(7);

   PP5(0) <= Y(4) and X(0);
   PP5(1) <= Y(4) and X(1);
   PP5(2) <= Y(4) and X(2);
   PP5(3) <= Y(4) and X(3);
   PP5(4) <= Y(4) and X(4);
   PP5(5) <= Y(4) and X(5);
   PP5(6) <= Y(4) and X(6);
   PP5(7) <= Y(4) and X(7);
   PP5(8) <= '0';

   PP6(0) <= '0';
   PP6(1) <= Y(5) and X(0);
   PP6(2) <= Y(5) and X(1);
   PP6(3) <= Y(5) and X(2);
   PP6(4) <= Y(5) and X(3);
   PP6(5) <= Y(5) and X(4);
   PP6(6) <= Y(5) and X(5);
   PP6(7) <= Y(5) and X(6);
   PP6(8) <= Y(5) and X(7);

   PP7(0) <= Y(6) and X(0);
   PP7(1) <= Y(6) and X(1);
   PP7(2) <= Y(6) and X(2);
   PP7(3) <= Y(6) and X(3);
   PP7(4) <= Y(6) and X(4);
   PP7(5) <= Y(6) and X(5);
   PP7(6) <= Y(6) and X(6);
   PP7(7) <= Y(6) and X(7);
   PP7(8) <= '0';

   PP8(0) <= '0';
   PP8(1) <= Y(7) and X(0);
   PP8(2) <= Y(7) and X(1);
   PP8(3) <= Y(7) and X(2);
   PP8(4) <= Y(7) and X(3);
   PP8(5) <= Y(7) and X(4);
   PP8(6) <= Y(7) and X(5);
   PP8(7) <= Y(7) and X(6);
   PP8(8) <= Y(7) and X(7);

   PP12 <= PP1 + PP2;
   PP34 <= PP3 + PP4;
   PP56 <= PP5 + PP6;
   PP78 <= PP7 + PP8;

   R1 <= ("00" & PP12) + (PP34 & "00");
   R2 <= ("00" & PP56) + (PP78 & "00");
   R <= ("0000" & R1)   + (R2 & "0000");

end beh;