2554 lines
101 KiB
Verilog
Executable File
2554 lines
101 KiB
Verilog
Executable File
// 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
|