Xilinx FPGA:vivado利用单端RAM/串口传输数据实现自定义私有协议

一、项目要求

       实现自定义私有协议,如:pc端产生数据:02    56    38  ,“02”代表要发送数据的个数,“56”“38”需要写进RAM中。当按键信号到来时,将“56”“38”读出返回给PC端。

二、信号流向图

三、状态转换图

四、程序设计:

按键消抖模块:

`timescale 1ns / 1ps
module key_debounce(
   input              sys_clk ,
   input              rst_n   ,
   input              key     ,
   output             key_flag 
    );
    parameter        delay = 100;//_000_0 ; //10ms
    reg[25:0]         cnt               ;
    
    always@(posedge sys_clk )
         if(!rst_n)
            cnt <= 0 ;
         else if ( key == 0 )begin
              if ( cnt == delay - 1 )
                   cnt <= cnt ;
              else
                   cnt <= cnt +1 ;
         end
         else
         cnt <= 0 ;
    
    assign  key_flag = ( cnt == delay - 2 )?1:0 ;







endmodule

接收端模块:

`timescale 1ns / 1ps
module uart_rx(
   input                    sys_clk   ,
   input                    rst_n     ,
   input                    rx_data   ,
   output    reg[7:0]       uart_data ,
   output    reg            rx_done  
    );
    parameter               SYSCLK = 50_000_000 ;
    parameter               Baud   = 115200     ; 
    parameter               COUNT  = SYSCLK/Baud;
    parameter               MID    = COUNT/2    ;
    
    ///start_flag
    reg             rx_reg1 ;
    reg             rx_reg2 ;
    wire            start_flag ;
    
    always@(posedge sys_clk )
         if(!rst_n)begin
            rx_reg1 <= 1 ;
            rx_reg2 <= 1 ;
         end
         else
             begin
                  rx_reg1 <= rx_data  ;
                  rx_reg2 <= rx_reg1  ;
             end
    assign  start_flag = ~rx_reg1 & rx_reg2 ;
    
    //rx_flag
    reg               rx_flag  ;
    reg[4:0]          cnt_bit  ;
    reg[9:0]          cnt      ;
    
    always@(posedge sys_clk )
         if(!rst_n)
            rx_flag <= 0 ;
         else if ( start_flag == 1 )
            rx_flag <= 1 ;
         else if ( cnt_bit == 10 && cnt == MID - 1 )
            rx_flag <= 0 ;
         else
            rx_flag <= rx_flag ;
    
    cnt
    always@(posedge sys_clk )
         if(!rst_n)
            cnt <= 0 ;
         else if ( rx_flag == 1 )begin
              if ( cnt == COUNT - 1 )
                   cnt <= 0 ;
              else
                   cnt <= cnt +1 ;
         end
         else
         cnt <= 0 ;
  
  cnt_bit
    always@(posedge sys_clk )
         if(!rst_n)
            cnt_bit <= 0 ;
         else if ( rx_flag == 1 )begin
              if ( cnt == COUNT - 1 )begin
                  if( cnt_bit == 10 )
                      cnt_bit <= 0 ;
                  else
                      cnt_bit <= cnt_bit +1 ;
              end
              else
              cnt_bit <= cnt_bit ;
         end
         else
         cnt_bit <= 0 ;
         
         
            
  
  ///data_reg                         
     reg[8:0]         data_reg  ;  //data_reg:01234567 [8]
     always@(posedge sys_clk )     //cnt_bit:[0]12345678[9][10]
          if(!rst_n)
             data_reg <= 0 ;
          else if ( rx_flag == 1 )begin
               if ( cnt_bit > 0 && cnt_bit < 10 && cnt == MID - 1)
                    data_reg[cnt_bit - 1 ] <= rx_data  ;
               else
                    data_reg <= data_reg  ;
          end
          else
          data_reg <= 0 ;
 
 check
   reg                  check   ;
   always@(posedge sys_clk )
        if(!rst_n)
           check <= 0 ;
        else if ( rx_flag == 1 )begin
             if ( cnt_bit == 10 )
                 check <= ^data_reg  ;
             else
                 check <= 0 ;
        end
        else
        check <= 0 ;
 
 uart_data
 parameter            MODE_CHECK = 0 ;
 
    always@(posedge sys_clk )
         if(!rst_n)
            uart_data <= 0 ;
         else if ( rx_flag == 1 )begin
              if ( cnt_bit == 10 && cnt == 10 && check == MODE_CHECK)
                   uart_data <= data_reg[7:0] ;
              else
                   uart_data <= uart_data  ;
         end
         else
         uart_data <= uart_data  ;
 
 rx_done

     always@(posedge sys_clk )
          if(!rst_n)
             rx_done <= 0 ;
          else if ( rx_flag == 1 )begin
               if ( cnt_bit == 10 && cnt == MID/2 - 1 )
                    rx_done <= 1 ;
               else
                    rx_done <= 0 ;
          end
          else
          rx_done <= 0 ;
        
 
 
//做测试用的 
// wire          tx_done     ;          
// wire          tx_data     ;         
// uart_tx uart_tx_u1(
//                       .    sys_clk   (sys_clk )    ,
//                       .    rst_n     (rst_n   )    ,
//                       .    ram_out   (uart_data )    , //uart_data(douta)
//                       .    tx_start  (rx_done)    , //rx_done
//                       .    tx_done   (tx_done )     ,
//                       .    tx_data   (tx_data )
//    );         
          

    
    
endmodule

发送端模块:

`timescale 1ns / 1ps
module uart_tx(
   input                 sys_clk   ,
   input                 rst_n     ,
   input     [7:0]       ram_out   , //uart_data(douta)
   input                 tx_start  , //rx_done
   output    reg         tx_done    ,
   output    reg         tx_data 
    );
    parameter             SYSCLK = 50_000_000  ;
    parameter             Baud   = 115200      ;
    parameter             COUNT  = SYSCLK/Baud ;
    parameter             MID    = COUNT/2     ;
    
    //start_flag
    reg               tx_reg1    ;
    reg               tx_reg2    ;
    wire              start_flag ;
    
    always@(posedge sys_clk )
         if(!rst_n)begin
            tx_reg1 <= 0 ;
            tx_reg2 <= 0 ;
         end
         else
             begin
                  tx_reg1 <= tx_start ;
                  tx_reg2 <= tx_reg1  ;
             end
     assign  start_flag = tx_reg1 & ~tx_reg2  ;
     
     ///tx_flag
     reg                   tx_flag  ;
     reg[9:0]              cnt      ;
     reg[4:0]              cnt_bit  ;
     
     always@(posedge sys_clk )
          if(!rst_n)     
             tx_flag <= 0 ;
          else if ( start_flag == 1 )
             tx_flag <= 1 ;
          else if ( cnt_bit == 10 && cnt == COUNT -1 )
//          else if ( cnt_bit == 10 && cnt == MID -1 )
             tx_flag <= 0 ;
          else
             tx_flag <= tx_flag ;
     
     cnt
     always@(posedge sys_clk )
          if(!rst_n)
             cnt <= 0 ;
          else if ( tx_flag == 1 )begin
               if ( cnt == COUNT - 1 )
                    cnt <= 0 ;
               else
                    cnt <= cnt +1 ;
          end
          else
          cnt <= 0 ;
  
  //cnt_bit
     always@(posedge sys_clk )
          if(!rst_n)
             cnt_bit <= 0 ;
          else if ( tx_flag == 1 )begin
               if ( cnt == COUNT - 1 )begin
                   if ( cnt_bit == 10 )
                        cnt_bit <= 0 ;
                   else
                        cnt_bit <= cnt_bit +1 ;
               end
               else
               cnt_bit <= cnt_bit  ;
          end
          else
          cnt_bit <= 0 ;
  
  ///tx_data
     parameter            MODE_CHECK = 0 ;
     always@( posedge sys_clk )
          if(!rst_n)
             tx_data <= 1 ;
          else if ( tx_flag == 1 )begin
               if ( cnt_bit > 0 && cnt_bit < 9 )
                    tx_data <= ram_out[cnt_bit -1]  ;
               else if ( cnt_bit == 0 )
                    tx_data <= 0 ;
               else if ( cnt_bit == 9 ) 
                    tx_data <= ( MODE_CHECK == 0 )? ^ram_out :~^ram_out ;
               else if ( cnt_bit == 10 )
                    tx_data <= 1 ;
               else
                    tx_data <= tx_data  ;
          end
          else
          tx_data <= 1 ;
 
   //tx_done 
     always@(posedge sys_clk )
          if(!rst_n)
             tx_done <= 0 ;
          else if ( tx_flag == 1 )begin
               if ( cnt_bit == 10 && cnt == COUNT - 1 )
//               if ( cnt_bit == 10 && cnt == MID/2 - 1 )
                     tx_done <= 1 ;
               else
                     tx_done <= 0 ;
          end
          else
          tx_done <= 0 ;
     

    
endmodule

RAM模块:

`timescale 1ns / 1ps
module private_ram_ctrl(
     input                 sys_clk     ,
     input                 rst_n       ,
     input                 key_flag    ,
     input    [7:0]        uart_data   ,
     input                 rx_done     ,
     input                 tx_done     ,
     output   reg[7:0]     ram_out     ,     
     output   reg          tx_start       
    );
    reg              wea       ;
    reg[3:0]         addra     ;
    reg[7:0]         dina      ;
    wire[7:0]        douta     ;
    
    //状态机
    localparam             IDLE    =  3'd0  ;
    localparam             WR_D    =  3'd1  ;
    localparam             WAIT    =  3'd2  ;
    localparam             TX_FIR  =  3'd3  ;
    localparam             TX_D    =  3'd4  ;
    
    reg[2:0]               cur_state     ;
    reg[2:0]               next_state    ;
    
    reg[7:0]               wr_len         ;
    reg[7:0]               wr_cnt         ;

    
    always@(posedge sys_clk )
         if(!rst_n)
            cur_state <= IDLE  ;
         else 
            cur_state <= next_state ;
            
    
    always@(*)
         case(cur_state)
             IDLE     : 
                       begin
                            if (rx_done)//指令数据的接收完成信号
                                next_state = WR_D ;
                            else
                                next_state = cur_state ;
                       end
             WR_D     :
                       begin
                            if( wr_len == wr_cnt )
                               next_state = WAIT  ;
                            else
                               next_state = cur_state ;
                       end
             WAIT     :
                       begin
                            if( key_flag )
                               next_state = TX_FIR  ;
                            else
                               next_state = cur_state ;
                       end
             TX_FIR   :
                       begin
                             next_state = TX_D  ;
                       end
             TX_D     :
                       begin
                            if ( wr_len == wr_cnt )
                                next_state = IDLE ;
                            else
                                next_state = cur_state  ;
                       end
         default:;
         endcase
      
      always@(posedge sys_clk )
           if(!rst_n)begin
              wr_len <= 0 ;
              wr_cnt <= 0 ;
              wea    <= 0 ;
              addra  <= 4'hf ;利用溢出功能   15
              dina   <= 0 ;
              tx_start <= 0 ;
              ram_out <= 0 ; ///ram_out <= douta
           end
           else
               case(cur_state)
                    IDLE  : 
                           begin
                                wr_len <= 0 ;   
                                wr_cnt <= 0 ;   
                                wea    <= 0 ;  
                                dina   <= 0 ; 
                                addra  <= 4'hf ;
                                tx_start <= 0 ;
                                if(rx_done)
                                   wr_len <= uart_data ;
                                else
                                   wr_len <= wr_len  ;
                           end  
                    WR_D  :
                           begin
                                 tx_start <= 0 ;
                                if ( rx_done )begin
                                    addra <= addra +1 ;
                                    wea <= 1 ;
                                    wr_cnt <= wr_cnt +1 ;
                                    dina <= uart_data ;
                                end
                                else
                                    wea <= 0 ;//其他的不用写会自动保持
                           end
                    WAIT  :
                           begin
                                tx_start <= 0 ;
                                addra <= 0 ;//保证发送数据的时候是从0开始发的
                                dina  <= 0 ;
                                wr_cnt <= 0 ;
                           end
                    TX_FIR:  //只待一个时钟周期
                           begin
                                tx_start <= 1 ;
                                addra <= addra + 1 ; //addra从0开始加
                                wr_cnt <= wr_cnt +1 ;
                                ram_out <= douta  ;
                           end
                    TX_D  :
                           begin
                                if(tx_done)begin
                                   tx_start <= 1 ;
                                   addra <= addra +1 ;
                                   wr_cnt <= wr_cnt +1; 
                                   ram_out <= douta  ;
                                end
                                else
                                   tx_start <= 0 ;
                           end
               default:;
               endcase
      
      
           
    
      single_ram your_instance_name (
  .clka(sys_clk),    // input wire clka
  .wea(wea),      // input wire [0 : 0] wea
  .addra(addra),  // input wire [3 : 0] addra
  .dina(dina),    // input wire [7 : 0] dina
  .douta(douta)  // output wire [7 : 0] douta
);
endmodule

顶层模块:

`timescale 1ns / 1ps
module TOP(
   input                sys_clk ,
   input                rst_n   ,
   input                key     ,
   input                rx_data ,
   output               tx_data 
    );
   ///key_debounce
   wire              key_flag  ;
   key_debounce  key_debounce_u1(
                            .   sys_clk   (sys_clk )    ,
                            .   rst_n     (rst_n   )    ,
                            .   key       (key     )    ,
                            .   key_flag  (key_flag)     
    );
   
   //private_ram_ctrl
   wire[7:0]           uart_data   ;
   wire                rx_done     ;
   wire                tx_done     ;
   wire[7:0]           ram_out     ;  
   wire                tx_start    ;
   private_ram_ctrl private_ram_ctrl_u1(
                             .    sys_clk   (sys_clk  )  ,
                             .    rst_n     (rst_n    )  ,
                             .    key_flag  (key_flag )  ,
                             .    uart_data (uart_data)  ,
                             .    rx_done   (rx_done  )  ,
                             .    tx_done   (tx_done  )  ,
                             
                             .    tx_start (tx_start)   ,
                             .    ram_out   (ram_out  )       

    );
  
  /uart_rx
  uart_rx uart_rx_u2(
                             .    sys_clk   (sys_clk  )  , 
                             .    rst_n     (rst_n    )  , 
                             .    rx_data   (rx_data  )  , 
                             
                             .    uart_data (uart_data)  , 
                             .    rx_done   (rx_done  )  
      ); 
  
  uart_tx

  uart_tx  uart_tx_u1(
                             .    sys_clk  (sys_clk ), //sys_clk  ,
                             .    rst_n    (rst_n   ), //rst_n    ,
                             .    ram_out  (ram_out ), //ram_out  , //uart_data(douta)
                             .    tx_start (tx_start), //tx_start , //rx_done
                             .    tx_done  (tx_done ), //tx_done   ,
                             .    tx_data  (tx_data ) //tx_data 
    );

    
endmodule

五、仿真结果

仿真uart_rx模块:

`timescale 1ns / 1ps
module test_uart_rx( );

   reg                    sys_clk   ;
   reg                    rst_n     ;
   reg                    rx_data   ;
   wire[7:0]              uart_data ;
   wire                   rx_done   ;
   
   parameter               SYSCLK = 50_000_000 ;
   parameter               Baud   = 115200     ;
   parameter               COUNT  = SYSCLK/Baud;
   parameter               MID    = COUNT/2    ;
   
   initial
          begin
               sys_clk = 0 ;
               rst_n   = 0 ;
               #10
               rst_n   = 1 ;
          end
   always  #1  sys_clk = ~sys_clk ;
   
   initial
          begin
               uart_out ( 8'hCC );
               uart_out ( 8'hC8 );
               uart_out ( 8'h18 );
               uart_out ( 8'h78 );
               uart_out ( 8'h66 );
               uart_out ( 8'h1E );
               uart_out ( 8'hCC );
               uart_out ( 8'h9F );
               uart_out ( 8'h66 );
               uart_out ( 8'h9F );
               uart_out ( 8'h33 );
               uart_out ( 8'h1E );
               uart_out ( 8'hCC );
               uart_out ( 8'h9F );
               uart_out ( 8'h18 );
               uart_out ( 8'h33 );
               uart_out ( 8'hCC );
          end
   
   
   
   //任务函数
   task            uart_out  ;
       input    [8:0]    DATA   ;
       begin
            rx_data = 1 ; ///空闲位初始
            #20
            rx_data = 0 ;
            #(COUNT*2)    rx_data = DATA[0]  ;
            #(COUNT*2)    rx_data = DATA[1]  ;
            #(COUNT*2)    rx_data = DATA[2]  ;
            #(COUNT*2)    rx_data = DATA[3]  ;
            #(COUNT*2)    rx_data = DATA[4]  ;
            #(COUNT*2)    rx_data = DATA[5]  ;
            #(COUNT*2)    rx_data = DATA[6]  ;
            #(COUNT*2)    rx_data = DATA[7]  ;
            #(COUNT*2)    rx_data = 0        ;
            #(COUNT*2)    rx_data = 1        ;
            #(COUNT*2)                       ;
       end
   endtask
   

uart_rx  uart_rx_u1(
                  .       sys_clk   (sys_clk  ) ,
                  .       rst_n     (rst_n    ) ,
                  .       rx_data   (rx_data  ) ,
                  .       uart_data (uart_data) ,
                  .       rx_done   (rx_done  )
    );
endmodule

仿真TOP模块:

`timescale 1ns / 1ps
module test_TOP( );

   reg                sys_clk    ;
   reg                rst_n      ;
   reg                key        ;
   reg                rx_data    ;
   wire               tx_data    ;
   
      
      parameter               SYSCLK = 50_000_000 ;
      parameter               Baud   = 115200     ;
      parameter               COUNT  = SYSCLK/Baud;
      parameter               MID    = COUNT/2    ;
      
      initial
             begin
                  sys_clk = 0 ;
                  rst_n   = 0 ;
                  key     = 1 ;
                  #10
                  rst_n   = 1 ;
                  #200000//ns   200us
                  key     = 0 ;
//                  #200000
//                  key     = 1 ;
//                  #200000
//                  key     = 0 ;
//                  #200000
//                  key     = 1 ;
                  
             end
      always  #1  sys_clk = ~sys_clk ;
      
      initial
             begin
//                  uart_out ( 8'hf  );//0f   0000_1111
//                  uart_out ( 8'h0f );
//                  uart_out ( 8'hff );
                  uart_out ( 8'h0f  );
                  uart_out ( 8'h33  );
//                  uart_out ( 8'hff );//1111_1111
                  uart_out ( 8'h18 );//0001_1000
                  uart_out ( 8'h78 );
                  uart_out ( 8'h66 );
                  uart_out ( 8'h1E );
                  uart_out ( 8'hCC );
                  uart_out ( 8'h9F );
                  uart_out ( 8'h66 );
                  uart_out ( 8'h9F );
                  uart_out ( 8'h33 );
                  uart_out ( 8'h1E );
                  uart_out ( 8'hCC );
                  uart_out ( 8'h9F );
                  uart_out ( 8'h18 );
                  uart_out ( 8'h33 );

             end
 
 
 
      //任务函数
      task            uart_out  ;
          input    [8:0]    DATA   ;
          begin
               rx_data = 1 ; ///空闲位初始
               #20
               rx_data = 0 ;
               #(COUNT*2)    rx_data = DATA[0]  ;
               #(COUNT*2)    rx_data = DATA[1]  ;
               #(COUNT*2)    rx_data = DATA[2]  ;
               #(COUNT*2)    rx_data = DATA[3]  ;
               #(COUNT*2)    rx_data = DATA[4]  ;
               #(COUNT*2)    rx_data = DATA[5]  ;
               #(COUNT*2)    rx_data = DATA[6]  ;
               #(COUNT*2)    rx_data = DATA[7]  ;
               #(COUNT*2)    rx_data = 0        ;
               #(COUNT*2)    rx_data = 1        ;
               #(COUNT*2)                       ;
          end
      endtask
 
 


TOP  TOP_u1(
               .   sys_clk (sys_clk)  ,
               .   rst_n   (rst_n  )  ,
               .   key     (key    )  ,
               .   rx_data (rx_data)  ,
               .   tx_data (tx_data)  
    );




endmodule

这里记录一些小小的问题:

(1)

仿真的复位信号一定不要和数据的关键信号(使能/开始)重复。

这个是正常没重复的:

这个是由于复位拉高的时间过长造成重复了的:

(2)

因此我们可以做出如下的修改:

现在就正常了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FVCOM水环境、污染物迁移、水交换、水质、潮流、温盐、波浪及泥沙数值模拟

原文链接&#xff1a;FVCOM水环境、污染物迁移、水交换、水质、潮流、温盐、波浪及泥沙数值模拟https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247607618&idx2&sn5132fb8bfcbd02c2be308f6c6304c6d2&chksmfa8264a5cdf5edb3226d1b0597bb6c39f867601b961b…

[开源软件] 支持链接汇总

“Common rules: 1- If the repo is on github, the support/bug link is also on the github with issues”" label; 2- Could ask questions by email list;" 3rd party software support link Note gcc https://gcc.gnu.org openssh https://bugzilla.mindrot.o…

Web3 ETF 的软件开发框架

Web3 ETF 的软件开发框架主要包含以下几个方面&#xff0c;需要说明的是&#xff0c;Web3 ETF 仍处于早期发展阶段&#xff0c;相关技术和标准尚未成熟。在开发 Web3 ETF 时&#xff0c;需要谨慎评估风险&#xff0c;并做好安全防范措施。北京木奇移动技术有限公司&#xff0c;…

解决卡顿发热,超帧技术焕发中重载游戏动力

近几年&#xff0c;中国手游市场规模不断扩大&#xff0c;开发者通过在画面、玩法等方面的持续创新和打磨&#xff0c;推出更加精品化的产品。然而愈发精美的画质和复杂的玩法&#xff0c;也给硬件带来超高的负载&#xff0c;导致玩家在游戏过程中&#xff0c;频繁出现掉帧卡顿…

C++基础知识-编译相关

记录C语言相关的基础知识 1 C源码到可执行文件的四个阶段 预处理(.i)、编译(.s)、汇编(.obj)、链接。 1.1 预处理 预处理阶段&#xff0c;主要完成宏替换、文件展开、注释删除、条件编译展开、添加行号和文件名标识&#xff0c;输出.i/.ii预处理文件。 宏替换&#xff0c;…

【AIGC评测体系】大模型评测指标集

大模型评测指标集 &#xff08;☆&#xff09;SuperCLUE&#xff08;1&#xff09;SuperCLUE-V&#xff08;中文原生多模态理解测评基准&#xff09;&#xff08;2&#xff09;SuperCLUE-Auto&#xff08;汽车大模型测评基准&#xff09;&#xff08;3&#xff09;AIGVBench-T2…

python_zabbix

zabbix官网地址&#xff1a;19. API19. APIhttps://www.zabbix.com/documentation/4.2/zh/manual/api 每个版本可以有些差异&#xff0c;选择目前的版本在查看对于的api接口#token接口代码 import requests apiurl "http://zabbix地址/api_jsonrpc.php" data {&quo…

顺序串算法库构建

学习贺利坚老师顺序串算法库 数据结构之自建算法库——顺序串_创建顺序串s1,创建顺序串s2-CSDN博客 本人详细解析博客 串的概念及操作_串的基本操作-CSDN博客 版本更新日志 V1.0: 在贺利坚老师算法库指导下, 结合本人详细解析博客思路基础上,进行测试, 加入异常弹出信息 v1.0补…

从零开始:如何设计一个现代化聊天系统

写在前面: 此博客内容已经同步到我的博客网站,如需要获得更优的阅读体验请前往https://mainjaylai.github.io/Blog/blog/system/chat-system 在当今数字化时代,聊天系统已成为我们日常生活和工作中不可或缺的一部分。从个人交流到团队协作,从客户服务到社交网络,聊天应用…

内网渗透第四天!!!冲冲冲!!怎么绕过uac以及你会all劫持???不安全的服务路径以及服务权限,你会吗???

在第三天我们简单的说了一下绕过uac&#xff0c;但是我们使用的msf模块ask要对方管理员跟我们一起来进行操作&#xff0c;才可以进行提权的操作&#xff0c;这点就限制住了我们。我们今天来讲一下不用钓鱼的绕过的操作。 绕过uac&#xff1a; 使用uacme项目和msf联动来进行绕过…

AD9026芯片开发实录6-example code

官方发布的软件包中&#xff0c;带了一份example code&#xff0c;用于向客户展示API的调用方法以及基于官方的验证版ADRV902X最简单的bring up的流程。 该 example 位于软件包的路径下&#xff1a;“\Adi.Adrv9025.Api\src\c_src\app\example\”。 代码组成&#xff1a; initd…

.NET周刊【6月第5期 2024-06-30】

国内文章 呼吁改正《上海市卫生健康信息技术应用创新白皮书》 C# 被认定为A 组件 的 错误认知 https://www.cnblogs.com/shanyou/p/18264292 近日&#xff0c;《上海市卫生健康“信息技术应用创新”白皮书》发布&#xff0c;提到医疗信创核心应用适配方法及公立医院信息系统…

2024 年江西省研究生数学建模竞赛题目 A题交通信号灯管理---完整文章分享(仅供学习)

问题&#xff1a; 交通信号灯是指挥车辆通行的重要标志&#xff0c;由红灯、绿灯、黄灯组成。红灯停、绿灯行&#xff0c;而黄灯则起到警示作用。交通信号灯分为机动车信号灯、非机动车信号灯、人行横道信号 灯、方向指示灯等。一般情况下&#xff0c;十字路口有东西向和南北向…

二刷 动态规划

什么是动态规划 Dynamic Programming DP 如果某一问题有很多重叠子问题&#xff0c;使用动态规划时最有效的 动态规划中每一个状态是由上一个状态推导出来的。 动规五部曲 1.确定dp数组以及下标的含义 2.确定递归公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数…

分班查询系统,老师们应该如何制作?

新学期的开始&#xff0c;作为教师&#xff0c;我们面临的一项关键任务就是组织分班。传统分班方法往往需要处理大量的数据&#xff0c;这个过程不仅耗时&#xff0c;而且容易出错。为了简化这一流程&#xff0c;提高效率&#xff0c;我们可以利用现代技术&#xff0c;创建一个…

VSCode打开其它IDE项目注释显示乱码的解决方法

问题描述&#xff1a;VSCode打开Visual Studio&#xff08;或其它IDE&#xff09;工程&#xff0c;注释乱码&#xff0c;如下图所示&#xff1a; 解决方法&#xff1a;点击VSCode右下角的UTF-8&#xff0c;根据提示点击“通过编码重新打开”&#xff0c;再选择GB2312&#xff0…

【触想智能】工业平板电脑在新能源领域上的应用分析

工业平板电脑是一种具有高性能和稳定性的计算机设备&#xff0c;适用于在恶劣环境下进行数据采集、运营管理和现场操作。 随着新能源技术的快速发展&#xff0c;工业平板电脑不断地得到应用&#xff0c;并且已成为新能源领域中的重要工具之一。本文将从四个方面探讨工业平板电脑…

VMware Mac/Win 虚拟机软件介绍

VMware作为全球领先的虚拟化技术提供商&#xff0c;其Mac/Win虚拟机软件为用户带来了前所未有的跨平台操作体验。这款软件凭借其强大的功能和稳定的性能&#xff0c;成为了众多开发者、设计师、企业用户以及个人用户的首选工具。 强大的多操作系统支持 VMware Mac/Win 虚拟机…

c++习题06-ljc的储蓄计划

目录 一&#xff0c;问题 二&#xff0c;思路 1&#xff0c;思路1 2&#xff0c;思路2 三&#xff0c;代码 1&#xff0c;思路1代码 2&#xff0c;思路2代码 四&#xff0c;用例输入输出 一&#xff0c;问题 二&#xff0c;思路 1&#xff0c;思路1 定义变量&#x…

频繁调价不用愁,统一销售报价话术就用聊天宝

前言 在当今的数字化时代&#xff0c;企业面临着日益增长的客户服务需求&#xff0c;特别是在电商、销售等领域。客服团队的效率和响应速度直接影响到客户满意度和企业的专业形象。面对频繁变动的价格信息和销售策略&#xff0c;如何确保客服回复的及时性和准确性成为了一大挑…