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

Subversion Repositories cryptosorter

[/] [cryptosorter/] [trunk/] [memocodeDesignContest2008/] [xup/] [PLBMaster/] [PLBMasterWires.bsv] - Blame information for rev 3

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

Line No. Rev Author Line
1 3 kfleming
/*
2
Copyright (c) 2007 MIT
3
 
4
Permission is hereby granted, free of charge, to any person
5
obtaining a copy of this software and associated documentation
6
files (the "Software"), to deal in the Software without
7
restriction, including without limitation the rights to use,
8
copy, modify, merge, publish, distribute, sublicense, and/or sell
9
copies of the Software, and to permit persons to whom the
10
Software is furnished to do so, subject to the following
11
conditions:
12
 
13
The above copyright notice and this permission notice shall be
14
included in all copies or substantial portions of the Software.
15
 
16
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
OTHER DEALINGS IN THE SOFTWARE.
24
 
25
Author: Kermin Fleming
26
*/
27
 
28
// Global Imports
29
import GetPut::*;
30
 
31
// Project Imports
32
import Parameters::*;
33
 
34
`define PLB_CLK_NAME        "mClk"
35
`define PLB_RST_NAME        "mRst"
36
`define PLB_COMPRESS_NAME   "mCompress"
37
`define PLB_ABUS_NAME       "mABus"
38
`define PLB_BE_NAME         "mBE"
39
`define PLB_RNW_NAME        "mRNW"
40
`define PLB_ABORT_NAME      "mAbort"
41
`define PLB_BUSLOCK_NAME    "mBusLock"
42
`define PLB_PRESS_NAME      "mpress"
43
`define PLB_GUARDED_NAME    "mGuarded"
44
`define PLB_LOCKERR_NAME    "mLockErr"
45
`define PLB_MSIZE_NAME      "mMSize"
46
`define PLB_ORDERED_NAME    "mOrdered"
47
`define PLB_PRIORITY_NAME   "mPriority"
48
`define PLB_RDBURST_NAME    "mRdBurst"
49
`define PLB_REQUEST_NAME    "mRequest"
50
`define PLB_SIZE_NAME       "mSize"
51
`define PLB_TYPE_NAME       "mType"
52
`define PLB_WRBURST_NAME    "mWrBurst"
53
`define PLB_WRDBUS_NAME     "mWrDBus"
54
`define PLB_MADDRACK_NAME  "mAddrAck"
55
`define PLB_MBUSY_NAME     "mBusy"
56
`define PLB_MERR_NAME      "mErr"
57
`define PLB_MRDBTERM_NAME  "mRdBTerm"
58
`define PLB_MRDDACK_NAME   "mRdDAck"
59
`define PLB_MRDDBUS_NAME   "mRdDBus"
60
`define PLB_MRDWDADDR_NAME  "mRdWdAddr"
61
`define PLB_MREARBITRATE_NAME  "mRearbitrate"
62
`define PLB_MWRBTERM_NAME  "mWrBTerm"
63
`define PLB_MWRDACK_NAME   "mWrDAck"
64
`define PLB_MSSIZE_NAME    "mSSize"
65
`define PLB_SMERR_NAME     "sMErr"
66
`define PLB_SMBUSY_NAME    "sMBusy"
67
 
68
 
69
interface PLBMasterWires;
70
 
71
  (* always_ready, prefix="", result=`PLB_ABUS_NAME *)
72
  method Bit#(PLBAddrSize) mABus();     // Address Bus
73
 
74
  (* always_ready, prefix="", result=`PLB_BE_NAME *)
75
  method Bit#(8)           mBE();       // Byte Enable
76
 
77
  (* always_ready, prefix="", result=`PLB_RNW_NAME *)
78
  method Bit#(1)           mRNW();      // Read Not Write
79
 
80
  (* always_ready, prefix="", result=`PLB_ABORT_NAME *)
81
  method Bit#(1)           mAbort();    // Abort
82
 
83
  (* always_ready, prefix="", result=`PLB_BUSLOCK_NAME *)
84
  method Bit#(1)           mBusLock();  // Bus lock
85
 
86
  (* always_ready, prefix="", result=`PLB_COMPRESS_NAME *)
87
  method Bit#(1)           mCompress(); // compressed transfer
88
 
89
  (* always_ready, prefix="", result=`PLB_GUARDED_NAME *)
90
  method Bit#(1)           mGuarded();  // guarded transfer
91
 
92
  (* always_ready, prefix="", result=`PLB_LOCKERR_NAME *)
93
  method Bit#(1)           mLockErr();  // lock error
94
 
95
  (* always_ready, prefix="", result=`PLB_MSIZE_NAME *)
96
  method Bit#(2)           mMSize();    // data bus width?
97
 
98
  (* always_ready, prefix="", result=`PLB_ORDERED_NAME *)
99
  method Bit#(1)           mOrdered();  // synchronize transfer
100
 
101
  (* always_ready, prefix="", result=`PLB_PRIORITY_NAME *)
102
  method Bit#(2)           mPriority(); // priority indicator
103
 
104
  (* always_ready, prefix="", result=`PLB_RDBURST_NAME *)
105
  method Bit#(1)           mRdBurst();  // read burst
106
 
107
  (* always_ready, prefix="", result=`PLB_REQUEST_NAME *)
108
  method Bit#(1)           mRequest();  // bus request
109
 
110
  (* always_ready, prefix="", result=`PLB_SIZE_NAME *)
111
  method Bit#(4)           mSize();     // transfer size
112
 
113
  (* always_ready, prefix="", result=`PLB_TYPE_NAME *)
114
  method Bit#(3)           mType();     // transfer type (dma)
115
 
116
  (* always_ready, prefix="", result=`PLB_WRBURST_NAME *)
117
  method Bit#(1)           mWrBurst();  // write burst
118
 
119
  (* always_ready, prefix="", result=`PLB_WRDBUS_NAME *)
120
  method Bit#(64)          mWrDBus();   // write data bus
121
 
122
  (* always_ready, prefix="", always_enabled *)
123
  method Action plbIN(
124
    (* port=`PLB_RST_NAME *)            Bit#(1) mRst,           // PLB reset
125
    (* port=`PLB_MADDRACK_NAME *)       Bit#(1) mAddrAck,       // Addr Ack
126
    (* port=`PLB_MBUSY_NAME *)          Bit#(1) mBusy,          // Master Busy
127
    (* port=`PLB_MERR_NAME *)           Bit#(1) mErr,           // Slave Error
128
    (* port=`PLB_MRDBTERM_NAME *)       Bit#(1) mRdBTerm,       // Read burst terminate signal
129
    (* port=`PLB_MRDDACK_NAME *)        Bit#(1) mRdDAck,        // Read data ack
130
    (* port=`PLB_MRDDBUS_NAME *)        Bit#(64)mRdDBus,        // Read data bus
131
    (* port=`PLB_MRDWDADDR_NAME *)      Bit#(3) mRdWdAddr,      // Read word address
132
    (* port=`PLB_MREARBITRATE_NAME *)   Bit#(1) mRearbitrate,   // Rearbitrate
133
    (* port=`PLB_MWRBTERM_NAME *)       Bit#(1) mWrBTerm,       // Write burst terminate
134
    (* port=`PLB_MWRDACK_NAME *)        Bit#(1) mWrDAck,        // Write data ack
135
    (* port=`PLB_MSSIZE_NAME *)         Bit#(1) mSSize,         // Slave bus size
136
    (* port=`PLB_SMERR_NAME *)          Bit#(1) sMErr,          // Slave error
137
    (* port=`PLB_SMBUSY_NAME *)         Bit#(1) sMBusy);        // Slave busy
138
 
139
 
140
endinterface

powered by: WebSVN 2.1.0

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