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

Subversion Repositories t80

[/] [t80/] [trunk/] [bench/] [vhdl/] [TestBench.vhd] - Blame information for rev 47

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 jesus
library IEEE;
2
use IEEE.std_logic_1164.all;
3
use work.StimLog.all;
4
 
5
entity TestBench is
6
end entity TestBench;
7
 
8
architecture behaviour of TestBench is
9
 
10
        signal M1_n                     : std_logic;
11
        signal MREQ_n           : std_logic;
12
        signal IORQ_n           : std_logic;
13
        signal RD_n                     : std_logic;
14
        signal WR_n                     : std_logic;
15
        signal RFSH_n           : std_logic;
16
        signal HALT_n           : std_logic;
17
        signal WAIT_n           : std_logic := '1';
18
        signal INT_n            : std_logic := '1';
19
        signal NMI_n            : std_logic := '1';
20
        signal RESET_n          : std_logic;
21
        signal BUSRQ_n          : std_logic := '1';
22
        signal BUSAK_n          : std_logic;
23
        signal CLK_n            : std_logic := '0';
24
        signal A                        : std_logic_vector(15 downto 0);
25
        signal D                        : std_logic_vector(7 downto 0);
26
 
27
        signal UART_D           : std_logic_vector(7 downto 0);
28
        signal BaudOut          : std_logic;
29
        signal TXD                      : std_logic;
30
        signal RXD                      : std_logic;
31
        signal CTS                      : std_logic := '0';
32
        signal DSR                      : std_logic := '0';
33
        signal RI                       : std_logic := '1';
34
        signal DCD                      : std_logic := '0';
35
 
36
        signal IOWR_n           : std_logic;
37
        signal ROMCS_n          : std_logic;
38
        signal RAMCS_n          : std_logic;
39
        signal UARTCS_n         : std_logic;
40
 
41
begin
42
 
43
        Reset_n <= '0', '1' after 1 us;
44
 
45
        -- 16 MHz clock
46
        CLK_n <= not CLK_n after 31.25 ns;
47
 
48
        IOWR_n <= WR_n or IORQ_n;
49
        ROMCS_n <= A(15) or MREQ_n;
50
        RAMCS_n <= not A(15) or MREQ_n;
51
        UARTCS_n <= '0' when IORQ_n = '0' and A(7 downto 3) = "00000" else '1';
52
 
53
        -- NMI
54
        NMI_n <= not D(0) when IOWR_n'event and IOWR_n = '1' and A(7 downto 0) = "00001000";
55
        -- INT
56
        INT_n <= not D(1) when IOWR_n'event and IOWR_n = '1' and A(7 downto 0) = "00001000";
57
 
58
        as : AsyncStim generic map(FileName => "../../../bench/vhdl/ROM80.vhd", InterCharDelay => 100 us, Baud => 1000000, Bits => 8)
59
                                port map(RXD);
60
 
61
        al : AsyncLog generic map(FileName => "RX_Log.txt", Baud => 1000000, Bits => 8)
62
                                port map(TXD);
63
 
64
        u0 : entity work.T80a
65
                        port map(
66
                                RESET_n,
67
                                CLK_n,
68
                                WAIT_n,
69
                                INT_n,
70
                                NMI_n,
71
                                BUSRQ_n,
72
                                M1_n,
73
                                MREQ_n,
74
                                IORQ_n,
75
                                RD_n,
76
                                WR_n,
77
                                RFSH_n,
78
                                HALT_n,
79
                                BUSAK_n,
80
                                A,
81
                                D);
82
 
83
        u1 : entity work.ROM80
84
                        port map(
85
                                CE_n => ROMCS_n,
86
                                OE_n => RD_n,
87
                                A => A(14 downto 0),
88
                                D => D);
89
 
90
        u2 : entity work.SRAM
91
                        generic map(
92
                                AddrWidth => 15)
93
                        port map(
94
                                CE_n => RAMCS_n,
95
                                OE_n => RD_n,
96
                                WE_n => WR_n,
97
                                A => A(14 downto 0),
98
                                D => D);
99
 
100
        D <= UART_D when UARTCS_n = '0' and RD_n = '0' else "ZZZZZZZZ";
101
        u3 : entity work.T16450
102
                        port map(
103
                                MR_n => Reset_n,
104
                                XIn => CLK_n,
105
                                RClk => BaudOut,
106
                                CS_n => UARTCS_n,
107
                                Rd_n => RD_n,
108
                                Wr_n => IOWR_n,
109
                                A => A(2 downto 0),
110
                                D_In => D,
111
                                D_Out => UART_D,
112
                                SIn => RXD,
113
                                CTS_n => CTS,
114
                                DSR_n => DSR,
115
                                RI_n => RI,
116
                                DCD_n => DCD,
117
                                SOut => TXD,
118
                                RTS_n => open,
119
                                DTR_n => open,
120
                                OUT1_n => open,
121
                                OUT2_n => open,
122
                                BaudOut => BaudOut,
123
                                Intr => open);
124
 
125
end;

powered by: WebSVN 2.1.0

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