@@ -56,7 +56,7 @@ end disparity_generator;
56
56
57
57
architecture Behavioral of disparity_generator is
58
58
59
- type CacheArray is array (0 to WIDTH * fetchBlock- 1 ) of std_logic_vector (3 downto 0 );
59
+ type CacheArray is array (0 to WIDTH * fetchBlock+ 1 ) of std_logic_vector (3 downto 0 );
60
60
signal org_L : CacheArray; -- temporary storage for Left image
61
61
signal org_R : CacheArray; -- temporary storage for Right image
62
62
@@ -80,39 +80,39 @@ begin
80
80
81
81
with cacheManager select
82
82
left_right_addr <= readreg when "0000" ,
83
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock, readreg'length )) when "0001" ,
84
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 2 , readreg'length )) when "0010" ,
85
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 3 , readreg'length )) when "0011" ,
86
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 4 , readreg'length )) when "0100" ,
87
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 5 , readreg'length )) when "0101" ,
88
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 6 , readreg'length )) when "0110" ,
89
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 7 , readreg'length )) when "0111" ,
90
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 8 , readreg'length )) when "1000" ,
91
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 9 , readreg'length )) when "1001" ,
92
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 10 , readreg'length )) when "1010" ,
93
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 11 , readreg'length )) when "1011" ,
94
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 12 , readreg'length )) when "1100" ,
95
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 13 , readreg'length )) when "1101" ,
96
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 14 , readreg'length )) when "1110" ,
97
- readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 15 , readreg'length )) when "1111" ;
83
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock- WIDTH , readreg'length )) when "0001" ,
84
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 2 - WIDTH , readreg'length )) when "0010" ,
85
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 3 - WIDTH , readreg'length )) when "0011" ,
86
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 4 - WIDTH , readreg'length )) when "0100" ,
87
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 5 - WIDTH , readreg'length )) when "0101" ,
88
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 6 - WIDTH , readreg'length )) when "0110" ,
89
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 7 - WIDTH , readreg'length )) when "0111" ,
90
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 8 - WIDTH , readreg'length )) when "1000" ,
91
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 9 - WIDTH , readreg'length )) when "1001" ,
92
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 10 - WIDTH , readreg'length )) when "1010" ,
93
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 11 - WIDTH , readreg'length )) when "1011" ,
94
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 12 - WIDTH , readreg'length )) when "1100" ,
95
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 13 - WIDTH , readreg'length )) when "1101" ,
96
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 14 - WIDTH , readreg'length )) when "1110" ,
97
+ readreg + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 15 - WIDTH , readreg'length )) when "1111" ;
98
98
99
99
with cacheManager select
100
- dOUT_addr <= std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) when "000" ,
101
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock, dOUT_addr'length )) when "0001" ,
102
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 2 , dOUT_addr'length )) when "0010" ,
103
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 3 , dOUT_addr'length )) when "0011" ,
104
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 4 , dOUT_addr'length )) when "0100" ,
105
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 5 , dOUT_addr'length )) when "0101" ,
106
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 6 , dOUT_addr'length )) when "0110" ,
107
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 7 , dOUT_addr'length )) when "0111" ,
108
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 8 , dOUT_addr'length )) when "1000" ,
109
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 9 , dOUT_addr'length )) when "1001" ,
110
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 10 , dOUT_addr'length )) when "1010" ,
111
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 11 , dOUT_addr'length )) when "1011" ,
112
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 12 , dOUT_addr'length )) when "1100" ,
113
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 13 , dOUT_addr'length )) when "1101" ,
114
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 14 , dOUT_addr'length )) when "1110" ,
115
- std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col)), dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 15 , dOUT_addr'length )) when "1111" ;
100
+ dOUT_addr <= std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) when "000" ,
101
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock, dOUT_addr'length )) when "0001" ,
102
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 2 , dOUT_addr'length )) when "0010" ,
103
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 3 , dOUT_addr'length )) when "0011" ,
104
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 4 , dOUT_addr'length )) when "0100" ,
105
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 5 , dOUT_addr'length )) when "0101" ,
106
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 6 , dOUT_addr'length )) when "0110" ,
107
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 7 , dOUT_addr'length )) when "0111" ,
108
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 8 , dOUT_addr'length )) when "1000" ,
109
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 9 , dOUT_addr'length )) when "1001" ,
110
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 10 , dOUT_addr'length )) when "1010" ,
111
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 11 , dOUT_addr'length )) when "1011" ,
112
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 12 , dOUT_addr'length )) when "1100" ,
113
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 13 , dOUT_addr'length )) when "1101" ,
114
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 14 , dOUT_addr'length )) when "1110" ,
115
+ std_logic_vector (to_unsigned ((to_integer (unsigned (row))) * WIDTH + to_integer (unsigned (col))- to_integer ( unsigned (best_offset)) , dOUT_addr'length )) + std_logic_vector (to_unsigned (WIDTH * fetchBlock* 15 , dOUT_addr'length )) when "1111" ;
116
116
117
117
-- with cacheManager select
118
118
-- left_right_addr <= readreg when "00",
@@ -135,7 +135,7 @@ avg_reg_en <= not doneFetch;
135
135
caching_process : process (HCLK) begin
136
136
if rising_edge (HCLK) then
137
137
if doneFetch= '0' then
138
- if unsigned (readreg)< WIDTH * fetchBlock then -- replace fetchBlock with height if fetchBlock concept is removed
138
+ if unsigned (readreg)< WIDTH * fetchBlock+ 2 * WIDTH then -- replace fetchBlock with height if fetchBlock concept is removed
139
139
org_L(to_integer (unsigned (readreg)))<= left_in;
140
140
org_R(to_integer (unsigned (readreg)))<= right_in;
141
141
avg_out<= std_logic_vector (unsigned (left_in) + unsigned (right_in)/ 2 );
@@ -154,7 +154,7 @@ Image_process: process (CLK_MAIN) begin
154
154
doneFetch <= '1' ;
155
155
end if ;
156
156
if doneFetch= '1' then
157
- if unsigned (data_count)< WIDTH * fetchBlock then -- replace fetchBlock with height if fetchBlock concept is removed
157
+ if unsigned (data_count)< WIDTH * fetchBlock+ WIDTH then -- replace fetchBlock with height if fetchBlock concept is removed
158
158
if (offsetfound= '1' ) then
159
159
if (col = WIDTH - 1 ) then
160
160
col <= (others => '0' );
@@ -186,9 +186,9 @@ Image_process: process (CLK_MAIN) begin
186
186
-- end if;
187
187
else
188
188
cacheManager<= cacheManager+ "1" ; -- Comment this if remove fetchBlock concept
189
- data_count <= ( others => '0' );
189
+ data_count <= std_logic_vector ( to_unsigned ( WIDTH ,data_count 'length ) );
190
190
doneFetch <= '0' ;
191
- row<= ( others => '0' );
191
+ row<= std_logic_vector ( to_unsigned ( 1 ,row 'length ) );
192
192
end if ;
193
193
194
194
end if ;
@@ -200,8 +200,7 @@ SSD_calc_process: process (CLK_MAIN) begin
200
200
if rising_edge (CLK_MAIN) then
201
201
SSD_calc<= '0' ;
202
202
if (offsetping= '1' ) then
203
- ssd <= std_logic_vector
204
- (to_unsigned (
203
+ ssd <= std_logic_vector (to_unsigned (
205
204
(to_integer (unsigned (org_L((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) - 1 )))- to_integer (unsigned (org_R((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) - 1 - to_integer (unsigned (offset))))))* (to_integer (unsigned (org_L((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) - 1 )))- to_integer (unsigned (org_R((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) - 1 - to_integer (unsigned (offset))))))
206
205
+ (to_integer (unsigned (org_L((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 0 )))- to_integer (unsigned (org_R((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 0 - to_integer (unsigned (offset))))))* (to_integer (unsigned (org_L((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 0 )))- to_integer (unsigned (org_R((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 0 - to_integer (unsigned (offset))))))
207
206
+ (to_integer (unsigned (org_L((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 1 )))- to_integer (unsigned (org_R((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 1 - to_integer (unsigned (offset))))))* (to_integer (unsigned (org_L((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 1 )))- to_integer (unsigned (org_R((to_integer (unsigned (row)) - 1 ) * WIDTH + to_integer (unsigned (col)) + 1 - to_integer (unsigned (offset))))))
@@ -226,7 +225,11 @@ Image_write_process: process (offsetfound,HCLK) begin
226
225
wr_en<= '1' ;
227
226
-- dOUT<=std_logic_vector(to_unsigned(to_integer((unsigned(best_offset)-minoffset)*4),dOUT'length));
228
227
-- dOUT<=std_logic_vector(to_unsigned(to_integer(unsigned(best_offset)),dOUT'length));
229
- dOUT<= std_logic_vector (to_unsigned (to_integer ((unsigned (best_offset))- minoffset)* (255 / (maxoffset- minoffset)),dOUT'length ));
228
+ -- if to_integer(unsigned(best_offset)) > 10 then
229
+ dOUT<= (std_logic_vector (to_unsigned (to_integer ((unsigned (best_offset))- minoffset)* (255 / (maxoffset- minoffset)),dOUT'length )));
230
+ -- else
231
+ -- dOUT<= "00000000";
232
+ -- end if;
230
233
-- dOUT<=std_logic_vector(unsigned(org_L((to_integer(unsigned(row))) * WIDTH + to_integer(unsigned(col))))+unsigned(org_R((to_integer(unsigned(row)) -1 ) * WIDTH + to_integer(unsigned(col))))/2);
231
234
else
232
235
wr_en<= '0' ;
0 commit comments