1+ LIBRARY ieee;
2+ USE ieee.std_logic_1164.all ;
3+ USE ieee.numeric_std.all ;
4+ USE ieee.std_logic_unsigned.all ;
5+
6+ ENTITY lab_7_data_processor IS
7+ PORT ( clk:IN STD_LOGIC ;
8+ input :IN STD_LOGIC_VECTOR (3 DOWNTO 0 );
9+ input_sel:IN STD_LOGIC ;
10+ ac_load:IN STD_LOGIC ;
11+ alu_sel:IN STD_LOGIC_VECTOR (2 DOWNTO 0 );
12+ mar_in:IN STD_LOGIC_VECTOR (2 DOWNTO 0 );
13+ mar_load:IN STD_LOGIC ;
14+ ram_load:IN STD_LOGIC ;
15+ mux_out_chk:OUT STD_LOGIC_VECTOR (3 DOWNTO 0 );
16+ output :OUT STD_LOGIC_VECTOR (3 DOWNTO 0 );--ac out
17+ data_chk:OUT STD_LOGIC_VECTOR (3 DOWNTO 0 );--alu out
18+ mar_out_chk:OUT STD_LOGIC_VECTOR (2 DOWNTO 0 );
19+ m1_out:OUT STD_LOGIC_VECTOR (3 DOWNTO 0 );--ram out
20+ m2_out:OUT STD_LOGIC_VECTOR (3 DOWNTO 0 )--ram out2
21+ );
22+ END lab_7_data_processor;
23+ ----------------------------------------------------------------
24+ ARCHITECTURE structual OF lab_7_data_processor IS
25+ SIGNAL ac :STD_LOGIC_VECTOR (3 DOWNTO 0 );
26+ SIGNAL mux_out :STD_LOGIC_VECTOR (3 DOWNTO 0 );
27+ SIGNAL mar :STD_LOGIC_VECTOR (2 DOWNTO 0 );
28+ SIGNAL ram_out :STD_LOGIC_VECTOR (3 DOWNTO 0 );
29+ SIGNAL alu_out :STD_LOGIC_VECTOR (3 DOWNTO 0 );
30+
31+
32+ ----------------------------------------------------------------
33+ COMPONENT lab_7_asyncRAM
34+ PORT ( data_in: IN STD_LOGIC_VECTOR (3 DOWNTO 0 );
35+ address: IN STD_LOGIC_VECTOR (2 DOWNTO 0 );
36+ wr: IN STD_LOGIC ;
37+ data_out:OUT STD_LOGIC_VECTOR (3 DOWNTO 0 );
38+ m1_out:OUT STD_LOGIC_VECTOR (3 DOWNTO 0 );
39+ m2_out:OUT STD_LOGIC_VECTOR (3 DOWNTO 0 ));
40+ END COMPONENT ;
41+
42+ COMPONENT lab_7_simple_alu
43+ PORT ( op1, op2 : IN STD_LOGIC_VECTOR (3 DOWNTO 0 );
44+ sel:IN STD_LOGIC_VECTOR (2 DOWNTO 0 );
45+ alu_out: OUT STD_LOGIC_VECTOR (3 DOWNTO 0 ) );
46+ END COMPONENT ;
47+ ----------------------------------------------------------------
48+ BEGIN
49+ RAM: lab_7_asyncRAMPORT MAP (data_in=> alu_out,address=> mar,wr=> ram_load,data_out=> ram_out,m1_out=> m1_out,m2_out=> m2_out);
50+ ALU: lab_7_simple_aluPORT MAP (op1=> ac,op2=> ram_out,sel=> alu_sel,alu_out=> alu_out);
51+ ----------------------------------------------------------------
52+ --MUX
53+ mux_out<= input WHEN input_sel= '1' ELSE alu_out;
54+ ----------------------------------------------------------------
55+ --AC
56+ PROCESS (clk,ac_load)
57+ BEGIN
58+ IF clk'EVENT AND clk= '1' THEN --load
59+ IF ac_load= '1' THEN
60+ ac<= mux_out;
61+ END IF ;
62+ END IF ;
63+ END PROCESS ;
64+ ----------------------------------------------------------------
65+ --MAR
66+ PROCESS (clk,mar_load)
67+ BEGIN
68+ IF clk'EVENT AND clk= '1' THEN --load
69+ IF mar_load= '1' THEN
70+ mar<= mar_in;
71+ END IF ;
72+ END IF ;
73+ END PROCESS ;
74+ ----------------------------------------------------------------
75+ output <= ac;
76+ data_chk<= alu_out;
77+ mux_out_chk<= mux_out;
78+ mar_out_chk<= mar;
79+ END structual;
0 commit comments