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

Subversion Repositories simple_fm_receiver

[/] [simple_fm_receiver/] [tags/] [VSFR_1/] [source/] [adder_12bit.vhdl] - Blame information for rev 3

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 arif_endro
-- $Id: adder_12bit.vhdl,v 1.1.1.1 2005-01-04 02:05:58 arif_endro Exp $
2
-------------------------------------------------------------------------------
3
-- Title       : Adder 12 bit
4
-- Project     : FM Receiver 
5
-------------------------------------------------------------------------------
6
-- File        : adder_12bit.vhdl
7
-- Author      : "Arif E. Nugroho" <arif_endro@yahoo.com>
8
-- Created     : 2004/12/01
9
-- Last update : 
10
-- Simulators  : Modelsim 6.0
11
-- Synthesizers: 
12
-- Target      : 
13
-------------------------------------------------------------------------------
14
-- Description : Ripple carry adder 12 bit with output 13 bit
15
-------------------------------------------------------------------------------
16
-- Copyright (c) 2004 Arif E. Nugroho
17
-- This VHDL design file is an open design; you can redistribute it and/or
18
-- modify it and/or implement it after contacting the author
19
-------------------------------------------------------------------------------
20
 
21
library IEEE;
22
use IEEE.STD_LOGIC_1164.ALL;
23
use IEEE.STD_LOGIC_arith.ALL;
24
 
25
entity adder_12bit is
26
   port (
27
      addend_12bit  : in  bit_vector (11 downto 0);
28
      augend_12bit  : in  bit_vector (11 downto 0);
29
      adder12_output: out bit_vector (12 downto 0)  -- 13bit output
30
      );
31
end adder_12bit;
32
 
33
architecture structural of adder_12bit is
34
 
35
   component fulladder
36
      port (
37
      addend        : in   bit;
38
      augend        : in   bit;
39
      carry_in      : in   bit;
40
      sum           : out  bit;
41
      carry         : out  bit
42
      );
43
   end component;
44
 
45
-- internal signal
46
signal over12 : bit;
47
signal adder12_output_int : bit_vector (12 downto 0);
48
signal c00 : bit;
49
signal c01 : bit;
50
signal c02 : bit;
51
signal c03 : bit;
52
signal c04 : bit;
53
signal c05 : bit;
54
signal c06 : bit;
55
signal c07 : bit;
56
signal c08 : bit;
57
signal c09 : bit;
58
signal c10 : bit;
59
signal c11 : bit;
60
signal c12 : bit;
61
 
62
begin
63
 
64
c00                     <= '0';
65
over12                  <= (addend_12bit (11) xor augend_12bit (11));
66
adder12_output_int (12) <= ((adder12_output_int (11) and over12) or
67
                           (c12 and (not (over12))));
68
adder12_output          <= adder12_output_int;
69
 
70
fa11 : fulladder
71
   port map (
72
      addend     => addend_12bit(11),
73
      augend     => augend_12bit(11),
74
      carry_in   => c11,
75
      sum        => adder12_output_int(11),
76
      carry      => c12
77
      );
78
 
79
fa10 : fulladder
80
   port map (
81
      addend     => addend_12bit(10),
82
      augend     => augend_12bit(10),
83
      carry_in   => c10,
84
      sum        => adder12_output_int(10),
85
      carry      => c11
86
      );
87
 
88
fa09 : fulladder
89
   port map (
90
      addend     => addend_12bit(09),
91
      augend     => augend_12bit(09),
92
      carry_in   => c09,
93
      sum        => adder12_output_int(09),
94
      carry      => c10
95
      );
96
 
97
fa08 : fulladder
98
   port map (
99
      addend     => addend_12bit(08),
100
      augend     => augend_12bit(08),
101
      carry_in   => c08,
102
      sum        => adder12_output_int(08),
103
      carry      => c09
104
      );
105
 
106
fa07 : fulladder
107
   port map (
108
      addend     => addend_12bit(07),
109
      augend     => augend_12bit(07),
110
      carry_in   => c07,
111
      sum        => adder12_output_int(07),
112
      carry      => c08
113
      );
114
 
115
fa06 : fulladder
116
   port map (
117
      addend     => addend_12bit(06),
118
      augend     => augend_12bit(06),
119
      carry_in   => c06,
120
      sum        => adder12_output_int(06),
121
      carry      => c07
122
      );
123
 
124
fa05 : fulladder
125
   port map (
126
      addend     => addend_12bit(05),
127
      augend     => augend_12bit(05),
128
      carry_in   => c05,
129
      sum        => adder12_output_int(05),
130
      carry      => c06
131
      );
132
 
133
fa04 : fulladder
134
   port map (
135
      addend     => addend_12bit(04),
136
      augend     => augend_12bit(04),
137
      carry_in   => c04,
138
      sum        => adder12_output_int(04),
139
      carry      => c05
140
      );
141
 
142
fa03 : fulladder
143
   port map (
144
      addend     => addend_12bit(03),
145
      augend     => augend_12bit(03),
146
      carry_in   => c03,
147
      sum        => adder12_output_int(03),
148
      carry      => c04
149
      );
150
 
151
fa02 : fulladder
152
   port map (
153
      addend     => addend_12bit(02),
154
      augend     => augend_12bit(02),
155
      carry_in   => c02,
156
      sum        => adder12_output_int(02),
157
      carry      => c03
158
      );
159
 
160
fa01 : fulladder
161
   port map (
162
      addend     => addend_12bit(01),
163
      augend     => augend_12bit(01),
164
      carry_in   => c01,
165
      sum        => adder12_output_int(01),
166
      carry      => c02
167
      );
168
 
169
fa00 : fulladder
170
   port map (
171
      addend     => addend_12bit(00),
172
      augend     => augend_12bit(00),
173
      carry_in   => c00,
174
      sum        => adder12_output_int(00),
175
      carry      => c01
176
      );
177
 
178
end structural;

powered by: WebSVN 2.1.0

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