@@ -257,7 +257,7 @@ SC_MODULE(Tb_top)
257257
258258 signed char * compression_results;
259259
260- colorImage = imread (" ../../tools/datagen/src/imgs/car_rgb_noisy_image.jpg" , IMREAD_UNCHANGED );
260+ /* colorImage = imread("../../tools/datagen/src/imgs/car_rgb_noisy_image.jpg", IMREAD_UNCHANGED);
261261
262262 if (colorImage.empty())
263263 {
@@ -315,36 +315,62 @@ SC_MODULE(Tb_top)
315315 }
316316 }
317317
318- dbgprint (" Saved image in memory" );
318+ dbgprint("Saved image in memory");*/
319319
320- dbgprint (" Starting VGA to receive image" );
321-
322- unsigned char *vga_start = new unsigned char ;
323- *vga_start = 1 ;
324- tb_initiator->write (vga_start, IMG_INPUT_START_ADDRESS_LO , sizeof (char ));
325-
326- for (int i = 0 ; i < IPS_TOTAL_VERTICAL ; ++i)
327- {
328- for (int j = 0 ; j < IPS_TOTAL_HORIZONTAL ; ++j)
329- {
330- this ->vga_DUT ->run ();
331- // Wait 40ns for conversions
332- }
333- }
334-
335- dbgprint (" Ending VGA" );
336-
337320 Mat grayImagePrevMem (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
338321 Mat filteredImagePrevMem (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
339322 Mat detectedImagePrevMemX (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
340323 Mat detectedImagePrevMemY (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
341324 Mat detectedImagePrevMem (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
342325
326+ Mat originalImageAfterMem (IMAG_ROWS , IMAG_COLS , CV_8UC3 );
343327 Mat grayImageAfterMem (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
344328 Mat filteredImageAfterMem (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
345329 Mat detectedImageAfterMemX (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
346330 Mat detectedImageAfterMemY (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
347331 Mat detectedImageAfterMem (IMAG_ROWS , IMAG_COLS , CV_8UC1 );
332+
333+ dbgprint (" Starting VGA to receive image" );
334+
335+ unsigned char *vga_start = new unsigned char ;
336+ unsigned char *vga_done;
337+ *vga_start = 1 ;
338+ tb_initiator->write (vga_start, IMG_INPUT_START_ADDRESS_LO , sizeof (char ));
339+
340+ // for (int i = 0; i < IPS_TOTAL_VERTICAL; ++i)
341+ // {
342+ // for (int j = 0; j < IPS_TOTAL_HORIZONTAL; ++j)
343+ // {
344+ // // this->vga_DUT->run();
345+ // // Wait 40ns for conversions
346+
347+ // }
348+ // }
349+ tb_initiator->read (vga_done, IMG_INPUT_DONE_ADDRESS_LO , sizeof (char ));
350+ while (*vga_done == 0 )
351+ {
352+ delete[] vga_done;
353+ wait (10 , SC_US );
354+ tb_initiator->read (vga_done, IMG_INPUT_DONE_ADDRESS_LO , sizeof (char ));
355+ }
356+ delete[] vga_done;
357+
358+ dbgprint (" Ending VGA" );
359+
360+ tb_initiator->read (local_results, IMG_INPUT_ADDRESS_LO , IMAG_ROWS * IMAG_COLS * 3 );
361+
362+ // Sanity check that the image was written in memory as expected
363+ for (int i = 0 ; i < IMAG_ROWS ; i++)
364+ {
365+ for (int j = 0 ; j < IMAG_COLS ; j++)
366+ {
367+ originalImageAfterMem.at <cv::Vec3b>(i, j)[2 ] = local_results[(i * IMAG_COLS * 3 ) + (j * 3 ) + 2 ];
368+ originalImageAfterMem.at <cv::Vec3b>(i, j)[1 ] = local_results[(i * IMAG_COLS * 3 ) + (j * 3 ) + 1 ];
369+ originalImageAfterMem.at <cv::Vec3b>(i, j)[0 ] = local_results[(i * IMAG_COLS * 3 ) + (j * 3 ) ];
370+ }
371+ }
372+
373+ /*
348374
349375 total_number_of_pixels = IMAG_ROWS * IMAG_COLS;
350376
@@ -818,7 +844,10 @@ SC_MODULE(Tb_top)
818844 }
819845
820846 dbgprint("Finished with the transmision of the image");
847+ */
821848
849+ imwrite (" originalImageAfterMem.jpg" , originalImageAfterMem);
850+ /*
822851 imwrite("grayImagePrevMem.jpg", grayImagePrevMem);
823852 imwrite("grayImageAfterMem.jpg", grayImageAfterMem);
824853 imwrite("filteredImagePrevMem.jpg", filteredImagePrevMem);
@@ -828,7 +857,7 @@ SC_MODULE(Tb_top)
828857 imwrite("detectedImagePrevMemY.jpg", detectedImagePrevMemY);
829858 imwrite("detectedImageAfterMemY.jpg", detectedImageAfterMemY);
830859 imwrite("detectedImagePrevMem.jpg", detectedImagePrevMem);
831- imwrite (" detectedImageAfterMem.jpg" , detectedImageAfterMem);
860+ imwrite("detectedImageAfterMem.jpg", detectedImageAfterMem);*/
832861
833862 sc_stop ();
834863 }
0 commit comments