// REVISION    : $Revision: 1.12 $
//         Mentor Graphics Corporation Proprietary and Confidential
//         Copyright Mentor Graphics Corporation and Licensors 2004
`include "include.v"
module
CoreTSE_M2S090_CORETSE_AHB_0_SLAVE
(
HWDATA
,
HADDR
,
HSEL
,
HTRANS
,
HWRITE
,
HCLK
,
CORETSEi1O0I
,
HRDATA
,
HRESP
,
HREADY
,
CORETSEI0o0I
,
CORETSEi1oOI
,
CORETSEi11lI
,
CORETSElOiOI
,
CORETSEOooOI
,
CORETSEOo1lI
,
CORETSEIooOI
,
CORETSElooOI
,
CORETSEIo1lI
,
CORETSElo1lI
)
;
input
[
31
:
0
]
HWDATA
;
input
[
9
:
2
]
HADDR
;
input
HSEL
;
input
[
1
:
0
]
HTRANS
;
input
HWRITE
;
input
HREADY
;
input
HCLK
;
input
CORETSEi1O0I
;
output
[
31
:
0
]
HRDATA
;
output
[
1
:
0
]
HRESP
;
output
CORETSEI0o0I
;
output
CORETSEi1oOI
;
output
CORETSEi11lI
;
output
CORETSElOiOI
;
output
[
7
:
0
]
CORETSEOooOI
;
output
[
31
:
0
]
CORETSEOo1lI
;
input
[
31
:
0
]
CORETSEIooOI
;
input
CORETSElooOI
;
output
CORETSEIo1lI
;
input
CORETSElo1lI
;
parameter
FAMILY
=
19
;
reg
CORETSEi1oOI
;
reg
CORETSEi11lI
;
reg
CORETSElOiOI
;
reg
[
7
:
0
]
CORETSEOooOI
;
reg
CORETSEli1lI
;
reg
[
31
:
0
]
CORETSEoi1lI
;
reg
[
2
:
0
]
CORETSEii1lI
;
reg
CORETSEOOolI
;
reg
CORETSEl0o0I
;
reg
CORETSEIo1lI
;
wire
[
1
:
0
]
HRESP
;
wire
CORETSElOolI
;
wire
CORETSEoOolI
;
wire
CORETSElo1
;
wire
CORETSEoo1
;
assign
CORETSElo1
=
(
FAMILY
==
25
)
?
1
'b
0
:
CORETSEi1O0I
;
assign
CORETSEoo1
=
(
FAMILY
==
25
)
?
CORETSEi1O0I
:
1
'b
0
;
assign
CORETSEoOolI
=
~
HADDR
[
9
]
&
(
HADDR
[
8
]
^
HADDR
[
7
]
)
;
always
@
(
posedge
HCLK
or
negedge
CORETSElo1
)
begin
:
CORETSEiOolI
if
(
!
(
CORETSElo1
||
CORETSEoo1
)
)
begin
CORETSEli1lI
<=
1
;
CORETSEi1oOI
<=
1
;
CORETSEOooOI
<=
0
;
CORETSEi11lI
<=
1
;
CORETSElOiOI
<=
1
;
end
else
begin
if
(
HREADY
)
begin
CORETSEi1oOI
<=
!
(
HSEL
&&
(
(
HTRANS
==
`CORETSEoIOII
)
||
(
HTRANS
==
`CORETSEiIOII
)
)
&&
!
CORETSEoOolI
)
;
CORETSElOiOI
<=
!
(
HSEL
&&
(
(
HTRANS
==
`CORETSEoIOII
)
||
(
HTRANS
==
`CORETSEiIOII
)
)
&&
CORETSEoOolI
)
;
CORETSEOooOI
<=
HADDR
;
CORETSEi11lI
<=
!
HWRITE
;
end
CORETSEli1lI
<=
CORETSElOolI
;
end
end
assign
CORETSElOolI
=
!
CORETSEi11lI
||
CORETSEi1oOI
||
CORETSElooOI
;
assign
CORETSEI0o0I
=
CORETSEOOolI
?
CORETSEl0o0I
:
!
(
!
CORETSElOolI
&&
CORETSEli1lI
)
;
assign
HRESP
=
(
!
CORETSElOolI
)
?
`CORETSEIlOII
:
`CORETSEOlOII
;
assign
CORETSEOo1lI
=
HWDATA
;
assign
HRDATA
=
CORETSEOOolI
?
CORETSEoi1lI
:
CORETSEIooOI
;
always
@
(
posedge
HCLK
or
negedge
CORETSElo1
)
begin
:
CORETSEOIolI
if
(
!
(
CORETSElo1
||
CORETSEoo1
)
)
begin
CORETSEOOolI
<=
0
;
CORETSEl0o0I
<=
0
;
CORETSEIo1lI
<=
0
;
CORETSEii1lI
<=
0
;
CORETSEoi1lI
<=
0
;
end
else
begin
CORETSEii1lI
<=
{
CORETSEii1lI
[
1
:
0
]
,
CORETSElo1lI
}
;
if
(
HREADY
)
begin
CORETSEOOolI
<=
HSEL
&&
CORETSEoOolI
&&
(
(
HTRANS
==
`CORETSEoIOII
)
||
(
HTRANS
==
`CORETSEiIOII
)
)
;
CORETSEl0o0I
<=
0
;
CORETSEIo1lI
<=
HSEL
&&
CORETSEoOolI
&&
(
(
HTRANS
==
`CORETSEoIOII
)
||
(
HTRANS
==
`CORETSEiIOII
)
)
&&
!
CORETSEii1lI
[
1
]
;
end
else
if
(
CORETSEOOolI
)
CORETSEIo1lI
<=
!
CORETSEii1lI
[
1
]
;
if
(
CORETSEii1lI
[
2
:
1
]
==
2
'b
01
)
begin
CORETSEIo1lI
<=
0
;
CORETSEoi1lI
<=
CORETSEIooOI
;
CORETSEl0o0I
<=
1
;
end
end
end
endmodule
