Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x393
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
x393
Commits
71cc5ef4
Commit
71cc5ef4
authored
Mar 31, 2016
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Built with parallel sensors, compatible with serial (single parameter switch)
parent
3f49ecae
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
28 additions
and
41 deletions
+28
-41
.project
.project
+11
-11
fpga_version.vh
fpga_version.vh
+3
-1
sensor_channel.v
sensor/sensor_channel.v
+4
-1
system_defines.vh
system_defines.vh
+1
-1
x393.bit
x393.bit
+0
-0
x393_timing.tcl
x393_timing.tcl
+9
-27
No files found.
.project
View file @
71cc5ef4
...
@@ -62,52 +62,52 @@
...
@@ -62,52 +62,52 @@
<link>
<link>
<name>
vivado_logs/VivadoBitstream.log
</name>
<name>
vivado_logs/VivadoBitstream.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoBitstream-201603
2910334297
0.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoBitstream-201603
3018455995
0.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoOpt.log
</name>
<name>
vivado_logs/VivadoOpt.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoOpt-201603
2910334297
0.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoOpt-201603
3018455995
0.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoOptPhys.log
</name>
<name>
vivado_logs/VivadoOptPhys.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoOptPhys-201603
2910334297
0.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoOptPhys-201603
3018455995
0.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoOptPower.log
</name>
<name>
vivado_logs/VivadoOptPower.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoOptPower-201603
2910334297
0.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoOptPower-201603
3018455995
0.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoPlace.log
</name>
<name>
vivado_logs/VivadoPlace.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoPlace-201603
2910334297
0.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoPlace-201603
3018455995
0.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoRoute.log
</name>
<name>
vivado_logs/VivadoRoute.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoRoute-201603
2910334297
0.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoRoute-201603
3018455995
0.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoSynthesis.log
</name>
<name>
vivado_logs/VivadoSynthesis.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoSynthesis-201603
29102811515
.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoSynthesis-201603
30184559950
.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoTimimgSummaryReportImplemented.log
</name>
<name>
vivado_logs/VivadoTimimgSummaryReportImplemented.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportImplemented-201603
2910334297
0.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportImplemented-201603
3018455995
0.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoTimimgSummaryReportSynthesis.log
</name>
<name>
vivado_logs/VivadoTimimgSummaryReportSynthesis.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportSynthesis-201603
29102811515
.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportSynthesis-201603
30184559950
.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_logs/VivadoTimingReportSynthesis.log
</name>
<name>
vivado_logs/VivadoTimingReportSynthesis.log
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_logs/VivadoTimingReportSynthesis-201603
29102811515
.log
</location>
<location>
/home/andrey/git/x393/vivado_logs/VivadoTimingReportSynthesis-201603
30184559950
.log
</location>
</link>
</link>
<link>
<link>
<name>
vivado_state/x393-opt-phys.dcp
</name>
<name>
vivado_state/x393-opt-phys.dcp
</name>
...
@@ -127,7 +127,7 @@
...
@@ -127,7 +127,7 @@
<link>
<link>
<name>
vivado_state/x393-synth.dcp
</name>
<name>
vivado_state/x393-synth.dcp
</name>
<type>
1
</type>
<type>
1
</type>
<location>
/home/andrey/git/x393/vivado_state/x393-synth-201603
29102811515
.dcp
</location>
<location>
/home/andrey/git/x393/vivado_state/x393-synth-201603
30184559950
.dcp
</location>
</link>
</link>
</linkedResources>
</linkedResources>
</projectDescription>
</projectDescription>
fpga_version.vh
View file @
71cc5ef4
...
@@ -32,7 +32,9 @@
...
@@ -32,7 +32,9 @@
* with at least one of the Free Software programs.
* with at least one of the Free Software programs.
*******************************************************************************/
*******************************************************************************/
parameter FPGA_VERSION = 32'h0393007f; // More constraints files tweaking
parameter FPGA_VERSION = 32'h03930081; // re-started parallel
// parameter FPGA_VERSION = 32'h03930080; // serial, failed timing, >84%
// parameter FPGA_VERSION = 32'h0393007f; // More constraints files tweaking
// parameter FPGA_VERSION = 32'h0393007e; // Trying .tcl constraints instead of xdc - timing met
// parameter FPGA_VERSION = 32'h0393007e; // Trying .tcl constraints instead of xdc - timing met
// parameter FPGA_VERSION = 32'h0393007d; // Changing IMU logger LOGGER_PAGE_IMU 0-> 3 to avoid overlap with other registers. Timing met
// parameter FPGA_VERSION = 32'h0393007d; // Changing IMU logger LOGGER_PAGE_IMU 0-> 3 to avoid overlap with other registers. Timing met
// parameter FPGA_VERSION = 32'h0393007c; // fixed cmdseqmux - reporting interrupt status and mask correctly
// parameter FPGA_VERSION = 32'h0393007c; // fixed cmdseqmux - reporting interrupt status and mask correctly
...
...
sensor/sensor_channel.v
View file @
71cc5ef4
...
@@ -467,7 +467,10 @@ module sensor_channel#(
...
@@ -467,7 +467,10 @@ module sensor_channel#(
`ifdef
DEBUG_RING
`ifdef
DEBUG_RING
// reg vact_to_fifo_r;
`ifdef
HISPI
`else
reg
vact_to_fifo_r
;
`endif
reg
hact_to_fifo_r
;
reg
hact_to_fifo_r
;
reg
[
15
:
0
]
debug_line_cntr
;
reg
[
15
:
0
]
debug_line_cntr
;
reg
[
15
:
0
]
debug_lines
;
reg
[
15
:
0
]
debug_lines
;
...
...
system_defines.vh
View file @
71cc5ef4
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
`define PRELOAD_BRAMS
`define PRELOAD_BRAMS
`define DISPLAY_COMPRESSED_DATA
`define DISPLAY_COMPRESSED_DATA
// if HISPI is not defined, parallel sensor interface is used for all channels
// if HISPI is not defined, parallel sensor interface is used for all channels
`define HISPI
//
`define HISPI
// `define USE_OLD_XDCT393
// `define USE_OLD_XDCT393
// `define USE_PCLK2X
// `define USE_PCLK2X
// `define USE_XCLK2X
// `define USE_XCLK2X
...
...
x393.bit
View file @
71cc5ef4
No preview for this file type
x393_timing.tcl
View file @
71cc5ef4
...
@@ -55,25 +55,11 @@ create_generated_clock -name ddr3_sdclk [get_nets -hierarchical sdclk_pre ]
...
@@ -55,25 +55,11 @@ create_generated_clock -name ddr3_sdclk [get_nets -hierarchical sdclk_pre ]
create_generated_clock -name ddr3_clk
[
get_nets -hierarchical clk_pre
]
create_generated_clock -name ddr3_clk
[
get_nets -hierarchical clk_pre
]
create_generated_clock -name ddr3_clk_div
[
get_nets -hierarchical clk_div_pre
]
create_generated_clock -name ddr3_clk_div
[
get_nets -hierarchical clk_div_pre
]
create_generated_clock -name ddr3_mclk
[
get_nets -hierarchical mclk_pre
]
create_generated_clock -name ddr3_mclk
[
get_nets -hierarchical mclk_pre
]
if
(
$HISPI
)
{
create_generated_clock -name ddr3_clk_ref
[
get_nets clocks393_i/dly_ref_clk_pre
]
create_generated_clock -name ddr3_clk_ref
[
get_nets clocks393_i/dly_ref_clk_pre
]
create_generated_clock -name axihp_clk
[
get_nets clocks393_i/hclk_pre
]
create_generated_clock -name axihp_clk
[
get_nets clocks393_i/hclk_pre
]
create_generated_clock -name xclk
[
get_nets clocks393_i/xclk_pre
]
#clock for inter - camera synchronization and event logger
create_generated_clock -name xclk
[
get_nets clocks393_i/xclk_pre
]
create_generated_clock -name sclk
[
get_nets clocks393_i/sync_clk_pre
]
#clock for inter - camera synchronization and event logger
create_generated_clock -name sclk
[
get_nets clocks393_i/sync_clk_pre
]
}
else
{
create_generated_clock -name ddr3_clk_ref
[
get_nets -hierarchical clk_ref_pre
]
create_generated_clock -name axihp_clk
[
get_nets clocks393_i/dual_clock_axihp_i/clk1x_pre
]
create_generated_clock -name xclk
[
get_nets clocks393_i/dual_clock_xclk_i/clk1x_pre
]
create_generated_clock -name xclk2x
[
get_nets clocks393_i/dual_clock_xclk_i/clk2x_pre
]
#clock for inter - camera synchronization and event logger
create_generated_clock -name sclk
[
get_nets clocks393_i/dual_clock_sync_clk_i/clk1x_pre
]
}
create_clock -name ffclk0 -period 41.667
[
get_ports
{
ffclk0p
}]
create_clock -name ffclk0 -period 41.667
[
get_ports
{
ffclk0p
}]
#Generated clocks are assumed to be tied to clkin1 (not 2
)
, so until external ffclk0 is constrained, derivative clocks are not generated
#Generated clocks are assumed to be tied to clkin1 (not 2
)
, so until external ffclk0 is constrained, derivative clocks are not generated
...
@@ -84,11 +70,7 @@ if ($HISPI) {
...
@@ -84,11 +70,7 @@ if ($HISPI) {
set_property CLOCK_DEDICATED_ROUTE FALSE
[
get_nets sensors393_i/sensor_channel_block
\[
2
\]
.sensor_channel_i/sens_10398_i/sens_hispi12l4_i/sens_hispi_clock_i/clk_in
]
set_property CLOCK_DEDICATED_ROUTE FALSE
[
get_nets sensors393_i/sensor_channel_block
\[
2
\]
.sensor_channel_i/sens_10398_i/sens_hispi12l4_i/sens_hispi_clock_i/clk_in
]
set_property CLOCK_DEDICATED_ROUTE FALSE
[
get_nets sensors393_i/sensor_channel_block
\[
3
\]
.sensor_channel_i/sens_10398_i/sens_hispi12l4_i/sens_hispi_clock_i/clk_in
]
set_property CLOCK_DEDICATED_ROUTE FALSE
[
get_nets sensors393_i/sensor_channel_block
\[
3
\]
.sensor_channel_i/sens_10398_i/sens_hispi12l4_i/sens_hispi_clock_i/clk_in
]
set_clock_groups -name compressor_clocks_xclk_xclk2x -asynchronous -group
{
xclk
}
set_clock_groups -name sensor_clocks_pclk_pclk2x -asynchronous -group
{
pclk
}
set_clock_groups -name sync_logger_clocks_sclk -asynchronous -group
{
sclk
}
}
else
{
}
else
{
create_generated_clock -name pclk2x
[
get_nets clocks393_i/dual_clock_pclk_i/clk2x_pre
]
#Sensor-synchronous clocks
#Sensor-synchronous clocks
create_generated_clock -name iclk0
[
get_nets sensors393_i/sensor_channel_block
\[
0
\]
.sensor_channel_i/sens_parallel12_i/ipclk_pre
]
create_generated_clock -name iclk0
[
get_nets sensors393_i/sensor_channel_block
\[
0
\]
.sensor_channel_i/sens_parallel12_i/ipclk_pre
]
create_generated_clock -name iclk2x0
[
get_nets sensors393_i/sensor_channel_block
\[
0
\]
.sensor_channel_i/sens_parallel12_i/ipclk2x_pre
]
create_generated_clock -name iclk2x0
[
get_nets sensors393_i/sensor_channel_block
\[
0
\]
.sensor_channel_i/sens_parallel12_i/ipclk2x_pre
]
...
@@ -102,16 +84,16 @@ if ($HISPI) {
...
@@ -102,16 +84,16 @@ if ($HISPI) {
create_generated_clock -name iclk3
[
get_nets sensors393_i/sensor_channel_block
\[
3
\]
.sensor_channel_i/sens_parallel12_i/ipclk_pre
]
create_generated_clock -name iclk3
[
get_nets sensors393_i/sensor_channel_block
\[
3
\]
.sensor_channel_i/sens_parallel12_i/ipclk_pre
]
create_generated_clock -name iclk2x3
[
get_nets sensors393_i/sensor_channel_block
\[
3
\]
.sensor_channel_i/sens_parallel12_i/ipclk2x_pre
]
create_generated_clock -name iclk2x3
[
get_nets sensors393_i/sensor_channel_block
\[
3
\]
.sensor_channel_i/sens_parallel12_i/ipclk2x_pre
]
set_clock_groups -name compressor_clocks_xclk_xclk2x -asynchronous -group
{
xclk xclk2x
}
set_clock_groups -name sensor_clocks_pclk_pclk2x -asynchronous -group
{
pclk pclk2x
}
set_clock_groups -name sync_logger_clocks_sclk -asynchronous -group
{
sclk
}
set_clock_groups -name sensor0_clocks_iclk_pclk2x -asynchronous -group
{
iclk0 iclk2x0
}
set_clock_groups -name sensor0_clocks_iclk_pclk2x -asynchronous -group
{
iclk0 iclk2x0
}
set_clock_groups -name sensor1_clocks_iclk_pclk2x -asynchronous -group
{
iclk1 iclk2x1
}
set_clock_groups -name sensor1_clocks_iclk_pclk2x -asynchronous -group
{
iclk1 iclk2x1
}
set_clock_groups -name sensor2_clocks_iclk_pclk2x -asynchronous -group
{
iclk2 iclk2x2
}
set_clock_groups -name sensor2_clocks_iclk_pclk2x -asynchronous -group
{
iclk2 iclk2x2
}
set_clock_groups -name sensor3_clocks_iclk_pclk2x -asynchronous -group
{
iclk3 iclk2x3
}
set_clock_groups -name sensor3_clocks_iclk_pclk2x -asynchronous -group
{
iclk3 iclk2x3
}
}
}
set_clock_groups -name compressor_clocks_xclk_xclk2x -asynchronous -group
{
xclk
}
set_clock_groups -name sensor_clocks_pclk_pclk2x -asynchronous -group
{
pclk
}
set_clock_groups -name sync_logger_clocks_sclk -asynchronous -group
{
sclk
}
# do not check timing between axi_aclk and other clocks. Code should provide correct asynchronous crossing of the clock boundary.
# do not check timing between axi_aclk and other clocks. Code should provide correct asynchronous crossing of the clock boundary.
set_clock_groups -name ps_async_clock -asynchronous -group
{
axi_aclk
}
set_clock_groups -name ps_async_clock -asynchronous -group
{
axi_aclk
}
set_clock_groups -name ps_async_clock_axihp -asynchronous -group
{
axihp_clk
}
set_clock_groups -name ps_async_clock_axihp -asynchronous -group
{
axihp_clk
}
...
...
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