按键+串口发送实验

摸鱼记录 Day_15     ~( ̄▽ ̄~)(~ ̄▽ ̄)~

review

        前边已经学习了:

        串口发送Vivado 串口通信(UART)------串口发送-CSDN博客

        按键基于状态机的按键消抖实现-CSDN博客

1.  今日摸鱼任务

控制四个按键[3:0]key

按下按键后:

                    使用串口发送对应的拨码开关的值到电脑

                    发送完成后对应的led闪烁

 2. design sources

key_one   基于状态机的按键消抖实现-CSDN博客

module key_one(
                 input clk , 
                 input reset_n,
                 input key,
                 output reg key_flag,
                 output reg key_state);
                 
        // nedge_key pedge_key
        reg dff_k_0 , dff_k_1 ;
        reg r_key; 
        wire  nedge_key, pedge_key;
        always@(posedge clk )    
            dff_k_0 <= key ;
        always@(posedge clk )    
            dff_k_1 <= dff_k_0 ;
        always@(posedge clk )    
            r_key <= dff_k_1 ;
            
        assign nedge_key = (r_key == 1)&&(dff_k_1 == 0);
        assign pedge_key = (r_key == 0)&&(dff_k_1 == 1);
   
        // key_now   0:IDLE   1:FILTER0   2:DOWN   3:FILTER1
        // cnt 20ms/20ns = 1000000 ;
        reg [1:0]key_now;
        reg [19:0] cnt;
        parameter cnt_N = 1000000;
        always@(posedge clk or negedge reset_n ) 
            if(!reset_n) 
                begin
                    key_now <= 0 ;
                    cnt <= 0;
                    key_flag <= 0;
                    key_state <= 1;
                end
            else 
                begin
                    key_flag <= 0;
                    case(key_now)
                        0:
                           if(!nedge_key) key_now <= 0;
                           else 
                               begin 
                                 cnt <= 0 ;
                                 key_now <= 1; 
                               end
                               
                        1:
                            if(pedge_key) key_now <= 0;
                            else if(cnt >= cnt_N - 1) 
                                begin
                                    cnt <= 0 ;
                                    key_now <= 2;
                                    key_flag <= 1;
                                    key_state <= 0;
                                end
                            else cnt <= cnt + 1'b1;
                            
                        2:
                            if(!pedge_key) key_now <= 2;
                            else
                                begin
                                    cnt <= 0 ;
                                    key_now <= 3;
                                end
                        
                        3:
                            if(nedge_key) key_now <= 2;
                            else if(cnt >= cnt_N - 1)
                                 begin
                                    cnt <= 0 ;
                                    key_now <= 0;
                                    key_flag <= 1;
                                    key_state <= 1;
                                end
                            else cnt <= cnt + 1'b1;    
                        
                    endcase
                end

endmodule

uart_txx   Vivado 串口通信(UART)原理A ------串口发送实验-CSDN博客

module uart_txx(input clk , 
                input reset_n , 
                input [7:0]data , 
                input Send_Go ,
                output  reg uart_tx_ , 
                output reg Tx_Done  );
        //默认使用波特率BAUD 115200  时钟频率 CLK_FREQ  50MHz
    parameter start_bit = 0 ;
    parameter stop_bit  = 1 ;
    parameter BAUD = 115200;
    parameter CLK_FREQ = 50_000_000;
    parameter bps_c = CLK_FREQ / BAUD ;    
    
        reg Send_en ; 
        always@(posedge clk or negedge reset_n )
        if(! reset_n) 
            Send_en <= 0 ;
        else if(Send_Go)
            Send_en <= 1 ; 
        else if((tx_flag==9)&&(counter_bps == bps_c - 1)) 
            Send_en <= 0 ;
        
      // bps
      reg [30:0] counter_bps ;        
      always@(posedge clk or negedge reset_n)
        if(! reset_n) 
            counter_bps <= 0 ;
        else if (Send_en)
            if(counter_bps == bps_c - 1)
                counter_bps <= 0 ;
            else
                counter_bps <= counter_bps + 1'b1 ;
        else
            counter_bps <= 0 ;
            
      // 发送状态
      reg [3:0] tx_flag;
      always@(posedge clk or negedge reset_n)
        if(! reset_n) 
            tx_flag <= 0 ;
        else if (!Send_en) tx_flag <= 0 ;
        else if ((tx_flag==9)&&(counter_bps == bps_c - 1))
             tx_flag <= 0 ;
        else
             if(counter_bps == bps_c - 1)
                tx_flag <= tx_flag + 1'b1 ;
                
//       Send_Go改变发送信号         
        reg [7:0]r_data;
        always@(posedge clk)
        if(Send_Go)
         r_data <= data;
        else
         r_data <= r_data;                    
         
    //  tx_flag          
       always@(*)
       if(!Send_en) 
            uart_tx_ <= 1'b1;
       else
        begin 
            case(tx_flag)
            4'b0000 : uart_tx_ <= start_bit;
            4'b0001 : uart_tx_ <= r_data[0];
            4'b0010 : uart_tx_ <= r_data[1];
            4'b0011 : uart_tx_ <= r_data[2];
            4'b0100 : uart_tx_ <= r_data[3];
            4'b0101 : uart_tx_ <= r_data[4];
            4'b0110 : uart_tx_ <= r_data[5];
            4'b0111 : uart_tx_ <= r_data[6];
            4'b1000 : uart_tx_ <= r_data[7];
            4'b1001 : uart_tx_ <= stop_bit;
            default : uart_tx_ <= uart_tx_;
            endcase
            
        end      
        
        
        always@(posedge clk )        
        Tx_Done <= (tx_flag==9)&&(counter_bps == bps_c - 1);
     
endmodule

//以上两个函数对应之前的学习笔记
开始主函数哩:
key_main

module key_main( input clk , 
                 input reset_n,
                 input [3:0]key,
                 input [7:0]data,
                 output [3:0] key_state,           //按键状态判断,可用key_one 获得
                 output reg tx_data,                //串口输出
                 output [3:0] led                     // 串口发送完成信号,可用uart_txx 获得

                 );

        //四个按键

       wire [3:0] key_flag;

                key_one   

                                key_0

                                key_1

                                key_2

                                key_3

        //对应uart_tx

        wire [3:0] tx_data_;

endmodule

一开始的想法当然很简单啦~

第一个问题:uart_txx  uart_tx_0(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(key_flag[0] ),. uart_tx_(tx_data_[0]) , . Tx_Done(led[0])  );

        用key_flag[0] 作为串口发送使能信号,key_flag[0] 在按键按下、释放都会产生脉冲信号,故在按键按下会发送两次信号

解决方法:if((key_flag[0])&&(key_state[0]==0))  Send_Go_[0] <=  1'b1 ;

                        添加使能信号 reg [3:0]Send_Go_ ; 

第二个问题:

[DRC MDRV-1] Multiple Driver Nets: Net uart_tx_3/tx_data_OBUF has multiple drivers: uart_tx_2/uart_tx__reg/Q, uart_tx_3/uart_tx__reg/Q, uart_tx_0/uart_tx__reg/Q, and uart_tx_1/uart_tx__reg/Q.
                有多个端口驱动一个网络,也就是程序中出现了相同变量的网络号。

uart_txx  uart_tx_0(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[0]) ,. uart_tx_(tx_data) ,. Tx_Done(led[0])  );     
    uart_txx  uart_tx_1(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[1]) ,. uart_tx_(tx_data) , . Tx_Done(led[1])  ); 
    uart_txx  uart_tx_2(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[2]) ,. uart_tx_(tx_data) , . Tx_Done(led[2])  ); 
    uart_txx  uart_tx_3(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[3]) ,. uart_tx_(tx_data) , . Tx_Done(led[3])  );   

解决方法:     wire [3:0] tx_data_;

                       并添加reg [3:0]Send_Go_flag ; 控制  tx_data此时的输出信号

module key_main( input clk , 
                 input reset_n,
                 input [3:0]key,
                 input [7:0]data,
                 output [3:0] key_state,
                 output reg tx_data,
                 output [3:0] led    );
    parameter cnt_num = 1000000;
    wire [3:0] key_flag;
    key_one   key_0(. clk(clk) ,  . reset_n(reset_n),. key(key[0]),
                    .  key_flag(key_flag[0]),.  key_state(key_state[0]));
                    defparam key_0.cnt_N = cnt_num;
    key_one   key_1(. clk(clk) ,  . reset_n(reset_n),. key(key[1]),
                    .  key_flag(key_flag[1]),.  key_state(key_state[1]));
                    defparam key_1.cnt_N = cnt_num;
    key_one   key_2(. clk(clk) ,  . reset_n(reset_n),. key(key[2]),
                    .  key_flag(key_flag[2]),.  key_state(key_state[2]));
                    defparam key_2.cnt_N = cnt_num;
    key_one   key_3(. clk(clk) ,  . reset_n(reset_n),. key(key[3]),
                    .  key_flag(key_flag[3]),.  key_state(key_state[3]));
                    defparam key_3.cnt_N = cnt_num;
    reg [3:0]Send_Go_ ; 
        always@(posedge clk or negedge reset_n )
        if(! reset_n)   Send_Go_ <=  4'b0000 ;
        else if((key_flag[0])&&(key_state[0]==0))  Send_Go_[0] <=  1'b1 ;
        else if((key_flag[1])&&(key_state[1]==0))  Send_Go_[1] <=  1'b1 ;
        else if((key_flag[2])&&(key_state[2]==0))  Send_Go_[2] <=  1'b1 ;
        else if((key_flag[3])&&(key_state[3]==0))  Send_Go_[3] <=  1'b1 ;
        else   Send_Go_ <=  4'b0000 ;                

    wire [3:0] tx_data_;
    uart_txx  uart_tx_0(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[0]) ,. uart_tx_(tx_data_[0]) , . Tx_Done(led[0])  );     
    uart_txx  uart_tx_1(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[1]) ,. uart_tx_(tx_data_[1]) , . Tx_Done(led[1])  ); 
    uart_txx  uart_tx_2(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[2]) ,. uart_tx_(tx_data_[2]) , . Tx_Done(led[2])  ); 
    uart_txx  uart_tx_3(. clk(clk) ,  . reset_n(reset_n), . data(data) , 
                . Send_Go(Send_Go_[3]) ,. uart_tx_(tx_data_[3]) , . Tx_Done(led[3])  );    
                
   reg [3:0]Send_Go_flag ; 
        always@(posedge clk or negedge reset_n )
        if(! reset_n)   Send_Go_flag <=  4'b0000 ;
        else if(Send_Go_[0]) Send_Go_flag[0] <=  1'b1 ;
        else if(led[0]) Send_Go_flag[0] <=  1'b0 ;  
        else if(Send_Go_[1])  Send_Go_flag[1] <=  1'b1 ;
        else if(led[1])  Send_Go_flag[1] <=  1'b0 ;
        else if(Send_Go_[2]) Send_Go_flag[2] <=  1'b1 ;
        else if(led[2]) Send_Go_flag[2] <=  1'b0 ;  
        else if(Send_Go_[3])  Send_Go_flag[3] <=  1'b1 ;
        else if(led[3])  Send_Go_flag[3] <=  1'b0 ;          
        
        
        always@(posedge clk or negedge reset_n )
        if(! reset_n)   tx_data <=  1'b1 ;  
        else if(Send_Go_flag[0]) tx_data <= tx_data_[0]; 
        else if(Send_Go_flag[1]) tx_data <= tx_data_[1]; 
        else if(Send_Go_flag[2]) tx_data <= tx_data_[2]; 
        else if(Send_Go_flag[3]) tx_data <= tx_data_[3]; 
        else  tx_data <=  1'b1 ;                                       
endmodule

3.   key_tb

`timescale 1ns / 1ns
module key_tb(   );
    reg clk ,  reset_n ;
    reg [3:0]key;
    reg [7:0]data;
    wire [3:0]key_state;
    wire tx_data;
    wire [3:0]led;
    parameter cut_time = 1000;
    key_main   key_4( . clk(clk) ,  . reset_n(reset_n),. key(key),.data(data),
                    .  key_state(key_state),
                    . tx_data(tx_data), .led(led) );
                defparam key_4.cnt_num = cut_time;
    initial clk = 1;
    always#10 clk = ~clk ;
    initial
        begin
          reset_n = 0 ;
          key = 4'b1111;
          #201;
          reset_n = 1 ;  
          key_press(2);
          $stop;  
        end
    
 reg [13:0] rand;
 task key_press;
    input[3:0]seed;
    begin
        key =  4'b1111 ;
        data = 8'b1111_0000;
        #100000;
// key[0]
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[0]=~key[0];
            end
        key = 4'b1110 ;
        #100000;
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[0]=~key[0];
            end
         key = 4'b1111 ;
         data = 8'b1100_1100;
        #100000;
 // key[1]
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[1]=~key[1];
            end
        key = 4'b1101 ;
        #100000;
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[1]=~key[1];
            end
         key = 4'b1111 ;
         data = 8'b0101_1010;
        #100000; 
// key[2]
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[2]=~key[2];
            end
        key = 4'b1011;
        #100000;
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[2]=~key[2];
            end
         key = 4'b1111 ;
         data = 8'b1100_1100;
        #100000;
// key[3]        
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[3]=~key[3];
            end
        key = 4'b0111 ;
        #100000;
        repeat(10)
            begin
                rand = {$random(seed)} % 10000;
                #rand;
                key[3]=~key[3];
            end
         key = 4'b1111 ;
         data = 8'b1100_1100;
        #100000;
    end
   
endtask
 
endmodule

4. constraint

set_property IOSTANDARD LVCMOS33 [get_ports {data[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {data[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {data[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {data[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {data[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {data[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {data[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {data[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key_state[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key_state[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key_state[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {key_state[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports reset_n]
set_property IOSTANDARD LVCMOS33 [get_ports tx_data]
set_property PACKAGE_PIN U18 [get_ports clk]
set_property PACKAGE_PIN H18 [get_ports reset_n]
set_property PACKAGE_PIN J16 [get_ports tx_data]
set_property PACKAGE_PIN E17 [get_ports {data[7]}]
set_property PACKAGE_PIN D18 [get_ports {data[6]}]
set_property PACKAGE_PIN H15 [get_ports {data[5]}]
set_property PACKAGE_PIN F16 [get_ports {data[4]}]
set_property PACKAGE_PIN K14 [get_ports {data[0]}]
set_property PACKAGE_PIN L15 [get_ports {data[1]}]
set_property PACKAGE_PIN G14 [get_ports {data[2]}]
set_property PACKAGE_PIN J14 [get_ports {data[3]}]
set_property PACKAGE_PIN J19 [get_ports {key[3]}]
set_property PACKAGE_PIN J20 [get_ports {key[2]}]
set_property PACKAGE_PIN H16 [get_ports {key[1]}]
set_property PACKAGE_PIN H20 [get_ports {key[0]}]
set_property PACKAGE_PIN G17 [get_ports {led[0]}]
set_property PACKAGE_PIN G19 [get_ports {led[1]}]
set_property PACKAGE_PIN G20 [get_ports {led[2]}]
set_property PACKAGE_PIN G18 [get_ports {led[3]}]
set_property PACKAGE_PIN K19 [get_ports {key_state[0]}]
set_property PACKAGE_PIN J18 [get_ports {key_state[1]}]
set_property PACKAGE_PIN H17 [get_ports {key_state[2]}]
set_property PACKAGE_PIN K18 [get_ports {key_state[3]}]

                //视频没办法插入,就这样子啦~

//好啦,摸鱼结束啦~( ̄▽ ̄~)(~ ̄▽ ̄)~

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

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

相关文章

STM32外设分类--学习笔记

简介: 本文在于根据自己的理解&#xff0c;将stm32f103外设按照功能分个类别&#xff0c;便于记忆。下面的几张图一定要熟悉&#xff0c;后期编写代码时能够快速找到想要的功能和对应的引脚。 我使用的工具链是&#xff1a;使用CubeMX完成keil5工程搭建和引脚初始化功能,然后用…

Grafana

介绍 官网&#xff1a;https://grafana.com/ Grafana 是一个开源的指标分析和可视化工具&#xff0c;它被广泛用于展示和监控云基础设施和应用程序的实时数据。Grafana 提供了一个强大且易于使用的界面&#xff0c;允许用户创建各种图表、图形和仪表盘&#xff0c;以直观地展…

探索HDFS读写流程、节点机制和数据完整性

目录 写在前面一、HDFS的读写流程1.1 HDFS写数据流程1.2 机架感知1.3 HDFS读数据流程1.4 小结 二、 NameNode和SecondaryNameNode2.1 NN和2NN工作机制2.2 Fsimage和Edits解析2.2.1 oiv查看Fsimage文件2.2.2 oev查看Edits文件 2.3 CheckPoint时间设置 三、DataNode3.1 DataNode工…

案例分析篇14:信息系统安全设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Unity URP 如何写基础的几何着色器

这是使用几何着色器在点中心生成一个点并根据这个点把原本的面片分成三个三角形的操作。 对于几何着色器构造相对简单&#xff0c;网上的信息也相对较多&#xff0c;需要注意的点就是需要提供一个新的数据结构供几何着色器输出&#xff0c;因为几何着色器在顶点之后&#xff0…

哈达玛矩阵与克罗内克积

哈达玛矩阵与克罗内克积在计算机视觉中发挥着重要作用,例如哈希感知等场景下都可能用到这两个知识点。 例如: 论文:Visually meaningful image encryption scheme based on new-designed chaotic map and random scrambling diffusion strategy 中有一句: “Construct a Ha…

UVC 设备框架在 Linux 4.15 内核的演变

1. 概述 发现之前的uvc框架和现在的还是有一些差别的&#xff08;比如从videobuf 过渡到videobuf2&#xff09;&#xff0c;写个blog记录一下&#xff0c;方便以后查询&#xff0c;我的内核版本&#xff1a;Linux 4.15 UVC&#xff08;USB Video Class&#xff09;设备框架是…

探秘Nutch:揭秘开源搜索引擎的工作原理与无限应用可能(三)

本系列文章简介&#xff1a; 本系列文章将带领大家深入探索Nutch的世界&#xff0c;从其基本概念和架构开始&#xff0c;逐步深入到爬虫、索引和查询等关键环节。通过了解Nutch的工作原理&#xff0c;大家将能够更好地理解搜索引擎背后的原理&#xff0c;并有能力利用Nutch构建…

Idea、VsCode、WebStorm常用插件

持续更新&#xff0c;见&#xff1a;工具库/Idea、VsCode、WebStorm常用插件.md 1. Idea 常用插件 MybatisX&#xff1a;mybatis选手必备&#xff0c;一键跳转&#xff0c;自动生成&#xff0c;节省开发效率。&#xff08;Java玩家必备&#xff09; GitToolBox&#xff1a;gi…

CPU服务器安装运行智谱大模型ChatGLM-6B

CPU运行智谱大模型ChatGLM-6B 说明 我的服务器配置是16C32G&#xff0c;跑大模型最好内存要大一些才行&#xff0c;不然跑不起来。 下载 git clone https://github.com/THUDM/ChatGLM-6B.git 安装依赖包 pip install -r requirements.txt 下载模型文件 在huggingface上…

什么是Java中的接口?

Java中的接口 在Java编程语言中&#xff0c;接口是一种定义方法但不包含方法实现的抽象类型。它是一组抽象方法的集合&#xff0c;这些方法通常由实现该接口的类来具体实现。接口在Java中扮演着非常重要的角色&#xff0c;尤其是在面向对象的设计和编程中。接口定义了类应该遵…

Leetcode 3.12

leetcode hot 100 链表1.两两交换链表中的节点2.随机链表的复制3.排序链表 链表 1.两两交换链表中的节点 两两交换链表中的节点 1.必须要设置一个dummy (temp) 结点2.保存第二个节点3.先让第一个节点指向第三个节点4.再让第二个节点指向第一个节点5.最后让dummy指向第二个节点…

蓝鲸作业平台升级openssh执行方案分享

本文来自腾讯蓝鲸智云社区用户&#xff1a;AK47 蓝鲸的运维系统在我们单位使用已经快四个年头了&#xff0c;从刚开始的5到现在最新的7.1都有部署、测试、验证和使用。在实际的使用过程中&#xff0c;给我们运维提供了非常大的帮助。其中有一个场景分享给大家。这个场景是关于o…

从SQL质量管理体系来看SQL审核(1)

经常看到一些SQL审核产品宣称自己有多少条审核规则&#xff0c;似乎规则数目多少是衡量SQL审核工具能力的标准。事实真的如此吗&#xff1f;肯定不是&#xff0c;那我们该如何评价一个SQL审核工具呢&#xff1f; SQL脚本和Java/C等编程脚本一样&#xff0c;都是程序代码&#…

接口测试工具【Postman】相关的面试题

Postman是一种接口调试与http接口测试的工具&#xff0c;可以非常方便的模拟get、post或其他请求来调试和测试接口 文章目录 Postman优点Postman使用流程Postman参数化有哪几种方式Postman如何设置关联 Postman优点 1.支持各种请求类型&#xff1a;get、post、put、patch、del…

Linux——磁盘文件

磁盘文件 通过前一篇文章Linux——系统文件I/O&#xff0c;我们知道了如何对加载在内存中的文件进行读写等操作&#xff0c;并了解了其内在的原理。同时我们也应该清楚&#xff0c;并不是所有的文件都会被加载入内存&#xff0c;而没有被加载入内存的文件&#xff0c;就被存放…

酷开科技智慧AI助力酷开系统千屏千面

每台智能电视都有一个专属的操作系统&#xff0c;而酷开系统作为一款基于人工智能技术的智能电视操作系统&#xff0c;深受大众喜爱&#xff0c;其最大的特点就是“千屏千面”。这意味着每一位消费者在使用酷开系统时&#xff0c;通过酷开科技的智慧AI&#xff0c;都能根据自己…

常用网络命令的使用

1.Ping 命令 Ping 命令用于测试网络连接的程序。Ping 是工作在 TCP/IP 网络体系结构中应用层的一个服务命令&#xff0c;主要是向特定目的主机发送 ICMP (Internet Control Message Protocol&#xff0c;因特网报文控制协议 )Echo 请求报文&#xff0c;测试目的站是否可达及了…

用户管理测试用例

1. 功能测试&#xff1a; 用户管理页面测试 1、左侧为组织机构树 2、列表上方为功能按钮&#xff0c;分别有&#xff1a;添加、删除、启用、禁用、导入导出、移动、批量修改属性 3、列表组成有&#xff1a;复选框、用户、状态、真实姓名、组织机构、手机、邮箱 4、页面右上方…

Prometheus监控Mysql数据库在Grafana展示

未安装prometheus和Grafana可以参考这个博客操作 Docker安装Prometheus监控-CSDN博客 Windows版本数据库 一、在数据库服务器安装mysqld-exporter 下载mysqld-exporter文件 Releases prometheus/mysqld_exporter GitHub 二、配置mysqld-exporter文件 1、解压进入mysqld…