inter_pred_top.v
Upload User: abszbd2002
Upload Date: 2020-10-12
Package Size: 33407k
Code Size: 9k
Development Platform:

VHDL

  1. //Design  :  inter prediction
  2. //Author  :  li haibin
  3. //files   :  inter_pred_top
  4. //------------------------------------------------------------------------------------------------------------
  5. module inter_pred_top(clk,reset,cbready,swready,ven,cb_wren,sw_wren,
  6.   data0,data1,data2,data3,data4,data5,data6,data7,data8,data9,
  7.   data10,data11,data12,data13,data14,data15,
  8.   sw_data0,sw_data1,sw_data2,sw_data3,sw_data4,sw_data5,sw_data6,sw_data7,sw_data8,sw_data9,sw_data10,sw_data11,sw_data12,sw_data13,sw_data14,sw_data15,
  9.           sw_data16,sw_data17,sw_data18,sw_data19,sw_data20,sw_data21,sw_data22,sw_data23,sw_data24,sw_data25,sw_data26,sw_data27,sw_data28,sw_data29,sw_data30,sw_data31,
  10.           sw_data32,sw_data33,sw_data34,sw_data35,sw_data36,sw_data37,sw_data38,sw_data39,sw_data40,sw_data41,sw_data42,sw_data43,sw_data44,sw_data45,sw_data46,sw_data47,
  11.                       m8x8_0,n8x8_0,m8x8_1,n8x8_1,m8x8_2,n8x8_2,m8x8_3,n8x8_3,m16x16,n16x16,
  12.       sad8x8_data0,sad8x8_data1,sad8x8_data2,sad8x8_data3,sad16x16_data);
  13. input clk;
  14. input reset;
  15. input cbready;//当前宏块数据准备信号,‘1’表示有效;
  16. input swready;//参考宏块数据准备信号,‘1’表示有效;
  17. input ven;//帧数据有效;
  18. input cb_wren;//当前宏块数据写入使能;
  19. input sw_wren;//参考宏块数据写入使能;
  20. input [7:0] data0,data1,data2,data3,data4,data5,data6,data7,data8,data9,
  21. data10,data11,data12,data13,data14,data15;//当前宏块的16行数据;
  22. input [7:0]sw_data0,sw_data1,sw_data2,sw_data3,sw_data4,sw_data5,sw_data6,sw_data7,sw_data8,sw_data9,sw_data10,sw_data11,sw_data12,sw_data13,sw_data14,sw_data15,
  23. sw_data16,sw_data17,sw_data18,sw_data19,sw_data20,sw_data21,sw_data22,sw_data23,sw_data24,sw_data25,sw_data26,sw_data27,sw_data28,sw_data29,sw_data30,sw_data31,
  24. sw_data32,sw_data33,sw_data34,sw_data35,sw_data36,sw_data37,sw_data38,sw_data39,sw_data40,sw_data41,sw_data42,sw_data43,sw_data44,sw_data45,sw_data46,sw_data47;//参考宏块的48行数据;
  25. output [4:0] m8x8_0,n8x8_0,m8x8_1,n8x8_1,m8x8_2,n8x8_2,m8x8_3,n8x8_3,m16x16,n16x16;//8x8块的运动偏移量,范围为0~31,m表示行坐标,n表示列坐标;
  26. output [13:0] sad8x8_data0,sad8x8_data1,sad8x8_data2,sad8x8_data3;//4个8x8块的sad之和;
  27. output [15:0] sad16x16_data;//16x16块的sad之和;
  28. wire [1:0] sel0,sel1,sel2,sel3,sel4,sel5,sel6,sel7,sel8,sel9,sel10,sel11,sel12,sel13,sel14,sel15;//用于选择参考数据在某时刻的来源;
  29. wire [7:0] q_a0,q_a1,q_a2,q_a3,q_a4,q_a5,q_a6,q_a7,q_a8,q_a9,q_a10,q_a11,q_a12,q_a13,q_a14,q_a15;//参考窗第一组16个ram的输出数据,用于参考数据载入时;
  30. wire [7:0] q_b0,q_b1,q_b2,q_b3,q_b4,q_b5,q_b6,q_b7,q_b8,q_b9,q_b10,q_b11,q_b12,q_b13,q_b14,q_b15;//参考窗第二组16个ram的输出数据,用于参考数据载入时;
  31. wire [7:0] q_c0,q_c1,q_c2,q_c3,q_c4,q_c5,q_c6,q_c7,q_c8,q_c9,q_c10,q_c11,q_c12,q_c13,q_c14,q_c15;//参考窗第三组16个ram的输出数据,用于参考数据载入时;
  32. wire [7:0] q_rb0,q_rb1,q_rb2,q_rb3,q_rb4,q_rb5,q_rb6,q_rb7,q_rb8,q_rb9,q_rb10,q_rb11,q_rb12,q_rb13,q_rb14,q_rb15;//数据载入完成后,搜索开始进行,通过选择参考ram的数据输出,作为 PE单元的参考数据输入;
  33. wire [7:0] pin0,pin1,pin2,pin3,pin4,pin5,pin6,pin7,pin8,pin9,pin10,pin11,pin12,pin13,pin14,pin15;//当前块ram读出数据;
  34. wire sela;//在256个PE中用于选择当前寄存器数据;
  35. wire [1:0] selb0,selb1,selb2,selb3,selb4,selb5,selb6,selb7,selb8,selb9,selb10,selb11,selb12,selb13,selb14,selb15;//在256个PE中用于选择参考寄存器数据;
  36. wire [3:0] selc;//用于sad计算处理的选择信号;
  37. wire en_cb,en_rb,en_new;//en_cb控制当前数据流动的使能信号;en_rb控制参考数据流动的使能信号;en_new数据载入的使能信号;
  38. wire sw_rden;//搜索窗ram的读出使能信号;
  39. wire cb_rden;//当前宏块ram的读出使能信号;
  40. FS_manager  FS_manager(.clk(clk),.reset(reset),.cbready(cbready),.swready(swready),.sw_rden(sw_rden),.cb_rden(cb_rden),.ven(ven),
  41. .sela(sela),.selb0(selb0),.selb1(selb1),.selb2(selb2),.selb3(selb3),.selb4(selb4),.selb5(selb5),.selb6(selb6),.selb7(selb7),.selb8(selb8),
  42. .selb9(selb9),.selb10(selb10),.selb11(selb11),.selb12(selb12),.selb13(selb13),.selb14(selb14),.selb15(selb15),.selc(selc),
  43. .sel0(sel0),.sel1(sel1),.sel2(sel2),.sel3(sel3),.sel4(sel4),.sel5(sel5),.sel6(sel6),.sel7(sel7),.sel8(sel8),.sel9(sel9),.sel10(sel10),
  44. .sel11(sel11),.sel12(sel12),.sel13(sel13),.sel14(sel14),.sel15(sel15),.en_cb(en_cb),.en_rb(en_rb),.en_new(en_new));
  45. cbram_access  cbram_access(.clk(clk),.reset(reset),.cb_rden(cb_rden),.cb_wren(cb_wren),
  46.    .data0(data0),.data1(data1),.data2(data2),.data3(data3),.data4(data4),.data5(data5),.data6(data6),.data7(data7),.data8(data8),
  47.    .data9(data9),.data10(data10),.data11(data11),.data12(data12),.data13(data13),.data14(data14),.data15(data15),
  48.    .q0(pin0),.q1(pin1),.q2(pin2),.q3(pin3),.q4(pin4),.q5(pin5),.q6(pin6),.q7(pin7),.q8(pin8),
  49.    .q9(pin9),.q10(pin10),.q11(pin11),.q12(pin12),.q13(pin13),.q14(pin14),.q15(pin15));
  50. ramt swram_access(.clk(clk),.reset(reset),.rden(sw_rden),.wren(sw_wren),
  51.   .data0(sw_data0),.data1(sw_data1),.data2(sw_data2),.data3(sw_data3),.data4(sw_data4),.data5(sw_data5),.data6(sw_data6),.data7(sw_data7),.data8(sw_data8),
  52.   .data9(sw_data9),.data10(sw_data10),.data11(sw_data11),.data12(sw_data12),.data13(sw_data13),.data14(sw_data14),.data15(sw_data15),
  53.   .data16(sw_data16),.data17(sw_data17),.data18(sw_data18),.data19(sw_data19),.data20(sw_data20),.data21(sw_data21),.data22(sw_data22),.data23(sw_data23),.data24(sw_data24),
  54.   .data25(sw_data25),.data26(sw_data26),.data27(sw_data27),.data28(sw_data28),.data29(sw_data29),.data30(sw_data30),.data31(sw_data31),
  55.   .data32(sw_data32),.data33(sw_data33),.data34(sw_data34),.data35(sw_data35),.data36(sw_data36),.data37(sw_data37),.data38(sw_data38),.data39(sw_data39),.data40(sw_data40),
  56.   .data41(sw_data41),.data42(sw_data42),.data43(sw_data43),.data44(sw_data44),.data45(sw_data45),.data46(sw_data46),.data47(sw_data47),
  57.   .sel0(sel0),.sel1(sel1),.sel2(sel2),.sel3(sel3),.sel4(sel4),.sel5(sel5),.sel6(sel6),.sel7(sel7),.sel8(sel8),
  58.   .sel9(sel9),.sel10(sel10),.sel11(sel11),.sel12(sel12),.sel13(sel13),.sel14(sel14),.sel15(sel15),
  59.   .q_a0(q_a0),.q_a1(q_a1),.q_a2(q_a2),.q_a3(q_a3),.q_a4(q_a4),.q_a5(q_a5),.q_a6(q_a6),.q_a7(q_a7),.q_a8(q_a8),
  60.   .q_a9(q_a9),.q_a10(q_a10),.q_a11(q_a11),.q_a12(q_a12),.q_a13(q_a13),.q_a14(q_a14),.q_a15(q_a15),
  61.   .q_b0(q_b0),.q_b1(q_b1),.q_b2(q_b2),.q_b3(q_b3),.q_b4(q_b4),.q_b5(q_b5),.q_b6(q_b6),.q_b7(q_b7),.q_b8(q_b8),
  62.   .q_b9(q_b9),.q_b10(q_b10),.q_b11(q_b11),.q_b12(q_b12),.q_b13(q_b13),.q_b14(q_b14),.q_b15(q_b15),
  63.   .q_c0(q_c0),.q_c1(q_c1),.q_c2(q_c2),.q_c3(q_c3),.q_c4(q_c4),.q_c5(q_c5),.q_c6(q_c6),.q_c7(q_c7),.q_c8(q_c8),
  64.   .q_c9(q_c9),.q_c10(q_c10),.q_c11(q_c11),.q_c12(q_c12),.q_c13(q_c13),.q_c14(q_c14),.q_c15(q_c15),
  65.   .q_rb0(q_rb0),.q_rb1(q_rb1),.q_rb2(q_rb2),.q_rb3(q_rb3),.q_rb4(q_rb4),.q_rb5(q_rb5),.q_rb6(q_rb6),.q_rb7(q_rb7),.q_rb8(q_rb8),
  66.   .q_rb9(q_rb9),.q_rb10(q_rb10),.q_rb11(q_rb11),.q_rb12(q_rb12),.q_rb13(q_rb13),.q_rb14(q_rb14),.q_rb15(q_rb15));
  67. inter_top  inter_pred(.clk(clk),.reset(reset),.en_cb(en_cb),.en_rb(en_rb),.en_new(en_new),.selc(selc),
  68.                       .new_ina0(q_a0),.new_ina1(q_a1),.new_ina2(q_a2),.new_ina3(q_a3),.new_ina4(q_a4),.new_ina5(q_a5),.new_ina6(q_a6),.new_ina7(q_a7),
  69.                       .new_ina8(q_a8),.new_ina9(q_a9),.new_ina10(q_a10),.new_ina11(q_a11),.new_ina12(q_a12),.new_ina13(q_a13),.new_ina14(q_a14),.new_ina15(q_a15),
  70.                       .new_inb0(q_b0),.new_inb1(q_b1),.new_inb2(q_b2),.new_inb3(q_b3),.new_inb4(q_b4),.new_inb5(q_b5),.new_inb6(q_b6),.new_inb7(q_b7),
  71.                       .new_inb8(q_b8),.new_inb9(q_b9),.new_inb10(q_b10),.new_inb11(q_b11),.new_inb12(q_b12),.new_inb13(q_b13),.new_inb14(q_b14),.new_inb15(q_b15),
  72.                       .new_inc0(q_c0),.new_inc1(q_c1),.new_inc2(q_c2),.new_inc3(q_c3),.new_inc4(q_c4),.new_inc5(q_c5),.new_inc6(q_c6),.new_inc7(q_c7),
  73.                       .new_inc8(q_c8),.new_inc9(q_c9),.new_inc10(q_c10),.new_inc11(q_c11),.new_inc12(q_c12),.new_inc13(q_c13),.new_inc14(q_c14),.new_inc15(q_c15),
  74.                       .rb_in0(q_rb0),.rb_in1(q_rb1),.rb_in2(q_rb2),.rb_in3(q_rb3),.rb_in4(q_rb4),.rb_in5(q_rb5),.rb_in6(q_rb6),.rb_in7(q_rb7),
  75.                       .rb_in8(q_rb8),.rb_in9(q_rb9),.rb_in10(q_rb10),.rb_in11(q_rb11),.rb_in12(q_rb12),.rb_in13(q_rb13),.rb_in14(q_rb14),.rb_in15(q_rb15),
  76.                       .pin0(pin0),.pin1(pin1),.pin2(pin2),.pin3(pin3),.pin4(pin4),.pin5(pin5),.pin6(pin6),.pin7(pin7),
  77.                       .pin8(pin8),.pin9(pin9),.pin10(pin10),.pin11(pin11),.pin12(pin12),.pin13(pin13),.pin14(pin14),.pin15(pin15),
  78.                       .selb0(selb0),.selb1(selb1),.selb2(selb2),.selb3(selb3),.selb4(selb4),.selb5(selb5),.selb6(selb6),.selb7(selb7),
  79.                       .selb8(selb8),.selb9(selb9),.selb10(selb10),.selb11(selb11),.selb12(selb12),.selb13(selb13),.selb14(selb14),.selb15(selb15),
  80.                       .sela0(sela),.sela1(sela),.sela2(sela),.sela3(sela),.sela4(sela),.sela5(sela),.sela6(sela),.sela7(sela),
  81.                       .sela8(sela),.sela9(sela),.sela10(sela),.sela11(sela),.sela12(sela),.sela13(sela),.sela14(sela),.sela15(sela),
  82.   .m8x8_0(m8x8_0),.n8x8_0(n8x8_0),.m8x8_1(m8x8_1),.n8x8_1(n8x8_1),.m8x8_2(m8x8_2),.n8x8_2(n8x8_2),.m8x8_3(m8x8_3),.n8x8_3(n8x8_3),
  83.   .m16x16(m16x16),.n16x16(n16x16),.sad8x8_data0(sad8x8_data0),.sad8x8_data1(sad8x8_data1),.sad8x8_data2(sad8x8_data2),.sad8x8_data3(sad8x8_data3),.sad16x16_data(sad16x16_data));
  84. endmodule