【【HDMI 方块移动实验 】】

HDMI 方块移动实验

dvi_transmitter_top.v

module dvi_transmitter_top(input                pclk          ,input                sys_rst_n     ,input                pclk_x5       ,input                video_hsync   ,input                video_vsync   ,input                video_de      ,input   [23 : 0]     video_din     ,output               tmds_clk_p    ,output               tmds_clk_n    ,output  [2 : 0]      tmds_data_p   ,output  [2 : 0]      tmds_data_n   ,output               tmds_oen  
);assign tmds_oen = 1 ; // next is  define  
wire  reset ;
wire [9:0] blue_10bit ;
wire [9:0] green_10bit ;
wire [9:0] red_10bit ;wire [2:0] tmds_data_serial ; 
wire       tmds_clk_serial  ;reset_syn u_reset_syn(.pclk     ( pclk     ),.reset_n  ( sys_rst_n  ),.reset    ( reset    )
);dvi_encoder u_dvi_encoder_blue(.clkin ( pclk ),.rstin ( reset ),.din   ( video_din[7:0]   ),.c0    ( video_hsync    ),.c1    ( video_vsync    ),.de    ( video_de    ),.dout  ( blue_10bit  )
);dvi_encoder u_dvi_encoder_green(.clkin ( pclk ),.rstin ( reset ),.din   ( video_din[15:8]   ),.c0    ( 1'b0    ),.c1    ( 1'b0    ),.de    ( video_de    ),.dout  ( green_10bit  )
);dvi_encoder u_dvi_encoder_red(.clkin ( pclk ),.rstin ( reset ),.din   ( video_din[23:16]   ),.c0    ( 1'b0    ),.c1    ( 1'b0    ),.de    ( video_de    ),.dout  ( red_10bit  )
);serializer10 u_serializer10_blue(.reset          ( reset          ),.paralell_clk   ( pclk   ),.serial_clk_5x  ( pclk_x5  ),.paralell_data  ( blue_10bit  ),.serial_data_out  ( tmds_data_serial[0]  )
);serializer10 u_serializer10_green(.reset          ( reset          ),.paralell_clk   ( pclk   ),.serial_clk_5x  ( pclk_x5  ),.paralell_data  ( green_10bit  ),.serial_data_out  ( tmds_data_serial[1]  )
);serializer10 u_serializer10_red(.reset          ( reset          ),.paralell_clk   ( pclk   ),.serial_clk_5x  ( pclk_x5  ),.paralell_data  ( red_10bit  ),.serial_data_out  ( tmds_data_serial[2]  )
);serializer10 u_serializer10_clk(.reset          ( reset          ),.paralell_clk   ( pclk   ),.serial_clk_5x  ( pclk_x5  ),.paralell_data  ( 10'b1111100000  ),.serial_data_out  ( tmds_clk_serial  )
);//转换差分信号  
OBUFDS #(.IOSTANDARD         ("TMDS_33")    // I/O电平标准为TMDS
) TMDS0 (.I                  (tmds_data_serial[0]),.O                  (tmds_data_p[0]),.OB                 (tmds_data_n[0]) 
);OBUFDS #(.IOSTANDARD         ("TMDS_33")    // I/O电平标准为TMDS
) TMDS1 (.I                  (tmds_data_serial[1]),.O                  (tmds_data_p[1]),.OB                 (tmds_data_n[1]) 
);OBUFDS #(.IOSTANDARD         ("TMDS_33")    // I/O电平标准为TMDS
) TMDS2 (.I                  (tmds_data_serial[2]), .O                  (tmds_data_p[2]), .OB                 (tmds_data_n[2])  
);OBUFDS #(.IOSTANDARD         ("TMDS_33")    // I/O电平标准为TMDS
) TMDS3 (.I                  (tmds_clk_serial), .O                  (tmds_clk_p),.OB                 (tmds_clk_n) 
);
endmodule  

encoder.v

module dvi_encoder (input            clkin,    // pixel clock inputinput            rstin,    // async. reset input (active high)input      [7:0] din,      // data inputs: expect registeredinput            c0,       // c0 inputinput            c1,       // c1 inputinput            de,       // de inputoutput reg [9:0] dout      // data outputs
);// Counting number of 1s and 0s for each incoming pixel// component. Pipe line the result.// Register Data Input so it matches the pipe lined adder// outputreg [3:0] n1d; //number of 1s in dinreg [7:0] din_q;//计算像素数据中“1”的个数always @ (posedge clkin) beginn1d <=#1 din[0] + din[1] + din[2] + din[3] + din[4] + din[5] + din[6] + din[7];din_q <=#1 din;end///// Stage 1: 8 bit -> 9 bit// Refer to DVI 1.0 Specification, page 29, Figure 3-5///wire decision1;assign decision1 = (n1d > 4'h4) | ((n1d == 4'h4) & (din_q[0] == 1'b0));wire [8:0] q_m;assign q_m[0] = din_q[0];assign q_m[1] = (decision1) ? (q_m[0] ^~ din_q[1]) : (q_m[0] ^ din_q[1]);assign q_m[2] = (decision1) ? (q_m[1] ^~ din_q[2]) : (q_m[1] ^ din_q[2]);assign q_m[3] = (decision1) ? (q_m[2] ^~ din_q[3]) : (q_m[2] ^ din_q[3]);assign q_m[4] = (decision1) ? (q_m[3] ^~ din_q[4]) : (q_m[3] ^ din_q[4]);assign q_m[5] = (decision1) ? (q_m[4] ^~ din_q[5]) : (q_m[4] ^ din_q[5]);assign q_m[6] = (decision1) ? (q_m[5] ^~ din_q[6]) : (q_m[5] ^ din_q[6]);assign q_m[7] = (decision1) ? (q_m[6] ^~ din_q[7]) : (q_m[6] ^ din_q[7]);assign q_m[8] = (decision1) ? 1'b0 : 1'b1;/// Stage 2: 9 bit -> 10 bit// Refer to DVI 1.0 Specification, page 29, Figure 3-5/reg [3:0] n1q_m, n0q_m; // number of 1s and 0s for q_malways @ (posedge clkin) beginn1q_m  <=#1 q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7];n0q_m  <=#1 4'h8 - (q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7]);endparameter CTRLTOKEN0 = 10'b1101010100;parameter CTRLTOKEN1 = 10'b0010101011;parameter CTRLTOKEN2 = 10'b0101010100;parameter CTRLTOKEN3 = 10'b1010101011;reg [4:0] cnt; //disparity counter, MSB is the sign bitwire decision2, decision3;assign decision2 = (cnt == 5'h0) | (n1q_m == n0q_m);/// [(cnt > 0) and (N1q_m > N0q_m)] or [(cnt < 0) and (N0q_m > N1q_m)]/assign decision3 = (~cnt[4] & (n1q_m > n0q_m)) | (cnt[4] & (n0q_m > n1q_m));// pipe line alignmentreg       de_q, de_reg;reg       c0_q, c1_q;reg       c0_reg, c1_reg;reg [8:0] q_m_reg;always @ (posedge clkin) beginde_q    <=#1 de;de_reg  <=#1 de_q;c0_q    <=#1 c0;c0_reg  <=#1 c0_q;c1_q    <=#1 c1;c1_reg  <=#1 c1_q;q_m_reg <=#1 q_m;end///// 10-bit out// disparity counter///always @ (posedge clkin or posedge rstin) beginif(rstin) begindout <= 10'h0;cnt <= 5'h0;end else beginif (de_reg) beginif(decision2) begindout[9]   <=#1 ~q_m_reg[8]; dout[8]   <=#1 q_m_reg[8]; dout[7:0] <=#1 (q_m_reg[8]) ? q_m_reg[7:0] : ~q_m_reg[7:0];cnt <=#1 (~q_m_reg[8]) ? (cnt + n0q_m - n1q_m) : (cnt + n1q_m - n0q_m);end else beginif(decision3) begindout[9]   <=#1 1'b1;dout[8]   <=#1 q_m_reg[8];dout[7:0] <=#1 ~q_m_reg[7:0];cnt <=#1 cnt + {q_m_reg[8], 1'b0} + (n0q_m - n1q_m);end else begindout[9]   <=#1 1'b0;dout[8]   <=#1 q_m_reg[8];dout[7:0] <=#1 q_m_reg[7:0];cnt <=#1 cnt - {~q_m_reg[8], 1'b0} + (n1q_m - n0q_m);endendend else begincase ({c1_reg, c0_reg})2'b00:   dout <=#1 CTRLTOKEN0;2'b01:   dout <=#1 CTRLTOKEN1;2'b10:   dout <=#1 CTRLTOKEN2;default: dout <=#1 CTRLTOKEN3;endcasecnt <=#1 5'h0;endendendendmodule

reset_syn.v

 module  reset_syn(input            pclk     ,input            reset_n  ,output   reg     reset);reg reset1 ;always@( posedge pclk   or  negedge reset_n)beginif( reset_n == 0)beginreset1 <= 1 ;endelsebeginreset1 <= 0      ;reset  <= reset1 ;endend
endmodule

serializer.v

module serializer10 (input                       reset           ,  // 复位,高有效input                       paralell_clk    ,  // 输入并行数据时钟 input                       serial_clk_5x   ,   // 输入串行数据时钟input        [9 : 0]        paralell_data   ,   // 输入并行数据output                      serial_data_out          // 输出串行数据
);//wire definewire cascade1 ; //用于两个 OSERDESE2 级联的信号wire cascade2 ;// 此处的代码 来自 vivado的 原语 和 正点原子的同时调配 
// 这是 master接口 OSERDESE2 #(.DATA_RATE_OQ("DDR"),   // 设置双倍数据速率.DATA_RATE_TQ("DDR"),   // DDR, BUF, SDR.DATA_WIDTH(10),         // 输入的并行数据宽度为 10bit// .INIT_OQ(1'b0),         // Initial value of OQ output (1'b0,1'b1)// .INIT_TQ(1'b0),         // Initial value of TQ output (1'b0,1'b1).SERDES_MODE("MASTER"), // MASTER, SLAVE//.SRVAL_OQ(1'b0),        // OQ output value when SR is used (1'b0,1'b1)// .SRVAL_TQ(1'b0),        // TQ output value when SR is used (1'b0,1'b1).TBYTE_CTL("FALSE"),    // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC("FALSE"),    // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH(1)      // 3-state converter width (1,4))OSERDESE2_MASTER (.OFB(),             // 未使用.OQ(serial_data_out),               // 串行输出数据// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each).SHIFTOUT1(),  // SHIFTIN1 用于位宽扩展.SHIFTOUT2(),  // SHIFTIN2 用于位宽扩展.TBYTEOUT(),   // 未使用.TFB(),             // 未使用.TQ(),               // 未使用.CLK(serial_clk_5x),    // 串行数据时钟,5 倍时钟频率.CLKDIV(paralell_clk),  // 并行数据时钟// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each).D1(paralell_data[0]),.D2(paralell_data[1]),.D3(paralell_data[2]),.D4(paralell_data[3]),.D5(paralell_data[4]),.D6(paralell_data[5]),.D7(paralell_data[6]),.D8(paralell_data[7]),.OCE(1'b1),             // 1-bit input: Output data clock enable.RST(reset),             // 1-bit input: Reset// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each).SHIFTIN1(cascade1),     // SHIFTIN1 用于位宽扩展.SHIFTIN2(cascade2),     // SHIFTIN2  用于位宽扩展// T1 - T4: 1-bit (each) input: Parallel 3-state inputs.T1(1'b0),                // 未使用.T2(1'b0),                // 未使用.T3(1'b0),                // 未使用.T4(1'b0),                // 未使用.TBYTEIN(1'b0),     // 未使用.TCE(1'b0)              // 未使用);// slave接口 OSERDESE2 #(.DATA_RATE_OQ("DDR"),   // 设置双倍数据速率.DATA_RATE_TQ("DDR"),   // DDR, BUF, SDR.DATA_WIDTH(10),         // 输入的并行数据宽度为 10bit// .INIT_OQ(1'b0),         // Initial value of OQ output (1'b0,1'b1)// .INIT_TQ(1'b0),         // Initial value of TQ output (1'b0,1'b1).SERDES_MODE("SLAVE"), // MASTER, SLAVE//.SRVAL_OQ(1'b0),        // OQ output value when SR is used (1'b0,1'b1)// .SRVAL_TQ(1'b0),        // TQ output value when SR is used (1'b0,1'b1).TBYTE_CTL("FALSE"),    // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC("FALSE"),    // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH(1)      // 3-state converter width (1,4))OSERDESE2_SLAVE (.OFB(),             // 未使用.OQ(),               // 串行输出数据// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each).SHIFTOUT1(cascade1),  // SHIFTIN1 用于位宽扩展.SHIFTOUT2(cascade2),  // SHIFTIN2 用于位宽扩展.TBYTEOUT(),   // 未使用.TFB(),             // 未使用.TQ(),               // 未使用.CLK(serial_clk_5x),    // 串行数据时钟,5 倍时钟频率.CLKDIV(paralell_clk),  // 并行数据时钟// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each).D1(1'b0),.D2(1'b0),.D3(paralell_data[8]),.D4(paralell_data[9]),.D5(1'b0),.D6(1'b0),.D7(1'b0),.D8(1'b0),.OCE(1'b1),             // 1-bit input: Output data clock enable.RST(reset),             // 1-bit input: Reset// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each).SHIFTIN1(),     // SHIFTIN1 用于位宽扩展.SHIFTIN2(),     // SHIFTIN2  用于位宽扩展// T1 - T4: 1-bit (each) input: Parallel 3-state inputs.T1(1'b0),                // 未使用.T2(1'b0),                // 未使用.T3(1'b0),                // 未使用.T4(1'b0),                // 未使用.TBYTEIN(1'b0),     // 未使用.TCE(1'b0)              // 未使用);endmodule 

top.v

module hdmi_top(input        sys_clk,input        sys_rst_n,output       tmds_clk_p,    // TMDS 时钟通道output       tmds_clk_n,output [2:0] tmds_data_p,   // TMDS 数据通道output [2:0] tmds_data_n);//wire definewire          pixel_clk;wire          pixel_clk_5x;wire          clk_locked;wire  [10:0]  pixel_xpos_w;wire  [10:0]  pixel_ypos_w;wire  [23:0]  pixel_data_w;wire          video_hs;wire          video_vs;wire          video_de;wire  [23:0]  video_rgb;// next is main codeclk_wiz_0 instance_name(// Clock out ports.clk_out1(pixel_clk),     // output clk_out1.clk_out2(pixel_clk_5x),     // output clk_out2// Status and control signals.reset(~sys_rst_n), // input reset.locked(clk_locked),       // output locked// Clock in ports.clk_in1(sys_clk));video_driver u_video_driver(.pixel_clk   ( pixel_clk   ),.rst_n       ( sys_rst_n       ),.pixel_data  ( pixel_data_w  ),.video_rgb   ( video_rgb   ),.video_hs    ( video_hs    ),.video_vs    ( video_vs    ),.video_de    ( video_de    ),.pixel_xpos  ( pixel_xpos_w  ),.pixel_ypos  ( pixel_ypos_w  )
);video_display u_video_display(.pixel_clk     ( pixel_clk     ),.sys_rst_n     ( sys_rst_n     ),.pixel_xpos_w  ( pixel_xpos_w  ),.pixel_ypos_w  ( pixel_ypos_w  ),.pixel_data_w  ( pixel_data_w  )
);dvi_transmitter_top u_dvi_transmitter_top(.pclk         ( pixel_clk         ),.sys_rst_n    ( sys_rst_n & clk_locked    ),.pclk_x5      ( pixel_clk_5x      ),.video_hsync  ( video_hs  ),.video_vsync  ( video_vs  ),.video_de     ( video_de     ),.video_din    ( video_rgb    ),.tmds_clk_p   ( tmds_clk_p   ),.tmds_clk_n   ( tmds_clk_n   ),.tmds_data_p  ( tmds_data_p  ),.tmds_data_n  ( tmds_data_n  ),.tmds_oen     ( )
);endmodule                

video_display.v

 module video_display(input                     pixel_clk       ,input                     sys_rst_n       ,input       [ 11 : 0 ]    pixel_xpos_w    ,input       [ 11 : 0 ]    pixel_ypos_w    ,output reg  [ 23 : 0 ]    pixel_data_w);parameter    WIDTH    =   12'd40     ; //  我把小方块的长度和边界的长度都设置为40parameter    pixelx   =   12'd1280   ;parameter    pixely   =   12'd720    ;//我们 目前来说其实只想要一个 最左上角的目标告诉外部的数据 变化reg   [11 :0]      blockx           ;reg   [11 :0]      blocky           ;reg    [21 : 0]     cnt              ;wire                moveon           ;reg                move_down         ;reg                move_right        ;parameter       CLK10   = 22'd750000 ;parameter     WHITE     = 24'hFFFFFF ;parameter     BLACK     = 24'h000000 ;parameter     BLUE      = 24'h0000FF ;// next is main codealways@(posedge pixel_clk  or  negedge sys_rst_n)beginif(sys_rst_n == 0)begincnt <= 0 ;endelse if(cnt < CLK10)cnt <= cnt + 1 ;elsecnt <= 0 ;end// next is moveonassign  moveon  =  (cnt == CLK10 - 1'b1 ) ? 1 : 0 ;// 下面是 判断到达边界 左右移动always@(posedge pixel_clk  or  negedge sys_rst_n)beginif(sys_rst_n == 0)beginmove_right <= 1 ; // 右move_down  <= 1 ; // 下endelsebeginif(blockx == WIDTH)move_right <= 1 ;else if(blockx == pixelx - WIDTH -WIDTH)beginmove_right <= 0 ;endelsemove_right <= move_right ;if(blocky == WIDTH)move_down <= 1;else if(blocky == pixely - WIDTH -WIDTH)beginmove_down <= 0 ;endelsemove_down <= move_down ;endend// next is  block move  always @(posedge pixel_clk  or  negedge sys_rst_n ) begin         if (sys_rst_n == 0) beginblockx <= WIDTH;                     //方块初始位置横坐标blocky <= WIDTH;                     //方块初始位置纵坐标endelse if(moveon) beginif(move_right) blockx <= blockx + 1'b1;          //方块向右移动elseblockx <= blockx - 1'b1;          //方块向左移动if(move_down) blocky <= blocky + 1'b1;          //方块向下移动elseblocky <= blocky - 1'b1;          //方块向上移动endelse beginblockx <= blockx;blocky <= blocky;end
end// next is 颜色显示  
always@(posedge pixel_clk or negedge sys_rst_n) begin if( sys_rst_n == 0) begin pixel_data_w <= BLACK ; end else beginif(  (pixel_xpos_w < WIDTH) || (pixel_xpos_w >= pixelx - WIDTH)|| (pixel_ypos_w < WIDTH) || (pixel_ypos_w >= pixely - WIDTH))pixel_data_w <= BLUE;                 //绘制屏幕边框为蓝色elseif(  (pixel_xpos_w >= blockx) && (pixel_xpos_w < blockx + WIDTH)&& (pixel_ypos_w >= blocky) && (pixel_ypos_w < blocky + WIDTH))pixel_data_w <= BLACK;                //绘制方块为黑色elsepixel_data_w <= WHITE;                //绘制背景为白色end
end
endmodule 

video_driver.v

module video_driver
(input                         pixel_clk    ,input                         rst_n        ,input        [ 23 : 0 ]       pixel_data   ,output       [ 23 : 0 ]       video_rgb    ,output                        video_hs     ,     //  行同步信号output                        video_vs     ,     //  场同步信号output                        video_de     ,     //  数据使能output       [ 11 : 0 ]       pixel_xpos   ,     //  像素点横坐标  1280output       [ 11 : 0 ]       pixel_ypos        //  像素点横坐标  720
);//parameter define//1280*720  分辨率时序参数    时钟频率74.25parameter  H_SYNC   =  12'd40;   //行同步parameter  H_BACK   =  12'd220;  //行显示后沿parameter  H_DISP   =  12'd1280; //行有效数据parameter  H_FRONT  =  12'd110;  //行显示前沿parameter  H_TOTAL  =  12'd1650; //行扫描周期parameter  V_SYNC   =  12'd5;    //场同步parameter  V_BACK   =  12'd20;   //场显示后沿parameter  V_DISP   =  12'd720;  //场有效数据parameter  V_FRONT  =  12'd5;    //场显示前沿parameter  V_TOTAL  =  12'd750;  //场扫描周期//  reg definereg [11 : 0]   cnt_h ;reg [11 : 0]   cnt_v ;wire data_reg ; // define//  next is main codealways@(posedge pixel_clk or negedge rst_n)beginif( rst_n == 0)begincnt_h <= 0 ;endelsebeginif(cnt_h == H_TOTAL - 1)begincnt_h <= 0 ;endelsecnt_h <= cnt_h + 1 ;endendalways@(posedge pixel_clk or negedge rst_n)beginif( rst_n == 0)begincnt_v = 0 ;endelsebeginif( cnt_h == H_TOTAL - 1)beginif(cnt_v == V_TOTAL - 1)begincnt_v <= 0 ;endelsebegincnt_v <= cnt_v + 1 ;endendendend//    =======================main code============\\// video_rgb // video_hs  // video_vs  // video_de  // pixel_xpos// pixel_ypos 
assign video_hs = 1 ; 
assign video_vs = 1 ; assign video_rgb  =   video_de ? pixel_data : 24'b0 ; assign video_de   =  (((cnt_h >= H_SYNC+H_BACK) && (cnt_h < H_SYNC+H_BACK+H_DISP))
&&((cnt_v >= V_SYNC+V_BACK) && (cnt_v < V_SYNC+V_BACK+V_DISP)))
?  1'b1 : 1'b0;assign data_reg   =  (((cnt_h >= H_SYNC+H_BACK - 1) && (cnt_h < H_SYNC+H_BACK+H_DISP - 1))
&&((cnt_v >= V_SYNC+V_BACK) && (cnt_v < V_SYNC+V_BACK+V_DISP)))
?  1'b1 : 1'b0;assign pixel_xpos = data_reg ? (cnt_h - (H_SYNC + H_BACK - 1'b1)) : 0;
assign pixel_ypos = data_reg ? (cnt_v - (V_SYNC + V_BACK - 1'b1)) : 0;endmodule 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库的基础概念

目录 顾名思义&#xff0c;数据库是用于存储数据的&#xff0c;那这些数据被存储在哪呢&#xff1f; 文件也能存储数据&#xff0c;那在这个基础上&#xff0c;为什么还要搞出一个数据库来存储数据呢&#xff1f; MySQL的客户端登录/退出指令、服务端的启动/关闭指令 数据…

如何查看PHP信息

创建一个 PHP 文件&#xff0c;比如 info.php&#xff0c;在其中添加以下代码&#xff1a; <?php phpinfo(); ?>访问这个文件&#xff08;例如&#xff0c;在浏览器中输入 http://localhost/info.php&#xff09;&#xff0c;它会显示 PHP 的所有配置信息。在这个页面…

【设计模式】之工厂模式

工厂模式 1.介绍 工厂模式&#xff08;创建型模式&#xff09;&#xff0c;是我们最常用的实例化对象模式&#xff0c;是用工厂方法代替new操作的一种模式&#xff1b;在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;并且是通过使用一个共同的…

服务器挖矿木马识别与清理

一、什么是挖矿木马 挖矿木马会占用CPU进行超频运算,从而占用主机大量的CPU资源,严重影响服务器上的其他应用的正常运行。黑客为了得到更多的算力资源,一般都会对全网进行无差别扫描,同时利用SSH爆破和漏洞利用等手段攻击主机。部分挖矿木马还具备蠕虫化的特点,在主机被成…

Threejs利用着色器编写动态飞线特效

一、导语 动态飞线特效是可视化数据地图中常见的需求之一&#xff0c;鼠标点击的区块作为终点&#xff0c;从其他区块飞线至点击区块&#xff0c;附带颜色变换或者结合粒子动画 二、分析 利用创建3点来构成贝塞尔曲线&#xff0c;形成线段利用着色器材质来按照线段以及时间…

Go语言学习:第1天

一、为什么开始学go语言 我自己是做测试的&#xff0c;所测试项目使用的是go语言。开始学习go语言的原因有两个&#xff1a;一方面&#xff0c;为了更好的做好工作&#xff1b; 另一方面&#xff0c;为了提高自己的核心竞争力。 二、第1天学习到的内容 2.1 Go是怎么解决包依…

JavaScript——严格检查模式

‘use strict’ &#xff1a; 严格检查模式&#xff0c;预防JavaScript的随意性导致产生的一些问题&#xff08;必须写在JavaScript的第一行&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title…

buildadmin:表格中实现详情按钮

其一&#xff1a;创建组件并在当前控制器中引入组件 <!-- 示例核心代码(1/3) --> <!-- 详情组件在此处使用&#xff0c;但显示与否的判断是写在组件内的 --> <Detail /><!-- 引入组件 --> import Detail from ./detail.vue其二&#xff1a;注册按钮 …

ospf 知识总结

ospf 知识总结 一、ospf的概念 - 开放式最短路径优先协议&#xff0c;是广泛使用的一种动态路由协议&#xff0c;它属于链路状态路由协议&#xff0c;是一个内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于在单一自治系统&#xff08;AS&#xff09;内决策路由。 - …

DeepMind大型语言AI模型FunSearch在数学科学中取得新发现

大型语言模型 (LLM) 是有用的助手 – 它们擅长组合概念&#xff0c;并且可以阅读、编写和编码来帮助人们解决问题。但他们能发现全新的知识吗&#xff1f;由于法学硕士已被证明会“幻觉”事实上不正确的信息&#xff0c;因此利用它们来做出可验证的正确发现是一个挑战。 FunSea…

HarmonyOS:使用MindSpore Lite引擎进行模型推理

场景介绍 MindSpore Lite 是一款 AI 引擎&#xff0c;它提供了面向不同硬件设备 AI 模型推理的功能&#xff0c;目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。 本文介绍使用 MindSpore Lite 推理引擎进行模型推理的通用开发流程。 基本概念 在进行开…

各技术栈需要掌握的知识

一、前端工程师需要掌握的知识 前端工程师需要掌握的知识主要包括以下几个方面: HTML、CSS和JavaScript:这是前端工程师的基础知识,需要熟练掌握。HTML是网页的骨架,CSS是网页的外观和样式,JavaScript则是实现网页交互效果的关键。响应式设计:随着移动设备的普及,响应…

测试用例设计方法之判定表详解!!

理论部分 判定表是分析和表达多种输入条件下系统执行不同动作的工具&#xff0c;它可以把复杂的逻辑关系和多种 条件组合的情况表达得既具体又明确。 条件桩(Condition Stub)动作桩(Action Stub&#xff09;条件项(Condition Entry&#xff09;动作项(Action Entry&#xff0…

Linux(4)-LAMP

L-LinuxA-apache/nginxM-mysqlp-php 搭建LAMP以及使用discuz搭建论坛网站 安装apache yum install httpd -y // 安装service httpd start // 启动Apache通过netstat -tunlp查看apache运行的端口&#xff0c;然后打开虚拟机ip 80端口能看到以下页面 或者 安装Mysql centOS6…

ECAT【对象字典】

1000h&#xff1a; - wAxisStructID WORD 16#FE12 3S用于检查结构类型的内部变量。 1000 n轴状态 SMC_AXIS_STATE (INT) standstill 轴PLCopen状态机: 0: power_off1: errorstop 2: stopping 3: standstill 4: discrete_motion5: continuous_motion 6:synchronized_mo…

自然数分解 C语言xdoj64

输入说明 一个正整数 n&#xff0c;0<n<30 输出说明 输出n个连续奇数&#xff0c;数据之间用空格隔开&#xff0c;并换行 输入样例 4 输出样例 13 15 17 19 int main() {int n;scanf("%d",&n);if(n % 2 0){//n为偶数int in;//打印数字个数&#xff0c;做循…

【WINCC制作水管水流动画】

&#xff37;&#xff29;&#xff2e;&#xff23;&#xff23;简单制作水管水流动画 详情如下图所示&#xff1a; 1.首先用布化好管道&#xff0c;同时在管道内部画好折线图用以表示水流路径 2.选中折线图调整全局颜色方案 3.选择线条颜色 4.调整线条的线宽和线型 5.效果…

设计模式——组合模式(结构型)

引言 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。 问题 如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如&#xff0c; 你有两类对象&#xff1a; ​…

关于Linux你必须知道的五件事

Linux是一种开源操作系统 (OS)。操作系统是直接管理系统硬件和资源&#xff08;如 CPU、内存和存储&#xff09;的软件。操作系统位于应用程序和硬件之间&#xff0c;并在所有软件和执行工作的物理资源之间建立连接。 俄罗斯军方计划用 Astra Linux 取代 Windows&#xff01;为…

JavaScript值类型和引用类型两道经典面试题

JavaScript值类型和引用类型两道经典面试题 题目1题目2 题目1 首先&#xff0c;小试牛刀&#xff0c;请看第一道题。 let a {x: 10 } let b a a.x 20 console.log(b.x)a {x: 30 } console.log(b.x) a.x 40 console.log(b.x);那么上述代码输出结果是多少呢&#xff1f; …