【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(二)、需求分析和系统设计

本次实验(一)见博客:【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(一)、实验指导书

说明:本次实验的代码使用verilog编写,文章中为阅读方便,故采用matlab代码格式。

实验二、时序逻辑设计——三色灯开关(实验报告部分)

2、实验报告

2.1、需求分析

本次实验要求设计一种通过操作开关的时间控制灯光颜色的开关,该灯具含有两组LED白光灯芯和两组LED黄光灯芯,且开关的功能大致分为四种情况:
1、 如果灯具发出白光时断开开关,且在1秒之内再次闭合开关,则灯具发出日光;
2、 如果灯具发出日光时断开开关,且在1秒之内再次闭合开关,则灯具发出黄光;
3、 如果灯具发出黄光时断开开关,则再次闭合开关之后,灯具发出白光;
4、 如果开关断开的时间超过1秒,则开关闭合后,灯具发出白光。
因此可以总结出该灯具大致的工作流程为:白光——日光——黄光——白光,且时延Δt = 1秒,故可以设置cnt变量用于计时。

扩展实验要求:
开发时序逻辑电路,将按动开关的操作(“开”、“关”)以及按动开关之间的时间间隔(以
10ms为单位,进行0~127编码,分别代表0s至1.27s,超过1.27s均算作1.27s)以数码的形式“录制”下来,记录深度至少为16条操作序列(至少能保存16次操作);
按动实验板上的一个按键,可以将记录的内容用UART依次上传并显示到PC机终端上。

2.2、系统设计

2.2.1、总体设计思路

模块:按照设计需求,分为 “mode_run” 模块 & “mode_demo” 模块以及用于按键去抖的debounce模块。
由于题目要求延时一定时间后重新设定状态,故可以设置一cnt变量用于计时;使用RESET进行复位。
拓展实验:
通过Uart_ClkDiv进行时钟分频,Key进行按键消抖,Uart_Tx作为上传数据模块,time_cnt作为记录数据并依次上传模块。

2.2.2、接口设计
mode_run:
input clk (系统时钟), rst (重置);
key0 (按键0)   LOC = P2;
key1 (按键1)   LOC = P3;
NET "led[0]" LOC = P79;
NET "led[1]" LOC = P83;
NET "led[2]" LOC = P84;
NET "led[3]" LOC = P85;
NET "clk" LOC = P36;
NET "rst" LOC = P11;
NET "key0" LOC = P2;
NET "key1" LOC = P3;mode_demo:NET "light[0]" LOC = P23;
NET "light[1]" LOC = P18;
NET "light[2]" LOC = P15;
NET "light[3]" LOC = P16;
NET "light[4]" LOC = P17;
NET "light[5]" LOC = P22;
NET "light[6]" LOC = P24;
NET "clk" LOC = P36;
NET "dp" LOC = P12;
NET "com[0]" LOC = P27;
NET "com[1]" LOC = P26;
NET "key0" LOC = P2;
NET "key1" LOC = P3;
NET "rst" LOC = P11;Uart_time:
NET "Sys_CLK" LOC = P36;
NET "Key_In[0]" LOC = P32;
NET "Key_In[1]" LOC = P2;
NET "Sys_RST" LOC = P11;
NET "Sys_RST" PULLUP;
NET "Signal_Tx" LOC = P10;
2.2.3、mode_run模块

在这里插入图片描述

图 1 状态机流程图

module mode_run_1(clk,rst,key0,key1,led);input 						clk				;input							rst				;input 						key0				;input 						key1				;wire							key_0				;wire							key_1				;output reg	[3:0] 		led				;debounce instance_name0 (.clk(clk), .rst(rst), .key(key0), .key_pulse(key_0));debounce instance_name1 (.clk(clk), .rst(rst), .key(key1), .key_pulse(key_1));reg	[24:0]				cnt				;parameter C_25M       = 25'd24_999_999;//信号定义reg  	[3:0]					state_b			;//状态机参数parameter S0          = 4'b0000			;parameter S1          = 4'b0001			;parameter S2          = 4'b0011			;parameter S3          = 4'b0101			;parameter S4          = 4'b1111			;parameter S5          = 4'b0100			;parameter S6          = 4'b1100			;initial beginstate_b <= S0;led <= S0;cnt <= 25'b0;end//一段式状态机always@(posedge clk or negedge rst) beginif(!rst)	beginstate_b <= S0;led <= S0;cnt <= 25'b0;endelse beginif(key_0 == 1) cnt <= 25'b0;else cnt <= cnt + 1;if(cnt >= C_25M && led == S0) state_b <= S0;else 	state_b <= state_b;case(led)S0: beginif(key_0 == 1) begincase(state_b)S0: beginstate_b <= S1;led <= S1;endS1: beginstate_b <= S3;led <= S3;endS2: beginstate_b <= S4;led <= S4;endS3: beginstate_b <= S5;led <= S5;endS4: beginstate_b <= S6;led <= S6;endS5: beginstate_b <= S1;led <= S1;endS6: beginstate_b <= S2;led <= S2;enddefault: beginstate_b <= state_b;led <= led;endendcaseendelse beginled <= S0;endendS1: beginif(key_0 == 1) beginstate_b <= S1;led <= S0;endelse if(key_1 == 1) beginstate_b <= S2;led <= S2;endendS2: beginif(key_0 == 1) beginstate_b <= S2;led <= S0;endelse if(key_1 == 1) beginstate_b <= S1;led <= S1;endendS3: beginif(key_0 == 1) beginstate_b <= S3;led <= S0;endelse if(key_1 == 1) beginstate_b <= S4;led <= S4;endendS4: beginif(key_0 == 1) beginstate_b <= S4;led <= S0;endelse if(key_1 == 1) beginstate_b <= S3;led <= S3;endendS5: beginif(key_0 == 1) beginstate_b <= S5;led <= S0;endelse if(key_1 == 1) beginstate_b <= S6;led <= S6;endendS6: beginif(key_0 == 1) beginstate_b <= S6;led <= S0;endelse if(key_1 == 1) beginstate_b <= S5;led <= S5;endenddefault: beginstate_b <= state_b;led <= led;endendcaseendend
endmodule
2.2.4、debounce模块

该模块为防抖模块。对按键KEY进行消抖,达到输入信号稳定且有效的目的。

2.2.5、mode_demo模块
module mode_demo_1(clk,rst,key0,key1,dp,light,com);input 						clk				;input							rst				;input 						key0				;input 						key1				;wire							key_0				;wire							key_1				;output reg [1:0]			com				;output reg 					dp					;output reg [6:0]			light				;debounce instance_name0 (.clk(clk), .rst(rst), .key(key0), .key_pulse(key_0));debounce instance_name1 (.clk(clk), .rst(rst), .key(key1), .key_pulse(key_1));//信号定义reg  	[3:0]					state_b			;reg	[3:0]					state_c			;//状态机参数parameter S0          = 4'b0000			;parameter S1          = 4'b0001			;parameter S2          = 4'b0011			;parameter S3          = 4'b0101			;parameter S4          = 4'b1111			;parameter S5          = 4'b0100			;parameter S6          = 4'b1100			;//数码管译码parameter DATA0   	 = 7'b0111111  	;parameter DATA1  		 = 7'b0000110  	;parameter DATA2 		 = 7'b1011011  	;parameter DATA3		 = 7'b1001111  	;parameter DATA4   	 = 7'b1100110  	;parameter DATA5 	    = 7'b1101101  	;parameter DATA6 	    = 7'b1111101  	;parameter DATA7 	    = 7'b0000111  	;parameter DATA8 	    = 7'b1111111  	;parameter DATA9 	    = 7'b1101111  	;reg sec_pls;	//产生秒脉冲reg [25:0] sec_cnt;always@(posedge clk or negedge rst) beginif(key_0 == 1) beginsec_pls <= 1'b0;sec_cnt <= 26'b0;endelse beginsec_pls <= sec_pls;sec_cnt <= sec_cnt;endif(!rst) beginsec_pls <= 1'b0;sec_cnt <= 26'b0;endelse if(sec_cnt == 26'd50_000_000) beginsec_pls <= 1'b1;sec_cnt <= 26'b0;endelse beginsec_pls <= 1'b0;sec_cnt <= sec_cnt + 1;endendreg [6:0] sec;reg [3:0] tmp;reg [3:0] num;reg [3:0] buf0;reg [3:0] buf1;reg		 dp1;//计数器,约10ms扫描一次,用于数码管动态显示reg [16:0] cnt;always@(posedge clk or negedge rst) beginif(!rst)	cnt <= 17'b0;else if(cnt == 17'b11111111111111111)	begincnt <= 17'b0;endelse	cnt <= cnt + 1;endalways@(posedge clk or negedge rst) beginif(!rst)	beginstate_c <= S0;state_b <= S0;dp <= 0;endelse beginif(sec >= 10 && state_c == S0) state_b <= S0;else 	state_b <= state_b;case(state_c)S0: beginif(key_0 == 1) begincase(state_b)S0: beginstate_b <= S1;state_c <= S1;endS1: beginstate_b <= S3;state_c <= S3;endS2: beginstate_b <= S4;state_c <= S4;endS3: beginstate_b <= S5;state_c <= S5;endS4: beginstate_b <= S6;state_c <= S6;endS5: beginstate_b <= S1;state_c <= S1;endS6: beginstate_b <= S2;state_c <= S2;enddefault: beginstate_b <= state_b;state_c <= state_c;endendcaseendelse beginstate_b <= state_b;state_c <= S0;endendS1: beginif(key_0 == 1) beginstate_b <= S1;state_c <= S0;endelse if(key_1 == 1) beginstate_b <= S2;state_c <= S2;endendS2: beginif(key_0 == 1) beginstate_b <= S2;state_c <= S0;endelse if(key_1 == 1) beginstate_b <= S1;state_c <= S1;endendS3: beginif(key_0 == 1) beginstate_b <= S3;state_c <= S0;endelse if(key_1 == 1) beginstate_b <= S4;state_c <= S4;endendS4: beginif(key_0 == 1) beginstate_b <= S4;state_c <= S0;endelse if(key_1 == 1) beginstate_b <= S3;state_c <= S3;endendS5: beginif(key_0 == 1) beginstate_b <= S5;state_c <= S0;endelse if(key_1 == 1) beginstate_b <= S6;state_c <= S6;endendS6: beginif(key_0 == 1) beginstate_b <= S6;state_c <= S0;endelse if(key_1 == 1) beginstate_b <= S5;state_c <= S5;endenddefault: beginstate_c <= state_c;state_b <= state_b;endendcaseendif(key_0 == 1) beginsec <= 7'b0;num <= 4'b0;com <= 2'b00;light <= DATA0;endelse	sec <= sec;if(!rst) beginsec <= 7'b0;light <= DATA0;endelse if(sec_pls) beginif(sec == 7'd99) beginsec <= 7'b0;num <= 4'b0;light <= DATA0;endelse beginsec <= sec + 1;case(state_c)		//dp位表示状态S0: beginif(sec >= 7'd10)	state_b <= S0;else					state_b <= state_b;endS2: begindp1 <= ~dp1;endS4: begindp1 <= ~dp1;endS6: begindp1 <= ~dp1;endendcaseendend//显示模块if(!rst)	beginnum <= 4'b0;com <= 2'b00;endelse beginif(sec >= 0 && sec < 10) begin	//数码管显示数字buf1 <= 0;buf0 <= sec[3:0];endelse if(sec >= 10 && sec < 20) beginbuf1 <= 4'd1;tmp <= (sec - 7'd10);buf0 <= tmp[3:0];endelse if(sec >= 20 && sec < 30) beginbuf1 <= 4'd2;tmp <= sec - 7'd20;buf0 <= tmp[3:0];endelse if(sec >= 30 && sec < 40) beginbuf1 <= 4'd3;tmp <= sec - 7'd30;buf0 <= tmp[3:0];endelse if(sec >= 40 && sec < 50) beginbuf1 <= 4'd4;tmp <= sec - 7'd40;buf0 <= tmp[3:0];endelse if(sec >= 50 && sec < 60) beginbuf1 <= 4'd5;tmp <= sec - 7'd50;buf0 <= tmp[3:0];endelse if(sec >= 60 && sec < 70) beginbuf1 <= 4'd6;tmp <= sec - 7'd60;buf0 <= tmp[3:0];endelse if(sec >= 70 && sec < 80) beginbuf1 <= 4'd7;tmp <= sec - 7'd70;buf0 <= tmp[3:0];endelse if(sec >= 80 && sec < 90) beginbuf1 <= 4'd8;tmp <= sec - 7'd80;buf0 <= tmp[3:0];endelse if(sec >= 90 && sec < 100) beginbuf1 <= 4'd9;tmp <= sec - 7'd90;buf0 <= tmp[3:0];endcase(cnt[16])1'b0: begincom <= 2'b01;num <= buf0;case(state_c)S0:		dp <= 0;S1:		dp <= 1;S2:		dp <= dp1;S3:		dp <= 1;S4:		dp <= dp1;S5:		dp <= 0;S6:		dp <= 0;default:	dp <= 0;endcaseend1'b1: begincom <= 2'b10;num <= buf1;case(state_c)S0:		dp <= 0;S1:		dp <= 0;S2:		dp <= 0;S3:		dp <= 1;S4:		dp <= dp1;S5:		dp <= 1;S6:		dp <= dp1;default:	dp <= 0;endcaseendendcasecase(num)				//个位4'd0:	light <= DATA0;4'd1:	light <= DATA1;4'd2:	light <= DATA2;4'd3:	light <= DATA3;4'd4:	light <= DATA4;4'd5:	light <= DATA5;4'd6:	light <= DATA6;4'd7:	light <= DATA7;4'd8:	light <= DATA8;4'd9:	light <= DATA9;default: light <= DATA0;endcaseend
endendmodule
2.2.6、time_cnt模块
module time_cnt(Sys_CLK,Sys_RST,Idle,Key_In,send_data,send_en);input Sys_CLK;
input Sys_RST;
input Idle;
input [1:0]Key_In;
output reg [7:0] send_data;
output reg send_en;reg key0_d1;
reg key0_d2;
reg key1_d1;
reg key1_d2;
reg [7:0] time_cnt;
reg [3:0] send_cnt;reg [17:0]Div_Cnt = 18'd0;  //
reg Div_CLK_10ms = 1'b0;
reg Div_CLK_10ms_d1 = 1'b0;
reg Div_CLK_10ms_d2 = 1'b0;
reg cnt_flag;
reg send_flag;reg [7:0] send_data_reg [0:15];always@(posedge Sys_CLK or negedge Sys_RST)
beginif(!Sys_RST)beginkey0_d1 <= 1'b0;key0_d2 <= 1'b0;Div_CLK_10ms_d1 <= 1'b0;Div_CLK_10ms_d2 <= 1'b0;endelsebeginkey0_d1 <= Key_In[0];key0_d2 <= key0_d1;Div_CLK_10ms_d1 <= Div_CLK_10ms;Div_CLK_10ms_d2 <= Div_CLK_10ms_d1;end
endalways@(posedge Div_CLK_10ms or negedge Sys_RST)
beginif(!Sys_RST)beginkey1_d1 <= 1'b0;key1_d2 <= 1'b0;endelsebeginkey1_d1 <= Key_In[1];key1_d2 <= key1_d1;end
endalways@(posedge Sys_CLK)
beginif(Div_Cnt == 18'd250000)beginDiv_Cnt = 18'd0;Div_CLK_10ms = ~Div_CLK_10ms;endelseDiv_Cnt = Div_Cnt + 1'd1;
endalways@(posedge Sys_CLK or negedge Sys_RST)
beginif(!Sys_RST)begintime_cnt <= 8'd0;cnt_flag <= 1'b0;endelse if(key0_d1 && !key0_d2) //risebegintime_cnt <= 8'd0;cnt_flag <= 1'b1;endelse if(!key0_d1 && key0_d2) //fallbegintime_cnt <= 8'd0;cnt_flag <= 1'b0;endelse if(cnt_flag  && Div_CLK_10ms_d1 && !Div_CLK_10ms_d2) begintime_cnt <= time_cnt + 8'd1;endendalways@(posedge Sys_CLK  or negedge Sys_RST)beginif(!Sys_RST)beginsend_data_reg[0] <= 8'd0;send_data_reg[1] <= 8'd0;send_data_reg[2] <= 8'd0;send_data_reg[3] <= 8'd0;send_data_reg[4] <= 8'd0;send_data_reg[5] <= 8'd0;send_data_reg[6] <= 8'd0;send_data_reg[7] <= 8'd0;send_data_reg[8] <= 8'd0;send_data_reg[9] <= 8'd0;send_data_reg[10] <= 8'd0;send_data_reg[11] <= 8'd0;send_data_reg[12] <= 8'd0;send_data_reg[13] <= 8'd0;send_data_reg[14] <= 8'd0;send_data_reg[15] <= 8'd0;
//		send_data_reg[12] <= 8'd31;
//		send_data_reg[13] <= 8'd42;
//		send_data_reg[14] <= 8'd53;
//		send_data_reg[15] <= 8'd64;endelse  if(!key0_d1 && key0_d2)beginsend_data_reg[0] <= time_cnt;send_data_reg[1] <= send_data_reg[0];send_data_reg[2] <= send_data_reg[1];send_data_reg[3] <= send_data_reg[2];send_data_reg[4] <= send_data_reg[3];send_data_reg[5] <= send_data_reg[4];send_data_reg[6] <= send_data_reg[5];send_data_reg[7] <= send_data_reg[6];send_data_reg[8] <= send_data_reg[7];send_data_reg[9] <= send_data_reg[8];send_data_reg[10] <= send_data_reg[9];send_data_reg[11] <= send_data_reg[10];send_data_reg[12] <= send_data_reg[11];send_data_reg[13] <= send_data_reg[12];send_data_reg[14] <= send_data_reg[13];send_data_reg[15] <= send_data_reg[14];end
endalways@(posedge Div_CLK_10ms or negedge Sys_RST)
beginif(!Sys_RST)beginsend_data <= 8'd0;send_en <= 1'b0;send_flag <= 1'b0;endelse if(key1_d1 && !key1_d2)beginsend_data <= send_data_reg[0];send_en <= 1'b1;send_flag <= 1'b1;endelse if(send_flag && !Idle && send_en == 1'b0 && send_cnt < 4'd15)beginsend_data <= send_data_reg[send_cnt];
//		send_data <= send_data_reg[0];send_en <= 1'b1;send_flag <= 1'b1;endelse if(send_flag && !Idle &&   send_en == 1'b0 && send_cnt == 4'd15)begin
//		send_data <= send_data_reg[send_cnt];send_data <= send_data_reg[15];send_en <= 1'b1;send_flag <= 1'b0;endelsebeginsend_en <= 1'b0;end
endalways@(posedge Div_CLK_10ms or negedge Sys_RST)
beginif(!Sys_RST)beginsend_cnt <= 4'd0;endelse if(send_cnt < 4'd15 && send_en )beginsend_cnt <= send_cnt + 4'd1;end
endendmodule

其他模块都已经在用例中给出,此处不再赘述。

(未完待续)

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

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

相关文章

指针的使用以及运算、二级指针、造成野指针的原因以及解决方法、指针和数组相互使用

第七章&#xff0c;指针的学习 目录 前言 一、指针的概念 二、指针的类型 三、野指针 四、指针的运算 五、指针和数组的关系以及使用 六、指针数组 七、二级指针 总结 前言 这章主要学习的是指针方面的知识&#xff0c;这节只是简单了解一下指针&#xff0c;并不会深…

uniapp H5项目 获取接口的二进制流转化成图片url(base64)

如果你使用的是uniapp, 并且你从接口获取下来的数据长这样&#xff1a; 想要把取到的数据展示成图片&#xff0c;那么你可以这样做&#xff1a; // 这是我们的项目封装的请求方法const res await this.$api.getKaptcha({originResponse: true, // 这样写是为了在request那边特…

路由器热备份

HSRP HSRP&#xff08;Hot Standby Routing Protocol&#xff09;热备份路由选择协议 HSRP是思科私有的协议&#xff0c;HSRP起到一个双网关热备份的一个目的&#xff0c;不考虑线路问题针对设备而言&#xff0c;一个设备挂了还有另外一台设备&#xff0c;所以双网关也叫双机…

stl_set

文章目录 set1.关联式容器2.键值对3. set3.1 set介绍3.2 set的使用3.2.1 pair3.2.2 find3.2.3 lower_bound 3.3 multiset3.3.1 multiset的介绍3.3.2 multiset的使用3.3.3 find3.3.4 equal_range3.3.5 erase set 1.关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分…

嵌入式物联网实战开发笔记-乐鑫ESP32芯片功能对比以及功能选型【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ATvRnAZvxkev-PJfd3EAPg?pwd4e33 提取码&#xff1a;4e33 2.1 初识 ESP32 ESP32-S3 是一款低功耗的 MCU 系统级芯片 (SoC)&#xff0c;支持 2.4 GHz Wi-Fi 和低功耗蓝牙 (…

强固型国产化工业电脑,在电子看板行业应用,机器视觉在汽车产线行业应用

电子看板行业应用 智能电子看板的核心是通过实现工厂的全面可视化、自动化管理&#xff0c;最终达到提高效率、降低成本及提高产品质量的目标。电子看板硬件主要有两部分组成&#xff1a;微型工业计算机&#xff0c;显示终端&#xff08;平板电视、LCD&#xff09; 方案需求 …

在Java中使用XxlCrawler时防止被反爬的几种方式

目录 前言 一、常见的反爬措施 1、User-Agent识别 2、Referer识别 3、频率限制 4、IP限制 二、XxlCrawer的应对之道 1、User-Agent应对 2、频率限制 3、IP限制 三、XxlCrawler执行解析 1、XxlCrawler对象 2、启动对象 3、信息爬取线程 总结 前言 众所周知&#x…

【c++】vector的使用

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;我们本篇来到一个新的容器&#xff0c;vector的讲解和使用 目录 1.vector简单介绍2.vector的使用2.1构造函数2.2遍历vector2.3对容量操作2.4vector的增删查改 1.v…

Java测试编程题

题目1 1.创建5个线程对象 线程名设置为&#xff08;Thread01&#xff0c;Thread02&#xff0c;Thread03&#xff0c;Thread04&#xff0c;Thread05&#xff09;使用 代码实现5个线程有序的循环打印&#xff0c;效果如下&#xff1a; Thread01正在打印1 Thread02正在打印2 Threa…

Day60 单调栈 part03

Day60 单调栈 part03 最后一天啦&#xff01;完结撒花~ 84.柱状图中最大的矩形 我的思路&#xff1a; 感觉和接雨水差不多&#xff0c;只需要多考虑一些情况 双指针 lheight 和 rheight 分别是用来存储每个柱子的左边界和右边界的数组。 解答&#xff1a; class Solutio…

齐次变换矩阵、欧拉角

齐次变换矩阵 因为老是忘记齐次变换矩阵的含义以及方向&#xff0c;每次推导公式都很费劲&#xff0c;写下这篇文章用于快速回顾齐次变换矩阵。 表示的是&#xff1a;坐标系A到坐标系B的齐次变换矩阵&#xff0c;也是坐标系B在坐标系A下的位姿。 对于这个矩阵&#xff0c;有三…

Matlab软件使用教学

1. Matlab简介 Matlab&#xff08;Matrix Laboratory的缩写&#xff09;是一种由MathWorks公司开发的数值计算和可视化编程环境。它广泛应用于工程、科学研究、数学和教育等领域&#xff0c;因其强大的计算能力和丰富的工具箱而受到青睐。 2. 安装与启动 安装&#xff1a;从M…

贪心算法(一)

什么是贪心算法&#xff1f;&#xff1f;&#xff1f; 贪心算法是指通过每一次都选择最优解情况&#xff0c;然后通过局部最优从而达到全局最优&#xff0c;简单理解为目光短浅&#xff0c;走一步看一步。 需要注意的是&#xff0c;贪心算法是一种思想&#xff0c;而非直接的…

车载以太网解决方案

车载以太网对现代汽车行业具有非常高的价值&#xff0c;随着汽车技术的不断发展&#xff0c;车载电子组件和传感器的数量与复杂度都在持续增加。为了满足这些复杂系统的需求&#xff0c;车载以太网作为一种高速数据交换介质&#xff0c;发挥着至关重要的作用。 汇迪能提供的车载…

数据的质量控制软件----fastQC

一、前言 FastQC的基本介绍: FastQC是一款基于Java的软件&#xff0c;它可以快速地对测序数据进行质量评估&#xff0c;其官网为&#xff1a;Babraham Bioinformatics - FastQC A Quality Control tool for High Throughput Sequence Data 高通量测序数据的高级质控工具输入…

7. DAX 时间函数-- DATE 日期--TOTALMTD、TOTALQTD、TOTALYTD

函数名目的语法返回值TOTALMTD计算当前上下文中该月份至今的表达式的值 。TOTALMTD ( <表达式>, <日期列>, [<筛选器>] )标量 表示表达式的标量值&#xff0c;在“日期”中给定日期&#xff0c;计算当前月份至今的日期 。TOTALQTD计算当前上下文中该季度至今…

Github 2024-04-20 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目2Python项目2Swift项目2HTML项目1CSS项目1Go项目1C项目1C++项目1Rust项目1编程面试大学:成为软件工程师的全面学习计划 创建周期…

【最新可用】Claude国内镜像,可上传图片,可用Claude3全系模型,包括Pro版本的Opus),亲测比GPT好用

Claude对话、上传图片的超详细教程来啦&#xff01; 近期&#xff0c;Claude 3 Opus的发布引发了网络上的广泛关注与热议&#xff0c;有观点认为其性能已经凌驾于GPT-4之上。虽然网络上已经出现了大量基于这两款先进AI技术的实际应用案例&#xff0c;但仍有许多人对在国内如何…

Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)

文章目录 一、JavaFx介绍1、JavaFx简介2、可用性3、主要特征4、UI控件 二、JavaFx概述1、JavaFx结构图2、JavaFx组件&#xff08;1&#xff09;舞台&#xff08;2&#xff09;场景① 场景图② 节点 &#xff08;3&#xff09;控件&#xff08;4&#xff09;布局&#xff08;5&a…

Unity射击游戏开发教程:(2)实例化和销毁游戏对象

现在我们有了“飞船”,我们可以在屏幕上移动它,现在我们需要发射一些激光!与宇宙飞船一样,我们将让事情变得简单并使用 Unity 自己的基本形状。舱体的效果很好,所以我们来创建一个。 我们保存了有关位置、旋转和缩放的信息。我们想要缩小这个对象,假设每个轴上缩小到 0.2…