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

Subversion Repositories pci_core

[/] [pci_core/] [trunk/] [vhdl_behav/] [Test_pci.vhd] - Blame information for rev 11

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

Line No. Rev Author Line
1 6 olupas
--===================================================================--
2
--
3
--  www.OpenCores.Org - January 2000
4
--  This model adheres to the GNU public license  
5
--
6
-- Design units   : TestBench for PCI devices. 
7
--
8
-- File name      : Test_PCI.vhd
9
--
10
-- Purpose        : Implements the test bench for PCI 33 MHz, 32 bit devices.
11
--                  It is included one master device and two target devices.
12
--
13
--                There can be used more than one target devices in a
14
--                design, every device being identified by the three 
15
--                base addresses in generic.
16
--
17
--
18
-- Library        : PCI_Lib
19
--
20
-- Dependencies   : IEEE.Std_Logic_1164
21
--
22
-- Limitations    : None known
23
--
24
-- Errors         : None known
25
--
26
-- Author         : Ovidiu Lupas
27
--                  olupas@opencores.org
28
--
29
-- Simulator    : ModelSim EE version 5.2 on a Windows95 PC
30
--                ActiveVHDL 3.1 on a Windows95 PC
31
--===================================================================--
32
-----------------------------------------------------------------------
33
-- Entity for PCI bus Arbiter and CLK generator
34
-----------------------------------------------------------------------
35
library ieee,work;
36
   use ieee.Std_Logic_1164.all;
37
   use work.Simulation.all;
38
   use work.PCI_Def.all;
39
-----------------------------------------------------------------------
40
-----------------------------------------------------------------------
41
entity ClkGen is
42
   generic ( tperiod : Time := 30 ns );
43
   port (
44
      REQ_N : in  Std_Logic;
45
      GNT_N : out Std_Logic := '1';
46
      RST_N : out  Std_Logic;
47
      CLK   : out Std_Logic);   -- System clock
48
end ClkGen; --=================== End of entity =====================--
49
--========================== Architecture ===========================--
50
architecture BEHAV_ClkGen of ClkGen is
51
begin--======================== Architecture =================================--
52
  ---------------------------------------------------------------------
53
  -- Provide the external clock signal to the processor
54
  ---------------------------------------------------------------------
55
  ClkDriver : process
56
    variable clktmp: std_logic := '0';
57
  begin
58
     CLK <= clktmp;
59
     clktmp := not clktmp;
60
    wait for tperiod/2;
61
  end process ClkDriver;
62
  ---------------------------------------------------------------------
63
  -- Simulates an external PCI-bus arbiter, which always grants the 
64
  -- access to the bus :)
65
  ---------------------------------------------------------------------
66
  Arbiter : process(REQ_N)
67
  begin
68
     if Falling_Edge(REQ_N) then
69
        GNT_N <= '0' after 10 ns;
70
     elsif Rising_Edge(REQ_N) then
71
        GNT_N <= '1' after 10 ns;
72
     end if;
73
  end process Arbiter;
74
  ---------------------------------------------------------------------
75
  -- Provides the reset signal
76
  ---------------------------------------------------------------------
77
  RstGen: process
78
  begin
79
     RST_N <= '0';
80
    wait for 100 ns;
81
     RST_N <= '1';
82
    wait for 400 ns;
83
    end process;
84
end BEHAV_ClkGen; --============== End of architecture ==============--
85
-----------------------------------------------------------------------
86
-- TestBench
87
-----------------------------------------------------------------------
88
library ieee,work,std;
89
   use ieee.std_logic_1164.all;
90
   use work.ClkGen;
91
-----------------------------------------------------------------------
92
-----------------------------------------------------------------------
93
entity TESTPCI is
94
end TESTPCI;
95
--========================== Architecture ===========================--
96
architecture stimulus of TESTPCI is
97
  ---------------------------------------------------------------------
98
  -- Signal declaration
99
  ---------------------------------------------------------------------
100
  signal AD_Bus   : Std_Logic_Vector (31 downto 0);
101
  signal C_BE_Bus : Std_Logic_Vector (3 downto 0);
102
  signal PAR      : Std_Logic;
103
  signal FRAME_N  : Std_Logic;
104
  signal TRDY_N   : Std_Logic;
105
  signal IRDY_N   : Std_Logic;
106
  signal STOP_N   : Std_Logic;
107
  signal DEVSEL_N : Std_Logic;
108
  signal IDSEL    : Std_Logic;
109
  signal SEL1     : Std_Logic;
110
  signal SEL2     : Std_Logic;
111
  signal PERR_N   : Std_Logic;
112
  signal SERR_N   : Std_Logic;
113
  signal REQ_N    : Std_Logic;
114
  signal GNT_N    : Std_Logic;
115
  signal CLK      : Std_Logic;
116
  signal RST_N    : Std_Logic;
117
  ---------------------------------------------------------------------
118
  -- Component declarations
119
  ---------------------------------------------------------------------
120
  component ClkGen
121
     generic ( tperiod : Time := 30 ns );
122
     port (
123
        REQ_N : in  Std_Logic;
124
        GNT_N : out Std_Logic;
125
        RST_N : out  Std_Logic;
126
        CLK   : out Std_Logic);   -- System clock
127
  end component;
128
  ---------------------------------------------------------------------
129
  ---------------------------------------------------------------------
130
  component MS32PCI
131
    generic (
132
        cmd_file : string(1 to 7);
133
        tdelay   : Time;
134
        tsetup   : Time;
135
        thold    : Time);
136
    port (
137
        -- Address, Data and Command buses (37)
138
        AD_Bus   : inout STD_LOGIC_VECTOR (31 downto 0);
139
        C_BE_Bus : inout STD_LOGIC_VECTOR (3 downto 0);
140
        PAR      : inout STD_LOGIC;
141
        -- Interface control signals (6)
142
        FRAME_N  : inout STD_LOGIC;
143
        TRDY_N   : in    STD_LOGIC;
144
        IRDY_N   : inout STD_LOGIC;
145
        STOP_N   : in    STD_LOGIC;
146
        DEVSEL_N : in    STD_LOGIC;
147
        IDSEL    : in    STD_LOGIC; -- in
148
        -- Error reporting signals (2)
149
        PERR_N   : inout STD_LOGIC;
150
        SERR_N   : inout STD_LOGIC;
151
        -- Arbitration signals (2)
152
        REQ_N    : out   STD_LOGIC;
153
        GNT_N    : in    STD_LOGIC; -- in
154
        -- System signals (2)
155
        CLK      : in    STD_LOGIC;
156
        RST_N    : in    STD_LOGIC); --in
157
  end component;
158
  ---------------------------------------------------------------------
159
  ---------------------------------------------------------------------
160
  component TG32PCI
161
    generic (
162
      devtype : string(1 to 4);
163
      tdelay  : Time;
164
      tsetup  : Time;
165
      thold   : Time;
166
      bamem   : Std_Logic_Vector(31 downto 0); -- hex value
167
      baio    : Std_Logic_Vector(31 downto 0); -- hex value
168
      bacfg   : Std_Logic_Vector(31 downto 0));-- hex value
169
    port (
170
        -- Address, Data and Command buses (37)
171
        AD_Bus   : inout Std_Logic_Vector (31 downto 0);
172
        C_BE_Bus : in    Std_Logic_Vector (3 downto 0);
173
        PAR      : inout Std_Logic;
174
        -- Interface control signals (6)
175
        FRAME_N  : in    Std_Logic;
176
        TRDY_N   : inout Std_Logic;
177
        IRDY_N   : in    Std_Logic;
178
        STOP_N   : out   Std_Logic;
179
        DEVSEL_N : inout Std_Logic;
180
        IDSEL    : in    Std_Logic;
181
        -- Error reporting signals (2)
182
        PERR_N   : inout Std_Logic;
183
        SERR_N   : inout Std_Logic;
184
        -- System signals (2)
185
        CLK      : in    Std_Logic;
186
        RST_N    : in    Std_Logic);
187
  end component;
188
begin --====================== Architecture =========================--
189
  ---------------------------------------------------------------------
190
  -- Component instantiation
191
  ---------------------------------------------------------------------
192
  UUT1: MS32PCI
193
       generic map (
194
            "PCI.CMD",0 ns, 7 ns, 5 ns)
195
       port map (
196
            AD_Bus,C_BE_Bus,PAR,FRAME_N,TRDY_N,IRDY_N,STOP_N,DEVSEL_N,
197
            IDSEL,PERR_N,SERR_N,REQ_N,GNT_N,CLK,RST_N);
198
  SEL1 <= AD_Bus(16);
199
  UUT2: TG32PCI
200
       generic map (
201
            "Fast",0 ns,0 ns,0 ns,x"00005000",x"00000800",x"00010CF0")
202
      port map (
203
            AD_Bus => AD_Bus,C_BE_Bus => C_BE_Bus,PAR => PAR,
204
            FRAME_N => FRAME_N,TRDY_N => TRDY_N,IRDY_N => IRDY_N,
205
            STOP_N => STOP_N,DEVSEL_N => DEVSEL_N,IDSEL => SEL1,
206
            PERR_N => PERR_N,SERR_N => SERR_N,CLK => CLK,RST_N => RST_N);
207
  SEL2 <= AD_Bus(17);
208
  UUT3: TG32PCI
209
       generic map (
210
            "Medi",0 ns,7 ns,0 ns,x"00006000",x"00001800",x"00020CF0")
211
       port map (
212
            AD_Bus => AD_Bus,C_BE_Bus => C_BE_Bus,PAR => PAR,
213
            FRAME_N => FRAME_N,TRDY_N => TRDY_N,IRDY_N => IRDY_N,
214
            STOP_N => STOP_N,DEVSEL_N => DEVSEL_N,IDSEL => SEL2,
215
            PERR_N => PERR_N,SERR_N => SERR_N,CLK => CLK,RST_N => RST_N);
216
  GEN: ClkGen port map (
217
            REQ_N,GNT_N,RST_N,CLK);
218
  ---------------------------------------------------------------------
219
end stimulus; --=============== End of architecture =================--
220
-----------------------------------------------------------------------
221
-- Revision list
222
-- Version     Author          Date           Changes
223
--
224
-- 0.1       Ovidiu Lupas   June 09, 2000     New model
225
-----------------------------------------------------------------------
226
 

powered by: WebSVN 2.1.0

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