// REVISION    : $Revision: 1.7 $
//         Mentor Graphics Corporation Proprietary and Confidential
//         Copyright Mentor Graphics Corporation and Licensors 2004
`include "include.v"
module
CoreTSE_M2S090_CORETSE_AHB_0_DMATX
#
(
parameter
FAMILY
=
19
,
parameter
CORETSEO
=
0
)
(
CORETSEoO00I
,
HREADY
,
HRESP
,
HRDATA
,
CORETSEi1O0I
,
HCLK
,
CORETSEiO00I
,
HTRANS
,
HADDR
,
HWRITE
,
HWDATA
,
CORETSEo0l0I
,
CORETSEi1l0I
,
CORETSEl1l0I
,
CORETSEoll0I
,
CORETSEooI0I
,
CORETSEioI0I
,
CORETSEOO00I
,
CORETSEO1l0I
,
CORETSEOIl0I
,
CORETSEIlI0I
,
CORETSEllI0I
,
CORETSEolI0I
,
CORETSEilI0I
,
CORETSEO0I0I
,
CORETSEl0I0I
,
CORETSEo0I0I
,
CORETSEi0I0I
,
CORETSEO1I0I
,
CORETSEI1I0I
,
CORETSEl1I0I
)
;
input
CORETSEoO00I
;
input
HREADY
;
input
[
1
:
0
]
HRESP
;
input
[
31
:
0
]
HRDATA
;
input
CORETSEi1O0I
;
input
HCLK
;
output
CORETSEiO00I
;
output
[
1
:
0
]
HTRANS
;
output
[
31
:
2
]
HADDR
;
output
HWRITE
;
output
[
31
:
0
]
HWDATA
;
input
[
31
:
2
]
CORETSEO1l0I
;
output
CORETSEo0l0I
;
output
CORETSEi1l0I
;
output
[
31
:
2
]
CORETSEl1l0I
;
input
CORETSEooI0I
;
input
CORETSEioI0I
;
input
CORETSEOO00I
;
output
CORETSEOIl0I
;
output
[
7
:
0
]
CORETSEoll0I
;
output
CORETSEIlI0I
;
output
CORETSEllI0I
;
output
CORETSEolI0I
;
output
[
31
:
0
]
CORETSEilI0I
;
output
[
1
:
0
]
CORETSEO0I0I
;
output
CORETSEl0I0I
;
output
CORETSEo0I0I
;
output
[
1
:
0
]
CORETSEi0I0I
;
output
CORETSEO1I0I
;
input
CORETSEI1I0I
;
input
CORETSEl1I0I
;
`define CORETSEII00I  \
2 \
'b \
00
`define CORETSElI00I  \
2 \
'b \
01
`define CORETSEoI00I  \
2 \
'b \
11
`define CORETSEiI00I  \
2 \
'b \
10
`define CORETSEOl00I  \
1 \
'b \
0
`define CORETSEIl00I  \
1 \
'b \
1
`define CORETSEll00I  \
{ \
1 \
'b \
0 \
, \
`CORETSEIIOII \
}
`define CORETSEol00I  \
{ \
1 \
'b \
1 \
, \
`CORETSEIIOII \
}
`define CORETSEil00I  \
{ \
1 \
'b \
1 \
, \
`CORETSElIOII \
}
`define CORETSEO000I  \
{ \
1 \
'b \
1 \
, \
`CORETSEoIOII \
}
`define CORETSEI000I  \
{ \
1 \
'b \
1 \
, \
`CORETSEiIOII \
}
reg
[
1
:
0
]
CORETSEo000I
,
CORETSEi000I
;
reg
CORETSEOIl0I
;
reg
[
7
:
0
]
CORETSEoll0I
,
CORETSEol10I
;
reg
CORETSEil10I
;
reg
CORETSEi1l0I
;
reg
[
31
:
2
]
CORETSEl1l0I
;
reg
[
1
:
0
]
CORETSEl100I
;
reg
[
31
:
2
]
CORETSEo100I
;
reg
CORETSEi100I
;
reg
[
15
:
0
]
CORETSEO010I
;
reg
[
4
:
0
]
CORETSEI010I
;
reg
[
31
:
2
]
CORETSEOo00I
;
reg
[
31
:
2
]
CORETSElo00I
;
reg
[
15
:
0
]
CORETSEoo00I
;
reg
[
15
:
0
]
CORETSEio00I
;
reg
CORETSEOi00I
;
reg
CORETSEIi00I
;
reg
CORETSEli00I
;
reg
[
31
:
0
]
CORETSEoi00I
;
reg
[
2
:
0
]
CORETSEii00I
,
CORETSEOO10I
;
reg
CORETSEIO10I
;
reg
CORETSElO10I
;
wire
CORETSEoO10I
;
reg
HWRITE
;
reg
[
31
:
0
]
HWDATA
;
reg
[
31
:
2
]
HADDR
,
CORETSEiO10I
;
reg
[
15
:
0
]
CORETSEOI10I
,
CORETSEII10I
;
reg
CORETSEl010I
;
reg
CORETSEo010I
;
reg
CORETSEllI0I
;
reg
CORETSEolI0I
;
reg
CORETSEIlI0I
;
reg
[
1
:
0
]
CORETSEO0I0I
;
reg
[
31
:
0
]
CORETSEilI0I
;
wire
CORETSEi010I
;
wire
CORETSElo1
;
wire
CORETSEoo1
;
assign
CORETSElo1
=
(
FAMILY
==
25
)
?
1
'b
0
:
CORETSEi1O0I
;
assign
CORETSEoo1
=
(
FAMILY
==
25
)
?
CORETSEi1O0I
:
1
'b
0
;
assign
CORETSEo0l0I
=
CORETSEoO10I
;
assign
CORETSEi010I
=
CORETSEOIl0I
;
always
@
(
posedge
HCLK
or
negedge
CORETSElo1
)
begin
:
CORETSEO110I
if
(
!
(
CORETSElo1
||
CORETSEoo1
)
)
begin
CORETSEOIl0I
<=
0
;
CORETSEoll0I
<=
0
;
end
else
begin
CORETSEOIl0I
<=
(
CORETSEOIl0I
||
CORETSEooI0I
)
&&
CORETSEil10I
&&
!
CORETSEioI0I
;
CORETSEoll0I
<=
CORETSEol10I
-
{
7
'h
00
,
(
CORETSEOO00I
&&
|
CORETSEoll0I
)
}
;
end
end
always
@
(
posedge
HCLK
or
negedge
CORETSElo1
)
begin
:
CORETSEoI10I
if
(
!
(
CORETSElo1
||
CORETSEoo1
)
)
begin
CORETSEo000I
<=
`CORETSEII00I
;
CORETSEOo00I
<=
0
;
CORETSEO010I
<=
0
;
CORETSEi100I
<=
0
;
CORETSEI010I
<=
0
;
CORETSEo100I
<=
0
;
CORETSEl100I
<=
0
;
end
else
begin
CORETSEo000I
<=
CORETSEi000I
;
if
(
HREADY
)
if
(
CORETSEo000I
==
`CORETSElI00I
)
CORETSEl100I
<=
CORETSEOI10I
+
1
;
else
CORETSEl100I
<=
0
;
case
(
CORETSEl100I
)
2
'b
11
:
CORETSEOo00I
<=
HRDATA
[
31
:
2
]
;
2
'b
10
:
begin
CORETSEO010I
<=
HRDATA
[
15
:
0
]
;
CORETSEI010I
<=
HRDATA
[
20
:
16
]
;
CORETSEi100I
<=
HRDATA
[
31
]
;
end
2
'b
01
:
CORETSEo100I
<=
HRDATA
[
31
:
2
]
;
endcase
end
end
always
@
(
*
)
begin
:
CORETSEiI10I
CORETSEi000I
=
CORETSEo000I
;
CORETSEil10I
=
1
;
CORETSEi1l0I
=
0
;
CORETSEol10I
=
CORETSEoll0I
;
CORETSEl1l0I
=
CORETSEO1l0I
;
if
(
CORETSEoO10I
)
begin
CORETSEi000I
=
`CORETSEII00I
;
CORETSEil10I
=
0
;
end
else
case
(
CORETSEo000I
)
`CORETSEII00I
:
begin
if
(
CORETSEi010I
)
CORETSEi000I
=
`CORETSElI00I
;
else
CORETSEi000I
=
`CORETSEII00I
;
end
`CORETSElI00I
:
begin
if
(
CORETSElO10I
)
if
(
(
CORETSEl100I
==
2
'b
10
)
?
HRDATA
[
31
]
:
CORETSEi100I
)
begin
CORETSEil10I
=
0
;
CORETSEi1l0I
=
1
;
CORETSEi000I
=
`CORETSEII00I
;
end
else
CORETSEi000I
=
`CORETSEoI00I
;
end
`CORETSEoI00I
:
begin
if
(
CORETSElO10I
)
CORETSEi000I
=
`CORETSEiI00I
;
end
`CORETSEiI00I
:
begin
if
(
CORETSElO10I
)
begin
CORETSEol10I
=
CORETSEoll0I
+
1
;
if
(
CORETSEi010I
)
begin
CORETSEi000I
=
`CORETSElI00I
;
end
else
begin
CORETSEi000I
=
`CORETSEII00I
;
end
end
end
endcase
if
(
CORETSEoO00I
&&
HREADY
&&
CORETSEi000I
==
`CORETSEiI00I
)
CORETSEl1l0I
=
CORETSEo100I
;
end
always
@
(
CORETSEi000I
or
CORETSEo000I
or
CORETSEl100I
or
CORETSEl1I0I
or
CORETSEO1l0I
or
CORETSEOI10I
or
CORETSEO010I
or
CORETSEOo00I
or
HRDATA
or
CORETSEI1I0I
)
begin
:
CORETSEOl10I
case
(
CORETSEi000I
)
`CORETSElI00I
:
begin
CORETSEio00I
=
16
'h
0002
;
CORETSEli00I
=
0
;
CORETSEOi00I
=
1
;
CORETSElo00I
=
CORETSEO1l0I
;
end
`CORETSEoI00I
:
begin
CORETSEli00I
=
0
;
CORETSEio00I
=
(
CORETSEl100I
==
2
'b
10
)
?
HRDATA
[
15
:
0
]
-
1
:
CORETSEO010I
-
1
;
CORETSEOi00I
=
!
CORETSEl1I0I
&&
CORETSEI1I0I
;
CORETSElo00I
=
CORETSEOo00I
;
end
`CORETSEiI00I
:
begin
CORETSEio00I
=
CORETSEOI10I
+
16
'h
0004
;
CORETSEli00I
=
1
;
CORETSEOi00I
=
1
;
CORETSElo00I
=
CORETSEO1l0I
+
1
;
end
default
:
begin
CORETSEio00I
=
0
;
CORETSEli00I
=
0
;
CORETSEOi00I
=
0
;
CORETSElo00I
=
0
;
end
endcase
case
(
CORETSEo000I
)
`CORETSElI00I
:
begin
CORETSEoo00I
=
16
'h
FFFF
;
CORETSEIi00I
=
~|
CORETSEOI10I
;
CORETSEoi00I
=
0
;
end
`CORETSEoI00I
:
begin
CORETSEoo00I
=
16
'h
FFFC
;
CORETSEIi00I
=
~|
CORETSEOI10I
[
15
:
2
]
||
!
CORETSEI1I0I
;
CORETSEoi00I
=
HRDATA
;
end
`CORETSEiI00I
:
begin
CORETSEoo00I
=
0
;
CORETSEIi00I
=
1
;
CORETSEoi00I
[
31
]
=
1
;
CORETSEoi00I
[
30
:
0
]
=
0
;
end
default
:
begin
CORETSEoo00I
=
0
;
CORETSEIi00I
=
1
;
CORETSEoi00I
=
0
;
end
endcase
end
always
@
(
posedge
HCLK
or
negedge
CORETSElo1
)
begin
:
CORETSEIl10I
if
(
!
(
CORETSElo1
||
CORETSEoo1
)
)
begin
CORETSEii00I
<=
`CORETSEll00I
;
CORETSEIO10I
<=
0
;
HADDR
<=
0
;
HWRITE
<=
0
;
HWDATA
<=
0
;
CORETSEOI10I
<=
0
;
end
else
begin
CORETSEii00I
<=
CORETSEOO10I
;
CORETSEIO10I
<=
HREADY
?
CORETSEii00I
[
1
]
:
CORETSEIO10I
;
HWDATA
<=
HREADY
?
CORETSEoi00I
:
HWDATA
;
HWRITE
<=
HREADY
?
CORETSEli00I
:
HWRITE
;
HADDR
<=
CORETSEiO10I
;
CORETSEOI10I
<=
CORETSEII10I
;
end
end
assign
CORETSEoO10I
=
CORETSEIO10I
&&
HREADY
&&
(
HRESP
!=
`CORETSEOlOII
)
;
always
@
(
HREADY
or
CORETSEii00I
or
CORETSEoO00I
or
HADDR
or
CORETSEOi00I
or
CORETSEIi00I
or
CORETSElo00I
or
CORETSEio00I
or
CORETSEoo00I
or
CORETSEOI10I
)
begin
:
CORETSEll10I
CORETSEOO10I
=
CORETSEii00I
;
CORETSEiO10I
=
HADDR
;
CORETSEII10I
=
CORETSEOI10I
;
CORETSElO10I
=
0
;
if
(
HREADY
)
case
(
CORETSEii00I
)
`CORETSEll00I
:
if
(
CORETSEOi00I
)
begin
CORETSEOO10I
=
CORETSEoO00I
?
`CORETSEO000I
:
`CORETSEol00I
;
CORETSEiO10I
=
CORETSElo00I
;
CORETSEII10I
=
CORETSEio00I
;
end
`CORETSEol00I
:
CORETSEOO10I
=
CORETSEoO00I
?
`CORETSEO000I
:
`CORETSEol00I
;
`CORETSEO000I
,
`CORETSEI000I
:
begin
CORETSEiO10I
=
HADDR
+
1
;
CORETSEII10I
=
CORETSEOI10I
+
CORETSEoo00I
;
if
(
CORETSEIi00I
)
begin
CORETSElO10I
=
1
;
if
(
CORETSEOi00I
&&
CORETSEoO00I
)
begin
CORETSEiO10I
=
CORETSElo00I
;
CORETSEII10I
=
CORETSEio00I
;
CORETSEOO10I
=
`CORETSEO000I
;
end
else
CORETSEOO10I
=
`CORETSEll00I
;
end
else
if
(
!
CORETSEoO00I
)
CORETSEOO10I
=
`CORETSEol00I
;
else
if
(
~|
CORETSEiO10I
[
9
:
2
]
)
CORETSEOO10I
=
`CORETSEO000I
;
else
CORETSEOO10I
=
`CORETSEI000I
;
end
default
:
begin
CORETSEOO10I
=
`CORETSEll00I
;
end
endcase
end
assign
HTRANS
=
CORETSEii00I
[
1
:
0
]
;
assign
CORETSEiO00I
=
CORETSEii00I
[
2
]
;
always
@
(
posedge
HCLK
or
negedge
CORETSElo1
)
begin
:
CORETSEI110I
if
(
!
(
CORETSElo1
||
CORETSEoo1
)
)
begin
CORETSEl010I
<=
0
;
CORETSEo010I
<=
0
;
CORETSEIlI0I
<=
0
;
CORETSEllI0I
<=
0
;
CORETSEolI0I
<=
0
;
CORETSEO0I0I
<=
0
;
CORETSEilI0I
<=
0
;
end
else
begin
if
(
HREADY
&&
CORETSEii00I
[
1
]
)
begin
CORETSEl010I
<=
(
CORETSEo000I
==
`CORETSEoI00I
)
;
CORETSEo010I
<=
(
CORETSEo000I
==
`CORETSEoI00I
)
&&
!
CORETSEl010I
;
end
if
(
CORETSEl010I
&&
CORETSEIO10I
&&
HREADY
)
begin
CORETSEIlI0I
<=
1
;
CORETSEllI0I
<=
CORETSEo010I
;
CORETSEolI0I
<=
CORETSEl010I
&&
(
CORETSEo000I
!=
`CORETSEoI00I
)
;
CORETSEO0I0I
<=
CORETSEl010I
&&
(
CORETSEo000I
!=
`CORETSEoI00I
)
?
~
CORETSEOI10I
[
1
:
0
]
:
0
;
CORETSEilI0I
<=
HRDATA
;
end
else
begin
CORETSEIlI0I
<=
0
;
CORETSEllI0I
<=
0
;
CORETSEolI0I
<=
0
;
CORETSEO0I0I
<=
0
;
CORETSEilI0I
<=
0
;
end
end
end
assign
CORETSEl0I0I
=
CORETSEI010I
[
0
]
;
assign
CORETSEo0I0I
=
CORETSEI010I
[
1
]
;
assign
CORETSEi0I0I
=
CORETSEI010I
[
3
:
2
]
;
assign
CORETSEO1I0I
=
CORETSEI010I
[
4
]
;
endmodule
