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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [rtl/] [bplib/] [basys3/] [tb/] [tb_basys3.vhd] - Blame information for rev 33

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 wfjm
-- $Id: tb_basys3.vhd 666 2015-04-12 21:17:54Z mueller $
2 29 wfjm
--
3
-- Copyright 2015- 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_basys3 - sim
16
-- Description:    Test bench for basys3 (base)
17
--
18
-- Dependencies:   simlib/simclk
19
--                 simlib/simclkcnt
20
--                 rlink/tb/tbcore_rlink
21
--                 xlib/s7_cmt_sfs
22
--                 tb_basys3_core
23 30 wfjm
--                 serport/serport_master
24 29 wfjm
--                 basys3_aif [UUT]
25
--
26
-- To test:        generic, any basys3_aif target
27
--
28
-- Target Devices: generic
29
-- Tool versions:  viv 2014.4; ghdl 0.31
30
--
31
-- Revision History: 
32
-- Date         Rev Version  Comment
33 30 wfjm
-- 2015-04-12   666   1.1    use serport_master instead of serport_uart_rxtx
34 29 wfjm
-- 2015-02-18   648   1.0    Initial version (derived from tb_nexys4)
35
------------------------------------------------------------------------------
36
 
37
library ieee;
38
use ieee.std_logic_1164.all;
39
use ieee.numeric_std.all;
40
use ieee.std_logic_textio.all;
41
use std.textio.all;
42
 
43
use work.slvtypes.all;
44
use work.rlinklib.all;
45
use work.rlinktblib.all;
46
use work.serportlib.all;
47
use work.xlib.all;
48
use work.basys3lib.all;
49
use work.simlib.all;
50
use work.simbus.all;
51
use work.sys_conf.all;
52
 
53
entity tb_basys3 is
54
end tb_basys3;
55
 
56
architecture sim of tb_basys3 is
57
 
58
  signal CLKOSC : slbit := '0';         -- board clock (100 Mhz)
59
  signal CLKCOM : slbit := '0';         -- communication clock
60
 
61
  signal CLK_STOP : slbit := '0';
62
  signal CLKCOM_CYCLE : integer := 0;
63
 
64
  signal RESET : slbit := '0';
65
  signal CLKDIV : slv2 := "00";         -- run with 1 clocks / bit !!
66
  signal RXDATA : slv8 := (others=>'0');
67
  signal RXVAL : slbit := '0';
68
  signal RXERR : slbit := '0';
69
  signal RXACT : slbit := '0';
70
  signal TXDATA : slv8 := (others=>'0');
71
  signal TXENA : slbit := '0';
72
  signal TXBUSY : slbit := '0';
73
 
74
  signal I_RXD : slbit := '1';
75
  signal O_TXD : slbit := '1';
76
  signal I_SWI : slv16 := (others=>'0');
77
  signal I_BTN : slv5 := (others=>'0');
78
  signal O_LED : slv16 := (others=>'0');
79
  signal O_ANO_N : slv4 := (others=>'0');
80
  signal O_SEG_N : slv8 := (others=>'0');
81
 
82 30 wfjm
  signal R_PORTSEL_XON : slbit := '0';       -- if 1 use xon/xoff
83
 
84
  constant sbaddr_portsel: slv8 := slv(to_unsigned( 8,8));
85
 
86 29 wfjm
  constant clock_period : time :=  10 ns;
87
  constant clock_offset : time := 200 ns;
88
 
89
begin
90
 
91
  CLKGEN : simclk
92
    generic map (
93
      PERIOD => clock_period,
94
      OFFSET => clock_offset)
95
    port map (
96
      CLK      => CLKOSC,
97
      CLK_STOP => CLK_STOP
98
    );
99
 
100
  CLKGEN_COM : s7_cmt_sfs
101
    generic map (
102
      VCO_DIVIDE   => sys_conf_clkser_vcodivide,
103
      VCO_MULTIPLY => sys_conf_clkser_vcomultiply,
104
      OUT_DIVIDE   => sys_conf_clkser_outdivide,
105
      CLKIN_PERIOD => 10.0,
106
      CLKIN_JITTER => 0.01,
107
      STARTUP_WAIT => false,
108
      GEN_TYPE     => sys_conf_clksys_gentype)
109
    port map (
110
      CLKIN   => CLKOSC,
111
      CLKFX   => CLKCOM,
112
      LOCKED  => open
113
    );
114
 
115
  CLKCNT : simclkcnt port map (CLK => CLKCOM, CLK_CYCLE => CLKCOM_CYCLE);
116
 
117
  TBCORE : tbcore_rlink
118
    port map (
119
      CLK      => CLKCOM,
120
      CLK_STOP => CLK_STOP,
121
      RX_DATA  => TXDATA,
122
      RX_VAL   => TXENA,
123
      RX_HOLD  => TXBUSY,
124
      TX_DATA  => RXDATA,
125
      TX_ENA   => RXVAL
126
    );
127
 
128
  N4CORE : entity work.tb_basys3_core
129
    port map (
130
      I_SWI       => I_SWI,
131
      I_BTN       => I_BTN
132
    );
133
 
134
  UUT : basys3_aif
135
    port map (
136
       I_CLK100    => CLKOSC,
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
    );
145
 
146 30 wfjm
  SERMSTR : serport_master
147 29 wfjm
    generic map (
148
      CDWIDTH => CLKDIV'length)
149
    port map (
150 30 wfjm
      CLK     => CLKCOM,
151
      RESET   => RESET,
152
      CLKDIV  => CLKDIV,
153
      ENAXON  => R_PORTSEL_XON,
154
      ENAESC  => '0',
155
      RXDATA  => RXDATA,
156
      RXVAL   => RXVAL,
157
      RXERR   => RXERR,
158
      RXOK    => '1',
159
      TXDATA  => TXDATA,
160
      TXENA   => TXENA,
161
      TXBUSY  => TXBUSY,
162
      RXSD    => O_TXD,
163
      TXSD    => I_RXD,
164
      RXRTS_N => open,
165
      TXCTS_N => '0'
166 29 wfjm
    );
167
 
168
  proc_moni: process
169
    variable oline : line;
170
  begin
171
 
172
    loop
173
      wait until rising_edge(CLKCOM);
174
 
175
      if RXERR = '1' then
176
        writetimestamp(oline, CLKCOM_CYCLE, " : seen RXERR=1");
177
        writeline(output, oline);
178
      end if;
179
 
180
    end loop;
181
 
182
  end process proc_moni;
183
 
184 30 wfjm
  proc_simbus: process (SB_VAL)
185
  begin
186
    if SB_VAL'event and to_x01(SB_VAL)='1' then
187
      if SB_ADDR = sbaddr_portsel then
188
        R_PORTSEL_XON <= to_x01(SB_DATA(1));
189
      end if;
190
    end if;
191
  end process proc_simbus;
192
 
193 29 wfjm
end sim;

powered by: WebSVN 2.1.0

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