Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x353
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
x353
Commits
8d77d7f8
Commit
8d77d7f8
authored
Jul 28, 2015
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replaced attributes with parameters fro physical constraints
parent
59d8b5dc
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
514 additions
and
175 deletions
+514
-175
.project
.project
+11
-11
clkios353.v
control/clkios353.v
+4
-2
ioports353.v
control/ioports353.v
+244
-72
sensor_phase353.v
sensor/sensor_phase353.v
+19
-32
sensorpads353.v
sensor/sensorpads353.v
+114
-21
x353.v
x353.v
+122
-37
No files found.
.project
View file @
8d77d7f8
...
...
@@ -12,22 +12,22 @@
<link>
<name>
ise_logs/ISEBitgen.log
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_logs/ISEBitgen-201507271
42725079
.log
</location>
<location>
/home/andrey/git/x353/ise_logs/ISEBitgen-201507271
91231906
.log
</location>
</link>
<link>
<name>
ise_logs/ISEMap.log
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_logs/ISEMap-201507271
6410961
6.log
</location>
<location>
/home/andrey/git/x353/ise_logs/ISEMap-201507271
9123190
6.log
</location>
</link>
<link>
<name>
ise_logs/ISENGDBuild.log
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_logs/ISENGDBuild-201507271
6410961
6.log
</location>
<location>
/home/andrey/git/x353/ise_logs/ISENGDBuild-201507271
9123190
6.log
</location>
</link>
<link>
<name>
ise_logs/ISEPAR.log
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_logs/ISEPAR-201507271
42725079
.log
</location>
<location>
/home/andrey/git/x353/ise_logs/ISEPAR-201507271
91231906
.log
</location>
</link>
<link>
<name>
ise_logs/ISEPartgen.log
</name>
...
...
@@ -37,37 +37,37 @@
<link>
<name>
ise_logs/ISETraceMap.log
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_logs/ISETraceMap-201507271
6410961
6.log
</location>
<location>
/home/andrey/git/x353/ise_logs/ISETraceMap-201507271
9123190
6.log
</location>
</link>
<link>
<name>
ise_logs/ISETracePAR.log
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_logs/ISETracePAR-201507271
42725079
.log
</location>
<location>
/home/andrey/git/x353/ise_logs/ISETracePAR-201507271
91634237
.log
</location>
</link>
<link>
<name>
ise_logs/ISExst.log
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_logs/ISExst-201507271
70341943
.log
</location>
<location>
/home/andrey/git/x353/ise_logs/ISExst-201507271
91119507
.log
</location>
</link>
<link>
<name>
ise_state/x353-map.tgz
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_state/x353-map-201507271
6410961
6.tgz
</location>
<location>
/home/andrey/git/x353/ise_state/x353-map-201507271
9123190
6.tgz
</location>
</link>
<link>
<name>
ise_state/x353-ngdbuild.tgz
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_state/x353-ngdbuild-201507271
6410961
6.tgz
</location>
<location>
/home/andrey/git/x353/ise_state/x353-ngdbuild-201507271
9123190
6.tgz
</location>
</link>
<link>
<name>
ise_state/x353-par.tgz
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_state/x353-par-201507271
42725079
.tgz
</location>
<location>
/home/andrey/git/x353/ise_state/x353-par-201507271
91231906
.tgz
</location>
</link>
<link>
<name>
ise_state/x353-synth.tgz
</name>
<type>
1
</type>
<location>
/home/andrey/git/x353/ise_state/x353-synth-201507271
70341943
.tgz
</location>
<location>
/home/andrey/git/x353/ise_state/x353-synth-201507271
91119507
.tgz
</location>
</link>
</linkedResources>
</projectDescription>
control/clkios353.v
View file @
8d77d7f8
...
...
@@ -121,7 +121,9 @@ endmodule
module
clockios353
(
module
clockios353
#(
parameter
IOSTANDARD
=
"LVCMOS33"
)(
CLK0
,
// input clock pad - 120MHz
sclk0
,
// global clock, 120MHz, phase=0 (addresses, commands should be strobed at neg edge)
/*sclk90,*/
// global clock, 120MHz, phase=90 (strobe data write to sdram)
...
...
@@ -143,7 +145,7 @@ module clockios353(
wire
iclk0
;
wire
isclk0
,
/*isclk90,*/
isclk270
,
isclk180
;
IBUFG
i_iclk0
(
.
I
(
CLK0
)
,
.
O
(
iclk0
))
;
IBUFG
#(
.
IOSTANDARD
(
IOSTANDARD
))
i_iclk0
(
.
I
(
CLK0
)
,
.
O
(
iclk0
))
;
// DCM - just 4 phases out
DCM
#(
.
CLKIN_DIVIDE_BY_2
(
"FALSE"
)
,
...
...
control/ioports353.v
View file @
8d77d7f8
...
...
@@ -27,15 +27,37 @@
*/
module
dmapads
(
dreq0
,
dack0
,
idreq0
,
idack0
,
dreq1
,
dack1
,
idreq1
,
idack1
)
;
module
dmapads
#(
parameter
IOSTANDARD_SYS
=
"LVCMOS33"
,
parameter
SLEW_SYS_DREQ
=
"SLOW"
,
parameter
DRIVE_SYS_DREQ
=
4
,
parameter
IBUF_DELAY_SYS_DACK
=
"0"
,
parameter
IFD_DELAY_SYS_DACK
=
"0"
)
(
dreq0
,
dack0
,
idreq0
,
idack0
,
dreq1
,
dack1
,
idreq1
,
idack1
)
;
output
dreq0
,
dreq1
;
input
dack0
,
dack1
;
input
idreq0
,
idreq1
;
output
idack0
,
idack1
;
OBUF
i_dreq0
(
.
I
(
idreq0
)
,
.
O
(
dreq0
))
;
IBUF
i_dack0
(
.
I
(
dack0
)
,
.
O
(
idack0
))
;
OBUF
i_dreq1
(
.
I
(
idreq1
)
,
.
O
(
dreq1
))
;
IBUF
i_dack1
(
.
I
(
dack1
)
,
.
O
(
idack1
))
;
OBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
DRIVE
(
DRIVE_SYS_DREQ
)
,
.
SLEW
(
SLEW_SYS_DREQ
))
i_dreq0
(
.
I
(
idreq0
)
,
.
O
(
dreq0
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SYS_DACK
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SYS_DACK
))
i_dack0
(
.
I
(
dack0
)
,
.
O
(
idack0
))
;
OBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
DRIVE
(
DRIVE_SYS_DREQ
)
,
.
SLEW
(
SLEW_SYS_DREQ
))
i_dreq1
(
.
I
(
idreq1
)
,
.
O
(
dreq1
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SYS_DACK
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SYS_DACK
))
i_dack1
(
.
I
(
dack1
)
,
.
O
(
idack1
))
;
endmodule
...
...
@@ -54,7 +76,23 @@ module i2cpads (sda,scl,sda_o,sda_i,sda_en,scl_o,scl_i,scl_en);
IOBUF
i_scl0
(
.
I
(
scl_o
)
,
.
T
(
!
scl_en
)
,
.
O
(
scl_i
)
,
.
IO
(
scl
))
;
endmodule
module
sysinterface
(
clk
,
module
sysinterface
#(
parameter
IOSTANDARD_SYS
=
"LVCMOS33"
,
parameter
SLEW_SYS
=
"SLOW"
,
parameter
DRIVE_SYS
=
8
,
parameter
IBUF_DELAY_SYS_A
=
"0"
,
parameter
IFD_DELAY_SYS_A
=
"0"
,
parameter
IBUF_DELAY_SYS_D
=
"0"
,
parameter
IFD_DELAY_SYS_D
=
"0"
,
parameter
IBUF_DELAY_SYS_WOE
=
"0"
,
parameter
IFD_DELAY_SYS_WOE
=
"0"
,
parameter
IBUF_DELAY_SYS_CE
=
"0"
,
parameter
IFD_DELAY_SYS_CE
=
"0"
)
(
clk
,
drv_bus
,
// drive system bus (to write to system memory)
d
,
// 32 bit D[31:0] data pads
oe
,
// OE pad
...
...
@@ -280,10 +318,26 @@ module sysinterface(clk,
// [2] - output high 16 (8)
assign
am
[
7
:
0
]
=
wra
?
as
[
7
:
0
]
:
ia
[
7
:
0
]
;
IBUF
i_oe
(
.
I
(
oe
)
,
.
O
(
ioe
))
;
IBUF
i_ce
(
.
I
(
ce
)
,
.
O
(
ice
))
;
IBUF
i_ce1
(
.
I
(
ce1
)
,
.
O
(
ice1
))
;
ipadql
i_we
(
.
g
(
cwr
)
,.
q
(
iwe
)
,.
qr
(
irnw
)
,.
d
(
we
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SYS_WOE
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SYS_WOE
))
i_oe
(
.
I
(
oe
)
,
.
O
(
ioe
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SYS_CE
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SYS_CE
))
i_ce
(
.
I
(
ce
)
,
.
O
(
ice
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SYS_WOE
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SYS_WOE
))
i_ce1
(
.
I
(
ce1
)
,
.
O
(
ice1
))
;
ipadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY
(
IBUF_DELAY_SYS_WOE
)
,
.
IFD_DELAY
(
IFD_DELAY_SYS_WOE
))
i_we
(
.
g
(
cwr
)
,.
q
(
iwe
)
,.
qr
(
irnw
)
,.
d
(
we
))
;
// negative pulse - with CE (zero w.s.) - only with WE, with CE1 (EW=1) - both WE and OE
BUFG
i_cwr
(
.
I
((
ice
|
iwe
)
&
(
ice1
|
(
iwe
&
ioe
)))
,
.
O
(
cwr
))
;
...
...
@@ -377,19 +431,32 @@ module sysinterface(clk,
da_imu
<=
wr_state
[
0
]
&&
wnr_seq_mux
&&
(
a_pio_seq_mux
[
7
:
1
]
==
7'h3f
)
;
// IMU control (0x7e-0x7f)
end
bpadql
i_a0
(
.
g
(
cwr
)
,.
q
(
ia
[
0
])
,.
qr
(
ial
[
0
])
,.
io
(
a
[
0
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
0
]))
;
bpadql
i_a1
(
.
g
(
cwr
)
,.
q
(
ia
[
1
])
,.
qr
(
ial
[
1
])
,.
io
(
a
[
1
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
1
]))
;
bpadql
i_a2
(
.
g
(
cwr
)
,.
q
(
ia
[
2
])
,.
qr
(
ial
[
2
])
,.
io
(
a
[
2
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
2
]))
;
bpadql
i_a3
(
.
g
(
cwr
)
,.
q
(
ia
[
3
])
,.
qr
(
ial
[
3
])
,.
io
(
a
[
3
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
3
]))
;
bpadql
i_a4
(
.
g
(
cwr
)
,.
q
(
ia
[
4
])
,.
qr
(
ial
[
4
])
,.
io
(
a
[
4
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
4
]))
;
bpadql
i_a5
(
.
g
(
cwr
)
,.
q
(
ia
[
5
])
,.
qr
(
ial
[
5
])
,.
io
(
a
[
5
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
5
]))
;
bpadql
i_a6
(
.
g
(
cwr
)
,.
q
(
ia
[
6
])
,.
qr
(
ial
[
6
])
,.
io
(
a
[
6
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
6
]))
;
bpadql
i_a7
(
.
g
(
cwr
)
,.
q
(
ia
[
7
])
,.
qr
(
ial
[
7
])
,.
io
(
a
[
7
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
7
]))
;
bpadql
i_a8
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
8
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
8
]))
;
bpadql
i_a9
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
9
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
9
]))
;
bpadql
i_a10
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
10
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
10
]))
;
bpadql
i_a11
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
11
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
11
]))
;
bpadql
i_a12
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
12
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
12
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a0
(
.
g
(
cwr
)
,.
q
(
ia
[
0
])
,.
qr
(
ial
[
0
])
,.
io
(
a
[
0
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
0
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a1
(
.
g
(
cwr
)
,.
q
(
ia
[
1
])
,.
qr
(
ial
[
1
])
,.
io
(
a
[
1
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
1
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a2
(
.
g
(
cwr
)
,.
q
(
ia
[
2
])
,.
qr
(
ial
[
2
])
,.
io
(
a
[
2
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
2
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a3
(
.
g
(
cwr
)
,.
q
(
ia
[
3
])
,.
qr
(
ial
[
3
])
,.
io
(
a
[
3
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
3
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a4
(
.
g
(
cwr
)
,.
q
(
ia
[
4
])
,.
qr
(
ial
[
4
])
,.
io
(
a
[
4
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
4
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a5
(
.
g
(
cwr
)
,.
q
(
ia
[
5
])
,.
qr
(
ial
[
5
])
,.
io
(
a
[
5
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
5
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a6
(
.
g
(
cwr
)
,.
q
(
ia
[
6
])
,.
qr
(
ial
[
6
])
,.
io
(
a
[
6
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
6
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a7
(
.
g
(
cwr
)
,.
q
(
ia
[
7
])
,.
qr
(
ial
[
7
])
,.
io
(
a
[
7
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
7
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a8
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
8
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
8
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a9
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
9
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
9
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a10
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
10
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
10
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a11
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
11
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
11
]))
;
bpadql
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,.
SLEW
(
SLEW_SYS
)
,.
DRIVE
(
DRIVE_SYS
)
,.
IBUF_DELAY
(
IBUF_DELAY_SYS_A
)
,.
IFD_DELAY
(
IFD_DELAY_SYS_A
))
i_a12
(
.
g
(
cwr
)
,.
q
()
,
.
qr
()
,
.
io
(
a
[
12
])
,.
t
(
!
drv_bus
)
,.
d
(
ao
[
12
]))
;
// inter-clock synchronization
FDCE
i_sync0
(
.
Q
(
sync0
)
,
.
C
(
cwr
)
,.
CE
(
1'b1
)
,.
CLR
(
sync2
)
,.
D
(
1'b1
))
;
...
...
@@ -401,12 +468,24 @@ module sysinterface(clk,
FD
i_sync_cwr_on
(
.
Q
(
sync_cwr_on
)
,
.
C
(
clk
)
,.
D
(
sync_cwr_start1
||
(
sync_cwr_on
&&
!
sync1
)))
;
LUT4
#(
.
INIT
(
16'hAA80
))
i_dataouten
(
.
I0
(
1'b1
)
,
.
I1
(
ice1
)
,
.
I2
(
ice
)
,
.
I3
(
ioe
)
,
.
O
(
t
))
;
dpads32
i_dmapads32
(
.
c
(
cwr
)
,.
t
(
t
)
,.
d
(
iod
[
31
:
0
])
,.
q
(
id0
[
31
:
0
])
,.
dq
(
d
[
31
:
0
]))
;
dpads32
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
SLEW
(
SLEW_SYS
)
,
.
DRIVE
(
DRIVE_SYS
)
,
.
IBUF_DELAY
(
IBUF_DELAY_SYS_D
)
,
.
IFD_DELAY
(
IFD_DELAY_SYS_D
))
i_dmapads32
(
.
c
(
cwr
)
,.
t
(
t
)
,.
d
(
iod
[
31
:
0
])
,.
q
(
id0
[
31
:
0
])
,.
dq
(
d
[
31
:
0
]))
;
endmodule
module
dpads32
(
c
,
t
,
d
,
q
,
dq
)
;
module
dpads32
#(
parameter
IOSTANDARD
=
"LVCMOS33"
,
parameter
SLEW
=
"SLOW"
,
parameter
DRIVE
=
8
,
parameter
IBUF_DELAY
=
"0"
,
parameter
IFD_DELAY
=
"0"
)
(
c
,
t
,
d
,
q
,
dq
)
;
input
c
,
t
;
input
[
31
:
0
]
d
;
output
[
31
:
0
]
q
;
...
...
@@ -416,38 +495,70 @@ module dpads32(c,t,d,q,dq);
// s---ynthesis attribute KEEP_HIERARCHY of i_t1 is true
BUF
i_t0
(
.
I
(
t
)
,
.
O
(
t0
))
;
BUF
i_t1
(
.
I
(
t
)
,
.
O
(
t1
))
;
dio1
i_d0
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
0
])
,.
q
(
q
[
0
])
,.
dq
(
dq
[
0
]))
;
dio1
i_d1
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
1
])
,.
q
(
q
[
1
])
,.
dq
(
dq
[
1
]))
;
dio1
i_d2
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
2
])
,.
q
(
q
[
2
])
,.
dq
(
dq
[
2
]))
;
dio1
i_d3
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
3
])
,.
q
(
q
[
3
])
,.
dq
(
dq
[
3
]))
;
dio1
i_d4
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
4
])
,.
q
(
q
[
4
])
,.
dq
(
dq
[
4
]))
;
dio1
i_d5
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
5
])
,.
q
(
q
[
5
])
,.
dq
(
dq
[
5
]))
;
dio1
i_d6
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
6
])
,.
q
(
q
[
6
])
,.
dq
(
dq
[
6
]))
;
dio1
i_d7
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
7
])
,.
q
(
q
[
7
])
,.
dq
(
dq
[
7
]))
;
dio1
i_d8
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
8
])
,.
q
(
q
[
8
])
,.
dq
(
dq
[
8
]))
;
dio1
i_d9
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
9
])
,.
q
(
q
[
9
])
,.
dq
(
dq
[
9
]))
;
dio1
i_d10
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
10
])
,.
q
(
q
[
10
])
,.
dq
(
dq
[
10
]))
;
dio1
i_d11
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
11
])
,.
q
(
q
[
11
])
,.
dq
(
dq
[
11
]))
;
dio1
i_d12
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
12
])
,.
q
(
q
[
12
])
,.
dq
(
dq
[
12
]))
;
dio1
i_d13
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
13
])
,.
q
(
q
[
13
])
,.
dq
(
dq
[
13
]))
;
dio1
i_d14
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
14
])
,.
q
(
q
[
14
])
,.
dq
(
dq
[
14
]))
;
dio1
i_d15
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
15
])
,.
q
(
q
[
15
])
,.
dq
(
dq
[
15
]))
;
dio1
i_d16
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
16
])
,.
q
(
q
[
16
])
,.
dq
(
dq
[
16
]))
;
dio1
i_d17
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
17
])
,.
q
(
q
[
17
])
,.
dq
(
dq
[
17
]))
;
dio1
i_d18
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
18
])
,.
q
(
q
[
18
])
,.
dq
(
dq
[
18
]))
;
dio1
i_d19
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
19
])
,.
q
(
q
[
19
])
,.
dq
(
dq
[
19
]))
;
dio1
i_d20
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
20
])
,.
q
(
q
[
20
])
,.
dq
(
dq
[
20
]))
;
dio1
i_d21
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
21
])
,.
q
(
q
[
21
])
,.
dq
(
dq
[
21
]))
;
dio1
i_d22
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
22
])
,.
q
(
q
[
22
])
,.
dq
(
dq
[
22
]))
;
dio1
i_d23
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
23
])
,.
q
(
q
[
23
])
,.
dq
(
dq
[
23
]))
;
dio1
i_d24
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
24
])
,.
q
(
q
[
24
])
,.
dq
(
dq
[
24
]))
;
dio1
i_d25
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
25
])
,.
q
(
q
[
25
])
,.
dq
(
dq
[
25
]))
;
dio1
i_d26
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
26
])
,.
q
(
q
[
26
])
,.
dq
(
dq
[
26
]))
;
dio1
i_d27
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
27
])
,.
q
(
q
[
27
])
,.
dq
(
dq
[
27
]))
;
dio1
i_d28
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
28
])
,.
q
(
q
[
28
])
,.
dq
(
dq
[
28
]))
;
dio1
i_d29
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
29
])
,.
q
(
q
[
29
])
,.
dq
(
dq
[
29
]))
;
dio1
i_d30
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
30
])
,.
q
(
q
[
30
])
,.
dq
(
dq
[
30
]))
;
dio1
i_d31
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
31
])
,.
q
(
q
[
31
])
,.
dq
(
dq
[
31
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d0
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
0
])
,.
q
(
q
[
0
])
,.
dq
(
dq
[
0
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d1
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
1
])
,.
q
(
q
[
1
])
,.
dq
(
dq
[
1
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d2
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
2
])
,.
q
(
q
[
2
])
,.
dq
(
dq
[
2
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d3
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
3
])
,.
q
(
q
[
3
])
,.
dq
(
dq
[
3
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d4
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
4
])
,.
q
(
q
[
4
])
,.
dq
(
dq
[
4
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d5
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
5
])
,.
q
(
q
[
5
])
,.
dq
(
dq
[
5
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d6
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
6
])
,.
q
(
q
[
6
])
,.
dq
(
dq
[
6
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d7
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
7
])
,.
q
(
q
[
7
])
,.
dq
(
dq
[
7
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d8
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
8
])
,.
q
(
q
[
8
])
,.
dq
(
dq
[
8
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d9
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
9
])
,.
q
(
q
[
9
])
,.
dq
(
dq
[
9
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d10
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
10
])
,.
q
(
q
[
10
])
,.
dq
(
dq
[
10
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d11
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
11
])
,.
q
(
q
[
11
])
,.
dq
(
dq
[
11
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d12
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
12
])
,.
q
(
q
[
12
])
,.
dq
(
dq
[
12
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d13
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
13
])
,.
q
(
q
[
13
])
,.
dq
(
dq
[
13
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d14
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
14
])
,.
q
(
q
[
14
])
,.
dq
(
dq
[
14
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d15
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
15
])
,.
q
(
q
[
15
])
,.
dq
(
dq
[
15
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d16
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
16
])
,.
q
(
q
[
16
])
,.
dq
(
dq
[
16
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d17
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
17
])
,.
q
(
q
[
17
])
,.
dq
(
dq
[
17
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d18
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
18
])
,.
q
(
q
[
18
])
,.
dq
(
dq
[
18
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d19
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
19
])
,.
q
(
q
[
19
])
,.
dq
(
dq
[
19
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d20
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
20
])
,.
q
(
q
[
20
])
,.
dq
(
dq
[
20
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d21
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
21
])
,.
q
(
q
[
21
])
,.
dq
(
dq
[
21
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d22
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
22
])
,.
q
(
q
[
22
])
,.
dq
(
dq
[
22
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d23
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
23
])
,.
q
(
q
[
23
])
,.
dq
(
dq
[
23
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d24
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
24
])
,.
q
(
q
[
24
])
,.
dq
(
dq
[
24
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d25
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
25
])
,.
q
(
q
[
25
])
,.
dq
(
dq
[
25
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d26
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
26
])
,.
q
(
q
[
26
])
,.
dq
(
dq
[
26
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d27
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
27
])
,.
q
(
q
[
27
])
,.
dq
(
dq
[
27
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d28
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
28
])
,.
q
(
q
[
28
])
,.
dq
(
dq
[
28
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d29
(
.
c
(
c
)
,.
t
(
t0
)
,.
d
(
d
[
29
])
,.
q
(
q
[
29
])
,.
dq
(
dq
[
29
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d30
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
30
])
,.
q
(
q
[
30
])
,.
dq
(
dq
[
30
]))
;
dio1
#(
.
IOSTANDARD
(
IOSTANDARD
)
,.
SLEW
(
SLEW
)
,.
DRIVE
(
DRIVE
)
,.
IBUF_DELAY
(
IBUF_DELAY
)
,.
IFD_DELAY
(
IFD_DELAY
))
i_d31
(
.
c
(
c
)
,.
t
(
t1
)
,.
d
(
d
[
31
])
,.
q
(
q
[
31
])
,.
dq
(
dq
[
31
]))
;
endmodule
...
...
@@ -692,68 +803,124 @@ FD_1 #(.INIT(1'b1)) i_dr (.C(c), .D(d0), .Q(dr));
endmodule
module
ipadql
(
g
,
q
,
qr
,
d
)
;
//
module
ipadql
#(
parameter
IOSTANDARD
=
"LVCMOS33"
,
parameter
IBUF_DELAY
=
"0"
,
parameter
IFD_DELAY
=
"0"
)(
g
,
q
,
qr
,
d
)
;
//
input
g
;
output
q
;
output
qr
;
input
d
;
ipadql0
i_q
(
.
g
(
g
)
,.
q
(
q
)
,.
qr
(
qr
)
,.
d
(
d
))
;
ipadql0
#(
.
IOSTANDARD
(
IOSTANDARD
)
,
.
IBUF_DELAY
(
IBUF_DELAY
)
,
.
IFD_DELAY
(
IFD_DELAY
))
i_q
(
.
g
(
g
)
,.
q
(
q
)
,.
qr
(
qr
)
,.
d
(
d
))
;
// s--ynthesis attribute KEEP_HIERARCHY of i_q is "TRUE"
endmodule
module
ipadql0
(
g
,
q
,
qr
,
d
)
;
module
ipadql0
#(
parameter
IOSTANDARD
=
"LVCMOS33"
,
parameter
IBUF_DELAY
=
"0"
,
parameter
IFD_DELAY
=
"0"
)(
g
,
q
,
qr
,
d
)
;
input
g
;
output
q
;
output
qr
;
input
d
;
IBUF
i_q
(
.
I
(
d
)
,
.
O
(
q
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY
))
i_q
(
.
I
(
d
)
,
.
O
(
q
))
;
LD
i_qr
(
.
G
(
g
)
,
.
D
(
q
)
,
.
Q
(
qr
))
;
// synthesis attribute IOB of i_qr is "TRUE"
// synthesis attribute NODELAY of i_q is "TRUE"
endmodule
module
bpadql
(
g
,
q
,
qr
,
io
,
t
,
d
)
;
//
module
bpadql
#(
parameter
IOSTANDARD
=
"LVCMOS33"
,
parameter
SLEW
=
"SLOW"
,
parameter
DRIVE
=
8
,
parameter
IBUF_DELAY
=
"0"
,
parameter
IFD_DELAY
=
"0"
)(
g
,
q
,
qr
,
io
,
t
,
d
)
;
//
input
g
;
output
q
;
output
qr
;
inout
io
;
input
t
;
input
d
;
bpadql0
i_q
(
.
g
(
g
)
,.
q
(
q
)
,.
qr
(
qr
)
,.
io
(
io
)
,.
t
(
t
)
,.
d
(
d
))
;
// s--ynthesis attribute KEEP_HIERARCHY of i_q is "TRUE"
bpadql0
#(
.
IOSTANDARD
(
IOSTANDARD
)
,
.
SLEW
(
SLEW
)
,
.
DRIVE
(
DRIVE
)
,
.
IBUF_DELAY
(
IBUF_DELAY
)
,
.
IFD_DELAY
(
IFD_DELAY
)
)
i_q
(
.
g
(
g
)
,.
q
(
q
)
,.
qr
(
qr
)
,.
io
(
io
)
,.
t
(
t
)
,.
d
(
d
))
;
endmodule
module
bpadql0
(
g
,
q
,
qr
,
io
,
t
,
d
)
;
module
bpadql0
#(
parameter
IOSTANDARD
=
"LVCMOS33"
,
parameter
SLEW
=
"SLOW"
,
parameter
DRIVE
=
8
,
parameter
IBUF_DELAY
=
"0"
,
parameter
IFD_DELAY
=
"0"
)(
g
,
q
,
qr
,
io
,
t
,
d
)
;
input
g
;
output
q
;
output
qr
;
inout
io
;
input
t
;
input
d
;
IOBUF
i_q
(
.
I
(
d
)
,
.
T
(
t
)
,.
O
(
q
)
,
.
IO
(
io
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD
)
,
.
SLEW
(
SLEW
)
,
.
DRIVE
(
DRIVE
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY
)
)
i_q
(
.
I
(
d
)
,
.
T
(
t
)
,.
O
(
q
)
,
.
IO
(
io
))
;
LD
i_qr
(
.
G
(
g
)
,
.
D
(
q
)
,
.
Q
(
qr
))
;
// synthesis attribute IOB of i_qr is "TRUE"
// synthesis attribute NODELAY of i_q is "TRUE"
endmodule
module
dio1
(
c
,
t
,
d
,
q
,
dq
)
;
module
dio1
#(
parameter
IOSTANDARD
=
"LVCMOS33"
,
parameter
SLEW
=
"SLOW"
,
parameter
DRIVE
=
8
,
parameter
IBUF_DELAY
=
"0"
,
parameter
IFD_DELAY
=
"0"
)(
c
,
t
,
d
,
q
,
dq
)
;
input
c
;
input
t
;
input
d
;
output
q
;
inout
dq
;
dio0
i_dq
(
.
c
(
c
)
,.
t
(
t
)
,.
d
(
d
)
,.
q
(
q
)
,.
dq
(
dq
))
;
dio0
#(
.
IOSTANDARD
(
IOSTANDARD
)
,
.
SLEW
(
SLEW
)
,
.
DRIVE
(
DRIVE
)
,
.
IBUF_DELAY
(
IBUF_DELAY
)
,
.
IFD_DELAY
(
IFD_DELAY
)
)
i_dq
(
.
c
(
c
)
,.
t
(
t
)
,.
d
(
d
)
,.
q
(
q
)
,.
dq
(
dq
))
;
// s--ynthesis attribute KEEP_HIERARCHY of i_dq is "TRUE"
endmodule
module
dio0
(
c
,
t
,
d
,
q
,
dq
)
;
module
dio0
#(
parameter
IOSTANDARD
=
"LVCMOS33"
,
parameter
SLEW
=
"SLOW"
,
parameter
DRIVE
=
8
,
parameter
IBUF_DELAY
=
"0"
,
parameter
IFD_DELAY
=
"0"
)(
c
,
t
,
d
,
q
,
dq
)
;
input
c
;
input
t
;
input
d
;
...
...
@@ -762,10 +929,15 @@ module dio0(c,t,d,q,dq);
wire
q0
;
IOBUF
i_dq
(
.
I
(
d
)
,
.
T
(
t
)
,.
O
(
q0
)
,
.
IO
(
dq
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD
)
,
.
SLEW
(
SLEW
)
,
.
DRIVE
(
DRIVE
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY
)
)
i_dq
(
.
I
(
d
)
,
.
T
(
t
)
,.
O
(
q0
)
,
.
IO
(
dq
))
;
FD
i_q
(
.
C
(
c
)
,
.
D
(
q0
)
,
.
Q
(
q
))
;
// synthesis attribute IOB of i_q is "TRUE"
// synthesis attribute NODELAY of i_dq is "TRUE"
endmodule
sensor/sensor_phase353.v
View file @
8d77d7f8
...
...
@@ -26,7 +26,12 @@
**
*/
module
sensor_phase353
(
cclk
,
// command clock (posedge, invert on input if needed)
module
sensor_phase353
#(
parameter
IOSTANDARD_SENSOR
=
"LVCMOS33"
,
parameter
IFD_DELAY_SENSOR_VHACT
=
"0"
,
parameter
IBUF_DELAY_SENSOR_VHACT
=
"0"
)(
cclk
,
// command clock (posedge, invert on input if needed)
wcmd
,
// write command
cmd
,
// CPU write data [5:0]
// 0 - nop, just reset status data
...
...
@@ -72,7 +77,7 @@ NET "hact_length*" TIG;
*/
parameter
MIN_VACT_PERIOD
=
130
;
// 3-130, to increase maximal value (130) - chnge counter width
`ifdef
IVERILOG
`ifdef
SIMULATION
parameter
IS_SIMUL
=
1
;
`else
parameter
IS_SIMUL
=
0
;
...
...
@@ -278,8 +283,16 @@ BUFGMUX i_pclk (.O(gclk_idata), .I0(dcm2x), .I1(dcm2x180), .S(inv_gclk_idata))
wire
ihact00
,
ivact00
;
/// some are double cycle
IBUF
i_hact
(
.
I
(
HACT
)
,
.
O
(
ihact
))
;
IBUF
i_vact
(
.
I
(
VACT
)
,
.
O
(
ivact
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_VHACT
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_VHACT
)
)
i_hact
(
.
I
(
HACT
)
,
.
O
(
ihact
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_VHACT
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_VHACT
)
)
i_vact
(
.
I
(
VACT
)
,
.
O
(
ivact
))
;
always
@
(
posedge
gclk_idata
)
begin
hact_q1
<=
ihact00
;
vact_q1
<=
ivact00
;
...
...
@@ -307,6 +320,7 @@ BUFGMUX i_pclk (.O(gclk_idata), .I0(dcm2x), .I1(dcm2x180), .S(inv_gclk_idata))
// FD i_vact_q1 (.C(gclk_idata), .D(ivact00), .Q(vact_q1));
FDCE
i_sync_alt_d0
(
.
Q
(
sync_alt_d0
)
,
.
C
(
gclk_idata
)
,.
CE
(
en_idata
)
,.
CLR
(
1'b0
)
,.
D
(
sync_alt
))
;
FDCE
i_idi_0
(
.
Q
(
idi
[
0
])
,
.
C
(
gclk_idata
)
,.
CE
(
en_idata
)
,.
CLR
(
1'b0
)
,.
D
(
DI
[
0
]))
;
FDCE
i_idi_1
(
.
Q
(
idi
[
1
])
,
.
C
(
gclk_idata
)
,.
CE
(
en_idata
)
,.
CLR
(
1'b0
)
,.
D
(
DI
[
1
]))
;
FDCE
i_idi_2
(
.
Q
(
idi
[
2
])
,
.
C
(
gclk_idata
)
,.
CE
(
en_idata
)
,.
CLR
(
1'b0
)
,.
D
(
DI
[
2
]))
;
...
...
@@ -319,34 +333,7 @@ BUFGMUX i_pclk (.O(gclk_idata), .I0(dcm2x), .I1(dcm2x180), .S(inv_gclk_idata))
FDCE
i_idi_9
(
.
Q
(
idi
[
9
])
,
.
C
(
gclk_idata
)
,.
CE
(
en_idata
)
,.
CLR
(
1'b0
)
,.
D
(
DI
[
9
]))
;
FDCE
i_idi_10
(
.
Q
(
idi
[
10
])
,
.
C
(
gclk_idata
)
,.
CE
(
en_idata
)
,.
CLR
(
1'b0
)
,.
D
(
DI
[
10
]))
;
FDCE
i_idi_11
(
.
Q
(
idi
[
11
])
,
.
C
(
gclk_idata
)
,.
CE
(
en_idata
)
,.
CLR
(
1'b0
)
,.
D
(
DI
[
11
]))
;
// synthesis attribute IOB of i_sync_alt_d0 is "TRUE"
// synthesis attribute IOB of i_idi_0 is "TRUE"
// synthesis attribute IOB of i_idi_1 is "TRUE"
// synthesis attribute IOB of i_idi_2 is "TRUE"
// synthesis attribute IOB of i_idi_3 is "TRUE"
// synthesis attribute IOB of i_idi_4 is "TRUE"
// synthesis attribute IOB of i_idi_5 is "TRUE"
// synthesis attribute IOB of i_idi_6 is "TRUE"
// synthesis attribute IOB of i_idi_7 is "TRUE"
// synthesis attribute IOB of i_idi_8 is "TRUE"
// synthesis attribute IOB of i_idi_9 is "TRUE"
// synthesis attribute IOB of i_idi_10 is "TRUE"
// synthesis attribute IOB of i_idi_11 is "TRUE"
// synthesis attribute NODELAY of i_sync_alt_d0 is "TRUE"
// synthesis attribute NODELAY of i_idi_0 is "TRUE"
// synthesis attribute NODELAY of i_idi_1 is "TRUE"
// synthesis attribute NODELAY of i_idi_2 is "TRUE"
// synthesis attribute NODELAY of i_idi_3 is "TRUE"
// synthesis attribute NODELAY of i_idi_4 is "TRUE"
// synthesis attribute NODELAY of i_idi_5 is "TRUE"
// synthesis attribute NODELAY of i_idi_6 is "TRUE"
// synthesis attribute NODELAY of i_idi_7 is "TRUE"
// synthesis attribute NODELAY of i_idi_8 is "TRUE"
// synthesis attribute NODELAY of i_idi_9 is "TRUE"
// synthesis attribute NODELAY of i_idi_10 is "TRUE"
// synthesis attribute NODELAY of i_idi_11 is "TRUE"
// synthesis attribute NODELAY of i_ihact is "TRUE"
// synthesis attribute NODELAY of i_ivact is "TRUE"
reg
[
1
:
0
]
shact_zero
;
// shact was zero (inactive), sync to gclk_data
always
@
(
posedge
gclk_idata
)
if
(
en_idata
)
begin
idi14
[
13
:
4
]
<=
idi
[
11
:
2
]
;
...
...
sensor/sensorpads353.v
View file @
8d77d7f8
...
...
@@ -28,7 +28,21 @@
module
sensorpads
(
/// interface to DCM
module
sensorpads
#(
parameter
IOSTANDARD_SENSOR
=
"LVCMOS33"
,
parameter
SLEW_SENSOR
=
"SLOW"
,
parameter
DRIVE_SENSOR
=
4
,
parameter
IOSTANDARD_SENSOR_CLK
=
"LVCMOS33"
,
parameter
SLEW_SENSOR_CLK
=
"SLOW"
,
parameter
DRIVE_SENSOR_CLK
=
4
,
parameter
IFD_DELAY_SENSOR_PXD
=
"0"
,
parameter
IFD_DELAY_SENSOR_VHACT
=
"0"
,
parameter
IBUF_DELAY_SENSOR_PXD
=
"0"
,
parameter
IBUF_DELAY_SENSOR_VHACT
=
"0"
)
(
sclk
,
// system clock, @negedge
cmd
,
// [6:0] command for phase adjustment @ negedge (sclk) MSB - reset pclk2x DCM
wcmd
,
// write command@ negedge (slck)
...
...
@@ -137,8 +151,11 @@ module sensorpads (/// interface to DCM
wire
[
11
:
0
]
pxdi
;
//Automatic clock placement failed. Please attempt to analyze the global clocking required for this design and either lock the clock...
assign
fifo_clkin
=
(
clk_sel
&&
!
dclkmode
)
?
sens_clk
:
clk
;
sensor_phase353
i_sensor_phase
(
.
cclk
(
!
sclk
)
,
// command clock (posedge, invert on input if needed)
sensor_phase353
#(
.
IOSTANDARD_SENSOR
(
IOSTANDARD_SENSOR
)
,
.
IFD_DELAY_SENSOR_VHACT
(
IFD_DELAY_SENSOR_VHACT
)
,
.
IBUF_DELAY_SENSOR_VHACT
(
IBUF_DELAY_SENSOR_VHACT
)
)
i_sensor_phase
(
.
cclk
(
!
sclk
)
,
// command clock (posedge, invert on input if needed)
.
wcmd
(
wcmd
)
,
// write command
.
cmd
(
cmd
[
5
:
0
])
,
// CPU write data [5:0]
// 0 - nop, just reset status data
...
...
@@ -176,26 +193,102 @@ sensor_phase353
IOBUF
i_mrst
(
.
I
(
imrst
)
,
.
IO
(
mrst
)
,
.
T
(
xpgmen
)
,
.
O
(
xfpgadone
))
;
OBUF
i_arst
(
.
I
(
xpgmen
?
xfpgatms
:
iarst
)
,
.
O
(
arst
))
;
OBUF
i_aro
(
.
I
(
xpgmen
?
xfpgatck
:
iaro
)
,
.
O
(
aro
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
SLEW
(
SLEW_SENSOR
)
,
.
DRIVE
(
DRIVE_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_mrst
(
.
I
(
imrst
)
,
.
IO
(
mrst
)
,
.
T
(
xpgmen
)
,
.
O
(
xfpgadone
))
;
OBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
SLEW
(
SLEW_SENSOR
)
,
.
DRIVE
(
DRIVE_SENSOR
)
)
i_arst
(
.
I
(
xpgmen
?
xfpgatms
:
iarst
)
,
.
O
(
arst
))
;
OBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
SLEW
(
SLEW_SENSOR
)
,
.
DRIVE
(
DRIVE_SENSOR
)
)
i_aro
(
.
I
(
xpgmen
?
xfpgatck
:
iaro
)
,
.
O
(
aro
))
;
IOBUF
i_dclk
(
.
I
(
clk
)
,
.
IO
(
dclk
)
,
.
T
(
dclkmode
)
,
.
O
(
idclk
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR_CLK
)
,
.
SLEW
(
SLEW_SENSOR_CLK
)
,
.
DRIVE
(
DRIVE_SENSOR_CLK
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_dclk
(
.
I
(
clk
)
,
.
IO
(
dclk
)
,
.
T
(
dclkmode
)
,
.
O
(
idclk
))
;
IBUF
i_bpf
(
.
I
(
bpf
)
,
.
O
(
sens_clk
))
;
IOBUF
i_pxd0
(
.
IO
(
pxd
[
0
])
,
.
I
(
xpgmen
?
xfpgatdi
:
cnvctl
[
0
])
,
.
T
(
~
(
cnven
|
xpgmen
))
,
.
O
(
pxdi
[
0
]))
;
IOBUF
i_pxd1
(
.
IO
(
pxd
[
1
])
,
.
I
(
cnvctl
[
1
])
,
.
T
(
~
cnven
|
xpgmen
)
,
.
O
(
pxdi
[
1
]))
;
IBUF
i_pxd2
(
.
I
(
pxd
[
2
])
,
.
O
(
pxdi
[
2
]))
;
IBUF
i_pxd3
(
.
I
(
pxd
[
3
])
,
.
O
(
pxdi
[
3
]))
;
IBUF
i_pxd4
(
.
I
(
pxd
[
4
])
,
.
O
(
pxdi
[
4
]))
;
IBUF
i_pxd5
(
.
I
(
pxd
[
5
])
,
.
O
(
pxdi
[
5
]))
;
IBUF
i_pxd6
(
.
I
(
pxd
[
6
])
,
.
O
(
pxdi
[
6
]))
;
IBUF
i_pxd7
(
.
I
(
pxd
[
7
])
,
.
O
(
pxdi
[
7
]))
;
IBUF
i_pxd8
(
.
I
(
pxd
[
8
])
,
.
O
(
pxdi
[
8
]))
;
IBUF
i_pxd9
(
.
I
(
pxd
[
9
])
,
.
O
(
pxdi
[
9
]))
;
IBUF
i_pxd10
(
.
I
(
pxd
[
10
])
,
.
O
(
pxdi
[
10
]))
;
IBUF
i_pxd11
(
.
I
(
pxd
[
11
])
,
.
O
(
pxdi
[
11
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_bpf
(
.
I
(
bpf
)
,
.
O
(
sens_clk
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
SLEW
(
SLEW_SENSOR
)
,
.
DRIVE
(
DRIVE_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd0
(
.
IO
(
pxd
[
0
])
,
.
I
(
xpgmen
?
xfpgatdi
:
cnvctl
[
0
])
,
.
T
(
~
(
cnven
|
xpgmen
))
,
.
O
(
pxdi
[
0
]))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
SLEW
(
SLEW_SENSOR
)
,
.
DRIVE
(
DRIVE_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd1
(
.
IO
(
pxd
[
1
])
,
.
I
(
cnvctl
[
1
])
,
.
T
(
~
cnven
|
xpgmen
)
,
.
O
(
pxdi
[
1
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd2
(
.
I
(
pxd
[
2
])
,
.
O
(
pxdi
[
2
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd3
(
.
I
(
pxd
[
3
])
,
.
O
(
pxdi
[
3
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd4
(
.
I
(
pxd
[
4
])
,
.
O
(
pxdi
[
4
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd5
(
.
I
(
pxd
[
5
])
,
.
O
(
pxdi
[
5
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd6
(
.
I
(
pxd
[
6
])
,
.
O
(
pxdi
[
6
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd7
(
.
I
(
pxd
[
7
])
,
.
O
(
pxdi
[
7
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd8
(
.
I
(
pxd
[
8
])
,
.
O
(
pxdi
[
8
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd9
(
.
I
(
pxd
[
9
])
,
.
O
(
pxdi
[
9
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd10
(
.
I
(
pxd
[
10
])
,
.
O
(
pxdi
[
10
]))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SENSOR_PXD
)
)
i_pxd11
(
.
I
(
pxd
[
11
])
,
.
O
(
pxdi
[
11
]))
;
assign
xfpgatdo
=
pxdi
[
1
]
;
//pxdi[11:0]
...
...
x353.v
View file @
8d77d7f8
...
...
@@ -32,17 +32,49 @@
`define
debug_mcontr_reset
// `define DEBUG_IMU
module
x353
#(
parameter
IOSTANDARD_CLK
=
"LVCMOS33"
,
parameter
IOSTANDARD_SYS
=
"LVCMOS33"
,
parameter
SLEW_SYS
=
"SLOW"
,
parameter
DRIVE_SYS
=
8
,
parameter
IBUF_DELAY_SYS_A
=
"0"
,
parameter
IFD_DELAY_SYS_A
=
"0"
,
parameter
IBUF_DELAY_SYS_D
=
"0"
,
parameter
IFD_DELAY_SYS_D
=
"0"
,
parameter
IBUF_DELAY_SYS_WOE
=
"0"
,
parameter
IFD_DELAY_SYS_WOE
=
"0"
,
parameter
IBUF_DELAY_SYS_CE
=
"0"
,
parameter
IFD_DELAY_SYS_CE
=
"0"
,
parameter
IBUF_DELAY_SYS_DACK
=
"0"
,
parameter
IFD_DELAY_SYS_DACK
=
"0"
,
parameter
IBUF_DELAY_SYS_SDCLK
=
"0"
,
parameter
IFD_DELAY_SYS_SDCLK
=
"0"
,
parameter
SLEW_SYS_DREQ
=
"SLOW"
,
parameter
DRIVE_SYS_DREQ
=
4
,
parameter
IOSTANDARD_EXT
=
"LVCMOS33"
,
parameter
SLEW_EXT
=
"SLOW"
,
parameter
DRIVE_EXT
=
12
,
parameter
IOSTANDARD_SENSOR
=
"LVCMOS
33
"
,
parameter
IOSTANDARD_SENSOR
=
"LVCMOS
25
"
,
parameter
SLEW_SENSOR
=
"SLOW"
,
parameter
DRIVE_SENSOR
=
4
,
parameter
IOSTANDARD_SENSOR_CLK
=
"LVCMOS
33
"
,
parameter
IOSTANDARD_SENSOR_CLK
=
"LVCMOS
25
"
,
parameter
SLEW_SENSOR_CLK
=
"SLOW"
,
parameter
DRIVE_SENSOR_CLK
=
4
,
parameter
IFD_DELAY_SENSOR_PXD
=
"0"
,
parameter
IFD_DELAY_SENSOR_VHACT
=
"0"
,
parameter
IBUF_DELAY_SENSOR_PXD
=
"0"
,
parameter
IBUF_DELAY_SENSOR_VHACT
=
"0"
,
parameter
IOSTANDARD_SDRAM
=
"SSTL2_I"
,
parameter
DRIVE_SDRAM_DATA
=
12
,
...
...
@@ -770,28 +802,52 @@ wire [3:0] restart; // reinitialize mcontr channels (normally after frame syn
wire
drv_bus
=
1'b0
;
// drive system bus (to write to system memory)
wire
nevr
;
// never true;
wire
isys_sdclki
,
ibrin
;
assign
BROUT
=
1'b0
;
assign
SYS_BUSEN
=
1'b1
;
IBUF
i_SYS_SDCLKI
(
.
I
(
SYS_SDCLKI
)
,
.
O
(
isys_sdclki
))
;
IBUF
i_BRIN
(
.
I
(
BRIN
)
,
.
O
(
ibrin
))
;
// assign BROUT=1'b0;
OBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
DRIVE
(
DRIVE_SYS_DREQ
)
,
.
SLEW
(
SLEW_SYS_DREQ
))
i_BROUT
(
.
I
(
1'b0
)
,
.
O
(
BROUT
))
;
// assign SYS_BUSEN=1'b1;
OBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
DRIVE
(
DRIVE_SYS_DREQ
)
,
.
SLEW
(
SLEW_SYS_DREQ
))
i_SYS_BUSEN
(
.
I
(
1'b1
)
,
.
O
(
SYS_BUSEN
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SYS_SDCLK
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SYS_SDCLK
))
i_SYS_SDCLKI
(
.
I
(
SYS_SDCLKI
)
,
.
O
(
isys_sdclki
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
IBUF_DELAY_VALUE
(
IBUF_DELAY_SYS_DACK
)
,
.
IFD_DELAY_VALUE
(
IFD_DELAY_SYS_DACK
))
i_BRIN
(
.
I
(
BRIN
)
,
.
O
(
ibrin
))
;
wire
idummyvref
;
IOBUF
i_dummyvref
(
.
I
(
1'b0
)
,
.
T
(
nevr
)
,
.
O
(
idummyvref
)
,
.
IO
(
DUMMYVFEF
))
;
IBUF
i_always0
(
.
I
(
ALWAYS0
)
,.
O
(
nevr
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SDRAM
))
i_dummyvref
(
.
I
(
1'b0
)
,
.
T
(
nevr
)
,
.
O
(
idummyvref
)
,
.
IO
(
DUMMYVFEF
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SENSOR
))
i_always0
(
.
I
(
ALWAYS0
)
,.
O
(
nevr
))
;
// same bank as sesnor, 2.5V
// That will keep isys_sdclki && ibrin && isenspgm && idummyvref && sdcl_fb from being optimized into oblivion
wire
sdcl_fb
;
wire
never
=
nevr
&&
isys_sdclki
&&
ibrin
&&
idummyvref
&&
sdcl_fb
;
IOBUF
i_BA0
(
.
I
(
1'b0
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
BA
[
0
]))
;
IOBUF
i_BA1
(
.
I
(
1'b0
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
BA
[
1
]))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
))
i_BA0
(
.
I
(
1'b0
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
BA
[
0
]))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
))
i_BA1
(
.
I
(
1'b0
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
BA
[
1
]))
;
IOBUF
i_SYS_SDWE
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDWE
))
;
IOBUF
i_SYS_SDCAS
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDCAS
))
;
IOBUF
i_SYS_SDRAS
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDRAS
))
;
IOBUF
i_SYS_SDCLK
(
.
I
(
1'b0
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDCLK
))
;
IOBUF
i_BG
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
BG
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
))
i_SYS_SDWE
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDWE
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
))
i_SYS_SDCAS
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDCAS
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
))
i_SYS_SDRAS
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDRAS
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
))
i_SYS_SDCLK
(
.
I
(
1'b0
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
SYS_SDCLK
))
;
IOBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
))
i_BG
(
.
I
(
1'b1
)
,
.
T
(
!
never
)
,.
O
()
,
.
IO
(
BG
))
;
// synchronize vacts to negedge of the system clock (sclk) -> vacts_sclk
FDCE
i_vacts_sclki
(
.
C
(
pclk
)
,.
CE
(
vacts
)
,.
CLR
(
vacts_sclko
[
1
])
,.
D
(
1'b1
)
,
.
Q
(
vacts_sclki
))
;
...
...
@@ -799,7 +855,19 @@ FDCE i_vacts_sclki(.C(pclk),.CE(vacts),.CLR(vacts_sclko[1]),.D(1'b1), .Q(vacts_s
always
@
(
negedge
sclk0
)
vacts_sclko
[
1
:
0
]
<=
{
vacts_sclko
[
0
]
&
~
blockvsync
,
vacts_sclki
&&
!
vacts_sclko
[
0
]
&&
!
vacts_sclko
[
1
]
};
sysinterface
i_sysinterface
(
.
clk
(
sclk0
)
,
sysinterface
#(
.
IOSTANDARD_SYS
(
IOSTANDARD_SYS
)
,
.
SLEW_SYS
(
SLEW_SYS
)
,
.
DRIVE_SYS
(
DRIVE_SYS
)
,
.
IBUF_DELAY_SYS_A
(
IBUF_DELAY_SYS_A
)
,
.
IFD_DELAY_SYS_A
(
IFD_DELAY_SYS_A
)
,
.
IBUF_DELAY_SYS_D
(
IBUF_DELAY_SYS_D
)
,
.
IFD_DELAY_SYS_D
(
IFD_DELAY_SYS_D
)
,
.
IBUF_DELAY_SYS_WOE
(
IBUF_DELAY_SYS_WOE
)
,
.
IFD_DELAY_SYS_WOE
(
IFD_DELAY_SYS_WOE
)
,
.
IBUF_DELAY_SYS_CE
(
IBUF_DELAY_SYS_CE
)
,
.
IFD_DELAY_SYS_CE
(
IFD_DELAY_SYS_CE
)
)
i_sysinterface
(
.
clk
(
sclk0
)
,
.
drv_bus
(
drv_bus
)
,
// drive system bus (to write to system memory)
.
d
(
D
[
31
:
0
])
,
// 32 bit D[31:0] data pads
.
oe
(
OE
)
,
// OE pad
...
...
@@ -965,7 +1033,8 @@ timestamp353 i_timestamp353(.mclk(sclk0), // system clock (negedge)
//wire dcm_locked;
//wire [7:0] dcm_status;
clockios353
i_iclockios
(
.
CLK0
(
CLK0
)
,
// input clock pad - 120MHz
clockios353
#(
.
IOSTANDARD
(
IOSTANDARD_CLK
))
i_iclockios
(
.
CLK0
(
CLK0
)
,
// input clock pad - 120MHz
.
sclk0
(
sclk0
)
,
// global clock, 120MHz, phase=0 (addresses, commands should be strobed at neg edge)
.
sclk180
(
sclk180
)
,
// global clock, 120MHz, phase=180 (maybe will not be needed)
.
sclk270
(
sclk270
)
,
// global clock, 120MHz, phase=270 (strobe data write to sdram)
...
...
@@ -979,7 +1048,7 @@ timestamp353 i_timestamp353(.mclk(sclk0), // system clock (negedge)
//wire pclkig; // global buffered pclki (maybe not needed at all - just to drive sensor_phase)?
//wire sens_clk; // clock from sensor
IBUF
i_pclki
(
.
I
(
CLK1
)
,
.
O
(
pclki
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_CLK
))
i_pclki
(
.
I
(
CLK1
)
,
.
O
(
pclki
))
;
//assign pclkig= pclki;
//assign pclkig= pclk;
...
...
@@ -1010,14 +1079,21 @@ BUFGMUX i_pclk (.O(pclk), .I0(pclki), .I1(sens_clk), .S(|cb_pclksrc[1:0]));
)
;
dmapads
i_dmapads
(
.
dreq0
(
DREQ0
)
,
.
dack0
(
DACK0
)
,
.
idreq0
(
idreq0
)
,
.
idack0
(
idack0
)
,
.
dreq1
(
DREQ1
)
,
.
dack1
(
DACK1
)
,
.
idreq1
(
idreq1
)
,
.
idack1
(
idack1
)
dmapads
#(
.
IOSTANDARD_SYS
(
IOSTANDARD_SYS
)
,
.
SLEW_SYS_DREQ
(
SLEW_SYS_DREQ
)
,
.
DRIVE_SYS_DREQ
(
DRIVE_SYS_DREQ
)
,
.
IBUF_DELAY_SYS_DACK
(
IBUF_DELAY_SYS_DACK
)
,
.
IFD_DELAY_SYS_DACK
(
IFD_DELAY_SYS_DACK
)
)
i_dmapads
(
.
dreq0
(
DREQ0
)
,
.
dack0
(
DACK0
)
,
.
idreq0
(
idreq0
)
,
.
idack0
(
idack0
)
,
.
dreq1
(
DREQ1
)
,
.
dack1
(
DACK1
)
,
.
idreq1
(
idreq1
)
,
.
idack1
(
idack1
)
)
;
//cb_pxd14
assign
ihact
=
iihact
;
...
...
@@ -1039,12 +1115,17 @@ end
sensorpads
#(
.
IOSTANDARD_SENSOR
(
IOSTANDARD_SENSOR
)
,
.
SLEW_SENSOR
(
SLEW_SENSOR
)
,
.
DRIVE_SENSOR
(
DRIVE_SENSOR
)
,
.
IOSTANDARD_SENSOR_CLK
(
IOSTANDARD_SENSOR_CLK
)
,
.
SLEW_SENSOR_CLK
(
SLEW_SENSOR_CLK
)
,
.
DRIVE_SENSOR_CLK
(
DRIVE_SENSOR_CLK
)
.
IOSTANDARD_SENSOR
(
IOSTANDARD_SENSOR
)
,
.
SLEW_SENSOR
(
SLEW_SENSOR
)
,
.
DRIVE_SENSOR
(
DRIVE_SENSOR
)
,
.
IOSTANDARD_SENSOR_CLK
(
IOSTANDARD_SENSOR_CLK
)
,
.
SLEW_SENSOR_CLK
(
SLEW_SENSOR_CLK
)
,
.
DRIVE_SENSOR_CLK
(
DRIVE_SENSOR_CLK
)
,
.
IFD_DELAY_SENSOR_PXD
(
IFD_DELAY_SENSOR_PXD
)
,
.
IFD_DELAY_SENSOR_VHACT
(
IFD_DELAY_SENSOR_VHACT
)
,
.
IBUF_DELAY_SENSOR_PXD
(
IBUF_DELAY_SENSOR_PXD
)
,
.
IBUF_DELAY_SENSOR_VHACT
(
IBUF_DELAY_SENSOR_VHACT
)
)
i_sensorpads
(
.
sclk
(
sclk0
)
,
// system clock, @negedge
.
cmd
(
idi
[
10
:
4
])
,
// [6:0] command for phase adjustment @ negedge (slck) (MSB - reset x2 DCM)
...
...
@@ -1743,18 +1824,22 @@ end
)
;
// [2:0] current frame modulo 8
OBUF
i_irq
(
.
I
(
!
iirq
)
,
.
O
(
IRQ
)
)
;
OBUF
#(
.
IOSTANDARD
(
IOSTANDARD_SYS
)
,
.
DRIVE
(
DRIVE_SYS
)
,
.
SLEW
(
SLEW_SYS
))
i_irq
(
.
I
(
!
iirq
)
,
.
O
(
IRQ
)
)
;
// dummy module instances
(
*
keep
*
)
wire
iclk2
;
// SuppressThisWarning Veditor UNUSED
IBUF
i_iclk2
(
.
I
(
CLK2
)
,
.
O
(
iclk2
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_CLK
))
i_iclk2
(
.
I
(
CLK2
)
,
.
O
(
iclk2
))
;
(
*
keep
*
)
wire
iclk4
;
// SuppressThisWarning Veditor UNUSED
IBUF
i_iclk4
(
.
I
(
CLK4
)
,
.
O
(
iclk4
))
;
IBUF
i_iclk3
(
.
I
(
CLK3
)
,
.
O
(
iclk3
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_CLK
))
i_iclk4
(
.
I
(
CLK4
)
,
.
O
(
iclk4
))
;
IBUF
#(
.
IOSTANDARD
(
IOSTANDARD_CLK
))
i_iclk3
(
.
I
(
CLK3
)
,
.
O
(
iclk3
))
;
// temporary assignments for outputs - connect later where it belongs
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment