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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.5/] [rtl/] [bplib/] [s3board/] [tb/] [tb_s3board_fusp.vhd] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 wfjm
-- $Id: tb_s3board_fusp.vhd 314 2010-07-09 17:38:41Z mueller $
2
--
3
-- Copyright 2010- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4
--
5
-- This program is free software; you may redistribute and/or modify it under
6
-- the terms of the GNU General Public License as published by the Free
7
-- Software Foundation, either version 2, or at your option any later version.
8
--
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
-- for complete details.
13
-- 
14
------------------------------------------------------------------------------
15
-- Module Name:    tb_s3board_fusp - sim
16
-- Description:    Test bench for s3board (base+fusp)
17
--
18
-- Dependencies:   vlib/rri/tb/rritb_core
19
--                 tb_s3board_core
20
--                 vlib/serport/serport_uart_rxtx
21
--                 s3board_fusp_aif [UUT]
22
--
23
-- To test:        generic, any s3board_fusp_aif target
24
--
25
-- Target Devices: generic
26
-- Tool versions:  xst 8.1, 8.2, 9.1, 9.2, 11.4; ghdl 0.18-0.26
27
-- Revision History: 
28
-- Date         Rev Version  Comment
29
-- 2010-05-21   292   1.0.3  rename _PM1_ -> _FUSP_
30
-- 2010-05-16   291   1.0.2  rename tb_s3board_usp->tb_s3board_fusp
31
-- 2010-05-02   287   1.0.1  add sbaddr_portsel def, now sbus addr 8
32
-- 2010-05-01   286   1.0    Initial version (derived from tb_s3board)
33
------------------------------------------------------------------------------
34
 
35
library ieee;
36
use ieee.std_logic_1164.all;
37
use ieee.std_logic_arith.all;
38
use ieee.std_logic_textio.all;
39
use std.textio.all;
40
 
41
use work.slvtypes.all;
42
use work.rrilib.all;
43
use work.rritblib.all;
44
use work.serport.all;
45
use work.s3boardlib.all;
46
use work.simlib.all;
47
use work.simbus.all;
48
 
49
entity tb_s3board_fusp is
50
end tb_s3board_fusp;
51
 
52
architecture sim of tb_s3board_fusp is
53
 
54
  signal CLK : slbit := '0';
55
 
56
  signal RESET : slbit := '0';
57
  signal CLKDIV : slv2 := "00";         -- run with 1 clocks / bit !!
58
  signal RXDATA : slv8 := (others=>'0');
59
  signal RXVAL : slbit := '0';
60
  signal RXERR : slbit := '0';
61
  signal RXACT : slbit := '0';
62
  signal TXDATA : slv8 := (others=>'0');
63
  signal TXENA : slbit := '0';
64
  signal TXBUSY : slbit := '0';
65
 
66
  signal RX_HOLD : slbit := '0';
67
 
68
  signal I_RXD : slbit := '1';
69
  signal O_TXD : slbit := '1';
70
  signal I_SWI : slv8 := (others=>'0');
71
  signal I_BTN : slv4 := (others=>'0');
72
  signal O_LED : slv8 := (others=>'0');
73
  signal O_ANO_N : slv4 := (others=>'0');
74
  signal O_SEG_N : slv8 := (others=>'0');
75
 
76
  signal O_MEM_CE_N : slv2 := (others=>'1');
77
  signal O_MEM_BE_N : slv4 := (others=>'1');
78
  signal O_MEM_WE_N : slbit := '1';
79
  signal O_MEM_OE_N : slbit := '1';
80
  signal O_MEM_ADDR  : slv18 := (others=>'Z');
81
  signal IO_MEM_DATA : slv32 := (others=>'0');
82
 
83
  signal O_FUSP_RTS_N : slbit := '0';
84
  signal I_FUSP_CTS_N : slbit := '0';
85
  signal I_FUSP_RXD : slbit := '1';
86
  signal O_FUSP_TXD : slbit := '1';
87
 
88
  signal UART_RESET : slbit := '0';
89
  signal UART_RXD : slbit := '1';
90
  signal UART_TXD : slbit := '1';
91
  signal CTS_N : slbit := '0';
92
  signal RTS_N : slbit := '0';
93
 
94
  signal R_PORTSEL : slbit := '0';
95
 
96
  constant sbaddr_portsel: slv8 := conv_std_logic_vector( 8,8);
97
 
98
  constant clock_period : time :=  20 ns;
99
  constant clock_offset : time := 200 ns;
100
  constant setup_time : time :=  5 ns;
101
  constant c2out_time : time := 10 ns;
102
 
103
begin
104
 
105
  TBCORE : rritb_core
106
    generic map (
107
      CLK_PERIOD => clock_period,
108
      CLK_OFFSET => clock_offset,
109
      SETUP_TIME => setup_time,
110
      C2OUT_TIME => c2out_time)
111
    port map (
112
      CLK     => CLK,
113
      RX_DATA => TXDATA,
114
      RX_VAL  => TXENA,
115
      RX_HOLD => RX_HOLD,
116
      TX_DATA => RXDATA,
117
      TX_ENA  => RXVAL
118
    );
119
 
120
  RX_HOLD <= TXBUSY or RTS_N;           -- back preasure for data flow to tb
121
 
122
  S3CORE : entity work.tb_s3board_core
123
    port map (
124
      I_SWI       => I_SWI,
125
      I_BTN       => I_BTN,
126
      O_MEM_CE_N  => O_MEM_CE_N,
127
      O_MEM_BE_N  => O_MEM_BE_N,
128
      O_MEM_WE_N  => O_MEM_WE_N,
129
      O_MEM_OE_N  => O_MEM_OE_N,
130
      O_MEM_ADDR  => O_MEM_ADDR,
131
      IO_MEM_DATA => IO_MEM_DATA
132
    );
133
 
134
  UUT : s3board_fusp_aif
135
    port map (
136
      CLK          => CLK,
137
      I_RXD        => I_RXD,
138
      O_TXD        => O_TXD,
139
      I_SWI        => I_SWI,
140
      I_BTN        => I_BTN,
141
      O_LED        => O_LED,
142
      O_ANO_N      => O_ANO_N,
143
      O_SEG_N      => O_SEG_N,
144
      O_MEM_CE_N   => O_MEM_CE_N,
145
      O_MEM_BE_N   => O_MEM_BE_N,
146
      O_MEM_WE_N   => O_MEM_WE_N,
147
      O_MEM_OE_N   => O_MEM_OE_N,
148
      O_MEM_ADDR   => O_MEM_ADDR,
149
      IO_MEM_DATA  => IO_MEM_DATA,
150
      O_FUSP_RTS_N => O_FUSP_RTS_N,
151
      I_FUSP_CTS_N => I_FUSP_CTS_N,
152
      I_FUSP_RXD   => I_FUSP_RXD,
153
      O_FUSP_TXD   => O_FUSP_TXD
154
    );
155
 
156
  UART : serport_uart_rxtx
157
    generic map (
158
      CDWIDTH => CLKDIV'length)
159
    port map (
160
      CLK    => CLK,
161
      RESET  => UART_RESET,
162
      CLKDIV => CLKDIV,
163
      RXSD   => UART_RXD,
164
      RXDATA => RXDATA,
165
      RXVAL  => RXVAL,
166
      RXERR  => RXERR,
167
      RXACT  => RXACT,
168
      TXSD   => UART_TXD,
169
      TXDATA => TXDATA,
170
      TXENA  => TXENA,
171
      TXBUSY => TXBUSY
172
    );
173
 
174
  proc_port_mux: process (R_PORTSEL, UART_TXD, CTS_N,
175
                          O_TXD, O_FUSP_TXD, O_FUSP_RTS_N)
176
  begin
177
 
178
    if R_PORTSEL = '0' then             -- use main board rs232, no flow cntl
179
      I_RXD        <= UART_TXD;           -- write port 0 inputs
180
      UART_RXD     <= O_TXD;              -- get port 0 outputs
181
      RTS_N        <= '0';
182
      I_FUSP_RXD   <= '1';                -- port 1 inputs to idle state
183
      I_FUSP_CTS_N <= '0';
184
    else                                -- otherwise use pmod1 rs232
185
      I_FUSP_RXD   <= UART_TXD;           -- write port 1 inputs
186
      I_FUSP_CTS_N <= CTS_N;
187
      UART_RXD     <= O_FUSP_TXD;         -- get port 1 outputs
188
      RTS_N        <= O_FUSP_RTS_N;
189
      I_RXD        <= '1';                -- port 0 inputs to idle state
190
    end if;
191
 
192
  end process proc_port_mux;
193
 
194
  proc_moni: process
195
    variable oline : line;
196
  begin
197
 
198
    loop
199
      wait until CLK'event and CLK='1';
200
      wait for c2out_time;
201
 
202
      if RXERR = '1' then
203
        writetimestamp(oline, SB_CLKCYCLE, " : seen RXERR=1");
204
        writeline(output, oline);
205
      end if;
206
 
207
    end loop;
208
 
209
  end process proc_moni;
210
 
211
  proc_simbus: process (SB_VAL)
212
  begin
213
    if SB_VAL'event and to_x01(SB_VAL)='1' then
214
      if SB_ADDR = sbaddr_portsel then
215
        R_PORTSEL <= to_x01(SB_DATA(0));
216
      end if;
217
    end if;
218
  end process proc_simbus;
219
 
220
end sim;

powered by: WebSVN 2.1.0

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