OpenFPGA/openfpga_flow/benchmarks/vtr_benchmark/stereovision1.v

2554 lines
101 KiB
Coq
Raw Normal View History

2021-03-17 16:24:26 -05:00
// created by Ahmad darabiha
// last updated Aug. 2002
// this is the design for chip #1 of stereo
// vision system. this chip mainly performs the
// normalization and correlation in two orienations
// and 3 scales.
module sv_chip1_hierarchy_no_mem (
tm3_clk_v0, bus_word_3_2to1, bus_word_4_2to1, bus_word_5_2to1, bus_word_6_2to1, counter_out_2to1,
bus_word_1_1to0, bus_word_2_1to0, bus_word_3_1to0, bus_word_4_1to0, bus_word_5_1to0, bus_word_6_1to0,
counter_out_1to0,q, offchip_sram_data_in, offchip_sram_addr, offchip_sram_data_out, offchip_sram_we, offchip_sram_oe, rst
);
input [63:0]offchip_sram_data_in;
output [18:0]offchip_sram_addr;
output [63:0]offchip_sram_data_out;
output [7:0]offchip_sram_we;
output [1:0]offchip_sram_oe;
input rst;
input tm3_clk_v0;
wire[63:0] tm3_sram_data_in;
wire[63:0] tm3_sram_data_out;
reg[63:0] tm3_sram_data_xhdl0;
output q;
assign q = |tm3_sram_data_in;
reg[18:0] tm3_sram_addr;
reg[7:0] tm3_sram_we;
reg[1:0] tm3_sram_oe;
reg tm3_sram_adsp;
input[15:0] bus_word_3_2to1;
input[15:0] bus_word_4_2to1;
input[15:0] bus_word_5_2to1;
input[15:0] bus_word_6_2to1;
input[2:0] counter_out_2to1;
output[7:0] bus_word_1_1to0;
wire[7:0] bus_word_1_1to0;
output[7:0] bus_word_2_1to0;
wire[7:0] bus_word_2_1to0;
output[7:0] bus_word_3_1to0;
wire[7:0] bus_word_3_1to0;
output[7:0] bus_word_4_1to0;
wire[7:0] bus_word_4_1to0;
output[7:0] bus_word_5_1to0;
wire[7:0] bus_word_5_1to0;
output[7:0] bus_word_6_1to0;
wire[7:0] bus_word_6_1to0;
output[2:0] counter_out_1to0;
wire[2:0] counter_out_1to0;
reg[9:0] horiz;
reg[9:0] vert;
reg[63:0] vidin_data_buf_sc_1;
reg[55:0] vidin_data_buf_2_sc_1;
reg[18:0] vidin_addr_buf_sc_1;
reg[63:0] vidin_data_buf_sc_2;
reg[55:0] vidin_data_buf_2_sc_2;
reg[18:0] vidin_addr_buf_sc_2;
reg[63:0] vidin_data_buf_sc_4;
reg[55:0] vidin_data_buf_2_sc_4;
reg[18:0] vidin_addr_buf_sc_4;
reg video_state;
reg vidin_new_data_scld_1_2to3_left_reg;
reg[7:0] vidin_data_reg_scld_1_2to3_left_reg;
reg vidin_new_data_scld_2_2to3_left_reg;
reg[7:0] vidin_data_reg_scld_2_2to3_left_reg;
reg vidin_new_data_scld_4_2to3_left_reg;
reg[7:0] vidin_data_reg_scld_4_2to3_left_reg;
reg vidin_new_data_scld_1_2to3_right_reg;
reg[7:0] vidin_data_reg_scld_1_2to3_right_reg;
reg vidin_new_data_scld_2_2to3_right_reg;
reg[7:0] vidin_data_reg_scld_2_2to3_right_reg;
reg vidin_new_data_scld_4_2to3_right_reg;
reg[7:0] vidin_data_reg_scld_4_2to3_right_reg;
reg[18:0] vidin_addr_reg_2to3_reg;
wire vidin_new_data_scld_1_2to3_left;
wire[15:0] vidin_data_reg_scld_1_2to3_left_rz;
wire[15:0] vidin_data_reg_scld_1_2to3_left_iz;
wire[15:0] vidin_data_reg_scld_1_2to3_left_rp;
wire[15:0] vidin_data_reg_scld_1_2to3_left_ip;
wire[15:0] vidin_data_reg_scld_1_2to3_left_rn;
wire[15:0] vidin_data_reg_scld_1_2to3_left_in;
wire vidin_new_data_scld_2_2to3_left;
wire[15:0] vidin_data_reg_scld_2_2to3_left_rz;
wire[15:0] vidin_data_reg_scld_2_2to3_left_iz;
wire[15:0] vidin_data_reg_scld_2_2to3_left_rp;
wire[15:0] vidin_data_reg_scld_2_2to3_left_ip;
wire[15:0] vidin_data_reg_scld_2_2to3_left_rn;
wire[15:0] vidin_data_reg_scld_2_2to3_left_in;
wire vidin_new_data_scld_4_2to3_left;
wire[15:0] vidin_data_reg_scld_4_2to3_left_rz;
wire[15:0] vidin_data_reg_scld_4_2to3_left_iz;
wire[15:0] vidin_data_reg_scld_4_2to3_left_rp;
wire[15:0] vidin_data_reg_scld_4_2to3_left_ip;
wire[15:0] vidin_data_reg_scld_4_2to3_left_rn;
wire[15:0] vidin_data_reg_scld_4_2to3_left_in;
wire vidin_new_data_scld_1_2to3_right;
wire[15:0] vidin_data_reg_scld_1_2to3_right_rz;
wire[15:0] vidin_data_reg_scld_1_2to3_right_iz;
wire[15:0] vidin_data_reg_scld_1_2to3_right_rp;
wire[15:0] vidin_data_reg_scld_1_2to3_right_ip;
wire[15:0] vidin_data_reg_scld_1_2to3_right_rn;
wire[15:0] vidin_data_reg_scld_1_2to3_right_in;
wire vidin_new_data_scld_2_2to3_right;
wire[15:0] vidin_data_reg_scld_2_2to3_right_rz;
wire[15:0] vidin_data_reg_scld_2_2to3_right_iz;
wire[15:0] vidin_data_reg_scld_2_2to3_right_rp;
wire[15:0] vidin_data_reg_scld_2_2to3_right_ip;
wire[15:0] vidin_data_reg_scld_2_2to3_right_rn;
wire[15:0] vidin_data_reg_scld_2_2to3_right_in;
wire vidin_new_data_scld_4_2to3_right;
wire[15:0] vidin_data_reg_scld_4_2to3_right_rz;
wire[15:0] vidin_data_reg_scld_4_2to3_right_iz;
wire[15:0] vidin_data_reg_scld_4_2to3_right_rp;
wire[15:0] vidin_data_reg_scld_4_2to3_right_ip;
wire[15:0] vidin_data_reg_scld_4_2to3_right_rn;
wire[15:0] vidin_data_reg_scld_4_2to3_right_in;
wire[18:0] vidin_addr_reg_2to3;
wire svid_comp_switch_2to3;
wire[15:0] corr_out_1_p0;
wire[15:0] corr_out_1_p1;
wire[15:0] corr_out_1_p2;
wire[15:0] corr_out_1_p3;
wire[15:0] corr_out_1_p4;
wire[15:0] corr_out_1_p5;
wire[15:0] corr_out_1_p6;
wire[15:0] corr_out_1_p7;
wire[15:0] corr_out_1_p8;
wire[15:0] corr_out_1_p9;
wire[15:0] corr_out_1_p10;
wire[15:0] corr_out_1_p11;
wire[15:0] corr_out_1_p12;
wire[15:0] corr_out_1_p13;
wire[15:0] corr_out_1_p14;
wire[15:0] corr_out_1_p15;
wire[15:0] corr_out_1_p16;
wire[15:0] corr_out_1_p17;
wire[15:0] corr_out_1_p18;
wire[15:0] corr_out_1_p19;
wire[15:0] corr_out_1_p20;
wire[15:0] corr_out_1_n0;
wire[15:0] corr_out_1_n1;
wire[15:0] corr_out_1_n2;
wire[15:0] corr_out_1_n3;
wire[15:0] corr_out_1_n4;
wire[15:0] corr_out_1_n5;
wire[15:0] corr_out_1_n6;
wire[15:0] corr_out_1_n7;
wire[15:0] corr_out_1_n8;
wire[15:0] corr_out_1_n9;
wire[15:0] corr_out_1_n10;
wire[15:0] corr_out_1_n11;
wire[15:0] corr_out_1_n12;
wire[15:0] corr_out_1_n13;
wire[15:0] corr_out_1_n14;
wire[15:0] corr_out_1_n15;
wire[15:0] corr_out_1_n16;
wire[15:0] corr_out_1_n17;
wire[15:0] corr_out_1_n18;
wire[15:0] corr_out_1_n19;
wire[15:0] corr_out_1_n20;
reg[17:0] corr_out_10;
reg[17:0] corr_out_11;
reg[17:0] corr_out_12;
reg[17:0] corr_out_13;
reg[17:0] corr_out_14;
reg[17:0] corr_out_15;
reg[17:0] corr_out_16;
reg[17:0] corr_out_17;
reg[17:0] corr_out_18;
reg[17:0] corr_out_19;
reg[17:0] corr_out_110;
reg[17:0] corr_out_111;
reg[17:0] corr_out_112;
reg[17:0] corr_out_113;
reg[17:0] corr_out_114;
reg[17:0] corr_out_115;
reg[17:0] corr_out_116;
reg[17:0] corr_out_117;
reg[17:0] corr_out_118;
reg[17:0] corr_out_119;
reg[17:0] corr_out_120;
wire[15:0] corr_out_2_p0;
wire[15:0] corr_out_2_p1;
wire[15:0] corr_out_2_p2;
wire[15:0] corr_out_2_p3;
wire[15:0] corr_out_2_p4;
wire[15:0] corr_out_2_p5;
wire[15:0] corr_out_2_p6;
wire[15:0] corr_out_2_p7;
wire[15:0] corr_out_2_p8;
wire[15:0] corr_out_2_p9;
wire[15:0] corr_out_2_p10;
wire[15:0] corr_out_2_n0;
wire[15:0] corr_out_2_n1;
wire[15:0] corr_out_2_n2;
wire[15:0] corr_out_2_n3;
wire[15:0] corr_out_2_n4;
wire[15:0] corr_out_2_n5;
wire[15:0] corr_out_2_n6;
wire[15:0] corr_out_2_n7;
wire[15:0] corr_out_2_n8;
wire[15:0] corr_out_2_n9;
wire[15:0] corr_out_2_n10;
reg[17:0] corr_out_20;
reg[17:0] corr_out_21;
reg[17:0] corr_out_22;
reg[17:0] corr_out_23;
reg[17:0] corr_out_24;
reg[17:0] corr_out_25;
reg[17:0] corr_out_26;
reg[17:0] corr_out_27;
reg[17:0] corr_out_28;
reg[17:0] corr_out_29;
reg[17:0] corr_out_210;
wire[15:0] corr_out_4_p0;
wire[15:0] corr_out_4_p1;
wire[15:0] corr_out_4_p2;
wire[15:0] corr_out_4_p3;
wire[15:0] corr_out_4_p4;
wire[15:0] corr_out_4_p5;
wire[15:0] corr_out_4_n0;
wire[15:0] corr_out_4_n1;
wire[15:0] corr_out_4_n2;
wire[15:0] corr_out_4_n3;
wire[15:0] corr_out_4_n4;
wire[15:0] corr_out_4_n5;
reg[17:0] corr_out_40;
reg[17:0] corr_out_41;
reg[17:0] corr_out_42;
reg[17:0] corr_out_43;
reg[17:0] corr_out_44;
reg[17:0] corr_out_45;
assign tm3_sram_data_in = offchip_sram_data_in;
assign offchip_sram_addr = tm3_sram_addr;
assign offchip_sram_data_out = tm3_sram_data_out;
assign offchip_sram_we = tm3_sram_we;
assign offchip_sram_oe = tm3_sram_oe;
assign tm3_sram_data_out = tm3_sram_data_xhdl0;
port_bus_2to1_1 port_bus_2to1_1_inst (tm3_clk_v0, vidin_addr_reg_2to3, svid_comp_switch_2to3, vidin_new_data_scld_1_2to3_left,
vidin_data_reg_scld_1_2to3_left_rp, vidin_data_reg_scld_1_2to3_left_ip, vidin_data_reg_scld_1_2to3_left_rn,
vidin_data_reg_scld_1_2to3_left_in, vidin_new_data_scld_2_2to3_left, vidin_data_reg_scld_2_2to3_left_rp,
vidin_data_reg_scld_2_2to3_left_ip, vidin_data_reg_scld_2_2to3_left_rn, vidin_data_reg_scld_2_2to3_left_in,
vidin_new_data_scld_4_2to3_left, vidin_data_reg_scld_4_2to3_left_rp, vidin_data_reg_scld_4_2to3_left_ip,
vidin_data_reg_scld_4_2to3_left_rn, vidin_data_reg_scld_4_2to3_left_in, vidin_new_data_scld_1_2to3_right,
vidin_data_reg_scld_1_2to3_right_rp, vidin_data_reg_scld_1_2to3_right_ip, vidin_data_reg_scld_1_2to3_right_rn,
vidin_data_reg_scld_1_2to3_right_in, vidin_new_data_scld_2_2to3_right, vidin_data_reg_scld_2_2to3_right_rp,
vidin_data_reg_scld_2_2to3_right_ip, vidin_data_reg_scld_2_2to3_right_rn, vidin_data_reg_scld_2_2to3_right_in,
vidin_new_data_scld_4_2to3_right, vidin_data_reg_scld_4_2to3_right_rp, vidin_data_reg_scld_4_2to3_right_ip,
vidin_data_reg_scld_4_2to3_right_rn, vidin_data_reg_scld_4_2to3_right_in, bus_word_3_2to1, bus_word_4_2to1,
bus_word_5_2to1, bus_word_6_2to1, counter_out_2to1, rst);
wrapper_norm_corr_20 wrapper_norm_corr_20_inst_p(
tm3_clk_v0, vidin_new_data_scld_1_2to3_left, vidin_data_reg_scld_1_2to3_right_rp, vidin_data_reg_scld_1_2to3_right_ip, vidin_data_reg_scld_1_2to3_left_rp,
vidin_data_reg_scld_1_2to3_left_ip, corr_out_1_p0, corr_out_1_p1, corr_out_1_p2, corr_out_1_p3, corr_out_1_p4, corr_out_1_p5, corr_out_1_p6,
corr_out_1_p7, corr_out_1_p8, corr_out_1_p9, corr_out_1_p10, corr_out_1_p11, corr_out_1_p12, corr_out_1_p13, corr_out_1_p14, corr_out_1_p15,
corr_out_1_p16, corr_out_1_p17, corr_out_1_p18, corr_out_1_p19, corr_out_1_p20
);
wrapper_norm_corr_20 wrapper_norm_corr_20_inst_n(tm3_clk_v0, vidin_new_data_scld_1_2to3_left, vidin_data_reg_scld_1_2to3_right_rn,
vidin_data_reg_scld_1_2to3_right_in, vidin_data_reg_scld_1_2to3_left_rn, vidin_data_reg_scld_1_2to3_left_in, corr_out_1_n0,
corr_out_1_n1, corr_out_1_n2, corr_out_1_n3, corr_out_1_n4, corr_out_1_n5, corr_out_1_n6, corr_out_1_n7, corr_out_1_n8,
corr_out_1_n9, corr_out_1_n10, corr_out_1_n11, corr_out_1_n12, corr_out_1_n13, corr_out_1_n14, corr_out_1_n15, corr_out_1_n16,
corr_out_1_n17, corr_out_1_n18, corr_out_1_n19, corr_out_1_n20
);
wrapper_norm_corr_10 wrapper_norm_corr_10_inst_p(tm3_clk_v0, vidin_new_data_scld_2_2to3_left, vidin_data_reg_scld_2_2to3_right_rp,
vidin_data_reg_scld_2_2to3_right_ip, vidin_data_reg_scld_2_2to3_left_rp, vidin_data_reg_scld_2_2to3_left_ip, corr_out_2_p0,
corr_out_2_p1, corr_out_2_p2, corr_out_2_p3, corr_out_2_p4, corr_out_2_p5, corr_out_2_p6, corr_out_2_p7, corr_out_2_p8,
corr_out_2_p9, corr_out_2_p10
);
wrapper_norm_corr_10 wrapper_norm_corr_10_inst_n(tm3_clk_v0, vidin_new_data_scld_2_2to3_left, vidin_data_reg_scld_2_2to3_right_rn,
vidin_data_reg_scld_2_2to3_right_in, vidin_data_reg_scld_2_2to3_left_rn, vidin_data_reg_scld_2_2to3_left_in, corr_out_2_n0,
corr_out_2_n1, corr_out_2_n2, corr_out_2_n3, corr_out_2_n4, corr_out_2_n5, corr_out_2_n6, corr_out_2_n7, corr_out_2_n8,
corr_out_2_n9, corr_out_2_n10
);
wrapper_norm_corr_5_seq wrapper_norm_corr_5_inst_p(tm3_clk_v0, vidin_new_data_scld_4_2to3_left, vidin_data_reg_scld_4_2to3_right_rp,
vidin_data_reg_scld_4_2to3_right_ip, vidin_data_reg_scld_4_2to3_left_rp, vidin_data_reg_scld_4_2to3_left_ip, corr_out_4_p0,
corr_out_4_p1, corr_out_4_p2, corr_out_4_p3, corr_out_4_p4, corr_out_4_p5
);
wrapper_norm_corr_5_seq wrapper_norm_corr_5_inst_n(tm3_clk_v0, vidin_new_data_scld_4_2to3_left, vidin_data_reg_scld_4_2to3_right_rn,
vidin_data_reg_scld_4_2to3_right_in, vidin_data_reg_scld_4_2to3_left_rn, vidin_data_reg_scld_4_2to3_left_in, corr_out_4_n0,
corr_out_4_n1, corr_out_4_n2, corr_out_4_n3, corr_out_4_n4, corr_out_4_n5);
port_bus_1to0 port_bus_1to0_inst(tm3_clk_v0, vidin_addr_reg_2to3, svid_comp_switch_2to3, vidin_new_data_scld_1_2to3_left,
{corr_out_40[17], corr_out_40[15:9]}, {corr_out_41[17], corr_out_41[15:9]}, {corr_out_42[17], corr_out_42[15:9]},
{corr_out_43[17], corr_out_43[15:9]}, {corr_out_44[17], corr_out_44[15:9]}, {corr_out_45[17], corr_out_45[15:9]},
{corr_out_20[17], corr_out_20[15:9]}, {corr_out_21[17], corr_out_21[15:9]}, {corr_out_22[17], corr_out_22[15:9]},
{corr_out_23[17], corr_out_23[15:9]}, {corr_out_24[17], corr_out_24[15:9]}, {corr_out_25[17], corr_out_25[15:9]},
{corr_out_26[17], corr_out_26[15:9]}, {corr_out_27[17], corr_out_27[15:9]}, {corr_out_28[17], corr_out_28[15:9]},
{corr_out_29[17], corr_out_29[15:9]}, {corr_out_210[17], corr_out_210[15:9]}, {corr_out_10[17], corr_out_10[15:9]},
{corr_out_11[17], corr_out_11[15:9]}, {corr_out_12[17], corr_out_12[15:9]}, {corr_out_13[17], corr_out_13[15:9]},
{corr_out_14[17], corr_out_14[15:9]}, {corr_out_15[17], corr_out_15[15:9]}, {corr_out_16[17], corr_out_16[15:9]},
{corr_out_17[17], corr_out_17[15:9]}, {corr_out_18[17], corr_out_18[15:9]}, {corr_out_19[17], corr_out_19[15:9]},
{corr_out_110[17], corr_out_110[15:9]}, {corr_out_111[17], corr_out_111[15:9]}, {corr_out_112[17], corr_out_112[15:9]},
{corr_out_113[17], corr_out_113[15:9]}, {corr_out_114[17], corr_out_114[15:9]}, {corr_out_115[17], corr_out_115[15:9]},
{corr_out_116[17], corr_out_116[15:9]}, {corr_out_117[17], corr_out_117[15:9]}, {corr_out_118[17], corr_out_118[15:9]},
{corr_out_119[17], corr_out_119[15:9]}, {corr_out_120[17], corr_out_120[15:9]}, bus_word_1_1to0, bus_word_2_1to0,
bus_word_3_1to0, bus_word_4_1to0, bus_word_5_1to0, bus_word_6_1to0, counter_out_1to0, rst);
always @(posedge tm3_clk_v0)
begin
if (vidin_new_data_scld_1_2to3_left == 1'b1)
begin
corr_out_10 <= ({ corr_out_1_p0[15], corr_out_1_p0[15], corr_out_1_p0}) + ({corr_out_1_n0[15], corr_out_1_n0[15], corr_out_1_n0}) ;
corr_out_11 <= ({ corr_out_1_p1[15], corr_out_1_p1[15], corr_out_1_p1}) + ({corr_out_1_n1[15], corr_out_1_n1[15], corr_out_1_n1}) ;
corr_out_12 <= ({ corr_out_1_p2[15], corr_out_1_p2[15], corr_out_1_p2}) + ({corr_out_1_n2[15], corr_out_1_n2[15], corr_out_1_n2}) ;
corr_out_13 <= ({ corr_out_1_p3[15], corr_out_1_p3[15], corr_out_1_p3}) + ({corr_out_1_n3[15], corr_out_1_n3[15], corr_out_1_n3}) ;
corr_out_14 <= ({ corr_out_1_p4[15], corr_out_1_p4[15], corr_out_1_p4}) + ({corr_out_1_n4[15], corr_out_1_n4[15], corr_out_1_n4}) ;
corr_out_15 <= ({ corr_out_1_p5[15], corr_out_1_p5[15], corr_out_1_p5}) + ({corr_out_1_n5[15], corr_out_1_n5[15], corr_out_1_n5}) ;
corr_out_16 <= ({ corr_out_1_p6[15], corr_out_1_p6[15], corr_out_1_p6}) + ({corr_out_1_n6[15], corr_out_1_n6[15], corr_out_1_n6}) ;
corr_out_17 <= ({ corr_out_1_p7[15], corr_out_1_p7[15], corr_out_1_p7}) + ({corr_out_1_n7[15], corr_out_1_n7[15], corr_out_1_n7}) ;
corr_out_18 <= ({ corr_out_1_p8[15], corr_out_1_p8[15], corr_out_1_p8}) + ({corr_out_1_n8[15], corr_out_1_n8[15], corr_out_1_n8}) ;
corr_out_19 <= ({ corr_out_1_p9[15], corr_out_1_p9[15], corr_out_1_p9}) + ({corr_out_1_n9[15], corr_out_1_n9[15], corr_out_1_n9}) ;
corr_out_110 <= ({ corr_out_1_p10[15], corr_out_1_p10[15], corr_out_1_p10}) + ({corr_out_1_n10[15], corr_out_1_n10[15], corr_out_1_n10}) ;
corr_out_111 <= ({ corr_out_1_p11[15], corr_out_1_p11[15], corr_out_1_p11}) + ({corr_out_1_n11[15], corr_out_1_n11[15], corr_out_1_n11}) ;
corr_out_112 <= ({ corr_out_1_p12[15], corr_out_1_p12[15], corr_out_1_p12}) + ({corr_out_1_n12[15], corr_out_1_n12[15], corr_out_1_n12}) ;
corr_out_113 <= ({ corr_out_1_p13[15], corr_out_1_p13[15], corr_out_1_p13}) + ({corr_out_1_n13[15], corr_out_1_n13[15], corr_out_1_n13}) ;
corr_out_114 <= ({ corr_out_1_p14[15], corr_out_1_p14[15], corr_out_1_p14}) + ({corr_out_1_n14[15], corr_out_1_n14[15], corr_out_1_n14}) ;
corr_out_115 <= ({ corr_out_1_p15[15], corr_out_1_p15[15], corr_out_1_p15}) + ({corr_out_1_n15[15], corr_out_1_n15[15], corr_out_1_n15}) ;
corr_out_116 <= ({ corr_out_1_p16[15], corr_out_1_p16[15], corr_out_1_p16}) + ({corr_out_1_n16[15], corr_out_1_n16[15], corr_out_1_n16}) ;
corr_out_117 <= ({ corr_out_1_p17[15], corr_out_1_p17[15], corr_out_1_p17}) + ({corr_out_1_n17[15], corr_out_1_n17[15], corr_out_1_n17}) ;
corr_out_118 <= ({ corr_out_1_p18[15], corr_out_1_p18[15], corr_out_1_p18}) + ({corr_out_1_n18[15], corr_out_1_n18[15], corr_out_1_n18}) ;
corr_out_119 <= ({ corr_out_1_p19[15], corr_out_1_p19[15], corr_out_1_p19}) + ({corr_out_1_n19[15], corr_out_1_n19[15], corr_out_1_n19}) ;
corr_out_120 <= ({ corr_out_1_p20[15], corr_out_1_p20[15], corr_out_1_p20}) + ({corr_out_1_n20[15], corr_out_1_n20[15], corr_out_1_n20}) ;
end
else
begin
corr_out_10 <= corr_out_10;
corr_out_11 <= corr_out_11;
corr_out_12 <= corr_out_12;
corr_out_13 <= corr_out_13;
corr_out_14 <= corr_out_14;
corr_out_15 <= corr_out_15;
corr_out_16 <= corr_out_16;
corr_out_17 <= corr_out_17;
corr_out_18 <= corr_out_18;
corr_out_19 <= corr_out_19;
corr_out_110 <= corr_out_110;
corr_out_111 <= corr_out_111;
corr_out_112 <= corr_out_112;
corr_out_113 <= corr_out_113;
corr_out_114 <= corr_out_114;
corr_out_115 <= corr_out_115;
corr_out_116 <= corr_out_116;
corr_out_117 <= corr_out_117;
corr_out_118 <= corr_out_118;
corr_out_119 <= corr_out_119;
corr_out_120 <= corr_out_120;
end
end
always @(posedge tm3_clk_v0)
begin
if (vidin_new_data_scld_2_2to3_left == 1'b1)
begin
corr_out_20 <= ({ corr_out_2_p0[15], corr_out_2_p0[15], corr_out_2_p0}) + ({corr_out_2_n0[15], corr_out_2_n0[15], corr_out_2_n0}) ;
corr_out_21 <= ({ corr_out_2_p1[15], corr_out_2_p1[15], corr_out_2_p1}) + ({corr_out_2_n1[15], corr_out_2_n1[15], corr_out_2_n1}) ;
corr_out_22 <= ({ corr_out_2_p2[15], corr_out_2_p2[15], corr_out_2_p2}) + ({corr_out_2_n2[15], corr_out_2_n2[15], corr_out_2_n2}) ;
corr_out_23 <= ({ corr_out_2_p3[15], corr_out_2_p3[15], corr_out_2_p3}) + ({corr_out_2_n3[15], corr_out_2_n3[15], corr_out_2_n3}) ;
corr_out_24 <= ({ corr_out_2_p4[15], corr_out_2_p4[15], corr_out_2_p4}) + ({corr_out_2_n4[15], corr_out_2_n4[15], corr_out_2_n4}) ;
corr_out_25 <= ({ corr_out_2_p5[15], corr_out_2_p5[15], corr_out_2_p5}) + ({corr_out_2_n5[15], corr_out_2_n5[15], corr_out_2_n5}) ;
corr_out_26 <= ({ corr_out_2_p6[15], corr_out_2_p6[15], corr_out_2_p6}) + ({corr_out_2_n6[15], corr_out_2_n6[15], corr_out_2_n6}) ;
corr_out_27 <= ({ corr_out_2_p7[15], corr_out_2_p7[15], corr_out_2_p7}) + ({corr_out_2_n7[15], corr_out_2_n7[15], corr_out_2_n7}) ;
corr_out_28 <= ({ corr_out_2_p8[15], corr_out_2_p8[15], corr_out_2_p8}) + ({corr_out_2_n8[15], corr_out_2_n8[15], corr_out_2_n8}) ;
corr_out_29 <= ({ corr_out_2_p9[15], corr_out_2_p9[15], corr_out_2_p9}) + ({corr_out_2_n9[15], corr_out_2_n9[15], corr_out_2_n9}) ;
corr_out_210 <= ({ corr_out_2_p10[15], corr_out_2_p10[15], corr_out_2_p10}) + ({corr_out_2_n10[15], corr_out_2_n10[15], corr_out_2_n10}) ;
end
else
begin
corr_out_20 <= corr_out_20;
corr_out_21 <= corr_out_21;
corr_out_22 <= corr_out_22;
corr_out_23 <= corr_out_23;
corr_out_24 <= corr_out_24;
corr_out_25 <= corr_out_25;
corr_out_26 <= corr_out_26;
corr_out_27 <= corr_out_27;
corr_out_28 <= corr_out_28;
corr_out_29 <= corr_out_29;
corr_out_210 <= corr_out_210;
end
end
always @(posedge tm3_clk_v0)
begin
if (vidin_new_data_scld_2_2to3_left == 1'b1)
begin
corr_out_40 <= ({ corr_out_4_p0[15], corr_out_4_p0[15], corr_out_4_p0}) + ({corr_out_4_n0[15], corr_out_4_n0[15], corr_out_4_n0}) ;
corr_out_41 <= ({ corr_out_4_p1[15], corr_out_4_p1[15], corr_out_4_p1}) + ({corr_out_4_n1[15], corr_out_4_n1[15], corr_out_4_n1}) ;
corr_out_42 <= ({ corr_out_4_p2[15], corr_out_4_p2[15], corr_out_4_p2}) + ({corr_out_4_n2[15], corr_out_4_n2[15], corr_out_4_n2}) ;
corr_out_43 <= ({ corr_out_4_p3[15], corr_out_4_p3[15], corr_out_4_p3}) + ({corr_out_4_n3[15], corr_out_4_n3[15], corr_out_4_n3}) ;
corr_out_44 <= ({ corr_out_4_p4[15], corr_out_4_p4[15], corr_out_4_p4}) + ({corr_out_4_n4[15], corr_out_4_n4[15], corr_out_4_n4}) ;
corr_out_45 <= ({ corr_out_4_p5[15], corr_out_4_p5[15], corr_out_4_p5}) + ({corr_out_4_n5[15], corr_out_4_n5[15], corr_out_4_n5}) ;
end
else
begin
corr_out_40 <= corr_out_40;
corr_out_41 <= corr_out_41;
corr_out_42 <= corr_out_42;
corr_out_43 <= corr_out_43;
corr_out_44 <= corr_out_44;
corr_out_45 <= corr_out_45;
end
end
always @(posedge tm3_clk_v0)
begin
vidin_new_data_scld_1_2to3_left_reg <= vidin_new_data_scld_1_2to3_left ;
vidin_data_reg_scld_1_2to3_left_reg <= vidin_data_reg_scld_1_2to3_left_rp[15:8] ;
vidin_new_data_scld_2_2to3_left_reg <= vidin_new_data_scld_2_2to3_left ;
vidin_data_reg_scld_2_2to3_left_reg <= vidin_data_reg_scld_2_2to3_left_rp[15:8] ;
vidin_new_data_scld_4_2to3_left_reg <= vidin_new_data_scld_4_2to3_left ;
vidin_data_reg_scld_4_2to3_left_reg <= vidin_data_reg_scld_4_2to3_left_rp[15:8] ;
vidin_new_data_scld_1_2to3_right_reg <= vidin_new_data_scld_1_2to3_right ;
vidin_data_reg_scld_1_2to3_right_reg <= vidin_data_reg_scld_1_2to3_right_rp[15:8] ;
vidin_new_data_scld_2_2to3_right_reg <= vidin_new_data_scld_2_2to3_right ;
vidin_data_reg_scld_2_2to3_right_reg <= vidin_data_reg_scld_2_2to3_right_rp[15:8] ;
vidin_new_data_scld_4_2to3_right_reg <= vidin_new_data_scld_4_2to3_right ;
vidin_data_reg_scld_4_2to3_right_reg <= vidin_data_reg_scld_4_2to3_right_rp[15:8] ;
vidin_addr_reg_2to3_reg <= vidin_addr_reg_2to3 ;
end
always @(posedge tm3_clk_v0)
begin
if (rst)
begin
horiz <= 10'b0000000000;
vert <= 10'b0000000000;
video_state <= 1'b0;
tm3_sram_adsp <= 1'b0;
vidin_data_buf_2_sc_1 <= 0;
vidin_data_buf_2_sc_2 <= 0;
vidin_data_buf_2_sc_4 <= 0;
vidin_addr_buf_sc_1 <= 19'b0;
vidin_addr_buf_sc_2 <= 19'b0;
vidin_addr_buf_sc_4 <= 19'b0;
end
else
begin
video_state <= ~(video_state) ;
if (video_state == 1'b0)
begin
if (horiz == 800)
begin
horiz <= 10'b0000000000 ;
if (vert == 525)
begin
vert <= 10'b0000000000 ;
end
else
begin
vert <= vert + 1 ;
end
end
else
begin
horiz <= horiz + 1 ;
end
tm3_sram_adsp <= 1'b1 ;
tm3_sram_we <= 8'b11111111 ;
tm3_sram_data_xhdl0 <= 64'b0000000000000000000000000000000000000000000000000000000000000000;
tm3_sram_oe <= 2'b11 ;
end
else
begin
tm3_sram_adsp <= 1'b0 ;
case (horiz[2:0])
3'b000 :
begin
tm3_sram_addr <= vidin_addr_buf_sc_2[18:0];
tm3_sram_we <= 8'b00000000 ;
tm3_sram_oe <= 2'b11 ;
tm3_sram_data_xhdl0 <= vidin_data_buf_sc_2 ;
end
3'b100 :
begin
tm3_sram_addr <= vidin_addr_buf_sc_4[18:0];
tm3_sram_we <= 8'b00000000 ;
tm3_sram_oe <= 2'b11 ;
tm3_sram_data_xhdl0 <= vidin_data_buf_sc_4 ;
end
3'b111 :
begin
tm3_sram_addr <= vidin_addr_buf_sc_1[18:0];
tm3_sram_we <= 8'b00000000 ;
tm3_sram_oe <= 2'b11 ;
tm3_sram_data_xhdl0 <= vidin_data_buf_sc_1 ;
end
default :
begin
tm3_sram_addr <= 19'b0000000000000000000 ;
tm3_sram_we <= 8'b11111111 ;
tm3_sram_oe <= 2'b11 ;
tm3_sram_data_xhdl0 <= 64'b0000000000000000000000000000000000000000000000000000000000000000;
end
endcase
end
if (vidin_new_data_scld_1_2to3_left_reg == 1'b1)
begin
case ({svid_comp_switch_2to3, vidin_addr_reg_2to3_reg[2:0]})
4'b0000 :
begin
vidin_data_buf_2_sc_1[7:0] <= vidin_data_reg_scld_1_2to3_left_reg ;
end
4'b0001 :
begin
vidin_data_buf_2_sc_1[15:8] <= vidin_data_reg_scld_1_2to3_left_reg ;
end
4'b0010 :
begin
vidin_data_buf_2_sc_1[23:16] <= vidin_data_reg_scld_1_2to3_left_reg ;
end
4'b0011 :
begin
vidin_data_buf_2_sc_1[31:24] <= vidin_data_reg_scld_1_2to3_left_reg ;
end
4'b0100 :
begin
vidin_data_buf_2_sc_1[39:32] <= vidin_data_reg_scld_1_2to3_left_reg ;
end
4'b0101 :
begin
vidin_data_buf_2_sc_1[47:40] <= vidin_data_reg_scld_1_2to3_left_reg ;
end
4'b0110 :
begin
vidin_data_buf_2_sc_1[55:48] <= vidin_data_reg_scld_1_2to3_left_reg ;
end
4'b0111 :
begin
vidin_data_buf_sc_1 <= {vidin_data_reg_scld_1_2to3_left_reg, vidin_data_buf_2_sc_1[55:0]} ;
vidin_addr_buf_sc_1 <= {4'b0000, svid_comp_switch_2to3, vidin_addr_reg_2to3_reg[16:3]} ;
end
4'b1000 :
begin
vidin_data_buf_2_sc_1[7:0] <= vidin_data_reg_scld_1_2to3_right_reg ;
end
4'b1001 :
begin
vidin_data_buf_2_sc_1[15:8] <= vidin_data_reg_scld_1_2to3_right_reg ;
end
4'b1010 :
begin
vidin_data_buf_2_sc_1[23:16] <= vidin_data_reg_scld_1_2to3_right_reg ;
end
4'b1011 :
begin
vidin_data_buf_2_sc_1[31:24] <= vidin_data_reg_scld_1_2to3_right_reg ;
end
4'b1100 :
begin
vidin_data_buf_2_sc_1[39:32] <= vidin_data_reg_scld_1_2to3_right_reg ;
end
4'b1101 :
begin
vidin_data_buf_2_sc_1[47:40] <= vidin_data_reg_scld_1_2to3_right_reg ;
end
4'b1110 :
begin
vidin_data_buf_2_sc_1[55:48] <= vidin_data_reg_scld_1_2to3_right_reg ;
end
4'b1111 :
begin
vidin_data_buf_sc_1 <= {vidin_data_reg_scld_1_2to3_right_reg, vidin_data_buf_2_sc_1[55:0]} ;
vidin_addr_buf_sc_1 <= {4'b0000, svid_comp_switch_2to3, vidin_addr_reg_2to3_reg[16:3]} ;
end
endcase
end
if (vidin_new_data_scld_2_2to3_left_reg == 1'b1)
begin
case ({svid_comp_switch_2to3, vidin_addr_reg_2to3_reg[3:1]})
4'b0000 :
begin
vidin_data_buf_2_sc_2[7:0] <= vidin_data_reg_scld_2_2to3_left_reg ;
end
4'b0001 :
begin
vidin_data_buf_2_sc_2[15:8] <= vidin_data_reg_scld_2_2to3_left_reg ;
end
4'b0010 :
begin
vidin_data_buf_2_sc_2[23:16] <= vidin_data_reg_scld_2_2to3_left_reg ;
end
4'b0011 :
begin
vidin_data_buf_2_sc_2[31:24] <= vidin_data_reg_scld_2_2to3_left_reg ;
end
4'b0100 :
begin
vidin_data_buf_2_sc_2[39:32] <= vidin_data_reg_scld_2_2to3_left_reg ;
end
4'b0101 :
begin
vidin_data_buf_2_sc_2[47:40] <= vidin_data_reg_scld_2_2to3_left_reg ;
end
4'b0110 :
begin
vidin_data_buf_2_sc_2[55:48] <= vidin_data_reg_scld_2_2to3_left_reg ;
end
4'b0111 :
begin
vidin_data_buf_sc_2 <= {vidin_data_reg_scld_2_2to3_left_reg, vidin_data_buf_2_sc_2[55:0]} ;
vidin_addr_buf_sc_2 <= {4'b0000, svid_comp_switch_2to3, 1'b0, vidin_addr_reg_2to3_reg[16:10], (6'b101101 + ({1'b0, vidin_addr_reg_2to3_reg[8:4]}))} ;
end
4'b1000 :
begin
vidin_data_buf_2_sc_2[7:0] <= vidin_data_reg_scld_2_2to3_right_reg ;
end
4'b1001 :
begin
vidin_data_buf_2_sc_2[15:8] <= vidin_data_reg_scld_2_2to3_right_reg ;
end
4'b1010 :
begin
vidin_data_buf_2_sc_2[23:16] <= vidin_data_reg_scld_2_2to3_right_reg ;
end
4'b1011 :
begin
vidin_data_buf_2_sc_2[31:24] <= vidin_data_reg_scld_2_2to3_right_reg ;
end
4'b1100 :
begin
vidin_data_buf_2_sc_2[39:32] <= vidin_data_reg_scld_2_2to3_right_reg ;
end
4'b1101 :
begin
vidin_data_buf_2_sc_2[47:40] <= vidin_data_reg_scld_2_2to3_right_reg ;
end
4'b1110 :
begin
vidin_data_buf_2_sc_2[55:48] <= vidin_data_reg_scld_2_2to3_right_reg ;
end
4'b1111 :
begin
vidin_data_buf_sc_2 <= {vidin_data_reg_scld_2_2to3_right_reg, vidin_data_buf_2_sc_2[55:0]} ;
vidin_addr_buf_sc_2 <= {4'b0000, svid_comp_switch_2to3, 1'b0, vidin_addr_reg_2to3_reg[16:10], (6'b101101 + ({1'b0, vidin_addr_reg_2to3_reg[8:4]}))} ;
end
endcase
end
if (vidin_new_data_scld_4_2to3_left_reg == 1'b1)
begin
case ({svid_comp_switch_2to3, vidin_addr_reg_2to3_reg[4:2]})
4'b0000 :
begin
vidin_data_buf_2_sc_4[7:0] <= vidin_data_reg_scld_4_2to3_left_reg ;
end
4'b0001 :
begin
vidin_data_buf_2_sc_4[15:8] <= vidin_data_reg_scld_4_2to3_left_reg ;
end
4'b0010 :
begin
vidin_data_buf_2_sc_4[23:16] <= vidin_data_reg_scld_4_2to3_left_reg ;
end
4'b0011 :
begin
vidin_data_buf_2_sc_4[31:24] <= vidin_data_reg_scld_4_2to3_left_reg ;
end
4'b0100 :
begin
vidin_data_buf_2_sc_4[39:32] <= vidin_data_reg_scld_4_2to3_left_reg ;
end
4'b0101 :
begin
vidin_data_buf_2_sc_4[47:40] <= vidin_data_reg_scld_4_2to3_left_reg ;
end
4'b0110 :
begin
vidin_data_buf_2_sc_4[55:48] <= vidin_data_reg_scld_4_2to3_left_reg ;
end
4'b0111 :
begin
vidin_data_buf_sc_4 <= {vidin_data_reg_scld_4_2to3_left_reg, vidin_data_buf_2_sc_4[55:0]} ;
vidin_addr_buf_sc_4 <= {
4'b0000, svid_comp_switch_2to3,
(8'b10000000 + ({2'b00, vidin_addr_reg_2to3_reg[16:11]})),
(6'b101101 + ({2'b00, vidin_addr_reg_2to3_reg[8:5]}))
};
end
4'b1000 :
begin
vidin_data_buf_2_sc_4[7:0] <= vidin_data_reg_scld_4_2to3_right_reg ;
end
4'b1001 :
begin
vidin_data_buf_2_sc_4[15:8] <= vidin_data_reg_scld_4_2to3_right_reg ;
end
4'b1010 :
begin
vidin_data_buf_2_sc_4[23:16] <= vidin_data_reg_scld_4_2to3_right_reg ;
end
4'b1011 :
begin
vidin_data_buf_2_sc_4[31:24] <= vidin_data_reg_scld_4_2to3_right_reg ;
end
4'b1100 :
begin
vidin_data_buf_2_sc_4[39:32] <= vidin_data_reg_scld_4_2to3_right_reg ;
end
4'b1101 :
begin
vidin_data_buf_2_sc_4[47:40] <= vidin_data_reg_scld_4_2to3_right_reg ;
end
4'b1110 :
begin
vidin_data_buf_2_sc_4[55:48] <= vidin_data_reg_scld_4_2to3_right_reg ;
end
4'b1111 :
begin
vidin_data_buf_sc_4 <= {vidin_data_reg_scld_4_2to3_right_reg, vidin_data_buf_2_sc_4[55:0]} ;
vidin_addr_buf_sc_4 <= {4'b0000, svid_comp_switch_2to3, (8'b10000000 + ({2'b00, vidin_addr_reg_2to3_reg[16:11]})), (6'b101101 + ({2'b00, vidin_addr_reg_2to3_reg[8:5]}))};
end
endcase
end
end
end
endmodule
module port_bus_2to1_1 (clk, vidin_addr_reg, svid_comp_switch, vidin_new_data_scld_1_2to3_left,
vidin_data_reg_scld_1_2to3_left_rp, vidin_data_reg_scld_1_2to3_left_ip,
vidin_data_reg_scld_1_2to3_left_rn, vidin_data_reg_scld_1_2to3_left_in,
vidin_new_data_scld_2_2to3_left, vidin_data_reg_scld_2_2to3_left_rp,
vidin_data_reg_scld_2_2to3_left_ip, vidin_data_reg_scld_2_2to3_left_rn,
vidin_data_reg_scld_2_2to3_left_in, vidin_new_data_scld_4_2to3_left,
vidin_data_reg_scld_4_2to3_left_rp, vidin_data_reg_scld_4_2to3_left_ip,
vidin_data_reg_scld_4_2to3_left_rn, vidin_data_reg_scld_4_2to3_left_in,
vidin_new_data_scld_1_2to3_right, vidin_data_reg_scld_1_2to3_right_rp,
vidin_data_reg_scld_1_2to3_right_ip, vidin_data_reg_scld_1_2to3_right_rn,
vidin_data_reg_scld_1_2to3_right_in, vidin_new_data_scld_2_2to3_right,
vidin_data_reg_scld_2_2to3_right_rp, vidin_data_reg_scld_2_2to3_right_ip,
vidin_data_reg_scld_2_2to3_right_rn, vidin_data_reg_scld_2_2to3_right_in,
vidin_new_data_scld_4_2to3_right, vidin_data_reg_scld_4_2to3_right_rp,
vidin_data_reg_scld_4_2to3_right_ip, vidin_data_reg_scld_4_2to3_right_rn,
vidin_data_reg_scld_4_2to3_right_in, bus_word_3, bus_word_4, bus_word_5,
bus_word_6, counter_out, rst);
input clk;
input rst;
output[18:0] vidin_addr_reg;
reg[18:0] vidin_addr_reg;
output svid_comp_switch;
reg svid_comp_switch;
output vidin_new_data_scld_1_2to3_left;
reg vidin_new_data_scld_1_2to3_left;
output[15:0] vidin_data_reg_scld_1_2to3_left_rp;
reg[15:0] vidin_data_reg_scld_1_2to3_left_rp;
output[15:0] vidin_data_reg_scld_1_2to3_left_ip;
reg[15:0] vidin_data_reg_scld_1_2to3_left_ip;
output[15:0] vidin_data_reg_scld_1_2to3_left_rn;
reg[15:0] vidin_data_reg_scld_1_2to3_left_rn;
output[15:0] vidin_data_reg_scld_1_2to3_left_in;
reg[15:0] vidin_data_reg_scld_1_2to3_left_in;
output vidin_new_data_scld_2_2to3_left;
reg vidin_new_data_scld_2_2to3_left;
output[15:0] vidin_data_reg_scld_2_2to3_left_rp;
reg[15:0] vidin_data_reg_scld_2_2to3_left_rp;
output[15:0] vidin_data_reg_scld_2_2to3_left_ip;
reg[15:0] vidin_data_reg_scld_2_2to3_left_ip;
output[15:0] vidin_data_reg_scld_2_2to3_left_rn;
reg[15:0] vidin_data_reg_scld_2_2to3_left_rn;
output[15:0] vidin_data_reg_scld_2_2to3_left_in;
reg[15:0] vidin_data_reg_scld_2_2to3_left_in;
output vidin_new_data_scld_4_2to3_left;
reg vidin_new_data_scld_4_2to3_left;
output[15:0] vidin_data_reg_scld_4_2to3_left_rp;
reg[15:0] vidin_data_reg_scld_4_2to3_left_rp;
output[15:0] vidin_data_reg_scld_4_2to3_left_ip;
reg[15:0] vidin_data_reg_scld_4_2to3_left_ip;
output[15:0] vidin_data_reg_scld_4_2to3_left_rn;
reg[15:0] vidin_data_reg_scld_4_2to3_left_rn;
output[15:0] vidin_data_reg_scld_4_2to3_left_in;
reg[15:0] vidin_data_reg_scld_4_2to3_left_in;
output vidin_new_data_scld_1_2to3_right;
reg vidin_new_data_scld_1_2to3_right;
output[15:0] vidin_data_reg_scld_1_2to3_right_rp;
reg[15:0] vidin_data_reg_scld_1_2to3_right_rp;
output[15:0] vidin_data_reg_scld_1_2to3_right_ip;
reg[15:0] vidin_data_reg_scld_1_2to3_right_ip;
output[15:0] vidin_data_reg_scld_1_2to3_right_rn;
reg[15:0] vidin_data_reg_scld_1_2to3_right_rn;
output[15:0] vidin_data_reg_scld_1_2to3_right_in;
reg[15:0] vidin_data_reg_scld_1_2to3_right_in;
output vidin_new_data_scld_2_2to3_right;
reg vidin_new_data_scld_2_2to3_right;
output[15:0] vidin_data_reg_scld_2_2to3_right_rp;
reg[15:0] vidin_data_reg_scld_2_2to3_right_rp;
output[15:0] vidin_data_reg_scld_2_2to3_right_ip;
reg[15:0] vidin_data_reg_scld_2_2to3_right_ip;
output[15:0] vidin_data_reg_scld_2_2to3_right_rn;
reg[15:0] vidin_data_reg_scld_2_2to3_right_rn;
output[15:0] vidin_data_reg_scld_2_2to3_right_in;
reg[15:0] vidin_data_reg_scld_2_2to3_right_in;
output vidin_new_data_scld_4_2to3_right;
reg vidin_new_data_scld_4_2to3_right;
output[15:0] vidin_data_reg_scld_4_2to3_right_rp;
reg[15:0] vidin_data_reg_scld_4_2to3_right_rp;
output[15:0] vidin_data_reg_scld_4_2to3_right_ip;
reg[15:0] vidin_data_reg_scld_4_2to3_right_ip;
output[15:0] vidin_data_reg_scld_4_2to3_right_rn;
reg[15:0] vidin_data_reg_scld_4_2to3_right_rn;
output[15:0] vidin_data_reg_scld_4_2to3_right_in;
reg[15:0] vidin_data_reg_scld_4_2to3_right_in;
input[15:0] bus_word_3;
input[15:0] bus_word_4;
input[15:0] bus_word_5;
input[15:0] bus_word_6;
input[2:0] counter_out;
reg[15:0] bus_word_3_tmp;
reg[15:0] bus_word_4_tmp;
reg[15:0] bus_word_5_tmp;
reg[15:0] bus_word_6_tmp;
reg[18:0] vidin_addr_reg_tmp;
reg svid_comp_switch_tmp;
/*
reg vidin_new_data_scld_1_2to3_left_tmp;
reg vidin_new_data_scld_2_2to3_left_tmp;
reg vidin_new_data_scld_4_2to3_left_tmp;
reg vidin_new_data_scld_1_2to3_right_tmp;
reg vidin_new_data_scld_2_2to3_right_tmp;
reg vidin_new_data_scld_4_2to3_right_tmp;
*/
reg[2:0] counter_out_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_left_rp_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_left_ip_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_left_rn_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_left_in_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_left_rp_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_left_ip_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_left_rn_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_left_in_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_left_rp_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_left_ip_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_left_rn_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_left_in_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_right_rp_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_right_ip_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_right_rn_tmp;
reg[15:0] vidin_data_reg_scld_1_2to3_right_in_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_right_rp_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_right_ip_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_right_rn_tmp;
reg[15:0] vidin_data_reg_scld_2_2to3_right_in_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_right_rp_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_right_ip_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_right_rn_tmp;
reg[15:0] vidin_data_reg_scld_4_2to3_right_in_tmp;
always @(posedge clk)
begin
case (counter_out_tmp[2:0])
// took out noop case 3'b000
3'b001 :
begin
vidin_addr_reg_tmp[15:0] <= bus_word_3_tmp ;
vidin_addr_reg_tmp[18:16] <= bus_word_4_tmp[15:13] ;
svid_comp_switch_tmp <= bus_word_4_tmp[12] ;
/*
vidin_new_data_scld_1_2to3_left_tmp <= bus_word_4_tmp[11] ;
vidin_new_data_scld_2_2to3_left_tmp <= bus_word_4_tmp[10] ;
vidin_new_data_scld_4_2to3_left_tmp <= bus_word_4_tmp[9] ;
vidin_new_data_scld_1_2to3_right_tmp <= bus_word_4_tmp[8] ;
vidin_new_data_scld_2_2to3_right_tmp <= bus_word_4_tmp[7] ;
vidin_new_data_scld_4_2to3_right_tmp <= bus_word_4_tmp[6] ;
*/
end
3'b010 :
begin
vidin_data_reg_scld_1_2to3_left_rp_tmp <= bus_word_3_tmp ;
vidin_data_reg_scld_1_2to3_left_ip_tmp <= bus_word_4_tmp ;
vidin_data_reg_scld_1_2to3_left_rn_tmp <= bus_word_5_tmp ;
vidin_data_reg_scld_1_2to3_left_in_tmp <= bus_word_6_tmp ;
end
3'b011 :
begin
vidin_data_reg_scld_1_2to3_right_rp_tmp <= bus_word_3_tmp ;
vidin_data_reg_scld_1_2to3_right_ip_tmp <= bus_word_4_tmp ;
vidin_data_reg_scld_1_2to3_right_rn_tmp <= bus_word_5_tmp ;
vidin_data_reg_scld_1_2to3_right_in_tmp <= bus_word_6_tmp ;
end
3'b100 :
begin
vidin_data_reg_scld_2_2to3_left_rp_tmp <= bus_word_3_tmp ;
vidin_data_reg_scld_2_2to3_left_ip_tmp <= bus_word_4_tmp ;
vidin_data_reg_scld_2_2to3_left_rn_tmp <= bus_word_5_tmp ;
vidin_data_reg_scld_2_2to3_left_in_tmp <= bus_word_6_tmp ;
end
3'b101 :
begin
vidin_data_reg_scld_2_2to3_right_rp_tmp <= bus_word_3_tmp ;
vidin_data_reg_scld_2_2to3_right_ip_tmp <= bus_word_4_tmp ;
vidin_data_reg_scld_2_2to3_right_rn_tmp <= bus_word_5_tmp ;
vidin_data_reg_scld_2_2to3_right_in_tmp <= bus_word_6_tmp ;
end
3'b110 :
begin
vidin_data_reg_scld_4_2to3_left_rp_tmp <= bus_word_3_tmp ;
vidin_data_reg_scld_4_2to3_left_ip_tmp <= bus_word_4_tmp ;
vidin_data_reg_scld_4_2to3_left_rn_tmp <= bus_word_5_tmp ;
vidin_data_reg_scld_4_2to3_left_in_tmp <= bus_word_6_tmp ;
end
3'b111 :
begin
vidin_data_reg_scld_4_2to3_right_rp_tmp <= bus_word_3_tmp ;
vidin_data_reg_scld_4_2to3_right_ip_tmp <= bus_word_4_tmp ;
vidin_data_reg_scld_4_2to3_right_rn_tmp <= bus_word_5_tmp ;
vidin_data_reg_scld_4_2to3_right_in_tmp <= bus_word_6_tmp ;
end
default:
begin
vidin_data_reg_scld_4_2to3_right_rp_tmp <= 0;
vidin_data_reg_scld_4_2to3_right_ip_tmp <= 0;
vidin_data_reg_scld_4_2to3_right_rn_tmp <= 0;
vidin_data_reg_scld_4_2to3_right_in_tmp <= 0;
vidin_addr_reg_tmp <= 0;
svid_comp_switch_tmp <=0;
end
endcase
end
always @(posedge clk)
begin
if (rst)
begin
counter_out_tmp <= 0;
bus_word_3_tmp <= 0;
bus_word_4_tmp <= 0;
bus_word_5_tmp <= 0;
bus_word_6_tmp <= 0;
end
else
begin
counter_out_tmp <= counter_out ;
bus_word_3_tmp <= bus_word_3 ;
bus_word_4_tmp <= bus_word_4 ;
bus_word_5_tmp <= bus_word_5 ;
bus_word_6_tmp <= bus_word_6 ;
end
end
always @(posedge clk)
begin
if (counter_out_tmp == 3'b001)
begin
vidin_addr_reg <= vidin_addr_reg_tmp ;
svid_comp_switch <= svid_comp_switch_tmp ;
vidin_new_data_scld_1_2to3_left <= 1'b1 ;
if (((vidin_addr_reg_tmp[0]) == 1'b0) && ((vidin_addr_reg_tmp[9]) == 1'b0))
begin
vidin_new_data_scld_2_2to3_left <= 1'b1 ;
if (((vidin_addr_reg_tmp[1]) == 1'b0) && ((vidin_addr_reg_tmp[10]) == 1'b0))
begin
vidin_new_data_scld_4_2to3_left <= 1'b1 ;
end
else
begin
vidin_new_data_scld_4_2to3_left <= vidin_new_data_scld_4_2to3_left;
end
end
else
begin
vidin_new_data_scld_2_2to3_left <= vidin_new_data_scld_4_2to3_left ;
vidin_new_data_scld_4_2to3_left <= vidin_new_data_scld_4_2to3_left;
end
vidin_new_data_scld_1_2to3_right <= 1'b1 ;
vidin_new_data_scld_2_2to3_right <= 1'b1 ;
vidin_new_data_scld_4_2to3_right <= 1'b1 ;
vidin_data_reg_scld_1_2to3_left_rp <= vidin_data_reg_scld_1_2to3_left_rp_tmp ;
vidin_data_reg_scld_1_2to3_left_ip <= vidin_data_reg_scld_1_2to3_left_ip_tmp ;
vidin_data_reg_scld_1_2to3_left_rn <= vidin_data_reg_scld_1_2to3_left_rn_tmp ;
vidin_data_reg_scld_1_2to3_left_in <= vidin_data_reg_scld_1_2to3_left_in_tmp ;
vidin_data_reg_scld_2_2to3_left_rp <= vidin_data_reg_scld_2_2to3_left_rp_tmp ;
vidin_data_reg_scld_2_2to3_left_ip <= vidin_data_reg_scld_2_2to3_left_ip_tmp ;
vidin_data_reg_scld_2_2to3_left_rn <= vidin_data_reg_scld_2_2to3_left_rn_tmp ;
vidin_data_reg_scld_2_2to3_left_in <= vidin_data_reg_scld_2_2to3_left_in_tmp ;
vidin_data_reg_scld_4_2to3_left_rp <= vidin_data_reg_scld_4_2to3_left_rp_tmp ;
vidin_data_reg_scld_4_2to3_left_ip <= vidin_data_reg_scld_4_2to3_left_ip_tmp ;
vidin_data_reg_scld_4_2to3_left_rn <= vidin_data_reg_scld_4_2to3_left_rn_tmp ;
vidin_data_reg_scld_4_2to3_left_in <= vidin_data_reg_scld_4_2to3_left_in_tmp ;
vidin_data_reg_scld_1_2to3_right_rp <= vidin_data_reg_scld_1_2to3_right_rp_tmp ;
vidin_data_reg_scld_1_2to3_right_ip <= vidin_data_reg_scld_1_2to3_right_ip_tmp ;
vidin_data_reg_scld_1_2to3_right_rn <= vidin_data_reg_scld_1_2to3_right_rn_tmp ;
vidin_data_reg_scld_1_2to3_right_in <= vidin_data_reg_scld_1_2to3_right_in_tmp ;
vidin_data_reg_scld_2_2to3_right_rp <= vidin_data_reg_scld_2_2to3_right_rp_tmp ;
vidin_data_reg_scld_2_2to3_right_ip <= vidin_data_reg_scld_2_2to3_right_ip_tmp ;
vidin_data_reg_scld_2_2to3_right_rn <= vidin_data_reg_scld_2_2to3_right_rn_tmp ;
vidin_data_reg_scld_2_2to3_right_in <= vidin_data_reg_scld_2_2to3_right_in_tmp ;
vidin_data_reg_scld_4_2to3_right_rp <= vidin_data_reg_scld_4_2to3_right_rp_tmp ;
vidin_data_reg_scld_4_2to3_right_ip <= vidin_data_reg_scld_4_2to3_right_ip_tmp ;
vidin_data_reg_scld_4_2to3_right_rn <= vidin_data_reg_scld_4_2to3_right_rn_tmp ;
vidin_data_reg_scld_4_2to3_right_in <= vidin_data_reg_scld_4_2to3_right_in_tmp ;
end
else
begin
vidin_new_data_scld_1_2to3_left <= 1'b0 ;
vidin_new_data_scld_2_2to3_left <= 1'b0 ;
vidin_new_data_scld_4_2to3_left <= 1'b0 ;
vidin_new_data_scld_1_2to3_right <= 1'b0 ;
vidin_new_data_scld_2_2to3_right <= 1'b0 ;
vidin_new_data_scld_4_2to3_right <= 1'b0 ;
vidin_addr_reg <= vidin_addr_reg;
svid_comp_switch <= svid_comp_switch;
vidin_data_reg_scld_1_2to3_left_rp <= vidin_data_reg_scld_1_2to3_left_rp;
vidin_data_reg_scld_1_2to3_left_ip <= vidin_data_reg_scld_1_2to3_left_ip;
vidin_data_reg_scld_1_2to3_left_rn <= vidin_data_reg_scld_1_2to3_left_rn;
vidin_data_reg_scld_1_2to3_left_in <= vidin_data_reg_scld_1_2to3_left_in;
vidin_data_reg_scld_2_2to3_left_rp <= vidin_data_reg_scld_2_2to3_left_rp;
vidin_data_reg_scld_2_2to3_left_ip <= vidin_data_reg_scld_2_2to3_left_ip;
vidin_data_reg_scld_2_2to3_left_rn <= vidin_data_reg_scld_2_2to3_left_rn;
vidin_data_reg_scld_2_2to3_left_in <= vidin_data_reg_scld_2_2to3_left_in;
vidin_data_reg_scld_4_2to3_left_rp <= vidin_data_reg_scld_4_2to3_left_rp;
vidin_data_reg_scld_4_2to3_left_ip <= vidin_data_reg_scld_4_2to3_left_ip;
vidin_data_reg_scld_4_2to3_left_rn <= vidin_data_reg_scld_4_2to3_left_rn;
vidin_data_reg_scld_4_2to3_left_in <= vidin_data_reg_scld_4_2to3_left_in;
vidin_data_reg_scld_1_2to3_right_rp <= vidin_data_reg_scld_1_2to3_right_rp;
vidin_data_reg_scld_1_2to3_right_ip <= vidin_data_reg_scld_1_2to3_right_ip;
vidin_data_reg_scld_1_2to3_right_rn <= vidin_data_reg_scld_1_2to3_right_rn;
vidin_data_reg_scld_1_2to3_right_in <= vidin_data_reg_scld_1_2to3_right_in;
vidin_data_reg_scld_2_2to3_right_rp <= vidin_data_reg_scld_2_2to3_right_rp;
vidin_data_reg_scld_2_2to3_right_ip <= vidin_data_reg_scld_2_2to3_right_ip;
vidin_data_reg_scld_2_2to3_right_rn <= vidin_data_reg_scld_2_2to3_right_rn;
vidin_data_reg_scld_2_2to3_right_in <= vidin_data_reg_scld_2_2to3_right_in;
vidin_data_reg_scld_4_2to3_right_rp <= vidin_data_reg_scld_4_2to3_right_rp;
vidin_data_reg_scld_4_2to3_right_ip <= vidin_data_reg_scld_4_2to3_right_ip;
vidin_data_reg_scld_4_2to3_right_rn <= vidin_data_reg_scld_4_2to3_right_rn;
vidin_data_reg_scld_4_2to3_right_in <= vidin_data_reg_scld_4_2to3_right_in;
end
end
endmodule
module wrapper_norm_corr_20 (clk, wen, d_l_1, d_l_2, d_r_1, d_r_2, corr_out_0, corr_out_1, corr_out_2, corr_out_3, corr_out_4, corr_out_5, corr_out_6, corr_out_7, corr_out_8, corr_out_9, corr_out_10, corr_out_11, corr_out_12, corr_out_13, corr_out_14, corr_out_15, corr_out_16, corr_out_17, corr_out_18, corr_out_19, corr_out_20);
parameter sh_reg_w = 4'b1000;
input clk;
input wen;
input[15:0] d_l_1;
input[15:0] d_l_2;
input[15:0] d_r_1;
input[15:0] d_r_2;
output[2 * sh_reg_w - 1:0] corr_out_0;
wire[2 * sh_reg_w - 1:0] corr_out_0;
output[2 * sh_reg_w - 1:0] corr_out_1;
wire[2 * sh_reg_w - 1:0] corr_out_1;
output[2 * sh_reg_w - 1:0] corr_out_2;
wire[2 * sh_reg_w - 1:0] corr_out_2;
output[2 * sh_reg_w - 1:0] corr_out_3;
wire[2 * sh_reg_w - 1:0] corr_out_3;
output[2 * sh_reg_w - 1:0] corr_out_4;
wire[2 * sh_reg_w - 1:0] corr_out_4;
output[2 * sh_reg_w - 1:0] corr_out_5;
wire[2 * sh_reg_w - 1:0] corr_out_5;
output[2 * sh_reg_w - 1:0] corr_out_6;
wire[2 * sh_reg_w - 1:0] corr_out_6;
output[2 * sh_reg_w - 1:0] corr_out_7;
wire[2 * sh_reg_w - 1:0] corr_out_7;
output[2 * sh_reg_w - 1:0] corr_out_8;
wire[2 * sh_reg_w - 1:0] corr_out_8;
output[2 * sh_reg_w - 1:0] corr_out_9;
wire[2 * sh_reg_w - 1:0] corr_out_9;
output[2 * sh_reg_w - 1:0] corr_out_10;
wire[2 * sh_reg_w - 1:0] corr_out_10;
output[2 * sh_reg_w - 1:0] corr_out_11;
wire[2 * sh_reg_w - 1:0] corr_out_11;
output[2 * sh_reg_w - 1:0] corr_out_12;
wire[2 * sh_reg_w - 1:0] corr_out_12;
output[2 * sh_reg_w - 1:0] corr_out_13;
wire[2 * sh_reg_w - 1:0] corr_out_13;
output[2 * sh_reg_w - 1:0] corr_out_14;
wire[2 * sh_reg_w - 1:0] corr_out_14;
output[2 * sh_reg_w - 1:0] corr_out_15;
wire[2 * sh_reg_w - 1:0] corr_out_15;
output[2 * sh_reg_w - 1:0] corr_out_16;
wire[2 * sh_reg_w - 1:0] corr_out_16;
output[2 * sh_reg_w - 1:0] corr_out_17;
wire[2 * sh_reg_w - 1:0] corr_out_17;
output[2 * sh_reg_w - 1:0] corr_out_18;
wire[2 * sh_reg_w - 1:0] corr_out_18;
output[2 * sh_reg_w - 1:0] corr_out_19;
wire[2 * sh_reg_w - 1:0] corr_out_19;
output[2 * sh_reg_w - 1:0] corr_out_20;
wire[2 * sh_reg_w - 1:0] corr_out_20;
wire[sh_reg_w - 1:0] d_l_1_nrm;
wire[sh_reg_w - 1:0] d_l_2_nrm;
wire[sh_reg_w - 1:0] d_r_1_nrm;
wire[sh_reg_w - 1:0] d_r_2_nrm;
wrapper_norm norm_inst_left(.clk(clk), .nd(wen), .din_1(d_l_1), .din_2(d_l_2), .dout_1(d_l_1_nrm), .dout_2(d_l_2_nrm));
wrapper_norm norm_inst_right(.clk(clk), .nd(wen), .din_1(d_r_1), .din_2(d_r_2), .dout_1(d_r_1_nrm), .dout_2(d_r_2_nrm));
wrapper_corr_20 corr_20_inst(.clk(clk), .wen(wen), .d_l_1(d_l_1_nrm), .d_l_2(d_l_2_nrm), .d_r_1(d_r_1_nrm), .d_r_2(d_r_2_nrm), .corr_out_0(corr_out_0), .corr_out_1(corr_out_1), .corr_out_2(corr_out_2), .corr_out_3(corr_out_3), .corr_out_4(corr_out_4), .corr_out_5(corr_out_5), .corr_out_6(corr_out_6), .corr_out_7(corr_out_7), .corr_out_8(corr_out_8), .corr_out_9(corr_out_9), .corr_out_10(corr_out_10), .corr_out_11(corr_out_11), .corr_out_12(corr_out_12), .corr_out_13(corr_out_13), .corr_out_14(corr_out_14), .corr_out_15(corr_out_15), .corr_out_16(corr_out_16), .corr_out_17(corr_out_17), .corr_out_18(corr_out_18), .corr_out_19(corr_out_19), .corr_out_20(corr_out_20));
endmodule
module wrapper_corr_20 (clk, wen, d_l_1, d_l_2, d_r_1, d_r_2, corr_out_0, corr_out_1, corr_out_2, corr_out_3, corr_out_4, corr_out_5, corr_out_6, corr_out_7, corr_out_8, corr_out_9, corr_out_10, corr_out_11, corr_out_12, corr_out_13, corr_out_14, corr_out_15, corr_out_16, corr_out_17, corr_out_18, corr_out_19, corr_out_20);
parameter sh_reg_w = 4'b1000;
input clk;
input wen;
input[7:0] d_l_1;
input[7:0] d_l_2;
input[7:0] d_r_1;
input[7:0] d_r_2;
output[2 * sh_reg_w - 1:0] corr_out_0;
reg[2 * sh_reg_w - 1:0] corr_out_0;
output[2 * sh_reg_w - 1:0] corr_out_1;
reg[2 * sh_reg_w - 1:0] corr_out_1;
output[2 * sh_reg_w - 1:0] corr_out_2;
reg[2 * sh_reg_w - 1:0] corr_out_2;
output[2 * sh_reg_w - 1:0] corr_out_3;
reg[2 * sh_reg_w - 1:0] corr_out_3;
output[2 * sh_reg_w - 1:0] corr_out_4;
reg[2 * sh_reg_w - 1:0] corr_out_4;
output[2 * sh_reg_w - 1:0] corr_out_5;
reg[2 * sh_reg_w - 1:0] corr_out_5;
output[2 * sh_reg_w - 1:0] corr_out_6;
reg[2 * sh_reg_w - 1:0] corr_out_6;
output[2 * sh_reg_w - 1:0] corr_out_7;
reg[2 * sh_reg_w - 1:0] corr_out_7;
output[2 * sh_reg_w - 1:0] corr_out_8;
reg[2 * sh_reg_w - 1:0] corr_out_8;
output[2 * sh_reg_w - 1:0] corr_out_9;
reg[2 * sh_reg_w - 1:0] corr_out_9;
output[2 * sh_reg_w - 1:0] corr_out_10;
reg[2 * sh_reg_w - 1:0] corr_out_10;
output[2 * sh_reg_w - 1:0] corr_out_11;
reg[2 * sh_reg_w - 1:0] corr_out_11;
output[2 * sh_reg_w - 1:0] corr_out_12;
reg[2 * sh_reg_w - 1:0] corr_out_12;
output[2 * sh_reg_w - 1:0] corr_out_13;
reg[2 * sh_reg_w - 1:0] corr_out_13;
output[2 * sh_reg_w - 1:0] corr_out_14;
reg[2 * sh_reg_w - 1:0] corr_out_14;
output[2 * sh_reg_w - 1:0] corr_out_15;
reg[2 * sh_reg_w - 1:0] corr_out_15;
output[2 * sh_reg_w - 1:0] corr_out_16;
reg[2 * sh_reg_w - 1:0] corr_out_16;
output[2 * sh_reg_w - 1:0] corr_out_17;
reg[2 * sh_reg_w - 1:0] corr_out_17;
output[2 * sh_reg_w - 1:0] corr_out_18;
reg[2 * sh_reg_w - 1:0] corr_out_18;
output[2 * sh_reg_w - 1:0] corr_out_19;
reg[2 * sh_reg_w - 1:0] corr_out_19;
output[2 * sh_reg_w - 1:0] corr_out_20;
reg[2 * sh_reg_w - 1:0] corr_out_20;
wire[sh_reg_w - 1:0] out_r1;
wire[sh_reg_w - 1:0] out_01;
wire[sh_reg_w - 1:0] out_11;
wire[sh_reg_w - 1:0] out_21;
wire[sh_reg_w - 1:0] out_31;
wire[sh_reg_w - 1:0] out_41;
wire[sh_reg_w - 1:0] out_51;
wire[sh_reg_w - 1:0] out_61;
wire[sh_reg_w - 1:0] out_71;
wire[sh_reg_w - 1:0] out_81;
wire[sh_reg_w - 1:0] out_91;
wire[sh_reg_w - 1:0] out_101;
wire[sh_reg_w - 1:0] out_111;
wire[sh_reg_w - 1:0] out_121;
wire[sh_reg_w - 1:0] out_131;
wire[sh_reg_w - 1:0] out_141;
wire[sh_reg_w - 1:0] out_151;
wire[sh_reg_w - 1:0] out_161;
wire[sh_reg_w - 1:0] out_171;
wire[sh_reg_w - 1:0] out_181;
wire[sh_reg_w - 1:0] out_191;
wire[sh_reg_w - 1:0] out_201;
wire[sh_reg_w - 1:0] out_r2;
wire[sh_reg_w - 1:0] out_02;
wire[sh_reg_w - 1:0] out_12;
wire[sh_reg_w - 1:0] out_22;
wire[sh_reg_w - 1:0] out_32;
wire[sh_reg_w - 1:0] out_42;
wire[sh_reg_w - 1:0] out_52;
wire[sh_reg_w - 1:0] out_62;
wire[sh_reg_w - 1:0] out_72;
wire[sh_reg_w - 1:0] out_82;
wire[sh_reg_w - 1:0] out_92;
wire[sh_reg_w - 1:0] out_102;
wire[sh_reg_w - 1:0] out_112;
wire[sh_reg_w - 1:0] out_122;
wire[sh_reg_w - 1:0] out_132;
wire[sh_reg_w - 1:0] out_142;
wire[sh_reg_w - 1:0] out_152;
wire[sh_reg_w - 1:0] out_162;
wire[sh_reg_w - 1:0] out_172;
wire[sh_reg_w - 1:0] out_182;
wire[sh_reg_w - 1:0] out_192;
wire[sh_reg_w - 1:0] out_202;
wire[2 * sh_reg_w - 1:0] corr_out_0_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_1_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_2_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_3_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_4_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_5_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_6_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_7_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_8_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_9_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_10_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_11_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_12_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_13_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_14_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_15_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_16_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_17_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_18_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_19_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_20_tmp;
sh_reg inst_sh_reg_r_1(clk, wen, d_r_1, d_r_2, out_r1, out_r2);
sh_reg inst_sh_reg_0(clk, wen, d_l_1, d_l_2, out_01, out_02);
sh_reg inst_sh_reg_1(clk, wen, out_01, out_02, out_11, out_12);
sh_reg inst_sh_reg_2(clk, wen, out_11, out_12, out_21, out_22);
sh_reg inst_sh_reg_3(clk, wen, out_21, out_22, out_31, out_32);
sh_reg inst_sh_reg_4(clk, wen, out_31, out_32, out_41, out_42);
sh_reg inst_sh_reg_5(clk, wen, out_41, out_42, out_51, out_52);
sh_reg inst_sh_reg_6(clk, wen, out_51, out_52, out_61, out_62);
sh_reg inst_sh_reg_7(clk, wen, out_61, out_62, out_71, out_72);
sh_reg inst_sh_reg_8(clk, wen, out_71, out_72, out_81, out_82);
sh_reg inst_sh_reg_9(clk, wen, out_81, out_82, out_91, out_92);
sh_reg inst_sh_reg_10(clk, wen, out_91, out_92, out_101, out_102);
sh_reg inst_sh_reg_11(clk, wen, out_101, out_102, out_111, out_112);
sh_reg inst_sh_reg_12(clk, wen, out_111, out_112, out_121, out_122);
sh_reg inst_sh_reg_13(clk, wen, out_121, out_122, out_131, out_132);
sh_reg inst_sh_reg_14(clk, wen, out_131, out_132, out_141, out_142);
sh_reg inst_sh_reg_15(clk, wen, out_141, out_142, out_151, out_152);
sh_reg inst_sh_reg_16(clk, wen, out_151, out_152, out_161, out_162);
sh_reg inst_sh_reg_17(clk, wen, out_161, out_162, out_171, out_172);
sh_reg inst_sh_reg_18(clk, wen, out_171, out_172, out_181, out_182);
sh_reg inst_sh_reg_19(clk, wen, out_181, out_182, out_191, out_192);
sh_reg inst_sh_reg_20(clk, wen, out_191, out_192, out_201, out_202);
corr inst_corr_0(clk, wen, out_01, out_02, out_r1, out_r2, corr_out_0_tmp);
corr inst_corr_1(clk, wen, out_11, out_12, out_r1, out_r2, corr_out_1_tmp);
corr inst_corr_2(clk, wen, out_21, out_22, out_r1, out_r2, corr_out_2_tmp);
corr inst_corr_3(clk, wen, out_31, out_32, out_r1, out_r2, corr_out_3_tmp);
corr inst_corr_4(clk, wen, out_41, out_42, out_r1, out_r2, corr_out_4_tmp);
corr inst_corr_5(clk, wen, out_51, out_52, out_r1, out_r2, corr_out_5_tmp);
corr inst_corr_6(clk, wen, out_61, out_62, out_r1, out_r2, corr_out_6_tmp);
corr inst_corr_7(clk, wen, out_71, out_72, out_r1, out_r2, corr_out_7_tmp);
corr inst_corr_8(clk, wen, out_81, out_82, out_r1, out_r2, corr_out_8_tmp);
corr inst_corr_9(clk, wen, out_91, out_92, out_r1, out_r2, corr_out_9_tmp);
corr inst_corr_10(clk, wen, out_101, out_102, out_r1, out_r2, corr_out_10_tmp);
corr inst_corr_11(clk, wen, out_111, out_112, out_r1, out_r2, corr_out_11_tmp);
corr inst_corr_12(clk, wen, out_121, out_122, out_r1, out_r2, corr_out_12_tmp);
corr inst_corr_13(clk, wen, out_131, out_132, out_r1, out_r2, corr_out_13_tmp);
corr inst_corr_14(clk, wen, out_141, out_142, out_r1, out_r2, corr_out_14_tmp);
corr inst_corr_15(clk, wen, out_151, out_152, out_r1, out_r2, corr_out_15_tmp);
corr inst_corr_16(clk, wen, out_161, out_162, out_r1, out_r2, corr_out_16_tmp);
corr inst_corr_17(clk, wen, out_171, out_172, out_r1, out_r2, corr_out_17_tmp);
corr inst_corr_18(clk, wen, out_181, out_182, out_r1, out_r2, corr_out_18_tmp);
corr inst_corr_19(clk, wen, out_191, out_192, out_r1, out_r2, corr_out_19_tmp);
corr inst_corr_20(clk, wen, out_201, out_202, out_r1, out_r2, corr_out_20_tmp);
always @(posedge clk)
begin
if (wen == 1'b1)
begin
corr_out_0 <= corr_out_0_tmp ;
corr_out_1 <= corr_out_1_tmp ;
corr_out_2 <= corr_out_2_tmp ;
corr_out_3 <= corr_out_3_tmp ;
corr_out_4 <= corr_out_4_tmp ;
corr_out_5 <= corr_out_5_tmp ;
corr_out_6 <= corr_out_6_tmp ;
corr_out_7 <= corr_out_7_tmp ;
corr_out_8 <= corr_out_8_tmp ;
corr_out_9 <= corr_out_9_tmp ;
corr_out_10 <= corr_out_10_tmp ;
corr_out_11 <= corr_out_11_tmp ;
corr_out_12 <= corr_out_12_tmp ;
corr_out_13 <= corr_out_13_tmp ;
corr_out_14 <= corr_out_14_tmp ;
corr_out_15 <= corr_out_15_tmp ;
corr_out_16 <= corr_out_16_tmp ;
corr_out_17 <= corr_out_17_tmp ;
corr_out_18 <= corr_out_18_tmp ;
corr_out_19 <= corr_out_19_tmp ;
corr_out_20 <= corr_out_20_tmp ;
end
else
begin
corr_out_0 <= corr_out_0;
corr_out_1 <= corr_out_1;
corr_out_2 <= corr_out_2;
corr_out_3 <= corr_out_3;
corr_out_4 <= corr_out_4;
corr_out_5 <= corr_out_5;
corr_out_6 <= corr_out_6;
corr_out_7 <= corr_out_7;
corr_out_8 <= corr_out_8;
corr_out_9 <= corr_out_9;
corr_out_10 <= corr_out_10;
corr_out_11 <= corr_out_11;
corr_out_12 <= corr_out_12;
corr_out_13 <= corr_out_13;
corr_out_14 <= corr_out_14;
corr_out_15 <= corr_out_15;
corr_out_16 <= corr_out_16;
corr_out_17 <= corr_out_17;
corr_out_18 <= corr_out_18;
corr_out_19 <= corr_out_19;
corr_out_20 <= corr_out_20;
end
end
endmodule
// Discription: this block creates a simple
// shift register
// date: Oct.7 ,2001
// revised : April 8, 2002
// By: Ahmad darabiha
module sh_reg (clk, wen, din_1, din_2, dout_1, dout_2);
parameter sh_reg_w = 4'b1000;
input clk;
input wen;
input[sh_reg_w - 1:0] din_1;
input[sh_reg_w - 1:0] din_2;
output[sh_reg_w - 1:0] dout_1;
reg[sh_reg_w - 1:0] dout_1;
output[sh_reg_w - 1:0] dout_2;
reg[sh_reg_w - 1:0] dout_2;
always @(posedge clk)
begin
if (wen == 1'b1)
begin
dout_1 <= din_1 ;
dout_2 <= din_2 ;
end
else
begin
dout_1 <= dout_1 ;
dout_2 <= dout_2 ;
end
end
endmodule
module corr (clk, new_data, in_l_re, in_l_im, in_r_re, in_r_im, corr_out);
parameter sh_reg_w = 4'b1000;
input clk;
input new_data;
input[sh_reg_w - 1:0] in_l_re;
input[sh_reg_w - 1:0] in_l_im;
input[sh_reg_w - 1:0] in_r_re;
input[sh_reg_w - 1:0] in_r_im;
output[2 * sh_reg_w - 1:0] corr_out;
reg[2 * sh_reg_w - 1:0] corr_out;
wire[sh_reg_w - 1:0] in_l_re_reg;
wire[sh_reg_w - 1:0] in_l_im_reg;
wire[sh_reg_w - 1:0] in_r_re_reg;
wire[sh_reg_w - 1:0] in_r_im_reg;
reg[2 * sh_reg_w - 1:0] lrexrre_reg;
reg[2 * sh_reg_w - 1:0] limxrim_reg;
reg[2 * sh_reg_w - 1:0] corr_out_tmp;
always @(posedge clk)
begin
// PAJ - edf xilinx files converted to multiply
lrexrre_reg <= in_l_re * in_r_re;
limxrim_reg <= in_l_im * in_r_im;
if (new_data == 1'b1)
begin
corr_out <= corr_out_tmp ;
end
else
begin
corr_out <= corr_out;
end
corr_out_tmp <= lrexrre_reg + limxrim_reg ;
end
endmodule
module wrapper_norm (clk, nd, din_1, din_2, dout_1, dout_2);
parameter sh_reg_w = 4'b1000;
input clk;
input nd;
input[15:0] din_1;
input[15:0] din_2;
output[sh_reg_w - 1:0] dout_1;
wire[sh_reg_w - 1:0] dout_1;
output[sh_reg_w - 1:0] dout_2;
wire[sh_reg_w - 1:0] dout_2;
reg[15:0] din_1_reg;
reg[15:0] din_2_reg;
reg[15:0] din_1_tmp1;
reg[15:0] din_2_tmp1;
reg[15:0] din_1_tmp2;
reg[15:0] din_2_tmp2;
reg[15:0] addin_1;
reg[15:0] addin_2;
reg[16:0] add_out;
my_wrapper_divider my_div_inst_1 (nd, clk, din_1_tmp2, add_out, dout_1);
my_wrapper_divider my_div_inst_2 (nd, clk, din_2_tmp2, add_out, dout_2);
always @(posedge clk)
begin
if (nd == 1'b1)
begin
din_1_reg <= din_1 ;
din_2_reg <= din_2 ;
end
else
begin
din_1_reg <= din_1_reg ;
din_2_reg <= din_2_reg;
end
din_1_tmp1 <= din_1_reg ;
din_1_tmp2 <= din_1_tmp1 ;
din_2_tmp1 <= din_2_reg ;
din_2_tmp2 <= din_2_tmp1 ;
if ((din_1_reg[15]) == 1'b0)
begin
addin_1 <= din_1_reg ;
end
else
begin
addin_1 <= 16'b0000000000000000 - din_1_reg ;
end
if ((din_2_reg[15]) == 1'b0)
begin
addin_2 <= din_2_reg + 16'b0000000000000001 ;
end
else
begin
addin_2 <= 16'b0000000000000001 - din_2_reg ;
end
add_out <= ({addin_1[15], addin_1}) + ({addin_2[15], addin_2}) ;
end
endmodule
module wrapper_norm_corr_10 (clk, wen, d_l_1, d_l_2, d_r_1, d_r_2, corr_out_0, corr_out_1, corr_out_2, corr_out_3, corr_out_4, corr_out_5, corr_out_6, corr_out_7, corr_out_8, corr_out_9, corr_out_10);
parameter sh_reg_w = 4'b1000;
input clk;
input wen;
input[15:0] d_l_1;
input[15:0] d_l_2;
input[15:0] d_r_1;
input[15:0] d_r_2;
output[2 * sh_reg_w - 1:0] corr_out_0;
wire[2 * sh_reg_w - 1:0] corr_out_0;
output[2 * sh_reg_w - 1:0] corr_out_1;
wire[2 * sh_reg_w - 1:0] corr_out_1;
output[2 * sh_reg_w - 1:0] corr_out_2;
wire[2 * sh_reg_w - 1:0] corr_out_2;
output[2 * sh_reg_w - 1:0] corr_out_3;
wire[2 * sh_reg_w - 1:0] corr_out_3;
output[2 * sh_reg_w - 1:0] corr_out_4;
wire[2 * sh_reg_w - 1:0] corr_out_4;
output[2 * sh_reg_w - 1:0] corr_out_5;
wire[2 * sh_reg_w - 1:0] corr_out_5;
output[2 * sh_reg_w - 1:0] corr_out_6;
wire[2 * sh_reg_w - 1:0] corr_out_6;
output[2 * sh_reg_w - 1:0] corr_out_7;
wire[2 * sh_reg_w - 1:0] corr_out_7;
output[2 * sh_reg_w - 1:0] corr_out_8;
wire[2 * sh_reg_w - 1:0] corr_out_8;
output[2 * sh_reg_w - 1:0] corr_out_9;
wire[2 * sh_reg_w - 1:0] corr_out_9;
output[2 * sh_reg_w - 1:0] corr_out_10;
wire[2 * sh_reg_w - 1:0] corr_out_10;
wire[sh_reg_w - 1:0] d_l_1_nrm;
wire[sh_reg_w - 1:0] d_l_2_nrm;
wire[sh_reg_w - 1:0] d_r_1_nrm;
wire[sh_reg_w - 1:0] d_r_2_nrm;
wrapper_norm norm_inst_left(.clk(clk), .nd(wen), .din_1(d_l_1), .din_2(d_l_2), .dout_1(d_l_1_nrm), .dout_2(d_l_2_nrm));
wrapper_norm norm_inst_right(.clk(clk), .nd(wen), .din_1(d_r_1), .din_2(d_r_2), .dout_1(d_r_1_nrm), .dout_2(d_r_2_nrm));
wrapper_corr_10 corr_5_inst(.clk(clk), .wen(wen), .d_l_1(d_l_1_nrm), .d_l_2(d_l_2_nrm), .d_r_1(d_r_1_nrm), .d_r_2(d_r_2_nrm), .corr_out_0(corr_out_0), .corr_out_1(corr_out_1), .corr_out_2(corr_out_2), .corr_out_3(corr_out_3), .corr_out_4(corr_out_4), .corr_out_5(corr_out_5), .corr_out_6(corr_out_6), .corr_out_7(corr_out_7), .corr_out_8(corr_out_8), .corr_out_9(corr_out_9), .corr_out_10(corr_out_10));
endmodule
module wrapper_corr_10 (clk, wen, d_l_1, d_l_2, d_r_1, d_r_2, corr_out_0, corr_out_1, corr_out_2, corr_out_3, corr_out_4, corr_out_5, corr_out_6, corr_out_7, corr_out_8, corr_out_9, corr_out_10);
parameter sh_reg_w = 4'b1000;
input clk;
input wen;
input[7:0] d_l_1;
input[7:0] d_l_2;
input[7:0] d_r_1;
input[7:0] d_r_2;
output[2 * sh_reg_w - 1:0] corr_out_0;
reg[2 * sh_reg_w - 1:0] corr_out_0;
output[2 * sh_reg_w - 1:0] corr_out_1;
reg[2 * sh_reg_w - 1:0] corr_out_1;
output[2 * sh_reg_w - 1:0] corr_out_2;
reg[2 * sh_reg_w - 1:0] corr_out_2;
output[2 * sh_reg_w - 1:0] corr_out_3;
reg[2 * sh_reg_w - 1:0] corr_out_3;
output[2 * sh_reg_w - 1:0] corr_out_4;
reg[2 * sh_reg_w - 1:0] corr_out_4;
output[2 * sh_reg_w - 1:0] corr_out_5;
reg[2 * sh_reg_w - 1:0] corr_out_5;
output[2 * sh_reg_w - 1:0] corr_out_6;
reg[2 * sh_reg_w - 1:0] corr_out_6;
output[2 * sh_reg_w - 1:0] corr_out_7;
reg[2 * sh_reg_w - 1:0] corr_out_7;
output[2 * sh_reg_w - 1:0] corr_out_8;
reg[2 * sh_reg_w - 1:0] corr_out_8;
output[2 * sh_reg_w - 1:0] corr_out_9;
reg[2 * sh_reg_w - 1:0] corr_out_9;
output[2 * sh_reg_w - 1:0] corr_out_10;
reg[2 * sh_reg_w - 1:0] corr_out_10;
wire[sh_reg_w - 1:0] out_r1;
wire[sh_reg_w - 1:0] out_01;
wire[sh_reg_w - 1:0] out_11;
wire[sh_reg_w - 1:0] out_21;
wire[sh_reg_w - 1:0] out_31;
wire[sh_reg_w - 1:0] out_41;
wire[sh_reg_w - 1:0] out_51;
wire[sh_reg_w - 1:0] out_61;
wire[sh_reg_w - 1:0] out_71;
wire[sh_reg_w - 1:0] out_81;
wire[sh_reg_w - 1:0] out_91;
wire[sh_reg_w - 1:0] out_101;
wire[sh_reg_w - 1:0] out_r2;
wire[sh_reg_w - 1:0] out_02;
wire[sh_reg_w - 1:0] out_12;
wire[sh_reg_w - 1:0] out_22;
wire[sh_reg_w - 1:0] out_32;
wire[sh_reg_w - 1:0] out_42;
wire[sh_reg_w - 1:0] out_52;
wire[sh_reg_w - 1:0] out_62;
wire[sh_reg_w - 1:0] out_72;
wire[sh_reg_w - 1:0] out_82;
wire[sh_reg_w - 1:0] out_92;
wire[sh_reg_w - 1:0] out_102;
wire[2 * sh_reg_w - 1:0] corr_out_0_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_1_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_2_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_3_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_4_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_5_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_6_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_7_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_8_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_9_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_10_tmp;
sh_reg inst_sh_reg_r_1(clk, wen, d_r_1, d_r_2, out_r1, out_r2);
sh_reg inst_sh_reg_0(clk, wen, d_l_1, d_l_2, out_01, out_02);
sh_reg inst_sh_reg_1(clk, wen, out_01, out_02, out_11, out_12);
sh_reg inst_sh_reg_2(clk, wen, out_11, out_12, out_21, out_22);
sh_reg inst_sh_reg_3(clk, wen, out_21, out_22, out_31, out_32);
sh_reg inst_sh_reg_4(clk, wen, out_31, out_32, out_41, out_42);
sh_reg inst_sh_reg_5(clk, wen, out_41, out_42, out_51, out_52);
sh_reg inst_sh_reg_6(clk, wen, out_51, out_52, out_61, out_62);
sh_reg inst_sh_reg_7(clk, wen, out_61, out_62, out_71, out_72);
sh_reg inst_sh_reg_8(clk, wen, out_71, out_72, out_81, out_82);
sh_reg inst_sh_reg_9(clk, wen, out_81, out_82, out_91, out_92);
sh_reg inst_sh_reg_10(clk, wen, out_91, out_92, out_101, out_102);
corr inst_corr_0(clk, wen, out_01, out_02, out_r1, out_r2, corr_out_0_tmp);
corr inst_corr_1(clk, wen, out_11, out_12, out_r1, out_r2, corr_out_1_tmp);
corr inst_corr_2(clk, wen, out_21, out_22, out_r1, out_r2, corr_out_2_tmp);
corr inst_corr_3(clk, wen, out_31, out_32, out_r1, out_r2, corr_out_3_tmp);
corr inst_corr_4(clk, wen, out_41, out_42, out_r1, out_r2, corr_out_4_tmp);
corr inst_corr_5(clk, wen, out_51, out_52, out_r1, out_r2, corr_out_5_tmp);
corr inst_corr_6(clk, wen, out_61, out_62, out_r1, out_r2, corr_out_6_tmp);
corr inst_corr_7(clk, wen, out_71, out_72, out_r1, out_r2, corr_out_7_tmp);
corr inst_corr_8(clk, wen, out_81, out_82, out_r1, out_r2, corr_out_8_tmp);
corr inst_corr_9(clk, wen, out_91, out_92, out_r1, out_r2, corr_out_9_tmp);
corr inst_corr_10(clk, wen, out_101, out_102, out_r1, out_r2, corr_out_10_tmp);
always @(posedge clk)
begin
if (wen == 1'b1)
begin
corr_out_0 <= corr_out_0_tmp ;
corr_out_1 <= corr_out_1_tmp ;
corr_out_2 <= corr_out_2_tmp ;
corr_out_3 <= corr_out_3_tmp ;
corr_out_4 <= corr_out_4_tmp ;
corr_out_5 <= corr_out_5_tmp ;
corr_out_6 <= corr_out_6_tmp ;
corr_out_7 <= corr_out_7_tmp ;
corr_out_8 <= corr_out_8_tmp ;
corr_out_9 <= corr_out_9_tmp ;
corr_out_10 <= corr_out_10_tmp ;
end
else
begin
corr_out_0 <= corr_out_0;
corr_out_1 <= corr_out_1;
corr_out_2 <= corr_out_2;
corr_out_3 <= corr_out_3;
corr_out_4 <= corr_out_4;
corr_out_5 <= corr_out_5;
corr_out_6 <= corr_out_6;
corr_out_7 <= corr_out_7;
corr_out_8 <= corr_out_8;
corr_out_9 <= corr_out_9;
corr_out_10 <= corr_out_10;
end
end
endmodule
module wrapper_norm_corr_5_seq (clk, wen, d_l_1, d_l_2, d_r_1, d_r_2, corr_out_0, corr_out_1, corr_out_2, corr_out_3, corr_out_4, corr_out_5);
parameter sh_reg_w = 4'b1000;
input clk;
input wen;
input[15:0] d_l_1;
input[15:0] d_l_2;
input[15:0] d_r_1;
input[15:0] d_r_2;
output[2 * sh_reg_w - 1:0] corr_out_0;
wire[2 * sh_reg_w - 1:0] corr_out_0;
output[2 * sh_reg_w - 1:0] corr_out_1;
wire[2 * sh_reg_w - 1:0] corr_out_1;
output[2 * sh_reg_w - 1:0] corr_out_2;
wire[2 * sh_reg_w - 1:0] corr_out_2;
output[2 * sh_reg_w - 1:0] corr_out_3;
wire[2 * sh_reg_w - 1:0] corr_out_3;
output[2 * sh_reg_w - 1:0] corr_out_4;
wire[2 * sh_reg_w - 1:0] corr_out_4;
output[2 * sh_reg_w - 1:0] corr_out_5;
wire[2 * sh_reg_w - 1:0] corr_out_5;
wire[sh_reg_w - 1:0] d_l_1_nrm;
wire[sh_reg_w - 1:0] d_l_2_nrm;
wire[sh_reg_w - 1:0] d_r_1_nrm;
wire[sh_reg_w - 1:0] d_r_2_nrm;
wrapper_norm_seq norm_inst_left(.clk(clk), .nd(wen), .din_1(d_l_1), .din_2(d_l_2), .dout_1(d_l_1_nrm), .dout_2(d_l_2_nrm));
wrapper_norm_seq norm_inst_right(.clk(clk), .nd(wen), .din_1(d_r_1), .din_2(d_r_2), .dout_1(d_r_1_nrm), .dout_2(d_r_2_nrm));
wrapper_corr_5_seq corr_5_inst (.tm3_clk_v0(clk), .wen(wen), .d_l_1(d_l_1_nrm), .d_l_2(d_l_2_nrm), .d_r_1(d_r_1_nrm), .d_r_2(d_r_2_nrm), .corr_out_0(corr_out_0), .corr_out_1(corr_out_1), .corr_out_2(corr_out_2), .corr_out_3(corr_out_3), .corr_out_4(corr_out_4), .corr_out_5(corr_out_5));
endmodule
module wrapper_corr_5_seq (tm3_clk_v0, wen, d_l_1, d_l_2, d_r_1, d_r_2, corr_out_0, corr_out_1, corr_out_2, corr_out_3, corr_out_4, corr_out_5);
parameter sh_reg_w = 4'b1000;
input tm3_clk_v0;
input wen;
input[7:0] d_l_1;
input[7:0] d_l_2;
input[7:0] d_r_1;
input[7:0] d_r_2;
output[15:0] corr_out_0;
reg[15:0] corr_out_0;
output[15:0] corr_out_1;
reg[15:0] corr_out_1;
output[15:0] corr_out_2;
reg[15:0] corr_out_2;
output[15:0] corr_out_3;
reg[15:0] corr_out_3;
output[15:0] corr_out_4;
reg[15:0] corr_out_4;
output[15:0] corr_out_5;
reg[15:0] corr_out_5;
wire[sh_reg_w - 1:0] out_r1;
wire[sh_reg_w - 1:0] out_01;
wire[sh_reg_w - 1:0] out_11;
wire[sh_reg_w - 1:0] out_21;
wire[sh_reg_w - 1:0] out_31;
wire[sh_reg_w - 1:0] out_41;
wire[sh_reg_w - 1:0] out_51;
wire[sh_reg_w - 1:0] out_r2;
wire[sh_reg_w - 1:0] out_02;
wire[sh_reg_w - 1:0] out_12;
wire[sh_reg_w - 1:0] out_22;
wire[sh_reg_w - 1:0] out_32;
wire[sh_reg_w - 1:0] out_42;
wire[sh_reg_w - 1:0] out_52;
wire[2 * sh_reg_w - 1:0] corr_out_0_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_1_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_2_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_3_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_4_tmp;
wire[2 * sh_reg_w - 1:0] corr_out_5_tmp;
sh_reg inst_sh_reg_r_1(tm3_clk_v0, wen, d_r_1, d_r_2, out_r1, out_r2);
sh_reg inst_sh_reg_0(tm3_clk_v0, wen, d_l_1, d_l_2, out_01, out_02);
sh_reg inst_sh_reg_1(tm3_clk_v0, wen, out_01, out_02, out_11, out_12);
sh_reg inst_sh_reg_2(tm3_clk_v0, wen, out_11, out_12, out_21, out_22);
sh_reg inst_sh_reg_3(tm3_clk_v0, wen, out_21, out_22, out_31, out_32);
sh_reg inst_sh_reg_4(tm3_clk_v0, wen, out_31, out_32, out_41, out_42);
sh_reg inst_sh_reg_5(tm3_clk_v0, wen, out_41, out_42, out_51, out_52);
corr_seq inst_corr_0(tm3_clk_v0, wen, out_01, out_02, out_r1, out_r2, corr_out_0_tmp);
corr_seq inst_corr_1(tm3_clk_v0, wen, out_11, out_12, out_r1, out_r2, corr_out_1_tmp);
corr_seq inst_corr_2(tm3_clk_v0, wen, out_21, out_22, out_r1, out_r2, corr_out_2_tmp);
corr_seq inst_corr_3(tm3_clk_v0, wen, out_31, out_32, out_r1, out_r2, corr_out_3_tmp);
corr_seq inst_corr_4(tm3_clk_v0, wen, out_41, out_42, out_r1, out_r2, corr_out_4_tmp);
corr_seq inst_corr_5(tm3_clk_v0, wen, out_51, out_52, out_r1, out_r2, corr_out_5_tmp);
always @(posedge tm3_clk_v0)
begin
if (wen == 1'b1)
begin
corr_out_0 <= corr_out_0_tmp ;
corr_out_1 <= corr_out_1_tmp ;
corr_out_2 <= corr_out_2_tmp ;
corr_out_3 <= corr_out_3_tmp ;
corr_out_4 <= corr_out_4_tmp ;
corr_out_5 <= corr_out_5_tmp ;
end
else
begin
corr_out_0 <= corr_out_0;
corr_out_1 <= corr_out_1;
corr_out_2 <= corr_out_2;
corr_out_3 <= corr_out_3;
corr_out_4 <= corr_out_4;
corr_out_5 <= corr_out_5;
end
end
endmodule
module wrapper_norm_seq (clk, nd, din_1, din_2, dout_1, dout_2);
parameter sh_reg_w = 4'b1000;
input clk;
input nd;
input[15:0] din_1;
input[15:0] din_2;
output[sh_reg_w - 1:0] dout_1;
wire[sh_reg_w - 1:0] dout_1;
output[sh_reg_w - 1:0] dout_2;
wire[sh_reg_w - 1:0] dout_2;
reg[15:0] din_1_reg;
reg[15:0] din_2_reg;
reg[15:0] din_1_tmp1;
reg[15:0] din_2_tmp1;
reg[15:0] din_1_tmp2;
reg[15:0] din_2_tmp2;
reg[15:0] addin_1;
reg[15:0] addin_2;
reg[16:0] add_out;
my_wrapper_divider my_div_inst_1 (nd, clk, din_1_tmp2, add_out, dout_1);
my_wrapper_divider my_div_inst_2 (nd, clk, din_2_tmp2, add_out, dout_2);
always @(posedge clk)
begin
if (nd == 1'b1)
begin
din_1_reg <= din_1 ;
din_2_reg <= din_2 ;
end
else
begin
din_1_reg <= din_1_reg ;
din_2_reg <= din_2_reg ;
end
din_1_tmp1 <= din_1_reg ;
din_1_tmp2 <= din_1_tmp1 ;
din_2_tmp1 <= din_2_reg ;
din_2_tmp2 <= din_2_tmp1 ;
if ((din_1_reg[15]) == 1'b0)
begin
addin_1 <= din_1_reg ;
end
else
begin
addin_1 <= 16'b0000000000000000 - din_1_reg ;
end
if ((din_2_reg[15]) == 1'b0)
begin
addin_2 <= din_2_reg + 16'b0000000000000001 ;
end
else
begin
addin_2 <= 16'b0000000000000001 - din_2_reg ;
end
add_out <= ({addin_1[15], addin_1}) + ({addin_2[15], addin_2}) ;
end
endmodule
module corr_seq (clk, new_data, in_l_re, in_l_im, in_r_re, in_r_im, corr_out);
parameter sh_reg_w = 4'b1000;
input clk;
input new_data;
input[sh_reg_w - 1:0] in_l_re;
input[sh_reg_w - 1:0] in_l_im;
input[sh_reg_w - 1:0] in_r_re;
input[sh_reg_w - 1:0] in_r_im;
output[2 * sh_reg_w - 1:0] corr_out;
reg[2 * sh_reg_w - 1:0] corr_out;
reg[sh_reg_w - 1:0] in_l_re_reg;
reg[sh_reg_w - 1:0] in_l_im_reg;
reg[sh_reg_w - 1:0] in_r_re_reg;
reg[sh_reg_w - 1:0] in_r_im_reg;
reg[2 * sh_reg_w - 1:0] lrexrre_reg;
reg[2 * sh_reg_w - 1:0] limxrim_reg;
reg[2 * sh_reg_w - 1:0] corr_out_tmp;
always @(posedge clk)
begin
if (new_data == 1'b1)
begin
in_l_re_reg <= in_l_re ;
in_l_im_reg <= in_l_im ;
in_r_re_reg <= in_r_re ;
in_r_im_reg <= in_r_im ;
corr_out <= corr_out_tmp ;
end
else
begin
in_l_re_reg <= in_l_re_reg ;
in_l_im_reg <= in_l_im_reg ;
in_r_re_reg <= in_r_re_reg ;
in_r_im_reg <= in_r_im_reg ;
corr_out <= corr_out;
end
// PAJ - replaced by me, but called mult_slow
lrexrre_reg <= in_l_re_reg*in_r_re_reg ;
limxrim_reg <= in_l_im_reg*in_r_im_reg ;
corr_out_tmp <= lrexrre_reg + limxrim_reg ;
end
endmodule
module port_bus_1to0 (clk, vidin_addr_reg, svid_comp_switch, vidin_new_data_scld_1_2to3_left, v_corr_05_00, v_corr_05_01, v_corr_05_02, v_corr_05_03, v_corr_05_04, v_corr_05_05, v_corr_10_00, v_corr_10_01, v_corr_10_02, v_corr_10_03, v_corr_10_04, v_corr_10_05, v_corr_10_06, v_corr_10_07, v_corr_10_08, v_corr_10_09, v_corr_10_10, v_corr_20_00, v_corr_20_01, v_corr_20_02, v_corr_20_03, v_corr_20_04, v_corr_20_05, v_corr_20_06, v_corr_20_07, v_corr_20_08, v_corr_20_09, v_corr_20_10, v_corr_20_11, v_corr_20_12, v_corr_20_13, v_corr_20_14, v_corr_20_15, v_corr_20_16, v_corr_20_17, v_corr_20_18, v_corr_20_19, v_corr_20_20, bus_word_1, bus_word_2, bus_word_3, bus_word_4, bus_word_5, bus_word_6, counter_out, rst);
parameter corr_res_w = 4'b1000;
input rst;
input clk;
input[18:0] vidin_addr_reg;
input svid_comp_switch;
input vidin_new_data_scld_1_2to3_left;
input[corr_res_w - 1:0] v_corr_05_00;
input[corr_res_w - 1:0] v_corr_05_01;
input[corr_res_w - 1:0] v_corr_05_02;
input[corr_res_w - 1:0] v_corr_05_03;
input[corr_res_w - 1:0] v_corr_05_04;
input[corr_res_w - 1:0] v_corr_05_05;
input[corr_res_w - 1:0] v_corr_10_00;
input[corr_res_w - 1:0] v_corr_10_01;
input[corr_res_w - 1:0] v_corr_10_02;
input[corr_res_w - 1:0] v_corr_10_03;
input[corr_res_w - 1:0] v_corr_10_04;
input[corr_res_w - 1:0] v_corr_10_05;
input[corr_res_w - 1:0] v_corr_10_06;
input[corr_res_w - 1:0] v_corr_10_07;
input[corr_res_w - 1:0] v_corr_10_08;
input[corr_res_w - 1:0] v_corr_10_09;
input[corr_res_w - 1:0] v_corr_10_10;
input[corr_res_w - 1:0] v_corr_20_00;
input[corr_res_w - 1:0] v_corr_20_01;
input[corr_res_w - 1:0] v_corr_20_02;
input[corr_res_w - 1:0] v_corr_20_03;
input[corr_res_w - 1:0] v_corr_20_04;
input[corr_res_w - 1:0] v_corr_20_05;
input[corr_res_w - 1:0] v_corr_20_06;
input[corr_res_w - 1:0] v_corr_20_07;
input[corr_res_w - 1:0] v_corr_20_08;
input[corr_res_w - 1:0] v_corr_20_09;
input[corr_res_w - 1:0] v_corr_20_10;
input[corr_res_w - 1:0] v_corr_20_11;
input[corr_res_w - 1:0] v_corr_20_12;
input[corr_res_w - 1:0] v_corr_20_13;
input[corr_res_w - 1:0] v_corr_20_14;
input[corr_res_w - 1:0] v_corr_20_15;
input[corr_res_w - 1:0] v_corr_20_16;
input[corr_res_w - 1:0] v_corr_20_17;
input[corr_res_w - 1:0] v_corr_20_18;
input[corr_res_w - 1:0] v_corr_20_19;
input[corr_res_w - 1:0] v_corr_20_20;
output[7:0] bus_word_1;
reg[7:0] bus_word_1;
output[7:0] bus_word_2;
reg[7:0] bus_word_2;
output[7:0] bus_word_3;
reg[7:0] bus_word_3;
output[7:0] bus_word_4;
reg[7:0] bus_word_4;
output[7:0] bus_word_5;
reg[7:0] bus_word_5;
output[7:0] bus_word_6;
reg[7:0] bus_word_6;
output[2:0] counter_out;
reg[2:0] counter_out;
reg[7:0] bus_word_1_tmp;
reg[7:0] bus_word_2_tmp;
reg[7:0] bus_word_3_tmp;
reg[7:0] bus_word_4_tmp;
reg[7:0] bus_word_5_tmp;
reg[7:0] bus_word_6_tmp;
reg[18:0] vidin_addr_reg_tmp;
reg svid_comp_switch_tmp;
wire vidin_new_data_scld_1_2to3_left_tmp;
reg[3:0] counter;
reg[2:0] counter_out_tmp;
reg[corr_res_w - 1:0] v_corr_05_00_tmp;
reg[corr_res_w - 1:0] v_corr_05_01_tmp;
reg[corr_res_w - 1:0] v_corr_05_02_tmp;
reg[corr_res_w - 1:0] v_corr_05_03_tmp;
reg[corr_res_w - 1:0] v_corr_05_04_tmp;
reg[corr_res_w - 1:0] v_corr_05_05_tmp;
reg[corr_res_w - 1:0] v_corr_10_00_tmp;
reg[corr_res_w - 1:0] v_corr_10_01_tmp;
reg[corr_res_w - 1:0] v_corr_10_02_tmp;
reg[corr_res_w - 1:0] v_corr_10_03_tmp;
reg[corr_res_w - 1:0] v_corr_10_04_tmp;
reg[corr_res_w - 1:0] v_corr_10_05_tmp;
reg[corr_res_w - 1:0] v_corr_10_06_tmp;
reg[corr_res_w - 1:0] v_corr_10_07_tmp;
reg[corr_res_w - 1:0] v_corr_10_08_tmp;
reg[corr_res_w - 1:0] v_corr_10_09_tmp;
reg[corr_res_w - 1:0] v_corr_10_10_tmp;
reg[corr_res_w - 1:0] v_corr_20_00_tmp;
reg[corr_res_w - 1:0] v_corr_20_01_tmp;
reg[corr_res_w - 1:0] v_corr_20_02_tmp;
reg[corr_res_w - 1:0] v_corr_20_03_tmp;
reg[corr_res_w - 1:0] v_corr_20_04_tmp;
reg[corr_res_w - 1:0] v_corr_20_05_tmp;
reg[corr_res_w - 1:0] v_corr_20_06_tmp;
reg[corr_res_w - 1:0] v_corr_20_07_tmp;
reg[corr_res_w - 1:0] v_corr_20_08_tmp;
reg[corr_res_w - 1:0] v_corr_20_09_tmp;
reg[corr_res_w - 1:0] v_corr_20_10_tmp;
reg[corr_res_w - 1:0] v_corr_20_11_tmp;
reg[corr_res_w - 1:0] v_corr_20_12_tmp;
reg[corr_res_w - 1:0] v_corr_20_13_tmp;
reg[corr_res_w - 1:0] v_corr_20_14_tmp;
reg[corr_res_w - 1:0] v_corr_20_15_tmp;
reg[corr_res_w - 1:0] v_corr_20_16_tmp;
reg[corr_res_w - 1:0] v_corr_20_17_tmp;
reg[corr_res_w - 1:0] v_corr_20_18_tmp;
reg[corr_res_w - 1:0] v_corr_20_19_tmp;
reg[corr_res_w - 1:0] v_corr_20_20_tmp;
always @(posedge clk)
begin
if (rst)
begin
counter <= 0;
counter_out_tmp <= 3'b000 ;
bus_word_1_tmp <= 8'b00000000 ;
bus_word_2_tmp <= 8'b00000000 ;
bus_word_3_tmp <= 8'b00000000 ;
bus_word_4_tmp <= 8'b00000000 ;
bus_word_5_tmp <= 8'b00000000 ;
bus_word_6_tmp <= 8'b00000000 ;
end
else
begin
if (vidin_new_data_scld_1_2to3_left == 1'b1)
begin
counter <= 4'b0001 ;
end
else
begin
if (counter == 4'b1000)
begin
counter <= 4'b1000 ;
end
else
begin
counter <= counter + 1 ;
end
end
case (counter[2:0])
3'b000 :
begin
counter_out_tmp <= 3'b000 ;
bus_word_1_tmp <= 8'b00000000 ;
bus_word_2_tmp <= 8'b00000000 ;
bus_word_3_tmp <= 8'b00000000 ;
bus_word_4_tmp <= 8'b00000000 ;
bus_word_5_tmp <= 8'b00000000 ;
bus_word_6_tmp <= 8'b00000000 ;
end
3'b001 :
begin
counter_out_tmp <= 3'b001 ;
bus_word_1_tmp <= vidin_addr_reg_tmp[7:0] ;
bus_word_2_tmp <= vidin_addr_reg_tmp[15:8] ;
bus_word_3_tmp <= {vidin_addr_reg_tmp[18:16], svid_comp_switch_tmp, 4'b0000} ;
bus_word_4_tmp <= v_corr_05_00_tmp ;
bus_word_5_tmp <= v_corr_05_01_tmp ;
bus_word_6_tmp <= v_corr_05_02_tmp ;
end
3'b010 :
begin
counter_out_tmp <= 3'b010 ;
bus_word_1_tmp <= v_corr_05_03_tmp ;
bus_word_2_tmp <= v_corr_05_04_tmp ;
bus_word_3_tmp <= v_corr_05_05_tmp ;
bus_word_4_tmp <= v_corr_10_00_tmp ;
bus_word_5_tmp <= v_corr_10_01_tmp ;
bus_word_6_tmp <= v_corr_10_02_tmp ;
end
3'b011 :
begin
counter_out_tmp <= 3'b011 ;
bus_word_1_tmp <= v_corr_10_03_tmp ;
bus_word_2_tmp <= v_corr_10_04_tmp ;
bus_word_3_tmp <= v_corr_10_05_tmp ;
bus_word_4_tmp <= v_corr_10_06_tmp ;
bus_word_5_tmp <= v_corr_10_07_tmp ;
bus_word_6_tmp <= v_corr_10_08_tmp ;
end
3'b100 :
begin
counter_out_tmp <= 3'b100 ;
bus_word_1_tmp <= v_corr_10_09_tmp ;
bus_word_2_tmp <= v_corr_10_10_tmp ;
bus_word_3_tmp <= v_corr_20_00_tmp ;
bus_word_4_tmp <= v_corr_20_01_tmp ;
bus_word_5_tmp <= v_corr_20_02_tmp ;
bus_word_6_tmp <= v_corr_20_03_tmp ;
end
3'b101 :
begin
counter_out_tmp <= 3'b101 ;
bus_word_1_tmp <= v_corr_20_04_tmp ;
bus_word_2_tmp <= v_corr_20_05_tmp ;
bus_word_3_tmp <= v_corr_20_06_tmp ;
bus_word_4_tmp <= v_corr_20_07_tmp ;
bus_word_5_tmp <= v_corr_20_08_tmp ;
bus_word_6_tmp <= v_corr_20_09_tmp ;
end
3'b110 :
begin
counter_out_tmp <= 3'b110 ;
bus_word_1_tmp <= v_corr_20_10_tmp ;
bus_word_2_tmp <= v_corr_20_11_tmp ;
bus_word_3_tmp <= v_corr_20_12_tmp ;
bus_word_4_tmp <= v_corr_20_13_tmp ;
bus_word_5_tmp <= v_corr_20_14_tmp ;
bus_word_6_tmp <= v_corr_20_15_tmp ;
end
3'b111 :
begin
counter_out_tmp <= 3'b111 ;
bus_word_1_tmp <= v_corr_20_16_tmp ;
bus_word_2_tmp <= v_corr_20_17_tmp ;
bus_word_3_tmp <= v_corr_20_18_tmp ;
bus_word_4_tmp <= v_corr_20_19_tmp ;
bus_word_5_tmp <= v_corr_20_20_tmp ;
bus_word_6_tmp <= 8'b00000000 ;
end
default :
begin
counter_out_tmp <= 3'b111 ;
bus_word_1_tmp <= v_corr_20_16_tmp ;
bus_word_2_tmp <= v_corr_20_17_tmp ;
bus_word_3_tmp <= v_corr_20_18_tmp ;
bus_word_4_tmp <= v_corr_20_19_tmp ;
bus_word_5_tmp <= v_corr_20_20_tmp ;
bus_word_6_tmp <= 8'b00000000 ;
end
endcase
end
end
always @(posedge clk)
begin
if (rst)
begin
counter_out <= 0;
bus_word_1 <= 0;
bus_word_2 <= 0;
bus_word_3 <= 0;
bus_word_4 <= 0;
bus_word_5 <= 0;
bus_word_6 <= 0;
end
else
begin
counter_out <= counter_out_tmp ;
bus_word_1 <= bus_word_1_tmp ;
bus_word_2 <= bus_word_2_tmp ;
bus_word_3 <= bus_word_3_tmp ;
bus_word_4 <= bus_word_4_tmp ;
bus_word_5 <= bus_word_5_tmp ;
bus_word_6 <= bus_word_6_tmp ;
end
if (rst)
begin
vidin_addr_reg_tmp <= 0;
svid_comp_switch_tmp <= 0;
v_corr_05_00_tmp <= 0 ;
v_corr_05_01_tmp <= 0 ;
v_corr_05_02_tmp <= 0 ;
v_corr_05_03_tmp <= 0;
v_corr_05_04_tmp <= 0 ;
v_corr_05_05_tmp <= 0 ;
v_corr_10_00_tmp <= 0 ;
v_corr_10_01_tmp <= 0 ;
v_corr_10_02_tmp <= 0 ;
v_corr_10_03_tmp <= 0 ;
v_corr_10_04_tmp <= 0 ;
v_corr_10_05_tmp <= 0 ;
v_corr_10_06_tmp <= 0 ;
v_corr_10_07_tmp <= 0;
v_corr_10_08_tmp <= 0;
v_corr_10_09_tmp <= 0;
v_corr_10_10_tmp <= 0;
v_corr_20_00_tmp <= 0;
v_corr_20_01_tmp <= 0;
v_corr_20_02_tmp <= 0;
v_corr_20_03_tmp <= 0;
v_corr_20_04_tmp <= 0;
v_corr_20_05_tmp <= 0;
v_corr_20_06_tmp <= 0;
v_corr_20_07_tmp <= 0;
v_corr_20_08_tmp <= 0;
v_corr_20_09_tmp <= 0;
v_corr_20_10_tmp <= 0;
v_corr_20_11_tmp <= 0;
v_corr_20_12_tmp <= 0;
v_corr_20_13_tmp <= 0;
v_corr_20_14_tmp <= 0;
v_corr_20_15_tmp <= 0;
v_corr_20_16_tmp <= 0;
v_corr_20_17_tmp <= 0;
v_corr_20_18_tmp <= 0;
v_corr_20_19_tmp <= 0;
v_corr_20_20_tmp <= 0;
end
else if (vidin_new_data_scld_1_2to3_left == 1'b1)
begin
vidin_addr_reg_tmp <= vidin_addr_reg ;
svid_comp_switch_tmp <= svid_comp_switch ;
v_corr_05_00_tmp <= v_corr_05_00 ;
v_corr_05_01_tmp <= v_corr_05_01 ;
v_corr_05_02_tmp <= v_corr_05_02 ;
v_corr_05_03_tmp <= v_corr_05_03 ;
v_corr_05_04_tmp <= v_corr_05_04 ;
v_corr_05_05_tmp <= v_corr_05_05 ;
v_corr_10_00_tmp <= v_corr_10_00 ;
v_corr_10_01_tmp <= v_corr_10_01 ;
v_corr_10_02_tmp <= v_corr_10_02 ;
v_corr_10_03_tmp <= v_corr_10_03 ;
v_corr_10_04_tmp <= v_corr_10_04 ;
v_corr_10_05_tmp <= v_corr_10_05 ;
v_corr_10_06_tmp <= v_corr_10_06 ;
v_corr_10_07_tmp <= v_corr_10_07 ;
v_corr_10_08_tmp <= v_corr_10_08 ;
v_corr_10_09_tmp <= v_corr_10_09 ;
v_corr_10_10_tmp <= v_corr_10_10 ;
v_corr_20_00_tmp <= v_corr_20_00 ;
v_corr_20_01_tmp <= v_corr_20_01 ;
v_corr_20_02_tmp <= v_corr_20_02 ;
v_corr_20_03_tmp <= v_corr_20_03 ;
v_corr_20_04_tmp <= v_corr_20_04 ;
v_corr_20_05_tmp <= v_corr_20_05 ;
v_corr_20_06_tmp <= v_corr_20_06 ;
v_corr_20_07_tmp <= v_corr_20_07 ;
v_corr_20_08_tmp <= v_corr_20_08 ;
v_corr_20_09_tmp <= v_corr_20_09 ;
v_corr_20_10_tmp <= v_corr_20_10 ;
v_corr_20_11_tmp <= v_corr_20_11 ;
v_corr_20_12_tmp <= v_corr_20_12 ;
v_corr_20_13_tmp <= v_corr_20_13 ;
v_corr_20_14_tmp <= v_corr_20_14 ;
v_corr_20_15_tmp <= v_corr_20_15 ;
v_corr_20_16_tmp <= v_corr_20_16 ;
v_corr_20_17_tmp <= v_corr_20_17 ;
v_corr_20_18_tmp <= v_corr_20_18 ;
v_corr_20_19_tmp <= v_corr_20_19 ;
v_corr_20_20_tmp <= v_corr_20_20 ;
end
else
begin
vidin_addr_reg_tmp <= vidin_addr_reg_tmp ;
svid_comp_switch_tmp <= svid_comp_switch_tmp ;
v_corr_05_00_tmp <= v_corr_05_00_tmp ;
v_corr_05_01_tmp <= v_corr_05_01_tmp ;
v_corr_05_02_tmp <= v_corr_05_02_tmp ;
v_corr_05_03_tmp <= v_corr_05_03_tmp ;
v_corr_05_04_tmp <= v_corr_05_04_tmp ;
v_corr_05_05_tmp <= v_corr_05_05_tmp ;
v_corr_10_00_tmp <= v_corr_10_00_tmp ;
v_corr_10_01_tmp <= v_corr_10_01_tmp ;
v_corr_10_02_tmp <= v_corr_10_02_tmp ;
v_corr_10_03_tmp <= v_corr_10_03_tmp ;
v_corr_10_04_tmp <= v_corr_10_04_tmp ;
v_corr_10_05_tmp <= v_corr_10_05_tmp ;
v_corr_10_06_tmp <= v_corr_10_06_tmp ;
v_corr_10_07_tmp <= v_corr_10_07_tmp ;
v_corr_10_08_tmp <= v_corr_10_08_tmp ;
v_corr_10_09_tmp <= v_corr_10_09_tmp ;
v_corr_10_10_tmp <= v_corr_10_10_tmp ;
v_corr_20_00_tmp <= v_corr_20_00_tmp ;
v_corr_20_01_tmp <= v_corr_20_01_tmp ;
v_corr_20_02_tmp <= v_corr_20_02_tmp ;
v_corr_20_03_tmp <= v_corr_20_03_tmp ;
v_corr_20_04_tmp <= v_corr_20_04_tmp ;
v_corr_20_05_tmp <= v_corr_20_05_tmp ;
v_corr_20_06_tmp <= v_corr_20_06_tmp ;
v_corr_20_07_tmp <= v_corr_20_07_tmp ;
v_corr_20_08_tmp <= v_corr_20_08_tmp ;
v_corr_20_09_tmp <= v_corr_20_09_tmp ;
v_corr_20_10_tmp <= v_corr_20_10_tmp ;
v_corr_20_11_tmp <= v_corr_20_11_tmp ;
v_corr_20_12_tmp <= v_corr_20_12_tmp ;
v_corr_20_13_tmp <= v_corr_20_13_tmp ;
v_corr_20_14_tmp <= v_corr_20_14_tmp ;
v_corr_20_15_tmp <= v_corr_20_15_tmp ;
v_corr_20_16_tmp <= v_corr_20_16_tmp ;
v_corr_20_17_tmp <= v_corr_20_17_tmp ;
v_corr_20_18_tmp <= v_corr_20_18_tmp ;
v_corr_20_19_tmp <= v_corr_20_19_tmp ;
v_corr_20_20_tmp <= v_corr_20_20_tmp ;
end
end
endmodule
module my_wrapper_divider(rst, clk, data_in_a, data_in_b, data_out);
parameter INPUT_WIDTH_A = 5'b10000;
parameter INPUT_WIDTH_B = 5'b10001;
parameter OUTPUT_WIDTH = 4'b1000;
parameter S1 = 2'b00;
parameter S2 = 2'b01;
parameter S3 = 2'b10;
parameter S4 = 2'b11;
input rst;
input clk;
input [INPUT_WIDTH_A-1:0]data_in_a;
input [INPUT_WIDTH_B-1:0]data_in_b;
output [OUTPUT_WIDTH-1:0]data_out;
wire [OUTPUT_WIDTH-1:0]data_out;
wire [OUTPUT_WIDTH-1:0]Remainder;
reg start, LA, EB;
wire Done;
reg[1:0] y, Y;
my_divider my_divider_inst(clk, rst, start, LA, EB, data_in_a, data_in_b, Remainder, data_out, Done);
always @(posedge clk)
begin
if (rst == 0)
y <= S1;
else
y <= Y;
end
always @(y)
begin
case (y)
S1 :
begin
LA = 0;
EB = 0;
start = 0;
Y = S2;
end
S2 :
begin
LA = 1;
EB = 1;
start = 0;
Y = S3;
end
S3 :
begin
LA = 0;
EB = 0;
start = 1;
Y = S4;
end
S4 :
begin
LA = 0;
EB = 0;
start = 0;
if (Done == 1'b1)
begin
Y = S1;
end
else
begin
Y = S4;
end
end
endcase
end
endmodule
module my_divider(clk, rst, start, LA, EB, data_in_a, data_in_b, Remainder, data_out, Done);
parameter INPUT_WIDTH_A = 5'b10000;
parameter INPUT_WIDTH_B = 5'b10001;
parameter OUTPUT_WIDTH = 4'b1000;
parameter LOGN = 3'b100;
parameter S1 = 2'b00;
parameter S2 = 2'b01;
parameter S3 = 2'b10;
input clk;
input [INPUT_WIDTH_A-1:0]data_in_a;
input [INPUT_WIDTH_B-1:0]data_in_b;
input rst;
input start;
input LA;
input EB;
output [OUTPUT_WIDTH-1:0]data_out;
wire [OUTPUT_WIDTH-1:0]data_out;
output [OUTPUT_WIDTH-1:0]Remainder;
reg [OUTPUT_WIDTH-1:0]Remainder;
output Done;
reg Done;
wire Cout, zero;
wire [INPUT_WIDTH_A-1:0] Sum;
reg [1:0] y, Y;
reg [LOGN-1:0] Count;
reg EA, Rsel, LR, ER, ER0, LC, EC;
reg [INPUT_WIDTH_B-1:0] RegB;
reg [INPUT_WIDTH_A-1:0] DataA;
reg ff0;
always @(start or y or zero)
begin
case(y)
S1:
begin
if (start == 0)
Y = S1;
else
Y = S2;
end
S2:
begin
if (zero == 0)
Y = S2;
else
Y = S3;
end
S3:
begin
if (start == 1)
Y = S3;
else
Y = S1;
end
default:
begin
Y = 2'b00;
end
endcase
end
always @(posedge clk)
begin
if (rst == 0)
y <= S1;
else
y <= Y;
end
always @(y or start or Cout or zero)
begin
case (y)
S1:
begin
LC = 1;
ER = 1;
EC = 0;
Rsel = 0;
Done = 0;
if (start == 0)
begin
LR = 1;
ER0 = 1;
EA = 0;
end
else
begin
LR = 0;
EA = 1;
ER0 = 1;
end
end
S2:
begin
LC = 0;
ER = 1;
Rsel = 1;
Done = 0;
ER0 = 1;
EA = 1;
if (Cout)
LR = 1;
else
LR = 0;
if (zero == 0)
EC = 1;
else
EC = 0;
end
S3:
begin
Done = 1;
LR = 0;
LC = 0;
ER = 0;
EC = 0;
Rsel = 0;
ER0 = 0;
EA = 0;
end
default:
begin
Done = 0;
LR = 0;
LC = 0;
ER = 0;
EC = 0;
Rsel = 0;
ER0 = 0;
EA = 0;
end
endcase
end
always @(posedge clk)
begin
if (rst == 1)
begin
RegB <= 0;
Remainder <= 0;
DataA <= 0;
ff0 <= 0;
Count <= 0;
end
else
begin
if (EB == 1)
begin
RegB <= data_in_b;
end
else
begin
RegB <= RegB;
end
if (LR == 1)
begin
Remainder <= Rsel ? Sum : 0;
end
else if (ER == 1)
begin
Remainder <= (Remainder << 1) | ff0;
end
else
begin
Remainder <= Remainder;
end
if (LA == 1)
begin
DataA <= data_in_a;
end
else if (EA == 1)
begin
DataA <= (DataA << 1) | Cout;
end
else
begin
DataA <= DataA;
end
if (ER0 == 1)
begin
ff0 <= DataA[INPUT_WIDTH_A-1];
end
else
begin
ff0 <= 0;
end
if (LC == 1)
begin
Count <= 0;
end
else if (EC == 1)
begin
Count <= Count + 1;
end
else
begin
Count <= Count;
end
end
end
assign zero = (Count == 0);
assign Sum = {Remainder, ff0} + (~RegB + 1);
assign Cout = Sum[INPUT_WIDTH_A-1:0];
assign data_out = DataA;
endmodule