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

Subversion Repositories cpu6502_true_cycle

[/] [cpu6502_true_cycle/] [branches/] [avendor/] [rtl/] [vhdl/] [add_sub.vhd] - Blame information for rev 18

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 fpga_is_fu
-- VHDL Entity R6502_TC.ADD_SUB.symbol
2
--
3
-- Created:
4
--          by - eda.UNKNOWN (ENTWICKL4-XP-PR)
5
--          at - 19:06:54 08.04.2008
6
--
7
-- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13)
8
--
9
LIBRARY ieee;
10
USE ieee.std_logic_1164.all;
11
USE ieee.std_logic_arith.all;
12
 
13
entity ADD_SUB is
14
   port(
15
      ch_a_i           : in     std_logic_vector ( 7 downto 0 ) := X"00";
16
      ch_b_i           : in     std_logic_vector ( 7 downto 0 ) := X"00";
17
      reg_0flag_i      : in     std_logic                       := '0';
18
      reg_7flag_core_i : in     std_logic                       := '0';
19
      sel              : in     std_logic_vector ( 1 downto 0 ) := "00";
20
      q_a_o            : out    std_logic_vector ( 7 downto 0 ) := X"00";
21
      reg_0flag_o      : out    std_logic                       := '0';
22
      reg_6flag_o      : out    std_logic                       := '0';
23
      zw_alu           : inout  std_logic_vector ( 8 downto 0 ) := '0' & X"00";
24
      zw_alu1          : inout  std_logic_vector ( 8 downto 0 ) := '0' & X"00";
25
      zw_alu2          : inout  std_logic_vector ( 8 downto 0 ) := '0' & X"00";
26
      zw_alu3          : inout  std_logic_vector ( 8 downto 0 ) := '0' & X"00";
27
      zw_alu4          : inout  std_logic_vector ( 8 downto 0 ) := '0' & X"00";
28
      zw_alu5          : inout  std_logic_vector ( 8 downto 0 ) := '0' & X"00";
29
      zw_alu6          : inout  std_logic_vector ( 8 downto 0 ) := '0' & X"00"
30
   );
31
 
32
-- Declarations
33
 
34
end ADD_SUB ;
35
 
36
-- Jens-D. Gutschmidt     Project:  R6502_TC  
37
-- scantara2003@yahoo.de                      
38
-- COPYRIGHT (C) 2008 by Jens Gutschmidt and OPENCORES.ORG                                                                                     
39
--                                                                                                                                             
40
-- This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by   
41
-- the Free Software Foundation, either version 3 of the License, or any later version.                                                        
42
--                                                                                                                                             
43
-- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of              
44
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.                                  
45
--                                                                                                                                             
46
-- You should have received a copy of the GNU General Public License along with this program.  If not, see <http://www.gnu.org/licenses/>.     
47
--                                                                                                                                             
48
-- CVS Revisins History                                                                                                                        
49
--                                                                                                                                             
50
-- $Log: not supported by cvs2svn $                                                                                                                                       
51
--                                                                                                                                             
52
-- Title:  Adder and Substractor  
53
-- Path:  R6502_TC/ADD_SUB/flow  
54
-- Edited:  by eda on 08 Apr 2008  
55
--
56
-- VHDL Architecture R6502_TC.ADD_SUB.flow
57
--
58
-- Created:
59
--          by - eda.UNKNOWN (ENTWICKL4-XP-PR)
60
--          at - 19:06:54 08.04.2008
61
--
62
-- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13)
63
--
64
LIBRARY ieee;
65
USE ieee.std_logic_1164.all;
66
USE ieee.std_logic_arith.all;
67
architecture flow of ADD_SUB is
68
 
69
begin
70
 
71
   -----------------------------------------------------------------
72
   process0_proc : process (ch_a_i, ch_b_i, reg_0flag_i, reg_7flag_core_i, sel, zw_alu, zw_alu1, zw_alu2, zw_alu3, zw_alu4, zw_alu5, zw_alu6)
73
   -----------------------------------------------------------------
74
   begin
75
      case sel(1 downto 0) is
76
      when "01" =>
77
         reg_6flag_o <= reg_7flag_core_i XOR zw_ALU(7);
78
         reg_0flag_o <= zw_ALU4(4);
79
         q_a_o <= zw_ALU(7 downto 0);
80
         zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) +
81
          unsigned (zw_ALU6(7 downto 5));
82
         zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) +
83
          unsigned (zw_ALU5(7 downto 5));
84
 
85
         zw_ALU6(7 downto 5) <=  (zw_ALU2(4) OR zw_ALU4(4)) &
86
          (zw_ALU2(4) OR zw_ALU4(4)) & '0';
87
         zw_ALU5(7 downto 5) <=  (zw_ALU1(4) OR zw_ALU3(4)) &
88
          (zw_ALU1(4) OR zw_ALU3(4)) & '0';
89
 
90
         zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
91
         zw_ALU2(4 downto 0) <= unsigned ('0' & ch_a_i(7 downto 4)) + unsigned
92
         ('0' & ch_b_i(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4));
93
 
94
         zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
95
         zw_ALU1(4 downto 0) <= unsigned ('0' & ch_a_i(3 downto 0)) + unsigned
96
         ('0' & ch_b_i(3 downto 0)) + reg_0flag_i;
97
      when "00" =>
98
         reg_6flag_o <= reg_7flag_core_i XOR zw_ALU(7);
99
         reg_0flag_o <= zw_ALU(8);
100
         q_a_o <= zw_ALU(7 downto 0);
101
         zw_ALU <= unsigned ('0' & ch_a_i) + unsigned ('0' & ch_b_i) + reg_0flag_i;
102
      when "10" =>
103
         reg_6flag_o <= reg_7flag_core_i XOR zw_ALU(7);
104
         reg_0flag_o <= zw_ALU(8);
105
         q_a_o <= zw_ALU(7 downto 0);
106
         zw_ALU <= unsigned ('0' & ch_a_i) + unsigned ('0' & NOT (ch_b_i)) + reg_0flag_i;
107
      when "11" =>
108
         reg_6flag_o <= reg_7flag_core_i XOR zw_ALU(7);
109
         reg_0flag_o <= zw_ALU2(4);
110
         q_a_o <= zw_ALU(7 downto 0);
111
         zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) +
112
         unsigned ((zw_ALU6(8 downto 5)));
113
         zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) +
114
         unsigned ((zw_ALU5(8 downto 5)));
115
 
116
         zw_ALU6(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' &
117
         (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0';
118
         zw_ALU5(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' &
119
         (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ;
120
 
121
         zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
122
         zw_ALU2(4 downto 0) <= unsigned ('0' & ch_a_i(7 downto 4)) + unsigned
123
         ('0' & NOT (ch_b_i(7 downto 4))) + zw_ALU1(4);
124
 
125
         zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
126
         zw_ALU1(4 downto 0) <= unsigned ('0' & ch_a_i(3 downto 0)) + unsigned
127
         ('0' & NOT (ch_b_i(3 downto 0))) + reg_0flag_i;
128
      when others =>
129
         reg_6flag_o <= reg_7flag_core_i XOR zw_ALU(7);
130
         reg_0flag_o <= zw_ALU(8);
131
         q_a_o <= zw_ALU(7 downto 0);
132
         zw_ALU <= unsigned ('0' & ch_a_i) + unsigned ('0' & ch_b_i) + reg_0flag_i;
133
      end case;
134
   end process process0_proc;
135
 
136
 
137
end flow;

powered by: WebSVN 2.1.0

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