2014_12_29

今天真的有点累,下午和服务外包大赛的小组成员见了一次面,我是第一次参加这样的比赛,我也想我的大学不是苍白和无奈地。我也想我的大学生活可以有乐趣与欢乐,我也将做为这次的主力来参加这次比赛,对我来说,这是一个莫大的鼓励,我喜欢这样的感觉,虽然那样会很累很辛苦,但是我感觉我很幸福。我也是在为我的梦想奋斗的人了。我也会成为一个强者了。我已经走上了这条路,加油。

明天我地亲爱的就要来了,亲爱的,我感觉是我大学最大的收获,我要好好的保护她,和爱护她,和她携手到白头,因为我不愿意让一个什么都愿意为我付出的女人,就这样离开我。我爱她,她是我的一切。其实说实话,我认真学习,我也是希望在毕业后,有一个很好的工作,给她想要的生活。

我很爱一个人

那是一个任性的女人

那是一个可爱的孩子

那是一个我爱的人

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
以下代码实现的功能,代码中关键信号的解析,代码中不同的端口使能信号的变化在代码中会有哪些变化请详细说明,代码中每个always和assign作用,代码是否具有普适性: //Copyright 1986-2014 Xilinx, Inc. All Rights Reserved. //-------------------------------------------------------------------------------- //Tool Version: Vivado v.2014.4 (win64) Build 1071353 Tue Nov 18 18:24:04 MST 2014 //Date : Mon Mar 07 16:31:19 2016 //Host : ALLEN-PC running 64-bit Service Pack 1 (build 7601) //Design : link_data_remapping //-------------------------------------------------------------------------------- `timescale 1ns/1ps `define eightlane module link_data_division ( /////////SYSTEM /////////////////////////////////////// input lvds_sysClk , (* MARK_DEBUG="true" *)input [3 :0] pic_h_div_mode , //0:正常模式 1:垂直均分为2块 2:垂直均分为4块 (* MARK_DEBUG="true" *)input [1 :0] pid_rx_link_num , //0:1link 1:2link 2:4link 3:8link input [12:0] pid_hsd_de_num , input [12:0] pid_vsd_de_num , ////////INPUT LINK DATA /////////////////////////////////////// (* MARK_DEBUG="true" *)input [29:0] pid_bmp_data0 , (* MARK_DEBUG="true" *)input [29:0] pid_bmp_data1 , (* MARK_DEBUG="true" *)input [29:0] pid_bmp_data2 , (* MARK_DEBUG="true" *)input [29:0] pid_bmp_data3 , (* MARK_DEBUG="true" *)input pic_bmp_vsync , (* MARK_DEBUG="true" *)input pic_bmp_hsync , (* MARK_DEBUG="true" *)input pic_bmp_de , ////////div_de /////////////////////////////////// input pic_link_division_pattern_de , input pic_link_division_pattern_hsync , input pic_link_division_pattern_vsync , input [29:0] pid_bmp_data4 , input [29:0] pid_bmp_data5 , input [29:0] pid_bmp_data6 , input [29:0] pid_bmp_data7 , output reg[29:0] pod_bmp_data_link4 = 30'b0 , output reg[29:0] pod_bmp_data_link5 = 30'b0 , output reg[29:0] pod_bmp_data_link6 = 30'b0 , output reg[29:0] pod_bmp_data_link7 = 30'b0 , ////////OUTPUT LINK DATA REMAPPING /////////////////////////// (* MARK_DEBUG="true" *)output reg[29:0] pod_bmp_data_link0 = 30'b0 , (* MARK_DEBUG="true" *)output reg[29:0] pod_bmp_data_link1 = 30'b0 , (* MARK_DEBUG="true" *)output reg[29:0] pod_bmp_data_link2 = 30'b0 , (* MARK_DEBUG="true" *)output reg[29:0] pod_bmp_data_link3 = 30'b0 , (* MARK_DEBUG="true" *)output reg poc_bmp_link_de = 1'b0 , (* MARK_DEBUG="true" *)output reg poc_bmp_link_hsync = 1'b1 , (* MARK_DEBUG="true" *)output reg poc_bmp_link_vsync = 1'b1 , input special_mode ); reg [1:0] fifo_out_cnt = 2'b0 ; reg [1:0] fifo_outto_cnt = 2'b0 ; reg [1:0] fifo_out_cnt_dly = 2'b0 ; reg [12:0] r_4TCOM_hsd_de_num = 13'b0 ; reg [12:0] r_2TCOM_hsd_de_num = 13'b0 ; reg [12:0] r_TCOM_hsd_de_num = 13'b0 ; reg [12:0] r_hsd_pix_cnt = 13'b0 ; reg [1:0] r_wr_pingpong_flag_cnt = 2'b0 ; reg [1:0] r_wr_pingpong_flag_cnt_reg = 2'b0 ; reg [1:0] r_wr_pingpong_flag_cnt_reg1 = 2'b0 ; reg [1:0] r_wr_pingpong_flag_cnt_reg2 = 2'b0 ; reg [1:0] r_wr_pingpong_flag_cnt_reg3 = 2'b0 ; reg r_bmp_de = 1'b0 ; reg r_bmp_vsync = 1'b0 ; reg r_bmp_hsync = 1'b0 ; reg [29:0] r_bmp_data0 = 30'b0 ; reg [29:0] r_bmp_data1 = 30'b0 ; reg [29:0] r_bmp_data2 = 30'b0 ; reg [29:0] r_bmp_data3 = 30'b0 ; reg [29:0] r_bmp_data4 = 30'b0 ; reg [29:0] r_bmp_data5 = 30'b0 ; reg [29:0] r_bmp_data6 = 30'b0 ; reg [29:0] r_bmp_data7 = 30'b0 ; reg[2:0] fifo_in_cnt =3'b0; reg r_wr_bmp_en = 1'b0 ; reg r_bmp_de_dly1 = 1'b0 ; reg r_bmp_de_dly2 = 1'b0 ; reg r_bmp_de_dly3 = 1'b0 ; reg r_bmp_de_dly4 = 1'b0 ; reg r_bmp_de_dly5 = 1'b0 ; reg r_bmp_de_dly6 = 1'b0 ; reg r_bmp_de_dly7 = 1'b0 ; reg r_bmp_de_dly8 = 1'b0 ; reg r_bmp_de_dly9 = 1'b0 ; reg r_bmp_de_dly10 = 1'b0 ; reg r_wr_rd_bmp_flag = 1'b0 ; reg r_wr_buffer_link0_en = 1'b0 ; reg r_wr_buffer_link1_en = 1'b0 ; reg r_wr_buffer_link2_en = 1'b0 ; reg r_wr_buffer_link3_en = 1'b0 ; reg [119:0] r_wr_buffer_link_dat = 120'b0 ; reg [119:0] r_wr_buffer_link_dat_1 = 120'b0 ; reg [119:0] r_wr_buffer_link_dat_1_temp = 120'b0 ; reg [119:0] r_wr_buffer_link_dat_temp = 120'b0 ; //8link reg r_wr_buffer_rst = 1'b0 ; reg r_rd_buffer_link0_en = 1'b0 ; reg r_rd_buffer_link1_en = 1'b0 ; reg r_rd_buffer_link2_en = 1'b0 ; reg r_rd_buffer_link3_en = 1'b0 ; reg r_bmp_link_de = 1'b0 ; reg r_bmp_link_hsync = 1'b0 ; reg r_bmp_link_vsync = 1'b0 ; reg r_bmp_link_de_dly = 1'b0 ; reg r_bmp_link_hsync_dly = 1'b0 ; reg r_bmp_link_vsync_dly = 1'b0 ; reg [29:0] r_sel_2TCOM_link0_bmp_dat = 30'b0 ; reg [29:0] r_sel_2TCOM_link1_bmp_dat = 30'b0 ; reg [29:0] r_sel_4TCOM_link0_bmp_dat = 30'b0 ; reg [29:0] r_sel_4TCOM_link1_bmp_dat = 30'b0 ; reg [29:0] r_sel_4TCOM_link2_bmp_dat = 30'b0 ; reg [29:0] r_sel_4TCOM_link3_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link0_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link1_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link2_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link3_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link4_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link5_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link6_bmp_dat = 30'b0 ; reg [29:0] r_sel_8TCOM_link7_bmp_dat = 30'b0 ; reg rd_flag = 1'b0 ; reg remap_de = 1'b0 ; reg remap_de1 = 1'b0 ; reg remap_de2 = 1'b0 ; reg remap_de3 = 1'b0 ; reg remap_de4 = 1'b0 ; reg [12:0] vs_cnt = 13'b0 ; reg [12:0] hs_cnt = 13'b0 ; wire[119:0] w_rd_buffer_link0_dat ; wire[119:0] w_rd_buffer_link1_dat ; wire[119:0] w_rd_buffer_link2_dat ; wire[119:0] w_rd_buffer_link3_dat ; wire[119:0] w_rd_buffer_link4_dat ; wire[119:0] w_rd_buffer_link5_dat ; wire[119:0] w_rd_buffer_link6_dat ; wire[119:0] w_rd_buffer_link7_dat ; wire w_rd_empty0 ; wire w_rd_empty1 ; wire w_rd_empty2 ; wire w_rd_empty3 ; wire[12:0] r_hsd_de_num ; wire[12:0] r_vsd_de_num ; wire[ 5:0] w_bmp_link_mode ; wire[ 5:0] r_bmp_link_mode ; assign w_bmp_link_mode = {pid_rx_link_num, pic_h_div_mode} ; sync_cell #(.SYNC_STAGE(2), .DW(16)) sync_hsd_true_pixel (.pid_src_data(pid_hsd_de_num), .pic_sync_clk(lvds_sysClk), .pod_sync_data(r_hsd_de_num)); sync_cell #(.SYNC_STAGE(2), .DW(16)) sync_vsd_true_pixel (.pid_src_data(pid_vsd_de_num), .pic_sync_clk(lvds_sysClk), .pod_sync_data(r_vsd_de_num)); sync_cell #(.SYNC_STAGE(2), .DW(6)) sync_bmp_link_mode (.pid_src_data(w_bmp_link_mode), .pic_sync_clk(lvds_sysClk), .pod_sync_data(r_bmp_link_mode)); //------------------------------------------------------特定分辨率---------------------------------------------- reg r_bmp_de_expend; reg r1_bmp_de_expend ; always @(posedge lvds_sysClk) begin r_bmp_de_expend <= r_bmp_de_dly1 || pic_bmp_de; //r_bmp_de_expend <= pic_bmp_de; r1_bmp_de_expend <= r_bmp_de_expend; end reg special_flag ; always @(posedge lvds_sysClk) begin special_flag <= r_hsd_de_num[0] ; end reg [12:0] r_hsd_pix_cnt_1 ; always @(posedge lvds_sysClk) begin if(r_bmp_de_expend == 1'b0) r_hsd_pix_cnt_1 <= #1 13'd0; else r_hsd_pix_cnt_1 <= #1 r_hsd_pix_cnt_1 + 13'd1; end reg [12:0] r_hsd_pix_cnt_2 ; always @(posedge lvds_sysClk) begin if(r_bmp_de_expend == 1'b0) r_hsd_pix_cnt_2 <= #1 13'd0; else if(r_hsd_pix_cnt_2 == r_TCOM_hsd_de_num+1'b1) //11111111111111111111111111111111 r_hsd_pix_cnt_2 <= #1 13'd0; else r_hsd_pix_cnt_2 <= #1 r_hsd_pix_cnt_2 + 13'd1; end reg [1:0] r_wr_pingpong_flag_cnt_1; always @(posedge lvds_sysClk) begin if(r_bmp_de_expend == 1'b0) r_wr_pingpong_flag_cnt_1 <= #1 2'd0; else if(r_hsd_pix_cnt_2 == r_TCOM_hsd_de_num+1'b1) r_wr_pingpong_flag_cnt_1 <= #1 r_wr_pingpong_flag_cnt_1 + 2'd1; end always @(posedge lvds_sysClk) begin if(r_bmp_link_mode==6'b100001)begin //if(special_flag)begin if(r_hsd_pix_cnt_1<r_TCOM_hsd_de_num) begin r_wr_buffer_link_dat_1 <= {pid_bmp_data0,pid_bmp_data1,pid_bmp_data2,pid_bmp_data3}; end else if(r_hsd_pix_cnt_1==r_TCOM_hsd_de_num) begin r_wr_buffer_link_dat_1 <= {pid_bmp_data0,pid_bmp_data1,60'b0}; end else if((r_hsd_pix_cnt_1>r_TCOM_hsd_de_num)&&(r_hsd_pix_cnt_1<r_hsd_de_num))begin r_wr_buffer_link_dat_1 <= {r_bmp_data2,r_bmp_data3,pid_bmp_data0,pid_bmp_data1}; end else if(r_hsd_pix_cnt_1==r_hsd_de_num-1'b1) begin r_wr_buffer_link_dat_1 <= {r_bmp_data2,r_bmp_data3,60'b0}; //111111111111111111111111111111 end //end end else if(r_bmp_link_mode==6'b110001) begin if(r_hsd_pix_cnt_1<r_TCOM_hsd_de_num) begin r_wr_buffer_link_dat_1 <= {pid_bmp_data0,pid_bmp_data1,pid_bmp_data2,pid_bmp_data3}; r_wr_buffer_link_dat_1_temp <= {pid_bmp_data4,pid_bmp_data5,pid_bmp_data6,pid_bmp_data7}; end else if(r_hsd_pix_cnt_1==r_TCOM_hsd_de_num) begin r_wr_buffer_link_dat_1 <= {pid_bmp_data0,pid_bmp_data1,pid_bmp_data2,pid_bmp_data3}; r_wr_buffer_link_dat_1_temp <= 0; end else if((r_hsd_pix_cnt_1>r_TCOM_hsd_de_num)&&(r_hsd_pix_cnt_1<r_hsd_de_num))begin r_wr_buffer_link_dat_1 <= {r_bmp_data4,r_bmp_data5,r_bmp_data6,r_bmp_data7}; r_wr_buffer_link_dat_1_temp <= {pid_bmp_data0,pid_bmp_data1,pid_bmp_data2,pid_bmp_data3}; end else if(r_hsd_pix_cnt_1==r_hsd_de_num-1'b1) begin r_wr_buffer_link_dat_1 <= 0; r_wr_buffer_link_dat_1_temp <= {r_bmp_data4,r_bmp_data5,r_bmp_data6,r_bmp_data7}; //111111111111111111111111111111 end end end //-----------------------------------------------------end-------------------------------------------------- always @(posedge lvds_sysClk) begin r_4TCOM_hsd_de_num <= #1 {2'b0,r_hsd_de_num[12:2]} - 1'b1; r_2TCOM_hsd_de_num <= #1 {1'b0,r_hsd_de_num[12:1]} - 1'b1; end always @(posedge lvds_sysClk) begin case(r_bmp_link_mode[3:0]) 4'd2: r_TCOM_hsd_de_num <= #1 r_4TCOM_hsd_de_num; 4'd1: r_TCOM_hsd_de_num <= #1 r_2TCOM_hsd_de_num; //r_TCOM_hsd_de_num <= #1 13'd444; default : r_TCOM_hsd_de_num <= #1 r_hsd_de_num; endcase end //输入行像素计数器 always @(posedge lvds_sysClk) begin if(pic_bmp_de == 1'b0) r_hsd_pix_cnt <= #1 13'd0; else if(r_hsd_pix_cnt == r_TCOM_hsd_de_num) r_hsd_pix_cnt <= #1 13'd0; else r_hsd_pix_cnt <= #1 r_hsd_pix_cnt + 13'd1; end //乒乓切换计数器 always @(posedge lvds_sysClk) begin if(pic_bmp_de == 1'b0) r_wr_pingpong_flag_cnt <= #1 2'd0; else if(r_hsd_pix_cnt == r_TCOM_hsd_de_num) r_wr_pingpong_flag_cnt <= #1 r_wr_pingpong_flag_cnt + 2'd1; r_wr_pingpong_flag_cnt_reg <= r_wr_pingpong_flag_cnt; r_wr_pingpong_flag_cnt_reg1 <= r_wr_pingpong_flag_cnt_reg; r_wr_pingpong_flag_cnt_reg2 <= r_wr_pingpong_flag_cnt_reg1; r_wr_pingpong_flag_cnt_reg3 <= r_wr_pingpong_flag_cnt_reg2; end //输入数据延迟一个时钟周期 always @(posedge lvds_sysClk) begin r_bmp_de <= #1 pic_bmp_de ; r_bmp_vsync <= #1 pic_bmp_vsync; r_bmp_hsync <= #1 pic_bmp_hsync; r_bmp_data0 <= #1 pid_bmp_data0; r_bmp_data1 <= #1 pid_bmp_data1; r_bmp_data2 <= #1 pid_bmp_data2; r_bmp_data3 <= #1 pid_bmp_data3; r_bmp_data4 <= #1 pid_bmp_data4; r_bmp_data5 <= #1 pid_bmp_data5; r_bmp_data6 <= #1 pid_bmp_data6; r_bmp_data7 <= #1 pid_bmp_data7; end always @(posedge lvds_sysClk) begin if(pic_bmp_de == 1'b1) r_wr_bmp_en <= #1 ~r_wr_bmp_en; else r_wr_bmp_en <= #1 1'b0; end always @(posedge lvds_sysClk) begin r_bmp_de_dly1 <= #1 pic_bmp_de ; r_bmp_de_dly2 <= #1 r_bmp_de_dly1; r_bmp_de_dly3 <= #1 r_bmp_de_dly2; r_bmp_de_dly4 <= #1 r_bmp_de_dly3; r_bmp_de_dly5 <= #1 r_bmp_de_dly4; r_bmp_de_dly6 <= #1 r_bmp_de_dly5; r_bmp_de_dly7 <= #1 r_bmp_de_dly6; r_bmp_de_dly8 <= #1 r_bmp_de_dly7; r_bmp_de_dly9 <= #1 r_bmp_de_dly8; r_bmp_de_dly10 <= #1 r_bmp_de_dly9; end always @(posedge lvds_sysClk) begin if(!pic_bmp_vsync) r_wr_rd_bmp_flag <= #1 1'b0; else if(r_bmp_de_dly10 && !r_bmp_de_dly9) r_wr_rd_bmp_flag <= #1 ~r_wr_rd_bmp_flag; end always @(posedge lvds_sysClk) begin if(!pic_bmp_de) fifo_in_cnt <= 1'b0; else if (fifo_in_cnt==2'd3) fifo_in_cnt <= 1'b0; else fifo_in_cnt <= fifo_in_cnt+1'b1; end //写缓冲FIFO数据使能 always @(posedge lvds_sysClk) begin case(r_bmp_link_mode) 6'b10_0010 :begin r_wr_buffer_link0_en <= #1 r_wr_pingpong_flag_cnt == 2'd0 & pic_bmp_de == 1'b1; r_wr_buffer_link1_en <= #1 r_wr_pingpong_flag_cnt == 2'd1 & pic_bmp_de == 1'b1; r_wr_buffer_link2_en <= #1 r_wr_pingpong_flag_cnt == 2'd2 & pic_bmp_de == 1'b1; r_wr_buffer_link3_en <= #1 r_wr_pingpong_flag_cnt == 2'd3 & pic_bmp_de == 1'b1; end 6'b10_0001 :begin if(special_flag)begin r_wr_buffer_link0_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd0 & r_bmp_de_expend == 1'b1 ; r_wr_buffer_link1_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd0 & r_bmp_de_expend == 1'b1 ; r_wr_buffer_link2_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd1 & r_bmp_de_expend == 1'b1 ; r_wr_buffer_link3_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd1 & r_bmp_de_expend == 1'b1 ; end else begin r_wr_buffer_link0_en <= #1 r_wr_pingpong_flag_cnt == 2'd0 & pic_bmp_de == 1'b1 ; r_wr_buffer_link1_en <= #1 r_wr_pingpong_flag_cnt == 2'd0 & pic_bmp_de == 1'b1 ; r_wr_buffer_link2_en <= #1 r_wr_pingpong_flag_cnt == 2'd1 & pic_bmp_de == 1'b1 ; r_wr_buffer_link3_en <= #1 r_wr_pingpong_flag_cnt == 2'd1 & pic_bmp_de == 1'b1 ; end end 6'b01_0001 : begin if(special_mode) begin r_wr_buffer_link0_en <= #1 (r_wr_pingpong_flag_cnt == 2'd0 & r_wr_bmp_en == 1'b1) || (r_wr_bmp_en == 1'b1 & r_wr_pingpong_flag_cnt == 2'd1 & r_hsd_pix_cnt == 1); r_wr_buffer_link1_en <= #1 (r_wr_pingpong_flag_cnt == 2'd1 & r_wr_bmp_en == 1'b1) || (r_wr_bmp_en == 1'b1 & r_wr_pingpong_flag_cnt == 2'd0 & r_hsd_pix_cnt == r_TCOM_hsd_de_num); r_wr_buffer_link2_en <= #1 (r_wr_pingpong_flag_cnt == 2'd0 & r_wr_bmp_en == 1'b1) || (r_wr_bmp_en == 1'b1 & r_wr_pingpong_flag_cnt == 2'd1 & r_hsd_pix_cnt == 1); r_wr_buffer_link3_en <= #1 (r_wr_pingpong_flag_cnt == 2'd1 & r_wr_bmp_en == 1'b1) || (r_wr_bmp_en == 1'b1 & r_wr_pingpong_flag_cnt == 2'd0 & r_hsd_pix_cnt == r_TCOM_hsd_de_num); end else begin r_wr_buffer_link0_en <= #1 r_wr_pingpong_flag_cnt == 2'd0 & r_wr_bmp_en == 1'b1; r_wr_buffer_link1_en <= #1 r_wr_pingpong_flag_cnt == 2'd1 & r_wr_bmp_en == 1'b1; r_wr_buffer_link2_en <= #1 r_wr_pingpong_flag_cnt == 2'd0 & r_wr_bmp_en == 1'b1; r_wr_buffer_link3_en <= #1 r_wr_pingpong_flag_cnt == 2'd1 & r_wr_bmp_en == 1'b1; end end 6'b11_0001 :begin if(special_flag)begin r_wr_buffer_link0_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd0 & r_bmp_de_expend == 1'b1 ; r_wr_buffer_link1_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd0 & r_bmp_de_expend == 1'b1 ; r_wr_buffer_link2_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd1 & r_bmp_de_expend == 1'b1 ; r_wr_buffer_link3_en <= #1 r_wr_pingpong_flag_cnt_1 == 2'd1 & r_bmp_de_expend == 1'b1 ; end else begin r_wr_buffer_link0_en <= #1 r_wr_pingpong_flag_cnt == 2'd0 & pic_bmp_de == 1'b1; r_wr_buffer_link1_en <= #1 r_wr_pingpong_flag_cnt == 2'd0 & pic_bmp_de == 1'b1; r_wr_buffer_link2_en <= #1 r_wr_pingpong_flag_cnt == 2'd1 & pic_bmp_de == 1'b1; r_wr_buffer_link3_en <= #1 r_wr_pingpong_flag_cnt == 2'd1 & pic_bmp_de == 1'b1; end end endcase end //写缓冲FIFO数据 always @(posedge lvds_sysClk) begin case(r_bmp_link_mode) 6'b10_0010 : begin r_wr_buffer_link_dat <= #1 {pid_bmp_data0,pid_bmp_data1,pid_bmp_data2,pid_bmp_data3}; end 6'b01_0001 : begin r_wr_buffer_link_dat <= #1 {r_bmp_data0,r_bmp_data1,pid_bmp_data0,pid_bmp_data1}; end 6'b11_0001 : begin if(special_flag)begin r_wr_buffer_link_dat <= #1 r_wr_buffer_link_dat_1; r_wr_buffer_link_dat_temp <= #1 r_wr_buffer_link_dat_1_temp; end else begin r_wr_buffer_link_dat <= #1 {pid_bmp_data0,pid_bmp_data1,pid_bmp_data2,pid_bmp_data3}; r_wr_buffer_link_dat_temp <= #1 {pid_bmp_data4,pid_bmp_data5,pid_bmp_data6,pid_bmp_data7}; end end 6'b10_0001 : begin if(special_flag)begin r_wr_buffer_link_dat <= r_wr_buffer_link_dat_1; end else begin r_wr_buffer_link_dat <= #1 {pid_bmp_data0,pid_bmp_data1,pid_bmp_data2,pid_bmp_data3}; end end endcase end /////////////////////////////////////////////////////////////////////////////////////////////////////////// //// /// //// 数据缓存 /// //// /// /////////////////////////////////////////////////////////////////////////////////////////////////////////// //LINK 0 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link0 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat), .wr_en (r_wr_buffer_link0_en), .rd_en (r_rd_buffer_link0_en), .dout (w_rd_buffer_link0_dat), .full (), .empty (w_rd_empty0) ); //LINK 1 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link1 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat), .wr_en (r_wr_buffer_link1_en), .rd_en (r_rd_buffer_link1_en), .dout (w_rd_buffer_link1_dat), .full (), .empty (w_rd_empty1) ); //LINK 2 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link2 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat), .wr_en (r_wr_buffer_link2_en), .rd_en (r_rd_buffer_link2_en), .dout (w_rd_buffer_link2_dat), .full (), .empty (w_rd_empty2) ); //LINK 3 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link3 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat), .wr_en (r_wr_buffer_link3_en), .rd_en (r_rd_buffer_link3_en), .dout (w_rd_buffer_link3_dat), .full (), .empty (w_rd_empty3) ); `ifdef eightlane //LINK 4 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link4 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat_temp), .wr_en (r_wr_buffer_link0_en), .rd_en (r_rd_buffer_link0_en), .dout (w_rd_buffer_link4_dat), .full (), .empty () ); //LINK 5 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link5 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat_temp), .wr_en (r_wr_buffer_link1_en), .rd_en (r_rd_buffer_link1_en), .dout (w_rd_buffer_link5_dat), .full (), .empty () ); //LINK 6 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link6 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat_temp), .wr_en (r_wr_buffer_link2_en), .rd_en (r_rd_buffer_link2_en), .dout (w_rd_buffer_link6_dat), .full (), .empty () ); //LINK 7 remapping_fifo_120_to_120 remapping_fifo_120_to_120_link7 ( .clk (lvds_sysClk), .srst (r_wr_buffer_rst), .din (r_wr_buffer_link_dat_temp), .wr_en (r_wr_buffer_link3_en), .rd_en (r_rd_buffer_link3_en), .dout (w_rd_buffer_link7_dat), .full (), .empty () ); `endif always @(posedge lvds_sysClk) begin r_wr_buffer_rst <= #1 pic_bmp_vsync == 1'b0; end always @(posedge lvds_sysClk) begin if(!pic_bmp_de & r_bmp_de) rd_flag <= #1 1'b1 ; else if(vs_cnt == r_vsd_de_num && (!pic_bmp_hsync & r_bmp_hsync)) rd_flag <= #1 1'b0 ; end always @(posedge lvds_sysClk) begin if(!rd_flag) vs_cnt <= #1 13'b0 ; else if(pic_bmp_hsync & !r_bmp_hsync) begin if(vs_cnt == r_vsd_de_num) vs_cnt <= #1 r_vsd_de_num ; else vs_cnt <= #1 vs_cnt + 1 ; end end always @(posedge lvds_sysClk) begin remap_de <= pic_link_division_pattern_de; remap_de1 <= remap_de; remap_de2 <= remap_de1; remap_de3 <= remap_de2; remap_de4 <= remap_de3; end always @(posedge lvds_sysClk) begin if(!remap_de) hs_cnt <= #1 13'b0 ; else if(hs_cnt == r_hsd_de_num - 1) hs_cnt <= #1 13'b0 ; else hs_cnt <= #1 hs_cnt + 1 ; end //读buffer使能 always @(posedge lvds_sysClk) begin case(r_bmp_link_mode) 6'b10_0001 : begin //4link 2fenpin r_rd_buffer_link0_en <= #1 remap_de& !fifo_out_cnt[0]; r_rd_buffer_link1_en <= #1 remap_de& !fifo_out_cnt[0]; r_rd_buffer_link2_en <= #1 remap_de& !fifo_out_cnt[0]; r_rd_buffer_link3_en <= #1 remap_de& !fifo_out_cnt[0]; end 6'b10_0010 : begin //4link 4fenpin r_rd_buffer_link0_en <= #1 remap_de & fifo_outto_cnt==2'd2; r_rd_buffer_link1_en <= #1 remap_de & fifo_outto_cnt==2'd2; r_rd_buffer_link2_en <= #1 remap_de & fifo_outto_cnt==2'd2; r_rd_buffer_link3_en <= #1 remap_de & fifo_outto_cnt==2'd2; end 6'b01_0001 : begin if(special_mode)begin r_rd_buffer_link0_en <= #1 ((remap_de || remap_de4)& fifo_outto_cnt==2'd2); r_rd_buffer_link1_en <= #1 ((remap_de || remap_de4)& fifo_outto_cnt==2'd2); r_rd_buffer_link2_en <= #1 ((remap_de || remap_de4)& fifo_outto_cnt==2'd2); r_rd_buffer_link3_en <= #1 ((remap_de || remap_de4)& fifo_outto_cnt==2'd2); end //2link 2fenpin else begin r_rd_buffer_link0_en <= #1 remap_de& fifo_outto_cnt==2'd2; r_rd_buffer_link1_en <= #1 remap_de& fifo_outto_cnt==2'd2; r_rd_buffer_link2_en <= #1 remap_de& fifo_outto_cnt==2'd2; r_rd_buffer_link3_en <= #1 remap_de& fifo_outto_cnt==2'd2; end end 6'b11_0001 : begin //8link 2fenpin r_rd_buffer_link0_en <= #1 remap_de& !fifo_out_cnt[0]; r_rd_buffer_link1_en <= #1 remap_de& !fifo_out_cnt[0]; r_rd_buffer_link2_en <= #1 remap_de& !fifo_out_cnt[0]; r_rd_buffer_link3_en <= #1 remap_de& !fifo_out_cnt[0]; end endcase end always @(posedge lvds_sysClk) begin if(r_bmp_link_mode == 6'b10_0010 || r_bmp_link_mode == 6'b10_0001|| r_bmp_link_mode == 6'b01_0001|| r_bmp_link_mode == 6'b11_0001) begin if(!remap_de) fifo_out_cnt <= 0 ; else fifo_out_cnt <= fifo_out_cnt + 1 ; end else fifo_out_cnt <= 0 ; end always @(posedge lvds_sysClk) begin if(((!(remap_de || remap_de4)) && special_mode) || (!remap_de && !special_mode)) fifo_outto_cnt <= 1'b0; else if (fifo_outto_cnt==2'd3) fifo_outto_cnt <= 1'b0; else fifo_outto_cnt <= fifo_outto_cnt+1'b1; end always @(posedge lvds_sysClk) begin fifo_out_cnt_dly <= #1 fifo_out_cnt ; end //将输入的link参数延迟一个时钟周期 always @(posedge lvds_sysClk) begin r_bmp_link_de <= #1 ((remap_de || remap_de4) && special_mode) || (!special_mode && remap_de); r_bmp_link_hsync <= #1 pic_link_division_pattern_hsync; r_bmp_link_vsync <= #1 pic_link_division_pattern_vsync; r_bmp_link_de_dly <= #1 r_bmp_link_de; r_bmp_link_hsync_dly <= #1 r_bmp_link_hsync; r_bmp_link_vsync_dly <= #1 r_bmp_link_vsync; end always @(posedge lvds_sysClk) begin case(r_bmp_link_mode) 6'b10_0010: begin if(fifo_outto_cnt==2'd0)begin r_sel_4TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[119:90]; r_sel_4TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[119:90]; r_sel_4TCOM_link2_bmp_dat <= #1 w_rd_buffer_link2_dat[119:90]; r_sel_4TCOM_link3_bmp_dat <= #1 w_rd_buffer_link3_dat[119:90]; end if(fifo_outto_cnt==2'd1)begin r_sel_4TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[89:60]; r_sel_4TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[89:60]; r_sel_4TCOM_link2_bmp_dat <= #1 w_rd_buffer_link2_dat[89:60]; r_sel_4TCOM_link3_bmp_dat <= #1 w_rd_buffer_link3_dat[89:60]; end if(fifo_outto_cnt==2'd2)begin r_sel_4TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[59:30]; r_sel_4TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[59:30]; r_sel_4TCOM_link2_bmp_dat <= #1 w_rd_buffer_link2_dat[59:30]; r_sel_4TCOM_link3_bmp_dat <= #1 w_rd_buffer_link3_dat[59:30]; end if(fifo_outto_cnt==2'd3)begin r_sel_4TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[29:0]; r_sel_4TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[29:0]; r_sel_4TCOM_link2_bmp_dat <= #1 w_rd_buffer_link2_dat[29:0]; r_sel_4TCOM_link3_bmp_dat <= #1 w_rd_buffer_link3_dat[29:0]; end end 6'b01_0001: begin if(fifo_outto_cnt==2'd0)begin r_sel_2TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[119:90]; r_sel_2TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[119:90]; end if(fifo_outto_cnt==2'd1)begin r_sel_2TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[89:60]; r_sel_2TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[89:60]; end if(fifo_outto_cnt==2'd2)begin r_sel_2TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[59:30]; r_sel_2TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[59:30]; end if(fifo_outto_cnt==2'd3)begin r_sel_2TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[29:0]; r_sel_2TCOM_link1_bmp_dat <= #1 w_rd_buffer_link1_dat[29:0]; end end 6'b10_0001: begin if(remap_de)begin if(!fifo_out_cnt[0] ) begin r_sel_4TCOM_link0_bmp_dat <=#1 w_rd_buffer_link0_dat[119:90]; r_sel_4TCOM_link1_bmp_dat <=#1 w_rd_buffer_link0_dat[89:60]; r_sel_4TCOM_link2_bmp_dat <=#1 w_rd_buffer_link2_dat[119:90]; r_sel_4TCOM_link3_bmp_dat <=#1 w_rd_buffer_link2_dat[89:60]; end else if (fifo_out_cnt[0]) begin r_sel_4TCOM_link0_bmp_dat <=#1 w_rd_buffer_link0_dat[59:30]; r_sel_4TCOM_link1_bmp_dat <=#1 w_rd_buffer_link0_dat[29:0]; r_sel_4TCOM_link2_bmp_dat <=#1 w_rd_buffer_link2_dat[59:30]; r_sel_4TCOM_link3_bmp_dat <=#1 w_rd_buffer_link2_dat[29:0]; end end end //6'b10_0001: begin // if(remap_de)begin // if(!fifo_out_cnt[0] ) begin // r_sel_4TCOM_link0_bmp_dat <=#1 w_rd_buffer_link0_dat[119:90]; // r_sel_4TCOM_link1_bmp_dat <=#1 w_rd_buffer_link0_dat[89:60] ; // r_sel_4TCOM_link2_bmp_dat <=#1 w_rd_buffer_link2_dat[59:30]; // r_sel_4TCOM_link3_bmp_dat <=#1 w_rd_buffer_link2_dat[29:0] ; // end // else if (fifo_out_cnt[0]) begin // r_sel_4TCOM_link0_bmp_dat <=#1 w_rd_buffer_link0_dat[59:30]; // r_sel_4TCOM_link1_bmp_dat <=#1 w_rd_buffer_link0_dat[29:0]; // r_sel_4TCOM_link2_bmp_dat <=#1 w_rd_buffer_link2_dat[119:90]; // r_sel_4TCOM_link3_bmp_dat <=#1 w_rd_buffer_link2_dat[89:60] ; // // end // end // end 6'b11_0001:begin if(!fifo_out_cnt[0] ) begin r_sel_8TCOM_link0_bmp_dat <= #1 w_rd_buffer_link0_dat[119:90]; r_sel_8TCOM_link1_bmp_dat <= #1 w_rd_buffer_link0_dat[89:60]; r_sel_8TCOM_link2_bmp_dat <= #1 w_rd_buffer_link0_dat[59:30]; r_sel_8TCOM_link3_bmp_dat <= #1 w_rd_buffer_link0_dat[29:0]; r_sel_8TCOM_link4_bmp_dat <= #1 w_rd_buffer_link3_dat[119:90]; r_sel_8TCOM_link5_bmp_dat <= #1 w_rd_buffer_link3_dat[89:60]; r_sel_8TCOM_link6_bmp_dat <= #1 w_rd_buffer_link3_dat[59:30]; r_sel_8TCOM_link7_bmp_dat <= #1 w_rd_buffer_link3_dat[29:0]; end else if(fifo_out_cnt[0]) begin r_sel_8TCOM_link0_bmp_dat <= #1 w_rd_buffer_link4_dat[119:90]; r_sel_8TCOM_link1_bmp_dat <= #1 w_rd_buffer_link4_dat[89:60]; r_sel_8TCOM_link2_bmp_dat <= #1 w_rd_buffer_link4_dat[59:30]; r_sel_8TCOM_link3_bmp_dat <= #1 w_rd_buffer_link4_dat[29:0]; r_sel_8TCOM_link4_bmp_dat <= #1 w_rd_buffer_link7_dat[119:90]; r_sel_8TCOM_link5_bmp_dat <= #1 w_rd_buffer_link7_dat[89:60]; r_sel_8TCOM_link6_bmp_dat <= #1 w_rd_buffer_link7_dat[59:30]; r_sel_8TCOM_link7_bmp_dat <= #1 w_rd_buffer_link7_dat[29:0]; end end endcase end //根据输入的模式标志选择输出数据 always @(posedge lvds_sysClk) begin casex(r_bmp_link_mode) 6'bxx_0000: begin poc_bmp_link_de <= #1 r_bmp_de ; poc_bmp_link_hsync <= #1 r_bmp_hsync ; poc_bmp_link_vsync <= #1 r_bmp_vsync ; pod_bmp_data_link0 <= #1 r_bmp_data0 ; pod_bmp_data_link1 <= #1 r_bmp_data1 ; pod_bmp_data_link2 <= #1 r_bmp_data2 ; pod_bmp_data_link3 <= #1 r_bmp_data3 ; pod_bmp_data_link4 <= #1 r_bmp_data4 ; pod_bmp_data_link5 <= #1 r_bmp_data5 ; pod_bmp_data_link6 <= #1 r_bmp_data6 ; pod_bmp_data_link7 <= #1 r_bmp_data7 ; end 6'b10_0010, 6'b01_0010,6'b10_0001: begin poc_bmp_link_de <= #1 r_bmp_link_de ; poc_bmp_link_hsync <= #1 r_bmp_link_hsync ; poc_bmp_link_vsync <= #1 r_bmp_link_vsync ; pod_bmp_data_link0 <= #1 r_sel_4TCOM_link0_bmp_dat ; pod_bmp_data_link1 <= #1 r_sel_4TCOM_link1_bmp_dat ; pod_bmp_data_link2 <= #1 r_sel_4TCOM_link2_bmp_dat ; pod_bmp_data_link3 <= #1 r_sel_4TCOM_link3_bmp_dat ; end 6'b01_0001: begin poc_bmp_link_de <= #1 r_bmp_link_de ; poc_bmp_link_hsync <= #1 r_bmp_link_hsync ; poc_bmp_link_vsync <= #1 r_bmp_link_vsync ; pod_bmp_data_link0 <= #1 r_sel_2TCOM_link0_bmp_dat ; pod_bmp_data_link1 <= #1 r_sel_2TCOM_link1_bmp_dat ; pod_bmp_data_link2 <= #1 r_sel_2TCOM_link0_bmp_dat ; pod_bmp_data_link3 <= #1 r_sel_2TCOM_link1_bmp_dat ; end 6'b11_0001: begin poc_bmp_link_de <= #1 r_bmp_link_de ; poc_bmp_link_hsync <= #1 r_bmp_link_hsync ; poc_bmp_link_vsync <= #1 r_bmp_link_vsync ; pod_bmp_data_link0 <= #1 r_sel_8TCOM_link0_bmp_dat ; pod_bmp_data_link1 <= #1 r_sel_8TCOM_link1_bmp_dat ; pod_bmp_data_link2 <= #1 r_sel_8TCOM_link2_bmp_dat ; pod_bmp_data_link3 <= #1 r_sel_8TCOM_link3_bmp_dat ; pod_bmp_data_link4 <= #1 r_sel_8TCOM_link4_bmp_dat ; pod_bmp_data_link5 <= #1 r_sel_8TCOM_link5_bmp_dat ; pod_bmp_data_link6 <= #1 r_sel_8TCOM_link6_bmp_dat ; pod_bmp_data_link7 <= #1 r_sel_8TCOM_link7_bmp_dat ; end endcase end endmodule
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值