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

Subversion Repositories sdram_ctrl

[/] [sdram_ctrl/] [trunk/] [test_bench/] [cpu_simulator.vhd] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ntpqa
LIBRARY ieee;
2
USE ieee.std_logic_1164.ALL;
3
USE ieee.numeric_std.ALL;
4
 
5
ENTITY cpu_simulator IS
6
        PORT(clk, reset: in std_logic;
7
 
8
                address : out std_logic_vector(21 downto 0);
9
                writedata : out std_logic_vector(31 downto 0);
10
                byteenable : out std_logic_vector(3 downto 0);
11
                write : out std_logic;
12
                read : out std_logic;
13
                readdata : in std_logic_vector(31 downto 0);
14
                waitrequest : in std_logic;
15
                readdatavalid : in std_logic
16
                );
17
END cpu_simulator;
18
 
19
ARCHITECTURE behaviour OF cpu_simulator IS
20
        signal counter: unsigned(3 downto 0);
21
        type vector is
22
        record
23
                address: integer;
24
                writedata: integer;
25
                byteenable: std_logic_vector(3 downto 0);
26
                write: std_logic;
27
                read: std_logic;
28
        end record;
29
        type script is array(0 to (2**counter'length)-1) of vector;
30
        signal wave_form: script:=(
31
                (0,0,"1111",'1','0'),
32
                (1,1,"1111",'1','0'),
33
                (2,2,"1111",'1','0'),
34
                (3,3,"1111",'1','0'),
35
                (1024,1024,"1111",'0','1'),
36
                (1025,1025,"1111",'0','1'),
37
                (1026,1026,"1111",'0','1'),
38
                (1027,1027,"1111",'0','1'),
39
                (1024,1024,"1111",'1','0'),
40
                (1025,1025,"1111",'1','0'),
41
                (1026,1026,"1111",'1','0'),
42
                (1027,1027,"1111",'1','0'),
43
                (0,0,"1111",'0','1'),
44
                (1,1,"1111",'0','1'),
45
                (2,2,"1111",'0','1'),
46
                (3,3,"1111",'0','1')
47
        );
48
BEGIN
49
        process(clk,reset)
50
        begin
51
                if reset='1'
52
                        then
53
                        counter<=(others=>'0');
54
                        address<=(others=>'0');
55
                        writedata<=(others=>'0');
56
                        byteenable<=(others=>'0');
57
                        write<='0';
58
                        read<='0';
59
                elsif rising_edge(clk)
60
                        then
61
                        if waitrequest='0'
62
                                then
63
                                counter<=counter+1;
64
                                address<=std_logic_vector(to_unsigned(wave_form(to_integer(counter)).address,address'length));
65
                                writedata<=std_logic_vector(to_unsigned(wave_form(to_integer(counter)).writedata,writedata'length));
66
                                byteenable<=wave_form(to_integer(counter)).byteenable;
67
                                write<=wave_form(to_integer(counter)).write;
68
                                read<=wave_form(to_integer(counter)).read;
69
                        end if;
70
                end if;
71
        end process;
72
END behaviour;

powered by: WebSVN 2.1.0

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