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
49896216
Commit
49896216
authored
Aug 12, 2015
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modifying for co-simulation with 393
parent
bbfa8af4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
638 additions
and
369 deletions
+638
-369
histogram353.v
sensor/histogram353.v
+332
-330
sensorpix353.v
sensor/sensorpix353.v
+6
-2
x353_1.sav
x353_1.sav
+283
-27
x353_1.tf
x353_1.tf
+17
-10
No files found.
sensor/histogram353.v
View file @
49896216
/*
/*
** -----------------------------------------------------------------------------**
** -----------------------------------------------------------------------------**
** histogram.v
** histogram.v
**
**
** Calculation of image histograms
** Calculation of image histograms
**
**
** Copyright (C) 2005-2010 Elphel, Inc.
** Copyright (C) 2005-2010 Elphel, Inc.
**
**
** -----------------------------------------------------------------------------**
** -----------------------------------------------------------------------------**
** This file is part of X353
** This file is part of X353
** X353 is free software - hardware description language (HDL) code.
** X353 is free software - hardware description language (HDL) code.
**
**
** This program is free software: you can redistribute it and/or modify
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
** (at your option) any later version.
**
**
** This program is distributed in the hope that it will be useful,
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
** GNU General Public License for more details.
**
**
** You should have received a copy of the GNU General Public License
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
** along with this program. If not, see <http://www.gnu.org/licenses/>.
** -----------------------------------------------------------------------------**
** -----------------------------------------------------------------------------**
**
**
*/
*/
module
histogram
(
pclk
,
// pixel clock (posedge, only some input signals
module
histogram
(
pclk
,
// pixel clock (posedge, only some input signals
pclk2x
,
// pclk multiplied by 2
pclk2x
,
// pclk multiplied by 2
sclk
,
// global (commands @negedge)
sclk
,
// global (commands @negedge)
wen
,
// @negedge sclk, 1 ahead of write enable/read enable
wen
,
// @negedge sclk, 1 ahead of write enable/read enable
rnext
,
// read histogram, increment address
rnext
,
// read histogram, increment address
wa
,
// [2:0] register address:
wa
,
// [2:0] register address:
// old - 00 - {top, left}
// old - 00 - {top, left}
// old - 01 - {height-1, width-1}
// old - 01 - {height-1, width-1}
// old - 02 - hist. data start address (will also read pointed word to output word
// old - 02 - hist. data start address (will also read pointed word to output word
// 00 - left
// 00 - left
// 01 - top
// 01 - top
// 02 - width-1
// 02 - width-1
// 03 - height-1
// 03 - height-1
// 04 - hist. data start address (will also read pointed word to output word
// 04 - hist. data start address (will also read pointed word to output word
hist_do
,
// [31:0] histogram data (actually now just [17:0])
hist_do
,
// [31:0] histogram data (actually now just [17:0])
// 256*R, 256*Gr, 256*Gb, 256*B
// 256*R, 256*Gr, 256*Gb, 256*B
wd
,
// [31:0] PIO data to write
wd
,
// [31:0] PIO data to write
frame_run
,
// frame active - @posedge pclk
frame_run
,
// frame active - @posedge pclk
line_run_a
,
// hact_out @posedge pclk
line_run_a
,
// hact_out @posedge pclk
di_a
,
// [15:0] @posedge pclk
di_a
,
// [15:0] @posedge pclk
di_vld_a
,
// di[15:0] valid @posedge pclk
di_vld_a
,
// di[15:0] valid @posedge pclk
bayer_phase
// [1:0]
bayer_phase
// [1:0]
)
;
)
;
input
pclk
;
input
pclk
;
input
pclk2x
;
input
pclk2x
;
input
sclk
;
input
sclk
;
input
wen
;
input
wen
;
input
rnext
;
input
rnext
;
input
[
2
:
0
]
wa
;
input
[
2
:
0
]
wa
;
output
[
31
:
0
]
hist_do
;
output
[
31
:
0
]
hist_do
;
// input [15:0] wd;
// input [15:0] wd;
input
[
15
:
0
]
wd
;
input
[
15
:
0
]
wd
;
input
frame_run
;
input
frame_run
;
input
line_run_a
;
input
line_run_a
;
input
[
15
:
0
]
di_a
;
input
[
15
:
0
]
di_a
;
input
di_vld_a
;
input
di_vld_a
;
input
[
1
:
0
]
bayer_phase
;
input
[
1
:
0
]
bayer_phase
;
parameter
correct_bayer
=
2'b11
;
//AF2015: Correct Bayer to have histogram [2'b00] matcsh even row, even column data
wire
[
17
:
0
]
hist_do0
;
wire
[
17
:
0
]
hist_do0
;
// extra layer of registers
reg
line_run
;
// extra layer of registers
reg
[
15
:
0
]
di
;
reg
line_run
;
reg
pre_di_vld
,
di_vld
;
reg
[
15
:
0
]
di
;
reg
pre_di_vld
,
di_vld
;
always
@
(
posedge
pclk
)
begin
line_run
<=
line_run_a
;
always
@
(
posedge
pclk
)
begin
di
[
15
:
0
]
<=
di_a
[
15
:
0
]
;
line_run
<=
line_run_a
;
// di_vld <= di_vld_a;
di
[
15
:
0
]
<=
di_a
[
15
:
0
]
;
end
// di_vld <= di_vld_a;
always
@
(
posedge
pclk2x
)
begin
end
pre_di_vld
<=
di_vld_a
;
always
@
(
posedge
pclk2x
)
begin
di_vld
<=
pre_di_vld
;
// so di_vld can be duplicated
pre_di_vld
<=
di_vld_a
;
end
di_vld
<=
pre_di_vld
;
// so di_vld can be duplicated
// In Model 353 switching to 2x multipled pixel clock without it did not work when sclk < 2 * pclk
end
// pixels always go in pairs (low/high byte of di)
// In Model 353 switching to 2x multipled pixel clock without it did not work when sclk < 2 * pclk
reg
[
15
:
0
]
di2x
;
// pixels always go in pairs (low/high byte of di)
reg
[
3
:
0
]
dvld2x
;
// dvld2x[0] is valid second half di_vld, dvld2x[1] - 1 pclk2x cycle later, dvld2x[2] - 2 cycles
reg
[
15
:
0
]
di2x
;
reg
[
1
:
0
]
bayer
;
reg
[
3
:
0
]
dvld2x
;
// dvld2x[0] is valid second half di_vld, dvld2x[1] - 1 pclk2x cycle later, dvld2x[2] - 2 cycles
reg
[
1
:
0
]
bayer_phase_latched
;
reg
[
1
:
0
]
bayer
;
reg
[
9
:
0
]
hist_waddr
;
// histogram memory address (write side) - {color,pixel_value}
reg
[
1
:
0
]
bayer_phase_latched
;
reg
[
9
:
0
]
hist_waddr_hold1
;
// hist_waddr - first hold register (latency read-increment-write)
reg
[
9
:
0
]
hist_waddr
;
// histogram memory address (write side) - {color,pixel_value}
reg
[
9
:
0
]
hist_waddr_hold2
;
// hist_waddr - second hold register (latency read-increment-write)
reg
[
9
:
0
]
hist_waddr_hold1
;
// hist_waddr - first hold register (latency read-increment-write)
reg
same_waddr
;
// same pixel value (use previous result instead of memory as it is not written yet)
reg
[
9
:
0
]
hist_waddr_hold2
;
// hist_waddr - second hold register (latency read-increment-write)
reg
pre_same_addr
;
reg
same_waddr
;
// same pixel value (use previous result instead of memory as it is not written yet)
reg
[
2
:
0
]
frame_run_s
;
reg
pre_same_addr
;
reg
[
2
:
0
]
line_run_s
;
reg
[
2
:
0
]
frame_run_s
;
reg
line_start
,
line_end
;
reg
[
2
:
0
]
line_run_s
;
reg
frame_start
;
reg
line_start
,
line_end
;
// reg frame_end;
reg
frame_start
;
// reg frame_end;
reg
[
5
:
0
]
hist_seq
;
// delay line for the histogram calculation sequencer (each other bit can be active)
reg
[
9
:
0
]
hist_init_cntr
;
reg
[
5
:
0
]
hist_seq
;
// delay line for the histogram calculation sequencer (each other bit can be active)
reg
end_hist_init
;
reg
[
9
:
0
]
hist_init_cntr
;
reg
[
17
:
0
]
hist_pre
;
// previous value of the histogram - before increment
reg
end_hist_init
;
reg
[
17
:
0
]
hist_post
;
// new value of the histogram - after increment
reg
[
17
:
0
]
hist_pre
;
// previous value of the histogram - before increment
reg
[
17
:
0
]
hist_post
;
// new value of the histogram - after increment
wire
hist_bank
;
// use FD so it will be reset at power up for simulation
reg
odd_line
;
wire
hist_bank
;
// use FD so it will be reset at power up for simulation
reg
[
13
:
1
]
pix_cntr
;
reg
odd_line
;
reg
[
13
:
1
]
line_cntr
;
reg
[
13
:
1
]
pix_cntr
;
reg
[
13
:
1
]
line_cntr
;
reg
line_started
,
// left margin over
line_ended
;
// right margin
reg
line_started
,
// left margin over
reg
frame_started
;
// top margin over
line_ended
;
// right margin
reg
frame_ended
;
// bottom margin
reg
frame_started
;
// top margin over
// reg frame_ended_d;
reg
frame_ended
;
// bottom margin
reg
init_hist
;
// write zeros to all hist elements.
// reg frame_ended_d;
reg
init_hist_d
;
reg
init_hist
;
// write zeros to all hist elements.
reg
init_hist_d
;
reg
window_on
;
// window active
reg
window_on
;
// window active
// increased dimesions to 8K
reg
[
13
:
1
]
pos_left
;
// all dimensions will be even (to simplify processing pixel data packed in pairs)
// increased dimesions to 8K
reg
[
13
:
1
]
pos_top
;
reg
[
13
:
1
]
pos_left
;
// all dimensions will be even (to simplify processing pixel data packed in pairs)
reg
[
13
:
1
]
size_width
;
reg
[
13
:
1
]
pos_top
;
reg
[
13
:
1
]
size_height
;
reg
[
13
:
1
]
size_width
;
reg
[
13
:
1
]
size_height
;
reg
[
1
:
0
]
we_pos
;
reg
[
1
:
0
]
we_size
;
reg
[
1
:
0
]
we_pos
;
reg
we_addr
;
reg
[
1
:
0
]
we_size
;
reg
we_addr_d
;
reg
we_addr
;
// reg rd_hist;
reg
we_addr_d
;
wire
rd_hist
;
// reg rd_hist;
reg
[
9
:
0
]
hist_raddr
;
// histogram memory address (read side) - {color,pixel_value}
wire
rd_hist
;
reg
hist_wea
;
reg
[
9
:
0
]
hist_raddr
;
// histogram memory address (read side) - {color,pixel_value}
reg
hist_ena
;
reg
hist_wea
;
reg
bayer_en
;
// enable latching bayer
reg
hist_ena
;
reg
last_line
;
reg
bayer_en
;
// enable latching bayer
wire
[
17
:
0
]
hist_doa
;
// RAM output
reg
last_line
;
wire
[
17
:
0
]
hist_dia
=
hist_post
[
17
:
0
]
;
// RAM input
wire
[
17
:
0
]
hist_doa
;
// RAM output
wire
[
17
:
0
]
hist_dia
=
hist_post
[
17
:
0
]
;
// RAM input
reg
[
15
:
0
]
wdd
;
// wd[15:0] delayed by 1 clock
reg
[
13
:
1
]
minus_pos_left
;
// TIG
reg
[
15
:
0
]
wdd
;
// wd[15:0] delayed by 1 clock
reg
pos_left_is_zero
;
// TIG
reg
[
13
:
1
]
minus_pos_left
;
// TIG
reg
line_start_posl_zero
;
// start with pos_left_is_zero
reg
pos_left_is_zero
;
// TIG
reg
line_start_posl_nzero
;
// start with !pos_left_is_zero
reg
line_start_posl_zero
;
// start with pos_left_is_zero
assign
rd_hist
=
rnext
||
we_addr_d
;
reg
line_start_posl_nzero
;
// start with !pos_left_is_zero
assign
hist_do
[
31
:
0
]
={
14'h0
,
hist_do0
[
17
:
0
]
};
assign
rd_hist
=
rnext
||
we_addr_d
;
assign
hist_do
[
31
:
0
]
={
14'h0
,
hist_do0
[
17
:
0
]
};
/*
//debug
/*
reg [9:0] test_cntr;
//debug
always @ (posedge pclk2x) if (frame_run_s[1] && !frame_run_s[2]) begin
reg [9:0] test_cntr;
test_cntr[9:0] <= test_cntr[9:0]+1;
always @ (posedge pclk2x) if (frame_run_s[1] && !frame_run_s[2]) begin
end
test_cntr[9:0] <= test_cntr[9:0]+1;
assign hist_do[31:0]={1'h0,frame_run_s[1],hist_bank,test_cntr[9:0],frame_run,hist_do0[17:0]}; /// Temporary testing !!!
end
// assign hist_do[31:0]={1'h0,hist_bank,hist_raddr[9:0],2'h0,hist_do0[17:0]}; /// Temporary testing !!!
assign hist_do[31:0]={1'h0,frame_run_s[1],hist_bank,test_cntr[9:0],frame_run,hist_do0[17:0]}; /// Temporary testing !!!
*/
// assign hist_do[31:0]={1'h0,hist_bank,hist_raddr[9:0],2'h0,hist_do0[17:0]}; /// Temporary testing !!!
*/
// FDE i_hist_bank (.C(pclk2x), .CE(frame_end), .D(~hist_bank), .Q(hist_bank));
// switch bank at the start of frame
// FDE i_hist_bank (.C(pclk2x), .CE(frame_end), .D(~hist_bank), .Q(hist_bank));
FDE
i_hist_bank
(
.
C
(
pclk2x
)
,
.
CE
(
init_hist
&
~
init_hist_d
)
,
.
D
(
~
hist_bank
)
,
.
Q
(
hist_bank
))
;
// switch bank at the start of frame
FDE
i_hist_bank
(
.
C
(
pclk2x
)
,
.
CE
(
init_hist
&
~
init_hist_d
)
,
.
D
(
~
hist_bank
)
,
.
Q
(
hist_bank
))
;
always
@
(
posedge
pclk2x
)
begin
frame_run_s
[
2
:
0
]
<=
{
frame_run_s
[
1
:
0
]
,
frame_run
};
always
@
(
posedge
pclk2x
)
begin
line_run_s
[
2
:
0
]
<=
{
line_run_s
[
1
:
0
]
,
line_run
};
frame_run_s
[
2
:
0
]
<=
{
frame_run_s
[
1
:
0
]
,
frame_run
};
line_start
<=
line_run_s
[
1
]
&&
!
line_run_s
[
2
]
;
line_run_s
[
2
:
0
]
<=
{
line_run_s
[
1
:
0
]
,
line_run
};
line_start_posl_zero
<=
line_run_s
[
1
]
&&
!
line_run_s
[
2
]
&&
pos_left_is_zero
;
line_start
<=
line_run_s
[
1
]
&&
!
line_run_s
[
2
]
;
line_start_posl_nzero
<=
line_run_s
[
1
]
&&
!
line_run_s
[
2
]
&&
!
pos_left_is_zero
;
line_start_posl_zero
<=
line_run_s
[
1
]
&&
!
line_run_s
[
2
]
&&
pos_left_is_zero
;
line_end
<=
line_run_s
[
2
]
&&
!
line_run_s
[
1
]
;
line_start_posl_nzero
<=
line_run_s
[
1
]
&&
!
line_run_s
[
2
]
&&
!
pos_left_is_zero
;
frame_start
<=
frame_run_s
[
1
]
&&
!
frame_run_s
[
2
]
;
line_end
<=
line_run_s
[
2
]
&&
!
line_run_s
[
1
]
;
// frame_end <= (frame_ended && !frame_ended_d);
frame_start
<=
frame_run_s
[
1
]
&&
!
frame_run_s
[
2
]
;
bayer_en
<=
frame_start
||
(
bayer_en
&&
!
line_start
)
;
// frame_end <= (frame_ended && !frame_ended_d);
if
(
bayer_en
)
bayer_phase_latched
[
1
:
0
]
<=
bayer_phase
[
1
:
0
]
;
bayer_en
<=
frame_start
||
(
bayer_en
&&
!
line_start
)
;
if
(
!
frame_run_s
[
2
])
hist_init_cntr
[
9
:
0
]
<=
10'b0
;
if
(
bayer_en
)
bayer_phase_latched
[
1
:
0
]
<=
bayer_phase
[
1
:
0
]
;
else
if
(
init_hist
)
hist_init_cntr
[
9
:
0
]
<=
hist_init_cntr
[
9
:
0
]
+
1
;
if
(
!
frame_run_s
[
2
])
hist_init_cntr
[
9
:
0
]
<=
10'b0
;
else
if
(
init_hist
)
hist_init_cntr
[
9
:
0
]
<=
hist_init_cntr
[
9
:
0
]
+
1
;
end_hist_init
<=
(
hist_init_cntr
[
9
:
1
]
==
9'h1ff
)
;
end_hist_init
<=
(
hist_init_cntr
[
9
:
1
]
==
9'h1ff
)
;
init_hist
<=
frame_run_s
[
1
]
&&
(
init_hist
?
(
~
end_hist_init
)
:~
frame_run_s
[
2
])
;
init_hist
<=
frame_run_s
[
1
]
&&
(
init_hist
?
(
~
end_hist_init
)
:~
frame_run_s
[
2
])
;
init_hist_d
<=
init_hist
;
init_hist_d
<=
init_hist
;
if
(
!
init_hist
)
hist_init_cntr
[
9
:
0
]
<=
10'h0
;
if
(
!
init_hist
)
hist_init_cntr
[
9
:
0
]
<=
10'h0
;
else
hist_init_cntr
[
9
:
0
]
<=
hist_init_cntr
[
9
:
0
]
+
1
;
else
hist_init_cntr
[
9
:
0
]
<=
hist_init_cntr
[
9
:
0
]
+
1
;
dvld2x
[
3
:
0
]
<=
{
dvld2x
[
2
:
0
]
,
~
(
|
dvld2x
[
2
:
0
])
&
di_vld
};
dvld2x
[
3
:
0
]
<=
{
dvld2x
[
2
:
0
]
,
~
(
|
dvld2x
[
2
:
0
])
&
di_vld
};
// include window_on (don't start if not)
// include window_on (don't start if not)
// hist_seq[5:0] <= {hist_seq[4:0], dvld2x[1] | dvld2x[3]};
// hist_seq[5:0] <= {hist_seq[4:0], dvld2x[1] | dvld2x[3]};
hist_seq
[
5
:
0
]
<=
{
hist_seq
[
4
:
0
]
,
window_on
&&
(
dvld2x
[
1
]
|
dvld2x
[
3
])
};
hist_seq
[
5
:
0
]
<=
{
hist_seq
[
4
:
0
]
,
window_on
&&
(
dvld2x
[
1
]
|
dvld2x
[
3
])
};
hist_ena
<=
hist_seq
[
0
]
||
hist_seq
[
5
]
||
init_hist
;
// read, write, clear
hist_ena
<=
hist_seq
[
0
]
||
hist_seq
[
5
]
||
init_hist
;
// read, write, clear
hist_wea
<=
hist_seq
[
5
]
||
init_hist
;
// write, clear
hist_wea
<=
hist_seq
[
5
]
||
init_hist
;
// write, clear
// get 8-bit pixels from 16-bit packed words
// get 8-bit pixels from 16-bit packed words
if
(
dvld2x
[
0
])
di2x
[
15
:
8
]
<=
di
[
15
:
8
]
;
if
(
dvld2x
[
0
])
di2x
[
15
:
8
]
<=
di
[
15
:
8
]
;
if
(
dvld2x
[
0
])
di2x
[
7
:
0
]
<=
di
[
7
:
0
]
;
if
(
dvld2x
[
0
])
di2x
[
7
:
0
]
<=
di
[
7
:
0
]
;
else
if
(
dvld2x
[
2
])
di2x
[
7
:
0
]
<=
di2x
[
15
:
8
]
;
else
if
(
dvld2x
[
2
])
di2x
[
7
:
0
]
<=
di2x
[
15
:
8
]
;
// calculate bayer phase of the pixel
// calculate bayer phase of the pixel
// reg [ 1:0] bayer_phase_latched;
// reg [ 1:0] bayer_phase_latched;
// if (dvld2x[0]) bayer[0] <= bayer_phase[0];
// if (dvld2x[0]) bayer[0] <= bayer_phase[0];
if
(
dvld2x
[
0
])
bayer
[
0
]
<=
1'b0
;
if
(
dvld2x
[
0
])
bayer
[
0
]
<=
1'b0
;
else
if
(
dvld2x
[
2
])
bayer
[
0
]
<=
~
bayer
[
0
]
;
else
if
(
dvld2x
[
2
])
bayer
[
0
]
<=
~
bayer
[
0
]
;
// if (frame_start) bayer[1] <= bayer_phase[1];
// if (frame_start) bayer[1] <= bayer_phase[1];
if
(
frame_start
)
bayer
[
1
]
<=
1'b0
;
if
(
frame_start
)
bayer
[
1
]
<=
1'b0
;
else
if
(
line_start
)
bayer
[
1
]
<=
~
bayer
[
1
]
;
else
if
(
line_start
)
bayer
[
1
]
<=
~
bayer
[
1
]
;
if
(
hist_seq
[
1
])
hist_waddr_hold1
[
9
:
0
]
<=
hist_waddr
[
9
:
0
]
;
if
(
hist_seq
[
1
])
hist_waddr_hold1
[
9
:
0
]
<=
hist_waddr
[
9
:
0
]
;
if
(
hist_seq
[
3
])
hist_waddr_hold2
[
9
:
0
]
<=
hist_waddr_hold1
[
9
:
0
]
;
if
(
hist_seq
[
3
])
hist_waddr_hold2
[
9
:
0
]
<=
hist_waddr_hold1
[
9
:
0
]
;
// we need to clear all histogram at the begining of a frame (will not work if the window is too small)
// we need to clear all histogram at the begining of a frame (will not work if the window is too small)
if
(
init_hist
)
hist_waddr
[
9
:
0
]
<=
hist_init_cntr
[
9
:
0
]
;
// to clear histogram memory
if
(
init_hist
)
hist_waddr
[
9
:
0
]
<=
hist_init_cntr
[
9
:
0
]
;
// to clear histogram memory
else
if
(
hist_seq
[
0
])
hist_waddr
[
9
:
0
]
<=
{
bayer
[
1
:
0
]
^
bayer_phase_latched
[
1
:
0
]
,
di2x
[
7
:
0
]
};
else
if
(
hist_seq
[
0
])
hist_waddr
[
9
:
0
]
<=
{
bayer
[
1
:
0
]
^
bayer_phase_latched
[
1
:
0
]
^
correct_bayer
,
di2x
[
7
:
0
]
};
else
if
(
hist_seq
[
5
])
hist_waddr
[
9
:
0
]
<=
{
hist_waddr_hold2
[
9
:
0
]
};
else
if
(
hist_seq
[
5
])
hist_waddr
[
9
:
0
]
<=
{
hist_waddr_hold2
[
9
:
0
]
};
/* same_waddr <= hist_seq[0] && // next cycle - read from memory
/* same_waddr <= hist_seq[0] && // next cycle - read from memory
hist_seq[4] && // second next cycle - write modified
hist_seq[4] && // second next cycle - write modified
(di2x[7:0] == hist_waddr_hold2[7:0]); // same address (colors should be the same - same line, over one pixel)
(di2x[7:0] == hist_waddr_hold2[7:0]); // same address (colors should be the same - same line, over one pixel)
*/
*/
pre_same_addr
<=
(
di2x
[
7
:
0
]
==
hist_waddr_hold2
[
7
:
0
])
;
pre_same_addr
<=
(
di2x
[
7
:
0
]
==
hist_waddr_hold2
[
7
:
0
])
;
same_waddr
<=
hist_seq
[
1
]
&&
// next cycle - read from memory
same_waddr
<=
hist_seq
[
1
]
&&
// next cycle - read from memory
hist_seq
[
5
]
&&
// second next cycle - write modified
hist_seq
[
5
]
&&
// second next cycle - write modified
pre_same_addr
;
pre_same_addr
;
if
(
hist_seq
[
2
])
hist_pre
[
17
:
0
]
<=
same_waddr
?
hist_post
[
17
:
0
]
:
hist_doa
[
17
:
0
]
;
// bypass memory for the same histogram count/color
if
(
hist_seq
[
2
])
hist_pre
[
17
:
0
]
<=
same_waddr
?
hist_post
[
17
:
0
]
:
hist_doa
[
17
:
0
]
;
// bypass memory for the same histogram count/color
// hist_pre[17:0] -> hist_post[17:0] - dual cycle
// hist_pre[17:0] -> hist_post[17:0] - dual cycle
// data to write to histogram memory
// data to write to histogram memory
if
(
init_hist
)
hist_post
[
17
:
0
]
<=
18'h0
;
// to write 0 to all histogram page memory locations
if
(
init_hist
)
hist_post
[
17
:
0
]
<=
18'h0
;
// to write 0 to all histogram page memory locations
else
if
(
hist_seq
[
4
]
&&
(
hist_pre
[
17
:
0
]
!=
18'h3ffff
))
hist_post
[
17
:
0
]
<=
hist_pre
[
17
:
0
]
+
1
;
// saturate
else
if
(
hist_seq
[
4
]
&&
(
hist_pre
[
17
:
0
]
!=
18'h3ffff
))
hist_post
[
17
:
0
]
<=
hist_pre
[
17
:
0
]
+
1
;
// saturate
// odd/even scan lines
// odd/even scan lines
if
(
frame_start
)
odd_line
<=
1'b1
;
if
(
frame_start
)
odd_line
<=
1'b1
;
else
if
(
line_end
)
odd_line
<=
~
odd_line
;
else
if
(
line_end
)
odd_line
<=
~
odd_line
;
minus_pos_left
[
13
:
1
]
<=
-
pos_left
[
13
:
1
]
;
// TIG
minus_pos_left
[
13
:
1
]
<=
-
pos_left
[
13
:
1
]
;
// TIG
pos_left_is_zero
<=
(
pos_left
[
13
:
1
]
==
13'h0
)
;
// TIG
pos_left_is_zero
<=
(
pos_left
[
13
:
1
]
==
13'h0
)
;
// TIG
// count pixels (in pairs) to determine active window
// count pixels (in pairs) to determine active window
// if (line_start) pix_cntr[13:1] <= ~pos_left[13:1];
// if (line_start) pix_cntr[13:1] <= ~pos_left[13:1];
// else if (dvld2x[1]) pix_cntr[13:1] <= pix_cntr[13:1]+1; // window_on will switch right after dvld2x[3]
// else if (dvld2x[1]) pix_cntr[13:1] <= pix_cntr[13:1]+1; // window_on will switch right after dvld2x[3]
if
(
line_start
)
pix_cntr
[
13
:
1
]
<=
minus_pos_left
[
13
:
1
]
;
// @dvld2x[0]
if
(
line_start
)
pix_cntr
[
13
:
1
]
<=
minus_pos_left
[
13
:
1
]
;
// @dvld2x[0]
else
if
(
dvld2x
[
0
])
pix_cntr
[
13
:
1
]
<=
pix_cntr
[
13
:
1
]
+
1
;
// (may change to dvld2x[2])window_on will switch right after dvld2x[3]
else
if
(
dvld2x
[
0
])
pix_cntr
[
13
:
1
]
<=
pix_cntr
[
13
:
1
]
+
1
;
// (may change to dvld2x[2])window_on will switch right after dvld2x[3]
if
(
line_start_posl_nzero
||
!
frame_run_s
[
2
])
line_started
<=
1'h0
;
if
(
line_start_posl_nzero
||
!
frame_run_s
[
2
])
line_started
<=
1'h0
;
else
if
(
line_start_posl_zero
||
(
dvld2x
[
2
]
&&
((
~
pix_cntr
[
13
:
1
])
==
13'h0
)))
line_started
<=
1'h1
;
// Doublecycle
else
if
(
line_start_posl_zero
||
(
dvld2x
[
2
]
&&
((
~
pix_cntr
[
13
:
1
])
==
13'h0
)))
line_started
<=
1'h1
;
// Doublecycle
if
(
line_start
||
!
frame_run_s
[
2
])
line_ended
<=
1'h0
;
if
(
line_start
||
!
frame_run_s
[
2
])
line_ended
<=
1'h0
;
else
if
(
dvld2x
[
2
]
&&
line_started
&&
(
pix_cntr
[
13
:
1
]
==
size_width
[
13
:
1
]))
line_ended
<=
1'h1
;
// Doublecycle
else
if
(
dvld2x
[
2
]
&&
line_started
&&
(
pix_cntr
[
13
:
1
]
==
size_width
[
13
:
1
]))
line_ended
<=
1'h1
;
// Doublecycle
if
(
frame_start
)
line_cntr
[
13
:
1
]
<=
~
pos_top
[
13
:
1
]
;
if
(
frame_start
)
line_cntr
[
13
:
1
]
<=
~
pos_top
[
13
:
1
]
;
else
if
(
line_end
&&
!
odd_line
)
line_cntr
[
13
:
1
]
<=
line_cntr
[
13
:
1
]
+
1
;
else
if
(
line_end
&&
!
odd_line
)
line_cntr
[
13
:
1
]
<=
line_cntr
[
13
:
1
]
+
1
;
if
(
!
frame_run_s
[
2
])
frame_started
<=
1'h0
;
if
(
!
frame_run_s
[
2
])
frame_started
<=
1'h0
;
else
if
((
~
line_cntr
[
13
:
1
])
==
13'h0
)
frame_started
<=
1'h1
;
else
if
((
~
line_cntr
[
13
:
1
])
==
13'h0
)
frame_started
<=
1'h1
;
last_line
<=
(
line_cntr
[
13
:
1
]
==
size_height
[
13
:
1
])
;
last_line
<=
(
line_cntr
[
13
:
1
]
==
size_height
[
13
:
1
])
;
if
(
!
frame_run_s
[
2
])
frame_ended
<=
1'h0
;
if
(
!
frame_run_s
[
2
])
frame_ended
<=
1'h0
;
else
if
((
line_start
&&
frame_started
&&
last_line
)
||
(
frame_run_s
[
2
]
&&
!
frame_run_s
[
1
]))
frame_ended
<=
1'h1
;
else
if
((
line_start
&&
frame_started
&&
last_line
)
||
(
frame_run_s
[
2
]
&&
!
frame_run_s
[
1
]))
frame_ended
<=
1'h1
;
// frame_ended_d <= frame_ended;
// frame_ended_d <= frame_ended;
// window_on <= (line_start_posl_zero || line_started) && !line_ended && frame_started && !frame_ended;
// window_on <= (line_start_posl_zero || line_started) && !line_ended && frame_started && !frame_ended;
window_on
<=
(
line_start_posl_zero
||
(
line_started
&&
!
line_ended
))
&&
frame_started
&&
!
frame_ended
;
//AF2015 window_on <= (line_start_posl_zero || (line_started && !line_ended)) && frame_started && !frame_ended;
window_on
<=
(
line_start_posl_zero
||
(
line_started
&&
!
line_ended
))
&&
frame_started
&&
!
frame_ended
&&
!
(
line_start
&&
last_line
)
;
end
end
always
@
(
negedge
sclk
)
begin
wdd
[
15
:
0
]
<=
wd
[
15
:
0
]
;
always
@
(
negedge
sclk
)
begin
wdd
[
15
:
0
]
<=
wd
[
15
:
0
]
;
we_pos
[
1
:
0
]
<=
{
wen
&&
(
wa
[
2
:
0
]
==
3'h1
)
,
wen
&&
(
wa
[
2
:
0
]
==
3'h0
)
};
we_size
[
1
:
0
]
<=
{
wen
&&
(
wa
[
2
:
0
]
==
3'h3
)
,
wen
&&
(
wa
[
2
:
0
]
==
3'h2
)
};
we_pos
[
1
:
0
]
<=
{
wen
&&
(
wa
[
2
:
0
]
==
3'h1
)
,
wen
&&
(
wa
[
2
:
0
]
==
3'h0
)
};
we_addr
<=
wen
&&
(
wa
[
2
:
0
]
==
3'h4
)
;
we_size
[
1
:
0
]
<=
{
wen
&&
(
wa
[
2
:
0
]
==
3'h3
)
,
wen
&&
(
wa
[
2
:
0
]
==
3'h2
)
};
we_addr_d
<=
we_addr
;
we_addr
<=
wen
&&
(
wa
[
2
:
0
]
==
3'h4
)
;
we_addr_d
<=
we_addr
;
if
(
we_pos
[
0
])
pos_left
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_pos
[
1
])
pos_top
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_pos
[
0
])
pos_left
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_size
[
0
])
size_width
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_pos
[
1
])
pos_top
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_size
[
1
])
size_height
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_size
[
0
])
size_width
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_size
[
1
])
size_height
[
13
:
1
]
<=
wdd
[
13
:
1
]
;
if
(
we_addr
)
hist_raddr
[
9
:
0
]
<=
wdd
[
9
:
0
]
;
else
if
(
rd_hist
)
hist_raddr
[
9
:
0
]
<=
hist_raddr
[
9
:
0
]
+
1
;
if
(
we_addr
)
hist_raddr
[
9
:
0
]
<=
wdd
[
9
:
0
]
;
else
if
(
rd_hist
)
hist_raddr
[
9
:
0
]
<=
hist_raddr
[
9
:
0
]
+
1
;
end
end
// port A - histogram calculation
// port B - histogram readout
// port A - histogram calculation
RAMB16_S9_S9
i_hist_low
(
// port B - histogram readout
.
DOA
(
hist_doa
[
7
:
0
])
,
// Port A 8-bit Data Output
RAMB16_S9_S9
i_hist_low
(
.
DOPA
(
hist_doa
[
8
])
,
// Port A 1-bit Parity Output
.
DOA
(
hist_doa
[
7
:
0
])
,
// Port A 8-bit Data Output
.
ADDRA
(
{
hist_bank
,
hist_waddr
[
9
:
0
]
}
)
,
// Port A 11-bit Address Input
.
DOPA
(
hist_doa
[
8
])
,
// Port A 1-bit Parity Output
.
CLKA
(
pclk2x
)
,
// Port A Clock
.
ADDRA
(
{
hist_bank
,
hist_waddr
[
9
:
0
]
}
)
,
// Port A 11-bit Address Input
.
DIA
(
hist_dia
[
7
:
0
])
,
// Port A 8-bit Data Input
.
CLKA
(
pclk2x
)
,
// Port A Clock
.
DIPA
(
hist_dia
[
8
])
,
// Port A 1-bit parity Input
.
DIA
(
hist_dia
[
7
:
0
])
,
// Port A 8-bit Data Input
.
ENA
(
hist_ena
)
,
// Port A RAM Enable Input
.
DIPA
(
hist_dia
[
8
])
,
// Port A 1-bit parity Input
.
SSRA
(
1'b0
)
,
// Port A Synchronous Set/Reset Input
.
ENA
(
hist_ena
)
,
// Port A RAM Enable Input
.
WEA
(
hist_wea
)
,
// Port A Write Enable Input
.
SSRA
(
1'b0
)
,
// Port A Synchronous Set/Reset Input
.
WEA
(
hist_wea
)
,
// Port A Write Enable Input
.
DOB
(
hist_do0
[
7
:
0
])
,
// Port B 8-bit Data Output
.
DOPB
(
hist_do0
[
8
])
,
// Port B 1-bit Parity Output
.
DOB
(
hist_do0
[
7
:
0
])
,
// Port B 8-bit Data Output
.
ADDRB
(
{~
hist_bank
,
hist_raddr
[
9
:
0
]
}
)
,
// Port B 11-bit Address Input
.
DOPB
(
hist_do0
[
8
])
,
// Port B 1-bit Parity Output
.
CLKB
(
!
sclk
)
,
// Port B Clock
.
ADDRB
(
{~
hist_bank
,
hist_raddr
[
9
:
0
]
}
)
,
// Port B 11-bit Address Input
.
DIB
(
8'h0
)
,
// Port B 8-bit Data Input
.
CLKB
(
!
sclk
)
,
// Port B Clock
.
DIPB
(
1'h0
)
,
// Port-B 1-bit parity Input
.
DIB
(
8'h0
)
,
// Port B 8-bit Data Input
.
ENB
(
rd_hist
)
,
// PortB RAM Enable Input
.
DIPB
(
1'h0
)
,
// Port-B 1-bit parity Input
.
SSRB
(
1'b0
)
,
// Port B Synchronous Set/Reset Input
.
ENB
(
rd_hist
)
,
// PortB RAM Enable Input
.
WEB
(
1'b0
)
// Port B Write Enable Input
.
SSRB
(
1'b0
)
,
// Port B Synchronous Set/Reset Input
)
;
.
WEB
(
1'b0
)
// Port B Write Enable Input
)
;
RAMB16_S9_S9
i_hist_high
(
.
DOA
(
hist_doa
[
16
:
9
])
,
// Port A 8-bit Data Output
RAMB16_S9_S9
i_hist_high
(
.
DOPA
(
hist_doa
[
17
])
,
// Port A 1-bit Parity Output
.
DOA
(
hist_doa
[
16
:
9
])
,
// Port A 8-bit Data Output
.
ADDRA
(
{
hist_bank
,
hist_waddr
[
9
:
0
]
}
)
,
// Port A 11-bit Address Input
.
DOPA
(
hist_doa
[
17
])
,
// Port A 1-bit Parity Output
.
CLKA
(
pclk2x
)
,
// Port A Clock
.
ADDRA
(
{
hist_bank
,
hist_waddr
[
9
:
0
]
}
)
,
// Port A 11-bit Address Input
.
DIA
(
hist_dia
[
16
:
9
])
,
// Port A 8-bit Data Input
.
CLKA
(
pclk2x
)
,
// Port A Clock
.
DIPA
(
hist_dia
[
17
])
,
// Port A 1-bit parity Input
.
DIA
(
hist_dia
[
16
:
9
])
,
// Port A 8-bit Data Input
.
ENA
(
hist_ena
)
,
// Port A RAM Enable Input
.
DIPA
(
hist_dia
[
17
])
,
// Port A 1-bit parity Input
.
SSRA
(
1'b0
)
,
// Port A Synchronous Set/Reset Input
.
ENA
(
hist_ena
)
,
// Port A RAM Enable Input
.
WEA
(
hist_wea
)
,
// Port A Write Enable Input
.
SSRA
(
1'b0
)
,
// Port A Synchronous Set/Reset Input
.
WEA
(
hist_wea
)
,
// Port A Write Enable Input
.
DOB
(
hist_do0
[
16
:
9
])
,
// Port B 8-bit Data Output
.
DOPB
(
hist_do0
[
17
])
,
// Port B 1-bit Parity Output
.
DOB
(
hist_do0
[
16
:
9
])
,
// Port B 8-bit Data Output
.
ADDRB
(
{~
hist_bank
,
hist_raddr
[
9
:
0
]
}
)
,
// Port B 11-bit Address Input
.
DOPB
(
hist_do0
[
17
])
,
// Port B 1-bit Parity Output
.
CLKB
(
!
sclk
)
,
// Port B Clock
.
ADDRB
(
{~
hist_bank
,
hist_raddr
[
9
:
0
]
}
)
,
// Port B 11-bit Address Input
.
DIB
(
8'h0
)
,
// Port B 8-bit Data Input
.
CLKB
(
!
sclk
)
,
// Port B Clock
.
DIPB
(
1'h0
)
,
// Port-B 1-bit parity Input
.
DIB
(
8'h0
)
,
// Port B 8-bit Data Input
.
ENB
(
rd_hist
)
,
// PortB RAM Enable Input
.
DIPB
(
1'h0
)
,
// Port-B 1-bit parity Input
.
SSRB
(
1'b0
)
,
// Port B Synchronous Set/Reset Input
.
ENB
(
rd_hist
)
,
// PortB RAM Enable Input
.
WEB
(
1'b0
)
// Port B Write Enable Input
.
SSRB
(
1'b0
)
,
// Port B Synchronous Set/Reset Input
)
;
.
WEB
(
1'b0
)
// Port B Write Enable Input
)
;
endmodule
endmodule
sensor/sensorpix353.v
View file @
49896216
...
@@ -229,6 +229,7 @@ module sensorpix( pclk, // clock (==pclk)
...
@@ -229,6 +229,7 @@ module sensorpix( pclk, // clock (==pclk)
assign
interp_data
[
9
:
0
]
=
table_base_r
[
9
:
0
]
+
table_mult_r
[
17
:
8
]
+
table_mult_r
[
7
]
;
//round
assign
interp_data
[
9
:
0
]
=
table_base_r
[
9
:
0
]
+
table_mult_r
[
17
:
8
]
+
table_mult_r
[
7
]
;
//round
assign
cdata
[
7
:
0
]
=
interp_data
[
9
:
2
]
;
//truncate
assign
cdata
[
7
:
0
]
=
interp_data
[
9
:
2
]
;
//truncate
reg
[
7
:
0
]
pd_lenscorr_out_d2
;
// AF2015
always
@
(
posedge
pclk
)
begin
always
@
(
posedge
pclk
)
begin
table_base
[
9
:
0
]
<=
table_base_w
[
9
:
0
]
;
table_base
[
9
:
0
]
<=
table_base_w
[
9
:
0
]
;
table_diff
[
10
:
0
]
<=
table_diff_w
[
7
]
?
table_diff
[
10
:
0
]
<=
table_diff_w
[
7
]
?
...
@@ -236,6 +237,7 @@ module sensorpix( pclk, // clock (==pclk)
...
@@ -236,6 +237,7 @@ module sensorpix( pclk, // clock (==pclk)
{{
4
{
table_diff_w
[
6
]
}},
table_diff_w
[
6
:
0
]
};
{{
4
{
table_diff_w
[
6
]
}},
table_diff_w
[
6
:
0
]
};
/// dsat_r[7:0] <= dsat[7:0];
/// dsat_r[7:0] <= dsat[7:0];
pd_lenscorr_out_d
[
7
:
0
]
<=
pd_lenscorr_out
[
7
:
0
]
;
pd_lenscorr_out_d
[
7
:
0
]
<=
pd_lenscorr_out
[
7
:
0
]
;
pd_lenscorr_out_d2
<=
pd_lenscorr_out_d
;
// AF2015 - one more cycle delay
table_mult_r
[
17
:
7
]
<=
table_mult
[
17
:
7
]
;
table_mult_r
[
17
:
7
]
<=
table_mult
[
17
:
7
]
;
table_base_r
[
9
:
0
]
<=
table_base
[
9
:
0
]
;
table_base_r
[
9
:
0
]
<=
table_base
[
9
:
0
]
;
end
end
...
@@ -244,7 +246,8 @@ module sensorpix( pclk, // clock (==pclk)
...
@@ -244,7 +246,8 @@ module sensorpix( pclk, // clock (==pclk)
MULT18X18
i_table_mult
(
MULT18X18
i_table_mult
(
.
P
(
table_mult
)
,
// 36-bit multiplier output
.
P
(
table_mult
)
,
// 36-bit multiplier output
.
A
(
{{
7
{
table_diff
[
10
]
}},
table_diff
[
10
:
0
]
}
)
,
// 18-bit multiplier input
.
A
(
{{
7
{
table_diff
[
10
]
}},
table_diff
[
10
:
0
]
}
)
,
// 18-bit multiplier input
.
B
(
{
10'b0
,
pd_lenscorr_out_d
[
7
:
0
]
}
)
// 18-bit multiplier input
// .B({10'b0,pd_lenscorr_out_d[7:0]}) // 18-bit multiplier input
.
B
(
{
10'b0
,
pd_lenscorr_out_d2
[
7
:
0
]
}
)
// 18-bit multiplier input // AF2015 - one more cycle delay
)
;
)
;
...
@@ -360,7 +363,8 @@ module sensorpix( pclk, // clock (==pclk)
...
@@ -360,7 +363,8 @@ module sensorpix( pclk, // clock (==pclk)
/// NOTE: adding 5 cycles here
/// NOTE: adding 5 cycles here
SRL16
i_hact_dly3
(
.
Q
(
hact_dly3
)
,
.
A0
(
1'b1
)
,
.
A1
(
1'b1
)
,
.
A2
(
1'b1
)
,
.
A3
(
1'b0
)
,
.
CLK
(
pclk
)
,
.
D
(
hact_m
))
;
// dly=2+1+5
SRL16
i_hact_dly3
(
.
Q
(
hact_dly3
)
,
.
A0
(
1'b1
)
,
.
A1
(
1'b1
)
,
.
A2
(
1'b1
)
,
.
A3
(
1'b0
)
,
.
CLK
(
pclk
)
,
.
D
(
hact_m
))
;
// dly=2+1+5
SRL16
i_en_out
(
.
Q
(
en_out
)
,
.
A0
(
1'b0
)
,
.
A1
(
1'b1
)
,
.
A2
(
1'b0
)
,
.
A3
(
1'b1
)
,
.
CLK
(
pclk
)
,
.
D
(
en
))
;
// dly=5+1+5
SRL16
i_en_out
(
.
Q
(
en_out
)
,
.
A0
(
1'b0
)
,
.
A1
(
1'b1
)
,
.
A2
(
1'b0
)
,
.
A3
(
1'b1
)
,
.
CLK
(
pclk
)
,
.
D
(
en
))
;
// dly=5+1+5
SRL16
i_hact_outp
(
.
Q
(
hact_outp
)
,
.
A0
(
1'b0
)
,
.
A1
(
1'b1
)
,
.
A2
(
1'b0
)
,
.
A3
(
1'b1
)
,
.
CLK
(
pclk
)
,
.
D
(
hact_m
))
;
// dly=5+1+5
//AF2015 SRL16 i_hact_outp (.Q(hact_outp), .A0(1'b0), .A1(1'b1), .A2(1'b0), .A3(1'b1), .CLK(pclk), .D(hact_m)); // dly=5+1+5
SRL16
i_hact_outp
(
.
Q
(
hact_outp
)
,
.
A0
(
1'b1
)
,
.
A1
(
1'b0
)
,
.
A2
(
1'b0
)
,
.
A3
(
1'b1
)
,
.
CLK
(
pclk
)
,
.
D
(
hact_m
))
;
// dly=5+1+5
assign
incbwa
=
(
dwe
&&
(
wa
[
7
:
0
]
==
8'hff
))
||
(
|
wa
[
7
:
0
]
&&
!
hact_out
)
;
assign
incbwa
=
(
dwe
&&
(
wa
[
7
:
0
]
==
8'hff
))
||
(
|
wa
[
7
:
0
]
&&
!
hact_out
)
;
always
@
(
posedge
pclk
)
begin
always
@
(
posedge
pclk
)
begin
wpage
<=
incbwa
;
wpage
<=
incbwa
;
...
...
x353_1.sav
View file @
49896216
[*]
[*]
[*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI
[*] GTKWave Analyzer v3.3.66 (w)1999-2015 BSI
[*]
Sun Aug 9 03:27:09
2015
[*]
Wed Aug 12 02:48:35
2015
[*]
[*]
[dumpfile] "/home/andrey/git/x353/simulation/x353_1-201508
08211805694
.fst"
[dumpfile] "/home/andrey/git/x353/simulation/x353_1-201508
11203732083
.fst"
[dumpfile_mtime] "
Sun Aug 9 03:23:39
2015"
[dumpfile_mtime] "
Wed Aug 12 02:43:52
2015"
[dumpfile_size] 21
847559
[dumpfile_size] 21
019007
[savefile] "/home/andrey/git/x353/x353_1.sav"
[savefile] "/home/andrey/git/x353/x353_1.sav"
[timestart]
5845230
00
[timestart]
4962145
00
[size] 1823 1180
[size] 1823 1180
[pos]
1917
0
[pos]
0
0
*-1
9.677540 5849948
00 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
*-1
4.654496 4962880
00 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] testbench353.
[treeopen] testbench353.
[treeopen] testbench353.i_x353.
[treeopen] testbench353.i_x353.
[treeopen] testbench353.i_x353.i_sensorpads.i_sensor_phase.
[treeopen] testbench353.i_x353.i_sensorpads.i_sensor_phase.
[treeopen] testbench353.i_x353.i_sensorpix.
[treeopen] testbench353.i_x353.i_sensorpix.
[treeopen] testbench353.i_x353.i_sensorpix.i_lens_flat.
[treeopen] testbench353.i_x353.i_sensorpix.i_lens_flat.
[treeopen] testbench353.i_x353.i_sysinterface.i_we.
[treeopen] testbench353.i_x353.i_sysinterface.i_we.
[sst_width] 3
35
[sst_width] 3
17
[signals_width] 322
[signals_width] 322
[sst_expanded] 1
[sst_expanded] 1
[sst_vpaned_height] 62
5
[sst_vpaned_height] 62
4
@820
@820
testbench353.TEST_TITLE[639:0]
testbench353.TEST_TITLE[639:0]
@800200
@800200
-sensor_in
-sensor_in
@
8
00022
@
c
00022
testbench353.PXD[11:0]
testbench353.PXD[11:0]
@28
@28
(0)testbench353.PXD[11:0]
(0)testbench353.PXD[11:0]
...
@@ -39,13 +39,13 @@ testbench353.PXD[11:0]
...
@@ -39,13 +39,13 @@ testbench353.PXD[11:0]
(9)testbench353.PXD[11:0]
(9)testbench353.PXD[11:0]
(10)testbench353.PXD[11:0]
(10)testbench353.PXD[11:0]
(11)testbench353.PXD[11:0]
(11)testbench353.PXD[11:0]
@1
0
01200
@1
4
01200
-group_end
-group_end
@28
@28
testbench353.i_x353.HACT
testbench353.i_x353.HACT
testbench353.i_x353.VACT
testbench353.i_x353.VACT
testbench353.DCLK
testbench353.DCLK
@c0002
3
@c0002
2
>-128600
>-128600
testbench353.i_x353.ipxd[15:0]
testbench353.i_x353.ipxd[15:0]
@28
@28
...
@@ -66,7 +66,7 @@ testbench353.i_x353.ipxd[15:0]
...
@@ -66,7 +66,7 @@ testbench353.i_x353.ipxd[15:0]
(13)testbench353.i_x353.ipxd[15:0]
(13)testbench353.i_x353.ipxd[15:0]
(14)testbench353.i_x353.ipxd[15:0]
(14)testbench353.i_x353.ipxd[15:0]
(15)testbench353.i_x353.ipxd[15:0]
(15)testbench353.i_x353.ipxd[15:0]
@140120
1
@140120
0
-group_end
-group_end
@c00022
@c00022
>-149600
>-149600
...
@@ -132,9 +132,8 @@ testbench353.i_x353.i_timestamp353.use_ts
...
@@ -132,9 +132,8 @@ testbench353.i_x353.i_timestamp353.use_ts
-
-
@1000200
@1000200
-timestamp353
-timestamp353
@800200
-lens_flat
@c00200
@c00200
-lens_flat
-line_xy
-line_xy
@22
@22
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.A0[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.A0[18:0]
...
@@ -186,7 +185,64 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.preERR[23:0]
...
@@ -186,7 +185,64 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.preERR[23:0]
-line_y
-line_y
@200
@200
-
-
@800022
@28
testbench353.i_x353.i_sensorpix.i_lens_flat.fstart
@200
-
@800200
-i_fy
@22
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.A0[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.A2X[23:1]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.A[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.ApB[23:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.B0[20:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.ERR0[23:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.ERR[23:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.F0[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.F1[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.F[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.dF[10:0]
@28
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.first
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.first_d
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.inc[1:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.next
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.next_d
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.pclk
@22
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fy.preERR[23:0]
@1000200
-i_fy
@c00200
-i_fxy
@22
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.A0[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.A2X[23:1]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.A[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.ApB[23:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.B0[20:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.ERR0[23:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.ERR[23:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.F0[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.F1[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.F[18:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.dF[10:0]
@28
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.first
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.first_d
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.inc[1:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.next
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.next_d
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.pclk
@22
testbench353.i_x353.i_sensorpix.i_lens_flat.i_fxy.preERR[23:0]
@1401200
-i_fxy
@28
testbench353.i_x353.i_sensorpix.i_lens_flat.wen
testbench353.i_x353.i_sensorpix.i_lens_flat.linerun
@c00022
testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
@28
@28
(0)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
(0)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
...
@@ -205,9 +261,11 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
...
@@ -205,9 +261,11 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
(13)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
(13)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
(14)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
(14)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
(15)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
(15)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdi[15:0]
@1
0
01200
@1
4
01200
-group_end
-group_end
@800022
@28
(0)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
@c00022
testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
@28
@28
(0)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
(0)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
...
@@ -226,8 +284,14 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
...
@@ -226,8 +284,14 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
(13)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
(13)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
(14)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
(14)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
(15)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
(15)testbench353.i_x353.i_sensorpix.i_lens_flat.pixdo[15:0]
@1
0
01200
@1
4
01200
-group_end
-group_end
@22
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_first_res[35:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_first_scaled[17:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_second_res[35:0]
@200
-
@28
@28
testbench353.i_x353.i_sensorpix.i_lens_flat.pclk
testbench353.i_x353.i_sensorpix.i_lens_flat.pclk
testbench353.i_x353.i_sensorpix.i_lens_flat.fstart
testbench353.i_x353.i_sensorpix.i_lens_flat.fstart
...
@@ -236,7 +300,6 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.linerun
...
@@ -236,7 +300,6 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.linerun
@800022
@800022
testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
@28
@28
(0)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
(1)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
(1)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
(2)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
(2)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
(3)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
(3)testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
...
@@ -273,6 +336,7 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
...
@@ -273,6 +336,7 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.lens_corr_out[4:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.linerun
testbench353.i_x353.i_sensorpix.i_lens_flat.linerun
@22
@22
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_first_res[35:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_first_res[35:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.pix_zero[17:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_first_scaled[17:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_first_scaled[17:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_second_res[35:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.mult_second_res[35:0]
@28
@28
...
@@ -298,7 +362,7 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.we_post_scale
...
@@ -298,7 +362,7 @@ testbench353.i_x353.i_sensorpix.i_lens_flat.we_post_scale
testbench353.i_x353.i_sensorpix.i_lens_flat.we_scales
testbench353.i_x353.i_sensorpix.i_lens_flat.we_scales
testbench353.i_x353.i_sensorpix.i_lens_flat.wen
testbench353.i_x353.i_sensorpix.i_lens_flat.wen
testbench353.i_x353.i_sensorpix.i_lens_flat.wen_d[1:0]
testbench353.i_x353.i_sensorpix.i_lens_flat.wen_d[1:0]
@1
000
200
@1
401
200
-lens_flat
-lens_flat
@c00200
@c00200
-sensor12b
-sensor12b
...
@@ -317,9 +381,9 @@ testbench353.i_sensor12bits.state[3:0]
...
@@ -317,9 +381,9 @@ testbench353.i_sensor12bits.state[3:0]
testbench353.i_sensor12bits.stated[3:0]
testbench353.i_sensor12bits.stated[3:0]
@1401200
@1401200
-sensor12b
-sensor12b
@
8
00200
@
c
00200
-debug_sensorpads
-debug_sensorpads
@1
000
200
@1
401
200
-debug_sensorpads
-debug_sensorpads
@200
@200
-
-
...
@@ -591,10 +655,10 @@ testbench353.i_x353.i_sensorpads.pxdi[11:0]
...
@@ -591,10 +655,10 @@ testbench353.i_x353.i_sensorpads.pxdi[11:0]
testbench353.i_x353.i_sensorpads.xpgmen_d[1:0]
testbench353.i_x353.i_sensorpads.xpgmen_d[1:0]
@1401200
@1401200
-sensorpads
-sensorpads
@200
@c00200
-
@800200
-sensorpix
-sensorpix
@28
testbench353.i_x353.i_sensorpix.hact
@c00022
@c00022
testbench353.i_x353.i_sensorpix.pxd[15:0]
testbench353.i_x353.i_sensorpix.pxd[15:0]
@28
@28
...
@@ -617,6 +681,47 @@ testbench353.i_x353.i_sensorpix.pxd[15:0]
...
@@ -617,6 +681,47 @@ testbench353.i_x353.i_sensorpix.pxd[15:0]
@1401200
@1401200
-group_end
-group_end
@28
@28
testbench353.i_x353.i_sensorpix.bayer[1:0]
testbench353.i_x353.i_sensorpix.en
testbench353.i_x353.i_sensorpix.bayer_nset
testbench353.i_x353.i_sensorpix.bayer0_latched
@c00022
testbench353.i_x353.i_sensorpix.color[1:0]
@28
(0)testbench353.i_x353.i_sensorpix.color[1:0]
(1)testbench353.i_x353.i_sensorpix.color[1:0]
@1401200
-group_end
@200
-
@28
testbench353.i_x353.i_sensorpix.hact_outp
testbench353.i_x353.i_sensorpix.hact_out
@22
testbench353.i_x353.i_sensorpix.pd_lenscorr_out[15:0]
testbench353.i_x353.i_sensorpix.i_cstableh.ADDRA[10:0]
testbench353.i_x353.i_sensorpix.table_base_w[9:0]
testbench353.i_x353.i_sensorpix.table_diff_w[7:0]
testbench353.i_x353.i_sensorpix.table_base[9:0]
@200
-
@22
testbench353.i_x353.i_sensorpix.pd_lenscorr_out_d[7:0]
testbench353.i_x353.i_sensorpix.table_diff[10:0]
testbench353.i_x353.i_sensorpix.table_mult[35:0]
testbench353.i_x353.i_sensorpix.table_mult_r[17:7]
testbench353.i_x353.i_sensorpix.table_base_r[9:0]
testbench353.i_x353.i_sensorpix.interp_data[9:0]
testbench353.i_x353.i_sensorpix.cdata[7:0]
@200
-
@22
testbench353.i_x353.i_sensorpix.do[15:0]
@28
testbench353.i_x353.i_sensorpix.dwe
@200
-
@28
testbench353.i_x353.i_sensorpix.twce_d
testbench353.i_x353.i_sensorpix.twce_d
testbench353.i_x353.i_sensorpix.i_cstableh.DIPB
testbench353.i_x353.i_sensorpix.i_cstableh.DIPB
@22
@22
...
@@ -769,8 +874,159 @@ testbench353.i_x353.i_sensorpix.we_lensff
...
@@ -769,8 +874,159 @@ testbench353.i_x353.i_sensorpix.we_lensff
testbench353.i_x353.i_sensorpix.wfpn
testbench353.i_x353.i_sensorpix.wfpn
testbench353.i_x353.i_sensorpix.wpage
testbench353.i_x353.i_sensorpix.wpage
testbench353.i_x353.i_sensorpix.wthrsh
testbench353.i_x353.i_sensorpix.wthrsh
@1
000
200
@1
401
200
-sensorpix
-sensorpix
@200
-
@800200
-histogram
@28
testbench353.i_x353.i_histogram.bayer_phase[1:0]
@c00023
testbench353.i_x353.i_histogram.hist_seq[5:0]
@29
(0)testbench353.i_x353.i_histogram.hist_seq[5:0]
(1)testbench353.i_x353.i_histogram.hist_seq[5:0]
(2)testbench353.i_x353.i_histogram.hist_seq[5:0]
(3)testbench353.i_x353.i_histogram.hist_seq[5:0]
(4)testbench353.i_x353.i_histogram.hist_seq[5:0]
(5)testbench353.i_x353.i_histogram.hist_seq[5:0]
@1401201
-group_end
@c00022
testbench353.i_x353.i_histogram.bayer[1:0]
@28
(0)testbench353.i_x353.i_histogram.bayer[1:0]
(1)testbench353.i_x353.i_histogram.bayer[1:0]
@1401200
-group_end
@22
testbench353.histogram_count[9:0]
testbench353.histogram_total
testbench353.i_x353.i_histogram.di_a[15:0]
@28
testbench353.i_x353.i_histogram.di_vld_a
testbench353.i_x353.i_histogram.line_start
testbench353.i_x353.i_histogram.line_started
testbench353.i_x353.i_histogram.line_ended
testbench353.i_x353.i_histogram.line_run
testbench353.i_x353.i_histogram.frame_started
testbench353.i_x353.i_histogram.frame_ended
testbench353.i_x353.i_histogram.last_line
testbench353.i_x353.i_histogram.line_start_posl_zero
testbench353.i_x353.i_histogram.window_on
@22
testbench353.i_x353.i_histogram.pos_left[13:1]
testbench353.i_x353.i_histogram.pos_top[13:1]
testbench353.i_x353.i_histogram.size_width[13:1]
testbench353.i_x353.i_histogram.size_height[13:1]
@28
testbench353.i_x353.i_histogram.hist_ena
testbench353.i_x353.i_histogram.hist_wea
@22
testbench353.i_x353.i_histogram.hist_waddr[9:0]
testbench353.i_x353.i_histogram.hist_waddr_hold1[9:0]
testbench353.i_x353.i_histogram.hist_waddr_hold2[9:0]
testbench353.i_x353.i_histogram.hist_dia[17:0]
testbench353.i_x353.i_histogram.hist_doa[17:0]
@28
testbench353.i_x353.i_histogram.same_waddr
@200
-
@22
testbench353.i_x353.i_histogram.di[15:0]
@28
testbench353.i_x353.i_histogram.bayer[1:0]
testbench353.i_x353.i_histogram.bayer_en
testbench353.i_x353.i_histogram.bayer_phase[1:0]
testbench353.i_x353.i_histogram.bayer_phase_latched[1:0]
@22
testbench353.i_x353.i_histogram.di2x[15:0]
testbench353.i_x353.i_histogram.di[15:0]
testbench353.i_x353.i_histogram.di_a[15:0]
@28
testbench353.i_x353.i_histogram.di_vld
testbench353.i_x353.i_histogram.di_vld_a
@22
testbench353.i_x353.i_histogram.dvld2x[3:0]
@28
testbench353.i_x353.i_histogram.end_hist_init
testbench353.i_x353.i_histogram.frame_ended
testbench353.i_x353.i_histogram.frame_run
testbench353.i_x353.i_histogram.frame_run_s[2:0]
testbench353.i_x353.i_histogram.frame_start
testbench353.i_x353.i_histogram.frame_started
testbench353.i_x353.i_histogram.hist_bank
@22
testbench353.i_x353.i_histogram.hist_dia[17:0]
testbench353.i_x353.i_histogram.hist_do0[17:0]
testbench353.i_x353.i_histogram.hist_do[31:0]
testbench353.i_x353.i_histogram.hist_doa[17:0]
@28
testbench353.i_x353.i_histogram.hist_ena
@22
testbench353.i_x353.i_histogram.hist_init_cntr[9:0]
testbench353.i_x353.i_histogram.hist_post[17:0]
testbench353.i_x353.i_histogram.hist_pre[17:0]
testbench353.i_x353.i_histogram.hist_raddr[9:0]
testbench353.i_x353.i_histogram.hist_seq[5:0]
testbench353.i_x353.i_histogram.hist_waddr[9:0]
testbench353.i_x353.i_histogram.hist_waddr_hold1[9:0]
testbench353.i_x353.i_histogram.hist_waddr_hold2[9:0]
@28
testbench353.i_x353.i_histogram.hist_wea
testbench353.i_x353.i_histogram.init_hist
testbench353.i_x353.i_histogram.init_hist_d
testbench353.i_x353.i_histogram.last_line
@22
testbench353.i_x353.i_histogram.line_cntr[13:1]
@28
testbench353.i_x353.i_histogram.line_end
testbench353.i_x353.i_histogram.line_ended
testbench353.i_x353.i_histogram.line_run
testbench353.i_x353.i_histogram.line_run_a
testbench353.i_x353.i_histogram.line_run_s[2:0]
testbench353.i_x353.i_histogram.line_start
testbench353.i_x353.i_histogram.line_start_posl_nzero
testbench353.i_x353.i_histogram.line_start_posl_zero
testbench353.i_x353.i_histogram.line_started
@22
testbench353.i_x353.i_histogram.minus_pos_left[13:1]
@28
testbench353.i_x353.i_histogram.odd_line
testbench353.i_x353.i_histogram.pclk
testbench353.i_x353.i_histogram.pclk2x
@22
testbench353.i_x353.i_histogram.pix_cntr[13:1]
testbench353.i_x353.i_histogram.pos_left[13:1]
@28
testbench353.i_x353.i_histogram.pos_left_is_zero
@22
testbench353.i_x353.i_histogram.pos_top[13:1]
@28
testbench353.i_x353.i_histogram.pre_di_vld
testbench353.i_x353.i_histogram.pre_same_addr
testbench353.i_x353.i_histogram.rd_hist
testbench353.i_x353.i_histogram.rnext
testbench353.i_x353.i_histogram.same_waddr
testbench353.i_x353.i_histogram.sclk
@22
testbench353.i_x353.i_histogram.size_height[13:1]
testbench353.i_x353.i_histogram.size_width[13:1]
@28
testbench353.i_x353.i_histogram.wa[2:0]
@22
testbench353.i_x353.i_histogram.wd[15:0]
testbench353.i_x353.i_histogram.wdd[15:0]
@28
testbench353.i_x353.i_histogram.we_addr
testbench353.i_x353.i_histogram.we_addr_d
testbench353.i_x353.i_histogram.we_pos[1:0]
testbench353.i_x353.i_histogram.we_size[1:0]
testbench353.i_x353.i_histogram.wen
testbench353.i_x353.i_histogram.window_on
@1000200
-histogram
@c00200
@c00200
-sdram
-sdram
@22
@22
...
...
x353_1.tf
View file @
49896216
...
@@ -35,7 +35,8 @@ module testbench353();
...
@@ -35,7 +35,8 @@ module testbench353();
parameter
SYNC_BIT_LENGTH
=
8
-
1
;
/// 7 pixel clock pulses
parameter
SYNC_BIT_LENGTH
=
8
-
1
;
/// 7 pixel clock pulses
parameter
FPGA_XTRA_CYCLES
=
1500
;
// 1072+;
parameter
FPGA_XTRA_CYCLES
=
1500
;
// 1072+;
parameter
HISTOGRAM_LEFT
=
0
;
//2; // left
parameter
HISTOGRAM_LEFT
=
0
;
//2; // left
parameter
HISTOGRAM_TOP
=
2
;
// top
// parameter HISTOGRAM_TOP = 2; // top
parameter
HISTOGRAM_TOP
=
8
;
// top - otherwise no time to erase
parameter
HISTOGRAM_WIDTH
=
6
;
// width
parameter
HISTOGRAM_WIDTH
=
6
;
// width
parameter
HISTOGRAM_HEIGHT
=
6
;
// height
parameter
HISTOGRAM_HEIGHT
=
6
;
// height
parameter
CLK0_PER
=
6.25
;
//160MHz
parameter
CLK0_PER
=
6.25
;
//160MHz
...
@@ -1122,7 +1123,8 @@ $display ("saturation=2");
...
@@ -1122,7 +1123,8 @@ $display ("saturation=2");
// cpu_wr('
h62
,
'h0c002400); // JP46 - mode 2
// cpu_wr('
h62
,
'h0c002400); // JP46 - mode 2
cpu_wr('
h62
,
'h0c000006); // mode - single
cpu_wr('
h62
,
'h0c000006); // mode - single
cpu_wr('
h62
,
'h4e000000 | '
h4
);
// bayer=0
cpu_wr('
h62
,
'h4e000000 | '
h4
);
// bayer=0
cpu_wr
(
'h64, '
h4e000000
|
'h5 );// bayer=1
//AF2015 cpu_wr('h64, 'h4e000000 | 'h5 );// bayer=1
cpu_wr
(
'h65, '
h4e000000
|
'h5 );// bayer=1 AF2015 - make it later to compare with 393
/*
/*
AX(0x000000): writing 0x000000 to 0x31
AX(0x000000): writing 0x000000 to 0x31
...
@@ -1141,11 +1143,13 @@ $display ("saturation=2");
...
@@ -1141,11 +1143,13 @@ $display ("saturation=2");
// Lens flat field correction
// Lens flat field correction
cpu_wr('
h62
,
'h31000000); // [AX] => 0x0
//
cpu_wr('
h62
,
'h31000000); // [AX] => 0x0
cpu_wr('
h62
,
'h31080000); // [AY] => 0
//
cpu_wr('
h62
,
'h31080000); // [AY] => 0
cpu_wr('
h62
,
'h31108000); // [C] => 0x8000
cpu_wr('
h62
,
'h31108000); // [C] => 0x8000
cpu_wr('
h62
,
'h31200000); // [BX] => 0
cpu_wr('
h62
,
'h31380000); // [BX] => 0x180000; // 0
cpu_wr('
h62
,
'h31400000); // [BY] => 0
cpu_wr('
h62
,
'h31580000); // [BY] => 0x180000; // 0
// cpu_wr('
h62
,
'h31200000); // [BX] => 0x180000; // 0
// cpu_wr('
h62
,
'h31400000); // [BY] => 0x180000; // 0
cpu_wr('
h62
,
'h31608000); // [scales0] => 32768
cpu_wr('
h62
,
'h31608000); // [scales0] => 32768
cpu_wr('
h62
,
'h31628000); // [scales1] => 32768
cpu_wr('
h62
,
'h31628000); // [scales1] => 32768
...
@@ -1155,11 +1159,14 @@ $display ("saturation=2");
...
@@ -1155,11 +1159,14 @@ $display ("saturation=2");
cpu_wr('
h62
,
'h31690000); // [fatzero_out] => 0
cpu_wr('
h62
,
'h31690000); // [fatzero_out] => 0
cpu_wr('
h62
,
'h316a0001); // [post_scale] => 3 - X
cpu_wr('
h62
,
'h316a0001); // [post_scale] => 3 - X
cpu_wr('
h63
,
'h31020000); // [AX] => 0x20000
// cpu_wr('
h63
,
'h31020000); // [AX] => 0x20000
cpu_wr('
h63
,
'h310a0000); // [AY] => 0x20000
// cpu_wr('
h63
,
'h310a0000); // [AY] => 0x20000
cpu_wr('
h62
,
'h31020000); // [AX] => 0x20000
cpu_wr('
h62
,
'h310a0000); // [AY] => 0x20000
cpu_wr('
h64
,
'h31200000); // [BX] => 0x180000
// TODO: move to '
h62
(
together
with
393
)
cpu_wr('
h64
,
'h31400000); // [BY] => 0x180000
// cpu_wr('h64,'h31200000); // [BX] => 0x180000
// cpu_wr('h64,'h31400000); // [BY] => 0x180000
`
ifdef
CONTINUOUS_COMPRESSION
`
ifdef
CONTINUOUS_COMPRESSION
TEST_TITLE
=
"START_CONTINUOUS_COMPRESSION"
;
TEST_TITLE
=
"START_CONTINUOUS_COMPRESSION"
;
...
...
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