`timescale 1ns / 1ps
module lap_fil_tb;
// Inputs
reg ap_clk = 1'b0;
reg ap_rst;
reg ap_start;
reg x0y0_ap_vld;
reg x1y0_ap_vld;
reg x2y0_ap_vld;
reg x0y1_ap_vld;
reg x1y1_ap_vld;
reg x2y1_ap_vld;
reg x0y2_ap_vld;
reg x1y2_ap_vld;
reg x2y2_ap_vld;
reg [31:0] x0y0;
reg [31:0] x1y0;
reg [31:0] x2y0;
reg [31:0] x0y1;
reg [31:0] x1y1;
reg [31:0] x2y1;
reg [31:0] x0y2;
reg [31:0] x1y2;
reg [31:0] x2y2;
// Outputs
wire ap_done;
wire ap_idle;
wire ap_ready;
wire x0y0_ap_ack;
wire [31:0] ap_return;
parameter CLK_PERIOD = 10;
parameter real CLK_DUTY_CYCLE = 0.5;
parameter CLK_OFFSET = 0;
parameter START_STATE = 1'b0;
initial begin
#CLK_OFFSET;
forever begin
ap_clk = START_STATE;
#(CLK_PERIOD-(CLK_PERIOD*CLK_DUTY_CYCLE)) ap_clk = ~START_STATE;
#(CLK_PERIOD*CLK_DUTY_CYCLE);
end
end
// Instantiate the Unit Under Test (UUT)
laplacian_filter uut (
.ap_clk(ap_clk),
.ap_rst(ap_rst),
.ap_start(ap_start),
.ap_done(ap_done),
.ap_idle(ap_idle),
.ap_ready(ap_ready),
.x0y0_ap_vld(x0y0_ap_vld),
.x1y0_ap_vld(x1y0_ap_vld),
.x2y0_ap_vld(x2y0_ap_vld),
.x0y1_ap_vld(x0y1_ap_vld),
.x1y1_ap_vld(x1y1_ap_vld),
.x2y1_ap_vld(x2y1_ap_vld),
.x0y2_ap_vld(x0y2_ap_vld),
.x1y2_ap_vld(x1y2_ap_vld),
.x2y2_ap_vld(x2y2_ap_vld),
.x0y0(x0y0),
.x0y0_ap_ack(x0y0_ap_ack),
.x1y0(x1y0),
.x2y0(x2y0),
.x0y1(x0y1),
.x1y1(x1y1),
.x2y1(x2y1),
.x0y2(x0y2),
.x1y2(x1y2),
.x2y2(x2y2),
.ap_return(ap_return)
);
initial begin
// Initialize Inputs
ap_rst = 1;
ap_start = 0;
x0y0_ap_vld = 0;
x1y0_ap_vld = 0;
x2y0_ap_vld = 0;
x0y1_ap_vld = 0;
x1y1_ap_vld = 0;
x2y1_ap_vld = 0;
x0y2_ap_vld = 0;
x1y2_ap_vld = 0;
x2y2_ap_vld = 0;
x0y0 = 0;
x1y0 = 0;
x2y0 = 0;
x0y1 = 0;
x1y1 = 0;
x2y1 = 0;
x0y2 = 0;
x1y2 = 0;
x2y2 = 0;
// Wait 100 ns for global reset to finish
#10;
// Add stimulus here
@(posedge ap_clk); #1;
ap_rst = 0;
@(posedge ap_clk); #1;
ap_start = 1;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
x0y0 = 1;
x1y0 = 1;
x2y0 = 1;
x0y1 = 1;
x1y1 = 2;
x2y1 = 1;
x0y2 = 1;
x1y2 = 1;
x2y2 = 1;
x0y0_ap_vld = 1;
x1y0_ap_vld = 1;
x2y0_ap_vld = 1;
x0y1_ap_vld = 1;
x1y1_ap_vld = 1;
x2y1_ap_vld = 1;
x0y2_ap_vld = 1;
x1y2_ap_vld = 1;
x2y2_ap_vld = 1;
@(posedge ap_clk); #1;
x0y0 = 0;
x1y0 = 1;
x2y0 = 1;
x0y1 = 1;
x1y1 = 2;
x2y1 = 1;
x0y2 = 1;
x1y2 = 1;
x2y2 = 0;
@(posedge ap_clk); #1;
x0y0 = 0;
x1y0 = 1;
x2y0 = 0;
x0y1 = 1;
x1y1 = 2;
x2y1 = 1;
x0y2 = 0;
x1y2 = 1;
x2y2 = 0;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
@(posedge ap_clk); #1;
$stop;
end
endmodule
// ==============================================================
// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC
// Version: 2013.2
// Copyright (C) 2013 Xilinx Inc. All rights reserved.
//
// ===========================================================
`timescale 1 ns / 1 ps
(* CORE_GENERATION_INFO="laplacian_filter,hls_ip_2013_2,{HLS_INPUT_TYPE=c,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xc7z020clg484-1,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=pipeline,HLS_SYN_CLOCK=7.320000,HLS_SYN_LAT=2,HLS_SYN_TPT=1,HLS_SYN_MEM=0,HLS_SYN_DSP=0,HLS_SYN_FF=491,HLS_SYN_LUT=578}" *)
module laplacian_filter (
ap_clk,
ap_rst,
ap_start,
ap_done,
ap_idle,
ap_ready,
x0y0_ap_vld,
x1y0_ap_vld,
x2y0_ap_vld,
x0y1_ap_vld,
x1y1_ap_vld,
x2y1_ap_vld,
x0y2_ap_vld,
x1y2_ap_vld,
x2y2_ap_vld,
x0y0,
x0y0_ap_ack,
x1y0,
x2y0,
x0y1,
x1y1,
x2y1,
x0y2,
x1y2,
x2y2,
ap_return
);
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
- | - | - | - | - | 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 |