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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [tools/] [tcl/] [ibd_rhrp/] [util.tcl] - Blame information for rev 33

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 32 wfjm
# $Id: util.tcl 690 2015-06-07 18:23:51Z mueller $
2 30 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
#  Revision History:
15
# Date         Rev Version  Comment
16 32 wfjm
# 2015-06-06   690   1.0.1  rdump: all online units now shown by default
17 30 wfjm
# 2015-03-21   659   1.0    Initial version
18
#
19
 
20
package provide ibd_rhrp 1.0
21
 
22
package require rlink
23
package require rw11
24
 
25
namespace eval ibd_rhrp {
26
  #
27
  # setup register descriptions for ibd_rhrp ---------------------------------
28
  #
29
  regdsc CS1 {sc 15} {tre 14} {dva 11} {bae 9 2} \
30
    {rdy 7} {ie 6} {func 5 5} {go 0}
31
  variable FUNC_NOOP   [bvi b5 "00000"]
32
  variable FUNC_UNL    [bvi b5 "00001"]
33
  variable FUNC_SEEK   [bvi b5 "00010"]
34
  variable FUNC_RECAL  [bvi b5 "00011"]
35
  variable FUNC_DCLR   [bvi b5 "00100"]
36
  variable FUNC_PORE   [bvi b5 "00101"]
37
  variable FUNC_OFFS   [bvi b5 "00110"]
38
  variable FUNC_RETC   [bvi b5 "00111"]
39
  variable FUNC_PRES   [bvi b5 "01000"]
40
  variable FUNC_PACK   [bvi b5 "01001"]
41
  variable FUNC_SEAR   [bvi b5 "01100"]
42
  variable FUNC_WCD    [bvi b5 "10100"]
43
  variable FUNC_WCHD   [bvi b5 "10101"]
44
  variable FUNC_WRITE  [bvi b5 "11000"]
45
  variable FUNC_WHD    [bvi b5 "11001"]
46
  variable FUNC_READ   [bvi b5 "11100"]
47
  variable FUNC_RHD    [bvi b5 "11101"]
48
 
49
  regdsc RCS1  {val 15 8} {func 5 5} {go 0}
50
  variable RFUNC_WUNIT [bvi b5 "00001"]
51
  variable RFUNC_CUNIT [bvi b5 "00010"]
52
  variable RFUNC_DONE  [bvi b5 "00011"]
53
  variable RFUNC_WIDLY [bvi b5 "00100"]
54
 
55
  regdsc DA  {ta 12 5 2d} {sa 5 6 2d}
56
  regdsc CS2 {wce 14} {ned 12} {nem 11} {pge 10} {or 7} {ir 6} \
57
    {clr 5} {pat 4} {bai 3} {unit 2 3 d}
58 32 wfjm
  regdsc DS  {ata 15} {erp 14} {pip 13} {mol 12} {wrl 11} {lbt 10} {dpr 8} \
59
    {dry 7} {vv 6} {om 0}
60 30 wfjm
  regdsc ER1 {uns 14} {iae 10} {aoe 9} {rmr 2} {ilf 0}
61
  regdsc AS  {u3 3} {u2 2} {u1 1} {u0 0}
62
  regdsc LA  {sc 11 6 2d}
63
  regdsc OF  {fmt 12} {eci 11} {hci 10} {odi 7} {off 6 7}
64
 
65
  variable DTE_RP04    [bvi b3 "000"]
66
  variable DTE_RP06    [bvi b3 "001"]
67
  variable DTE_RM04    [bvi b3 "100"]
68
  variable DTE_RM80    [bvi b3 "101"]
69
  variable DTE_RM05    [bvi b3 "110"]
70
  variable DTE_RP07    [bvi b3 "111"]
71
 
72
  variable DT_RP04    020020
73
  variable DT_RP06    020022
74
  variable DT_RM04    020024
75
  variable DT_RM80    020026
76
  variable DT_RM05    020027
77
  variable DT_RP07    020042
78
 
79
  regdsc SN  {d3 15 4 d} {d2 11 4 d} {d1 7 4 d} {d0 3 4 d}
80
  regdsc OF  {odi 7}
81
  regdsc DC  {dc 9 10 d}
82
 
83
  regdsc CS3 {ie 6}
84
 
85
  variable ANUM 6
86
 
87
  #
88
  # setup: create controller with default attributes -------------------------
89
  #
90
  proc setup {{cpu "cpu0"}} {
91
    return [rw11::setup_cntl $cpu "rhrp" "rpa"]
92
  }
93
 
94
  #
95
  # rcs1_wunit: value for rem CS1 WUNIT function -----------------------------
96
  #
97
  proc rcs1_wunit {unit} {
98
    return [regbld ibd_rhrp::RCS1 [list val $unit] \
99
              [list func $ibd_rhrp::RFUNC_WUNIT] ]
100
  }
101
 
102
  #
103
  # cs1_func: value for loc CS1 function start -------------------------------
104
  #
105
  proc cs1_func {func {ie 0} {bae 0}} {
106
    return [regbld ibd_rhrp::CS1 [list bae $bae] [list ie $ie] \
107
                                 [list func $func] {go 1}]
108
  }
109
 
110
  #
111
  # rdump: register dump - rem view ------------------------------------------
112
  #
113 32 wfjm
  proc rdump {{cpu "cpu0"} {unit -1}} {
114 30 wfjm
    set rval {}
115
    $cpu cp -ribr "rpa.cs1" cs1 \
116
            -ribr "rpa.wc"  wc \
117
            -ribr "rpa.ba"  ba \
118
            -ribr "rpa.cs2" cs2 \
119
            -ribr "rpa.bae" bae \
120
            -ribr "rpa.cs3" cs3
121
 
122
    if {$wc} {
123
      set fwc [format "%d" [expr {64 * 1024 - $wc}]]
124
    } else {
125
      set fwc "(0)"
126
    }
127
 
128
    append rval "Controller registers:"
129
    append rval [format "\n  cs1: %6.6o  %s" $cs1 [regtxt ibd_rhrp::CS1 $cs1]]
130
    append rval [format "\n  cs2: %6.6o  %s" $cs2 [regtxt ibd_rhrp::CS2 $cs2]]
131
    append rval [format "\n  cs3: %6.6o  %s" $cs3 [regtxt ibd_rhrp::CS3 $cs3]]
132
    append rval [format "\n  wc:  %6.6o  nw=%s" $wc $fwc]
133
    append rval [format "\n  ba:  %6.6o"     $ba]
134
    append rval [format "\n  bae: %6.6o  ea=%8.8o" $bae [expr {($bae<<16)|$ba}] ]
135
 
136 32 wfjm
    $cpu cp -wibr "rpa.cs1" [rcs1_wunit 0] \
137
            -ribr "rpa.ds"  ds0  \
138
            -wibr "rpa.cs1" [rcs1_wunit 1] \
139
            -ribr "rpa.ds"  ds1  \
140
            -wibr "rpa.cs1" [rcs1_wunit 2] \
141
            -ribr "rpa.ds"  ds2  \
142
            -wibr "rpa.cs1" [rcs1_wunit 3] \
143
            -ribr "rpa.ds"  ds3
144 30 wfjm
 
145 32 wfjm
    set dslist [list $ds0 $ds1 $ds2 $ds3]
146
 
147
    set ulist [expr {$unit & 0x03} ]
148
    if {$unit < 0} { set ulist {0 1 2 3} }
149
 
150
    foreach u $ulist {
151
      set ds [lindex $dslist $u]
152
      if {$u == $unit || [regget ibd_rhrp::DS(mol) $ds] } {
153
        $cpu cp -wibr "rpa.cs1" [rcs1_wunit $u] \
154
                -ribr "rpa.da"  da  \
155
                -ribr "rpa.er1" er1 \
156
                -ribr "rpa.as"  as  \
157
                -ribr "rpa.la"  la  \
158
                -ribr "rpa.mr1" mr1 \
159
                -ribr "rpa.dt"  dt  \
160
                -ribr "rpa.sn"  sn  \
161
                -ribr "rpa.of"  of  \
162
                -ribr "rpa.dc"  dc
163
 
164
    append rval "\nUnit $u registers:"
165 30 wfjm
    append rval [format "\n  da:  %6.6o  %s" $da  [regtxt ibd_rhrp::DA  $da ]]
166
    append rval [format "\n  ds:  %6.6o  %s" $ds  [regtxt ibd_rhrp::DS  $ds ]]
167
    append rval [format "\n  er1: %6.6o  %s" $er1 [regtxt ibd_rhrp::ER1 $er1]]
168
    append rval [format "\n  as:  %6.6o  as:%s" $as  [pbvi b4 $as]]
169
    append rval [format "\n  la:  %6.6o  %s" $la  [regtxt ibd_rhrp::LA  $la ]]
170
    append rval [format "\n  mr1: %6.6o "    $mr1 ]
171
    append rval [format "\n  dt:  %6.6o "    $dt  ]
172
    set snd3  [regget ibd_rhrp::SN(d3) $sn]
173
    set snd2  [regget ibd_rhrp::SN(d2) $sn]
174
    set snd1  [regget ibd_rhrp::SN(d1) $sn]
175
    set snd0  [regget ibd_rhrp::SN(d0) $sn]
176
    set sntxt [format "%d%d%d%d" $snd3 $snd2 $snd1 $snd0]
177
    append rval [format "\n  sn:  %6.6o  sn=%s" $sn $sntxt]
178
    append rval [format "\n  of:  %6.6o  %s" $of  [regtxt ibd_rhrp::OF  $of ]]
179
    append rval [format "\n  dc:  %6.6o  dc:%s" $dc [format "%3d" $dc]]
180
 
181 32 wfjm
      } else {
182
        append rval [format "\nUnit $u offline or disabled: mol:%d dpr:%s" \
183
                      [regget ibd_rhrp::DS(mol) $ds] \
184
                      [regget ibd_rhrp::DS(dpr) $ds] ]
185
      }
186
    }
187
 
188 30 wfjm
    return $rval
189
  }
190
}

powered by: WebSVN 2.1.0

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