tu1978 さんにラプラシアンフィルタの高速化を改めて見てみると、私のようにline_buf(ピクセルのラインバッファ)の2次元配列の内の3つのラインから3つのピクセルを取り出すと、どうしてもポート数が足りなくなると思う。line_bufはBlockRAMにアサインされていると思うので、ポート数が精々2つである。そこから3つを取り出すので、少なくとも2クロック掛かる。もしかして、何も指定していないと3クロック掛けて3 ピクセルを取り出しているかもしれない?Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする5(Cソースのフィルタ処理をパイプライン化)
Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする6(パイプライン化ソースを実機テスト1)
Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする7(パイプライン化ソースを実機テスト2)
Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする8(パイプライン化ソースを実機テスト3)
Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする9(単体シミュレーション)
// lap_filter_axi_tu.cpp
// lap_filter_axim()
#include <stdio.h>
#include <string.h>
#include <ap_int.h>
#define HORIZONTAL_PIXEL_WIDTH 800
#define VERTICAL_PIXEL_WIDTH 600
#define ALL_PIXEL_VALUE (HORIZONTAL_PIXEL_WIDTH*VERTICAL_PIXEL_WIDTH)
int laplacian_fil(int x0y0, int x1y0, int x2y0, int x0y1, int x1y1, int x2y1, int x0y2, int x1y2, int x2y2);
int conv_rgb2y(int rgb);
void conv_line(unsigned int* buf){
for (int b=0; b<HORIZONTAL_PIXEL_WIDTH; b++){
#pragma HLS pipeline
buf[b] = conv_rgb2y(buf[b]); // カラーから白黒へ
}
}
void filter_line(unsigned int* lap_buf, unsigned int* fl, unsigned int* sl, unsigned int* tl){
int lap_fil_val;
ap_uint<8> prev[3],current[3],next[3]; // 0->1ライン目, 1->2ライン目, 2->3ライン目, prev->1pixel前, current->現在, next->次pixel
#pragma HLS array_partition variable=prev complete dim=0
#pragma HLS array_partition variable=current complete dim=0
#pragma HLS array_partition variable=next complete dim=0
next[0] = fl[0] & 0xFF;
next[1] = sl[0] & 0xFF;
next[2] = sl[0] & 0xFF;
for (int x = 0; x < HORIZONTAL_PIXEL_WIDTH; x++){
#pragma HLS pipeline
if (x == 0 || x == HORIZONTAL_PIXEL_WIDTH-1){
lap_fil_val = 0;
current[0] = next[0];
next[0] = fl[1];
current[1] = next[1];
next[1] = sl[1];
current[2] = next[2];
next[2] = tl[1];
}else{
prev[0] = current[0];
current[0] = next[0];
next[0] = fl[x+1];
prev[1] = current[1];
current[1] = next[1];
next[1] = sl[x+1];
prev[2] = current[2];
current[2] = next[2];
next[2] = tl[x+1];
lap_fil_val = laplacian_fil(prev[0], current[0], next[0],
prev[1], current[1], next[1],
prev[2], current[2], next[2]);
}
lap_buf[x] = (lap_fil_val<<16)+(lap_fil_val<<8)+lap_fil_val; // RGB同じ値を入れる
}
}
int lap_filter_axim(int cam_addr, int lap_addr, volatile int *cam_fb, volatile int *lap_fb)
{
#pragma HLS INTERFACE s_axilite port=cam_addr bundle=BUS_AXI4LS
#pragma HLS INTERFACE s_axilite port=lap_addr bundle=BUS_AXI4LS
#pragma HLS INTERFACE s_axilite port=return bundle=BUS_AXI4LS
#pragma HLS INTERFACE ap_none port=cam_addr
#pragma HLS INTERFACE ap_none port=lap_addr
#pragma HLS INTERFACE m_axi port=cam_fb depth=1920
#pragma HLS INTERFACE m_axi port=lap_fb depth=1920
unsigned int line_buf[3][HORIZONTAL_PIXEL_WIDTH];
#pragma HLS array_partition variable line_buf block factor=3 dim=1
#pragma HLS resource variable=line_buf core=RAM_2P
unsigned int lap_buf[HORIZONTAL_PIXEL_WIDTH];
int x, y;
int lap_fil_val;
int a, b;
int fl, sl, tl;
unsigned int offset_cam_addr, offset_lap_addr;
int *cam_fb_addr, *lap_fb_addr;
int line_sel;
offset_cam_addr = cam_addr/sizeof(int);
offset_lap_addr = lap_addr/sizeof(int);
// RGB値をY(輝度成分)のみに変換し、ラプラシアンフィルタを掛けた。
for (y=1, line_sel=0; y<VERTICAL_PIXEL_WIDTH-1; y++){
// 最初のライン, y=1 012, y=2 120, y=3 201, y=4 012
switch(line_sel){
case 1 :
fl = 0; sl = 1; tl = 2;
break;
case 2 :
fl = 1; sl = 2; tl = 0;
break;
case 3 :
fl = 2; sl = 0; tl = 1;
break;
default :
fl = 0; sl = 1; tl = 2;
}
if (y == 1){
#ifndef __SYNTHESIS__
printf("copy 3 lines\n");
#endif
for (a=0; a<3; a++){
// 3ライン分
cam_fb_addr = (int*)(cam_fb+offset_cam_addr+(a*(HORIZONTAL_PIXEL_WIDTH)));
memcpy(line_buf[a], (unsigned int*)cam_fb_addr, HORIZONTAL_PIXEL_WIDTH*sizeof(int));
conv_line(line_buf[a]);
}
}else{ // 最初のラインではないので、1ラインだけ読み込む。すでに他の2ラインは読み込まれている
cam_fb_addr = (int*)(cam_fb+offset_cam_addr+((y+1)*(HORIZONTAL_PIXEL_WIDTH)));
memcpy(line_buf[tl], (unsigned int*)cam_fb_addr, HORIZONTAL_PIXEL_WIDTH*sizeof(int));
conv_line(line_buf[tl]);
}
filter_line(lap_buf, line_buf[fl], line_buf[sl], line_buf[tl]);
lap_fb_addr = (int *)(lap_fb+offset_lap_addr+(y*(HORIZONTAL_PIXEL_WIDTH)));
#ifndef __SYNTHESIS__
printf("write back:%d\n", y);
#endif
memcpy((unsigned int*)lap_fb_addr, (unsigned int*)lap_buf, HORIZONTAL_PIXEL_WIDTH*sizeof(int));
line_sel++;
if (line_sel > 3){
line_sel = 1;
}
}
// 最初と最後のラインは0にする
for (x = 0; x < HORIZONTAL_PIXEL_WIDTH; x++)
lap_buf[x] = 0;
lap_fb_addr = (int *)(lap_fb+offset_lap_addr+(0*(HORIZONTAL_PIXEL_WIDTH)));
memcpy((unsigned int*)lap_fb_addr, (unsigned int*)lap_buf, HORIZONTAL_PIXEL_WIDTH*sizeof(int));
lap_fb_addr = (int *)(lap_fb+offset_lap_addr+(VERTICAL_PIXEL_WIDTH-1)*HORIZONTAL_PIXEL_WIDTH);
memcpy((unsigned int*)lap_fb_addr, (unsigned int*)lap_buf, HORIZONTAL_PIXEL_WIDTH*sizeof(int));
return(1);
}
// RGBからYへの変換
// RGBのフォーマットは、{8'd0, R(8bits), G(8bits), B(8bits)}, 1pixel = 32bits
// 輝度信号Yのみに変換する。変換式は、Y = 0.299R + 0.587G + 0.114B
// "YUVフォーマット及び YUV<->RGB変換"を参考にした。http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/yuv.html
// 2013/09/27 : float を止めて、すべてint にした
int conv_rgb2y(int rgb){
int r, g, b, y_f;
int y;
b = rgb & 0xff;
g = (rgb>>8) & 0xff;
r = (rgb>>16) & 0xff;
y_f = 77*r + 150*g + 29*b; //y_f = 0.299*r + 0.587*g + 0.114*b;の係数に256倍した
y = y_f >> 8; // 256で割る
return(y);
}
// ラプラシアンフィルタ
// x0y0 x1y0 x2y0 -1 -1 -1
// x0y1 x1y1 x2y1 -1 8 -1
// x0y2 x1y2 x2y2 -1 -1 -1
int laplacian_fil(int x0y0, int x1y0, int x2y0, int x0y1, int x1y1, int x2y1, int x0y2, int x1y2, int x2y2)
{
int y;
y = -x0y0 -x1y0 -x2y0 -x0y1 +8*x1y1 -x2y1 -x0y2 -x1y2 -x2y2;
if (y<0)
y = 0;
else if (y>255)
y = 255;
return(y);
}
================================================================
== Vivado HLS Report for 'lap_filter_axim'
================================================================
* Date: Sun Mar 29 15:36:13 2015
* Version: 2014.4 (Build 1071461 on Tue Nov 18 16:42:57 PM 2014)
* Project: lap_filter_axim_tu_2014_4
* Solution: solution1
* Product family: zynq
* Target device: xc7z010clg400-1
================================================================
== Performance Estimates
================================================================
+ Timing (ns):
* Summary:
+---------+-------+----------+------------+
| Clock | Target| Estimated| Uncertainty|
+---------+-------+----------+------------+
|default | 10.00| 9.63| 1.25|
+---------+-------+----------+------------+
+ Latency (clock cycles):
* Summary:
+---------+---------+---------+---------+---------+
| Latency | Interval | Pipeline|
| min | max | min | max | Type |
+---------+---------+---------+---------+---------+
| 1942922| 3893598| 1942923| 3893599| none |
+---------+---------+---------+---------+---------+
+ Detail:
* Instance:
+----------------------------------------+-----------------------------+-----+-----+-----+-----+---------+
| | | Latency | Interval | Pipeline|
| Instance | Module | min | max | min | max | Type |
+----------------------------------------+-----------------------------+-----+-----+-----+-----+---------+
|grp_lap_filter_axim_filter_line_fu_420 |lap_filter_axim_filter_line | 807| 807| 807| 807| none |
|grp_lap_filter_axim_conv_line_fu_431 |lap_filter_axim_conv_line | 806| 806| 806| 806| none |
+----------------------------------------+-----------------------------+-----+-----+-----+-----+---------+
* Loop:
+-------------------------------+---------+---------+-------------+-----------+-----------+------+----------+
| | Latency | Iteration | Initiation Interval | Trip | |
| Loop Name | min | max | Latency | achieved | target | Count| Pipelined|
+-------------------------------+---------+---------+-------------+-----------+-----------+------+----------+
|- Loop 1 | 1940510| 3891186| 3245 ~ 6507 | -| -| 598| no |
| + Loop 1.1 | 4890| 4890| 1630| -| -| 3| no |
| ++ memcpy..cam_fb | 814| 814| 16| 1| 1| 800| yes |
| + memcpy..cam_fb | 814| 814| 16| 1| 1| 800| yes |
| + memcpy.lap_fb.lap_buf.gep8 | 801| 801| 3| 1| 1| 800| yes |
|- Loop 2 | 800| 800| 1| -| -| 800| no |
|- memcpy.lap_fb.lap_buf.gep7 | 801| 801| 3| 1| 1| 800| yes |
|- memcpy.lap_fb.lap_buf.gep | 801| 801| 3| 1| 1| 800| yes |
+-------------------------------+---------+---------+-------------+-----------+-----------+------+----------+
================================================================
== Utilization Estimates
================================================================
* Summary:
+-----------------+---------+-------+-------+-------+
| Name | BRAM_18K| DSP48E| FF | LUT |
+-----------------+---------+-------+-------+-------+
|Expression | -| 5| 0| 573|
|FIFO | -| -| -| -|
|Instance | 0| 4| 2244| 2804|
|Memory | 8| -| 0| 0|
|Multiplexer | -| -| -| 493|
|Register | -| -| 626| 4|
+-----------------+---------+-------+-------+-------+
|Total | 8| 9| 2870| 3874|
+-----------------+---------+-------+-------+-------+
|Available | 120| 80| 35200| 17600|
+-----------------+---------+-------+-------+-------+
|Utilization (%) | 6| 11| 8| 22|
+-----------------+---------+-------+-------+-------+
+ Detail:
* Instance:
+------------------------------------------+--------------------------------------+---------+-------+-----+-----+
| Instance | Module | BRAM_18K| DSP48E| FF | LUT |
+------------------------------------------+--------------------------------------+---------+-------+-----+-----+
|lap_filter_axim_BUS_AXI4LS_s_axi_U |lap_filter_axim_BUS_AXI4LS_s_axi | 0| 0| 144| 232|
|lap_filter_axim_cam_fb_m_axi_U |lap_filter_axim_cam_fb_m_axi | 0| 0| 512| 580|
|grp_lap_filter_axim_conv_line_fu_431 |lap_filter_axim_conv_line | 0| 3| 122| 139|
|grp_lap_filter_axim_filter_line_fu_420 |lap_filter_axim_filter_line | 0| 1| 204| 523|
|lap_filter_axim_lap_fb_m_axi_U |lap_filter_axim_lap_fb_m_axi | 0| 0| 512| 580|
|lap_filter_axim_urem_12ns_11ns_12_16_U11 |lap_filter_axim_urem_12ns_11ns_12_16 | 0| 0| 375| 375|
|lap_filter_axim_urem_12ns_11ns_12_16_U12 |lap_filter_axim_urem_12ns_11ns_12_16 | 0| 0| 375| 375|
+------------------------------------------+--------------------------------------+---------+-------+-----+-----+
|Total | | 0| 4| 2244| 2804|
+------------------------------------------+--------------------------------------+---------+-------+-----+-----+
* Memory:
+--------------+----------------------------+---------+---+----+------+-----+------+-------------+
| Memory | Module | BRAM_18K| FF| LUT| Words| Bits| Banks| W*Bits*Banks|
+--------------+----------------------------+---------+---+----+------+-----+------+-------------+
|lap_buf_U |lap_filter_axim_lap_buf | 2| 0| 0| 800| 28| 1| 22400|
|line_buf_0_U |lap_filter_axim_line_buf_0 | 2| 0| 0| 800| 32| 1| 25600|
|line_buf_1_U |lap_filter_axim_line_buf_0 | 2| 0| 0| 800| 32| 1| 25600|
|line_buf_2_U |lap_filter_axim_line_buf_0 | 2| 0| 0| 800| 32| 1| 25600|
+--------------+----------------------------+---------+---+----+------+-----+------+-------------+
|Total | | 8| 0| 0| 3200| 124| 4| 99200|
+--------------+----------------------------+---------+---+----+------+-----+------+-------------+
* FIFO:
N/A
* Expression:
+------------------------+----------+-------+---+----+------------+------------+
| Variable Name | Operation| DSP48E| FF| LUT| Bitwidth P0| Bitwidth P1|
+------------------------+----------+-------+---+----+------------+------------+
|mul2_fu_668_p2 | * | 1| 0| 0| 12| 13|
|mul_fu_778_p2 | * | 1| 0| 0| 12| 13|
|tmp_15_fu_691_p2 | * | 1| 0| 0| 10| 10|
|tmp_4_cast_fu_609_p2 | * | 1| 0| 0| 10| 10|
|tmp_4_fu_633_p2 | * | 1| 0| 0| 2| 10|
|a_1_fu_727_p2 | + | 0| 0| 2| 2| 1|
|grp_fu_659_p0 | + | 0| 0| 12| 12| 12|
|indvar_next1_fu_898_p2 | + | 0| 0| 10| 10| 1|
|indvar_next2_fu_648_p2 | + | 0| 0| 10| 10| 1|
|indvar_next3_fu_935_p2 | + | 0| 0| 10| 10| 1|
|indvar_next4_fu_813_p2 | + | 0| 0| 10| 10| 1|
|indvar_next_fu_762_p2 | + | 0| 0| 10| 10| 1|
|line_sel_1_fu_829_p2 | + | 0| 0| 32| 32| 1|
|next_mul_fu_715_p2 | + | 0| 0| 12| 12| 10|
|tmp2_fu_914_p2 | + | 0| 0| 31| 31| 19|
|tmp_10_fu_618_p2 | + | 0| 0| 31| 31| 31|
|tmp_16_fu_737_p2 | + | 0| 0| 31| 31| 31|
|tmp_17_fu_768_p2 | + | 0| 0| 12| 12| 12|
|tmp_fu_479_p2 | + | 0| 0| 31| 31| 10|
|x_1_fu_871_p2 | + | 0| 0| 10| 10| 1|
|y_1_fu_859_p2 | + | 0| 0| 10| 10| 1|
|newSel1_fu_537_p3 | Select | 0| 0| 2| 1| 2|
|newSel2_fu_545_p3 | Select | 0| 0| 3| 1| 1|
|newSel3_fu_563_p3 | Select | 0| 0| 2| 1| 2|
|newSel_fu_529_p3 | Select | 0| 0| 3| 1| 3|
|p_s_fu_851_p3 | Select | 0| 0| 32| 1| 1|
|sel_tmp1_fu_571_p3 | Select | 0| 0| 3| 1| 1|
|sel_tmp3_fu_579_p3 | Select | 0| 0| 3| 1| 3|
|tl_fu_587_p3 | Select | 0| 0| 2| 1| 2|
|ap_sig_bdd_1064 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_1086 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_1093 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_1107 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_1117 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_1123 | and | 0| 0| 1| 1| 1|
|exitcond1_fu_892_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond2_fu_642_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond3_fu_929_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond4_fu_721_p2 | icmp | 0| 0| 2| 2| 2|
|exitcond5_fu_489_p2 | icmp | 0| 0| 11| 10| 10|
|exitcond6_fu_807_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond9_fu_756_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond_fu_865_p2 | icmp | 0| 0| 11| 10| 9|
|icmp_fu_845_p2 | icmp | 0| 0| 38| 30| 1|
|sel_tmp2_fu_501_p2 | icmp | 0| 0| 40| 32| 2|
|sel_tmp4_fu_507_p2 | icmp | 0| 0| 40| 32| 1|
|sel_tmp_fu_495_p2 | icmp | 0| 0| 40| 32| 2|
|tmp_7_fu_599_p2 | icmp | 0| 0| 11| 10| 1|
|or_cond_fu_523_p2 | or | 0| 0| 1| 1| 1|
|not_sel_tmp4_fu_513_p2 | xor | 0| 0| 2| 1| 2|
|not_sel_tmp_fu_553_p2 | xor | 0| 0| 2| 1| 2|
+------------------------+----------+-------+---+----+------------+------------+
|Total | | 5| 0| 573| 535| 289|
+------------------------+----------+-------+---+----+------------+------------+
* Multiplexer:
+---------------------------------------------+----+-----------+-----+-----------+
| Name | LUT| Input Size| Bits| Total Bits|
+---------------------------------------------+----+-----------+-----+-----------+
|a_reg_340 | 2| 2| 2| 4|
|ap_NS_fsm | 66| 38| 1| 38|
|ap_reg_ppiten_pp0_it15 | 1| 2| 1| 2|
|ap_reg_ppiten_pp1_it15 | 1| 2| 1| 2|
|ap_reg_ppiten_pp2_it2 | 1| 2| 1| 2|
|ap_reg_ppiten_pp3_it2 | 1| 2| 1| 2|
|ap_reg_ppiten_pp4_it2 | 1| 2| 1| 2|
|ap_sig_ioackin_cam_fb_ARREADY | 1| 2| 1| 2|
|ap_sig_ioackin_lap_fb_AWREADY | 1| 2| 1| 2|
|ap_sig_ioackin_lap_fb_WREADY | 1| 2| 1| 2|
|cam_fb_ARADDR | 32| 3| 32| 96|
|grp_lap_filter_axim_conv_line_fu_431_tmp_20 | 2| 3| 2| 6|
|indvar1_reg_397 | 10| 2| 10| 20|
|indvar2_reg_329 | 10| 2| 10| 20|
|indvar3_reg_408 | 10| 2| 10| 20|
|indvar4_reg_375 | 10| 2| 10| 20|
|indvar_reg_364 | 10| 2| 10| 20|
|lap_buf_address0 | 10| 6| 10| 60|
|lap_buf_ce0 | 1| 3| 1| 3|
|lap_buf_d0 | 28| 3| 28| 84|
|lap_buf_we0 | 1| 3| 1| 3|
|lap_fb_AWADDR | 32| 4| 32| 128|
|lap_fb_WDATA | 32| 4| 32| 128|
|line_buf_0_address0 | 10| 3| 10| 30|
|line_buf_0_address1 | 10| 5| 10| 50|
|line_buf_0_ce0 | 1| 3| 1| 3|
|line_buf_0_ce1 | 1| 4| 1| 4|
|line_buf_0_d1 | 32| 3| 32| 96|
|line_buf_0_we1 | 1| 3| 1| 3|
|line_buf_1_address0 | 10| 3| 10| 30|
|line_buf_1_address1 | 10| 5| 10| 50|
|line_buf_1_ce0 | 1| 3| 1| 3|
|line_buf_1_ce1 | 1| 4| 1| 4|
|line_buf_1_d1 | 32| 3| 32| 96|
|line_buf_1_we1 | 1| 3| 1| 3|
|line_buf_2_address0 | 10| 3| 10| 30|
|line_buf_2_address1 | 10| 5| 10| 50|
|line_buf_2_ce0 | 1| 3| 1| 3|
|line_buf_2_ce1 | 1| 4| 1| 4|
|line_buf_2_d1 | 32| 3| 32| 96|
|line_buf_2_we1 | 1| 3| 1| 3|
|line_sel_reg_317 | 32| 2| 32| 64|
|phi_mul_reg_352 | 12| 2| 12| 24|
|x_reg_386 | 10| 2| 10| 20|
|y_reg_305 | 10| 2| 10| 20|
+---------------------------------------------+----+-----------+-----+-----------+
|Total | 493| 166| 428| 1352|
+---------------------------------------------+----+-----------+-----+-----------+
* Register:
+--------------------------------------------------------------+----+----+-----+-----------+
| Name | FF | LUT| Bits| Const Bits|
+--------------------------------------------------------------+----+----+-----+-----------+
|a_1_reg_1059 | 2| 0| 2| 0|
|a_reg_340 | 2| 0| 2| 0|
|ap_CS_fsm | 37| 0| 37| 0|
|ap_reg_ioackin_cam_fb_ARREADY | 1| 0| 1| 0|
|ap_reg_ioackin_lap_fb_AWREADY | 1| 0| 1| 0|
|ap_reg_ioackin_lap_fb_WREADY | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it10 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it11 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it12 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it13 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it14 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it15 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it3 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it4 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it5 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it6 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it7 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it8 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it9 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it10 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it11 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it12 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it13 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it14 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it15 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it3 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it4 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it5 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it6 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it7 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it8 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it9 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp3_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp3_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp3_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp4_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp4_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp4_it2 | 1| 0| 1| 0|
|ap_reg_ppstg_exitcond1_reg_1131_pp3_it1 | 1| 0| 1| 0|
|ap_reg_ppstg_exitcond3_reg_1155_pp4_it1 | 1| 0| 1| 0|
|ap_reg_ppstg_exitcond6_reg_1093_pp2_it1 | 1| 0| 1| 0|
|exitcond1_reg_1131 | 1| 0| 1| 0|
|exitcond3_reg_1155 | 1| 0| 1| 0|
|exitcond4_reg_1055 | 1| 0| 1| 0|
|exitcond6_reg_1093 | 1| 0| 1| 0|
|grp_lap_filter_axim_conv_line_fu_431_ap_start_ap_start_reg | 1| 0| 1| 0|
|grp_lap_filter_axim_filter_line_fu_420_ap_start_ap_start_reg | 1| 0| 1| 0|
|indvar1_reg_397 | 10| 0| 10| 0|
|indvar2_reg_329 | 10| 0| 10| 0|
|indvar3_reg_408 | 10| 0| 10| 0|
|indvar4_reg_375 | 10| 0| 10| 0|
|indvar_reg_364 | 10| 0| 10| 0|
|lap_fb_addr_2_reg_1045 | 32| 0| 32| 0|
|line_sel_reg_317 | 32| 0| 32| 0|
|newSel1_reg_980 | 2| 0| 2| 0|
|newSel3_reg_985 | 2| 0| 2| 0|
|next_mul_reg_1050 | 12| 0| 12| 0|
|offset_cam_addr_cast_reg_951 | 31| 0| 31| 0|
|offset_lap_addr_cast_reg_961 | 31| 0| 31| 0|
|p_s_reg_1107 | 32| 0| 32| 0|
|phi_mul_reg_352 | 12| 0| 12| 0|
|reg_440 | 32| 0| 32| 0|
|reg_447 | 28| 0| 28| 0|
|tl_cast47_cast_reg_996 | 2| 0| 12| 10|
|tl_reg_990 | 2| 0| 2| 0|
|tmp2_reg_1145 | 31| 0| 31| 0|
|tmp_10_reg_1010 | 31| 0| 31| 0|
|tmp_12_reg_1035 | 12| 0| 12| 0|
|tmp_16_reg_1064 | 31| 0| 31| 0|
|tmp_29_t_reg_1041 | 2| 0| 2| 0|
|tmp_3_reg_956 | 30| 0| 30| 0|
|tmp_41_t_reg_1089 | 2| 0| 2| 0|
|tmp_4_cast_reg_1005 | 14| 0| 19| 5|
|tmp_4_reg_1021 | 7| 0| 12| 5|
|tmp_7_reg_1001 | 1| 0| 1| 0|
|tmp_reg_967 | 31| 0| 31| 0|
|x_reg_386 | 10| 0| 10| 0|
|y_1_reg_1112 | 10| 0| 10| 0|
|y_cast48_cast_reg_972 | 10| 0| 21| 11|
|y_reg_305 | 10| 0| 10| 0|
|tmp_29_t_reg_1041 | 0| 2| 2| 0|
|tmp_41_t_reg_1089 | 0| 2| 2| 0|
+--------------------------------------------------------------+----+----+-----+-----------+
|Total | 626| 4| 661| 31|
+--------------------------------------------------------------+----+----+-----+-----------+
================================================================
== Interface
================================================================
* Summary:
+--------------------------+-----+-----+------------+-----------------+--------------+
| RTL Ports | Dir | Bits| Protocol | Source Object | C Type |
+--------------------------+-----+-----+------------+-----------------+--------------+
|s_axi_BUS_AXI4LS_AWVALID | in | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_AWREADY | out | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_AWADDR | in | 6| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_WVALID | in | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_WREADY | out | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_WDATA | in | 32| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_WSTRB | in | 4| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_ARVALID | in | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_ARREADY | out | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_ARADDR | in | 6| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_RVALID | out | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_RREADY | in | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_RDATA | out | 32| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_RRESP | out | 2| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_BVALID | out | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_BREADY | in | 1| s_axi | BUS_AXI4LS | scalar |
|s_axi_BUS_AXI4LS_BRESP | out | 2| s_axi | BUS_AXI4LS | scalar |
|ap_clk | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_rst_n | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|interrupt | out | 1| ap_ctrl_hs | lap_filter_axim | return value |
|m_axi_cam_fb_AWVALID | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWREADY | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWADDR | out | 32| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWID | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWLEN | out | 8| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWSIZE | out | 3| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWBURST | out | 2| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWLOCK | out | 2| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWCACHE | out | 4| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWPROT | out | 3| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWQOS | out | 4| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWREGION | out | 4| m_axi | cam_fb | pointer |
|m_axi_cam_fb_AWUSER | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_WVALID | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_WREADY | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_WDATA | out | 32| m_axi | cam_fb | pointer |
|m_axi_cam_fb_WSTRB | out | 4| m_axi | cam_fb | pointer |
|m_axi_cam_fb_WLAST | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_WID | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_WUSER | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARVALID | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARREADY | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARADDR | out | 32| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARID | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARLEN | out | 8| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARSIZE | out | 3| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARBURST | out | 2| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARLOCK | out | 2| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARCACHE | out | 4| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARPROT | out | 3| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARQOS | out | 4| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARREGION | out | 4| m_axi | cam_fb | pointer |
|m_axi_cam_fb_ARUSER | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_RVALID | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_RREADY | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_RDATA | in | 32| m_axi | cam_fb | pointer |
|m_axi_cam_fb_RLAST | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_RID | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_RUSER | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_RRESP | in | 2| m_axi | cam_fb | pointer |
|m_axi_cam_fb_BVALID | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_BREADY | out | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_BRESP | in | 2| m_axi | cam_fb | pointer |
|m_axi_cam_fb_BID | in | 1| m_axi | cam_fb | pointer |
|m_axi_cam_fb_BUSER | in | 1| m_axi | cam_fb | pointer |
|m_axi_lap_fb_AWVALID | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWREADY | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWADDR | out | 32| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWID | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWLEN | out | 8| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWSIZE | out | 3| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWBURST | out | 2| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWLOCK | out | 2| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWCACHE | out | 4| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWPROT | out | 3| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWQOS | out | 4| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWREGION | out | 4| m_axi | lap_fb | pointer |
|m_axi_lap_fb_AWUSER | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_WVALID | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_WREADY | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_WDATA | out | 32| m_axi | lap_fb | pointer |
|m_axi_lap_fb_WSTRB | out | 4| m_axi | lap_fb | pointer |
|m_axi_lap_fb_WLAST | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_WID | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_WUSER | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARVALID | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARREADY | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARADDR | out | 32| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARID | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARLEN | out | 8| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARSIZE | out | 3| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARBURST | out | 2| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARLOCK | out | 2| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARCACHE | out | 4| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARPROT | out | 3| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARQOS | out | 4| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARREGION | out | 4| m_axi | lap_fb | pointer |
|m_axi_lap_fb_ARUSER | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_RVALID | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_RREADY | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_RDATA | in | 32| m_axi | lap_fb | pointer |
|m_axi_lap_fb_RLAST | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_RID | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_RUSER | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_RRESP | in | 2| m_axi | lap_fb | pointer |
|m_axi_lap_fb_BVALID | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_BREADY | out | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_BRESP | in | 2| m_axi | lap_fb | pointer |
|m_axi_lap_fb_BID | in | 1| m_axi | lap_fb | pointer |
|m_axi_lap_fb_BUSER | in | 1| m_axi | lap_fb | pointer |
+--------------------------+-----+-----+------------+-----------------+--------------+
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | - | - | - | - | - | - |