当前位置: 首页 > article >正文

实验六 项目二 简易信号发生器的设计与实现 (HEU)

声明:代码部分使用了AI工具

实验  综合考核

Quartus 18.0
FPGA  5CSXFC6D6F31C6N
 

1. 实验项目

要求利用硬件描述语言Verilog(或VHDL)、图形描述方式、IP核,结合数字系统设计方法,在Quartus开发环境下21组本班内自由组队从下列3个实验项目中任选1项(31)进行实现。因材料限制,每个项目每个班级最多6选择,第一次实验时填表选定,不得变更。

实验分为2部分内容,基础实验12学时,使用FPGA开发板实现。拓展实验需要搭建外围电路与开发板连接实现相关功能,可利用课余时间进行开放实验,第二次实验时进行集中实验验收(4学时)。

注意事项:需自带计算机(安装有Quartusmultisim软件);还需带烙铁、焊锡焊接工具万用表等,实验室提供相关元器件。 

实验项目名称

基础实验内容12学时)

拓展实验内容

(开放实验+4学时验收实验)

项目1简易频率计的设计与实现

利用硬件描述语言或图形描述方式,结合数字电路设计方法,实现以下功能:

1.1kHz-1MHz方波信号的频率测量功能,进行quartus/modelsim仿真验证;(60分)

2.使用实验室提供开发板完成对1kHz-1MHz方波信号的频率测量功能,控制数码管实时显示测量结果。(20分)

3.可通过开发板上的USB-Uart接口,将测量频率结果传送至计算机上的串口调试助手显示。(20分)

在基础实验内容的基础上,使用元器件搭建外围电路,经multisim/proteus仿真验证后,制作实物电路与开发板连接,实现以下功能:

1.可对幅度0.1V-4V,频率1kHz-10kHz范围的正弦信号进行频率测量;(60分)

2.对输入正弦信号同时进行幅度和频率测量,并将测量结果实时显示并发送至计算机。(40分)

项目2简易信号发生器的设计与实现

利用硬件描述语言或图形描述方式,结合数字电路设计方法,实现以下功能:

1.产生1kHz-1MHz范围内的方波信号,信号频率可由按键调节,步进间隔1kHz,进行quartus/modelsim仿真验证;(60分)

2.使用实验室提供开发板输出1kHz-1MHz方波信号,信号频率可由按键调节,控制数码管实时显示当前频率值。(20分)

3.实现用计算机调节开发板输出方波信号频率的功能。(20分)

在基础实验内容的基础上,使用元器件搭建外围电路,经multisim/proteus仿真验证后,制作实物电路与开发板连接,实现以下功能:

1.产生1kHz-10kHz范围内的三角波信号,频率可由按键和计算机进行调节;(60分)

2.产生7kHz-10kHz范围内的正弦波信号,频率可由按键和计算机进行调节。(40分) 

项目3电压电流表的设计与实现

利用硬件描述语言或图形描述方式,结合数字电路设计方法,实现以下功能:

1.使用实验室提供开发板对介于0-4V之间的直流电压值进行测量,分辨率1mV,测量结果在数码管上显示,每秒至少刷新1次;(60分)

2.对两路0-4V之间的直流电压值同时进行测量,测量结果交替显示。(20分)

3.可通过开发板上的USB-Uart接口,将测量电压结果传送至计算机上的串口调试助手显示。(20分)

在基础实验内容的基础上,使用元器件搭建外围电路,经multisim/proteus仿真验证后,制作实物电路与开发板连接,实现以下功能:

1.对直流电源输出到负载上的电压和电流进行测量,并将测量结果实时显示并发送至计算机;(60分)

2.使用电压电流测量结果计算负载实时功率和耗电量,将计算结果发送至计算机。(40分)

2. 实验要求

1)每人对于所选择完成的实验项目,通过查阅资料理解实验原理,设计实验方案,并将实验原理和方案写于实验报告中。

2)按照实验要求,完成电路设计、通过编译无误后,完成测试代码编写,实现功能仿真,记录仿真波形并写于实验报告。

3)编译的输出文件下载到FPGA电路板,完成指定功能,进行拍照和结果分析,写入实验报告。

4)基础实验内容完成后由老师验收并记录实验成绩。

5)设计外围电路完成相关功能,使用MultisimProteus对外围电路功能进行验证,截图写入实验报告。

6)利用开放实验时间搭建外围电路实物,进行测试验证,对测试结果进行拍照和分析,写入实验报告。

7)集中验收实验时经老师检查电路无误后,将搭建电路与FPGA开发板连接,进行测试。测试完成后由老师验收并记录实验成绩,认真撰写实验报告,按时上交实验报告。

8)实验六实验报告使用智慧树平台网上填写提交每组仅需提交1,按自己选择题目提交相应作业,截止时间为第二次实验当晚23:59前。建议边做实验边拍照记录,减少实验报告撰写时间。

3. 实验器材清单

1FPGA开发板,有DE1SOCDE10-Standard2种,随机领用,看准自己开发板型号,查找相关资料。

2)直流电源、信号源、示波器、万用表(需自备)

3)直插1/4W电阻

    阻值:10Ω, 22Ω, 47Ω,  100Ω ,  150Ω ,  200Ω ,  220Ω ,  270Ω ,  330Ω,  470Ω,  510Ω, 680Ω, 1kΩ, 2kΩ, 2.2kΩ, 3.3kΩ, 4.7kΩ, 5.1kΩ, 6.8kΩ, 10kΩ, 20kΩ, 47kΩ, 51kΩ, 68kΩ, 100kΩ, 220kΩ, 300kΩ, 470kΩ, 680kΩ, 1MΩ

4)瓷片电容

  容值:2pF, 3pF, 5pF, 10pF, 15pF, 22pF, 30pF, 47pF, 68pF, 75pF, 82pF, 100pF, 150pF, 220pF, 330pF, 470pF, 680pF, 1npF, 1.5nF, 2.2nF, 3.3nF, 4.7nF, 6.8nF, 10nF, 15nF, 22nF, 47nF, 68nF, 100nF

3. 实验器材清单

5)电解电容(焊接务必注意正负极

50V0.22uF, 50V0.47uF, 50V1uF, 50V2.2uF, 50V4.7uF, 25V10uF, 25V22uF, 16V33uF, 16V47uF, 16V100uF, 10V220uF, 10V470uF

6)二极管

1N4148, 1N4007, 1N5819, 1N5399, FR107, FR207, 1N5408, 1N5822

7)运算放大器LM324及芯片座

8)比较器LM393及芯片座

9USBTTL转换器(计算机和开发板通信用,用后需归还)

驱动及安装说明: https://zhuanlan.zhihu.com/p/370245114

10)万用板5*7cm单面(每组一块), 杜邦线。


声明:我们选择的是项目二;隔得时间太久,有的照片找不着了;分频器部分,由于采用了除法,受限于有限字长,得到的实际频率有一定误差,虽然人为进行了修正,但在高频时仍比较明显,可以考虑其他算法改进;正弦波部分的带通滤波器没有问题;但三角波部分的积分器需要改进,现在的问题是频率较高时幅值衰减较明显。

考核内容

1.1.【问答题】(10分)
产生1kHz-1MHz范围内的方波信号,信号频率可由按键调节,步进间隔1kHz,进行
quartus,/modelsim仿真验证;简述该设计的主要功能和原理?

 

主要功能:

        可以通过按钮调节输出1kHz-1MHz的方波、7kHz-10kHz正弦波、1kHz-10kHz三角波(步进均为1kHz);可以通过串口从电脑上控制输出1kHz-1MHz的方波、7kHz-10kHz正弦波、1kHz-10kHz三角波(步进均为1kHz)。

        不过,串口控制功能只能输入十六进制数,所以在测试时需要先把想输入的十进制数转换为十六进制,允许输入范围为0x0001~0x03E8(注意,1MHz即为1000kHz,我们这里使用三位数码管,故显示为000)。比如,我想通过串口控制输出726kHz方波,只需在电脑串口助手上输入02D6再发送即可。

原理:时钟脉冲信号经过可调分频器后得到可控频率的矩形脉冲信号,矩形脉冲信号分别经过滤波器和积分器后可得到正弦波和三角波。编写一个调节模块用以传递输入的指令,并联系输入部分和输出部分。

1.2.【问答题】(5分)
上传设计框图、源程序等截图:

1.3.【问答题】(5分)
上传仿真结果截图,描述图中结果:

引脚分配:

 quartus/modelsim联合仿真:

1.4.【问答题】(5分)
使用实验室提供开发板输出1kHz-1MHz方波信号,信号频率可由按键调节,控制数码管实时显示
当前频率值。上传输出最低频率方波的照片,照片中需包含设置频率和示波器测量波形。

实验六项目二按钮演示

实验六项目二串口演示

1.5.【问答题】(5分)
上传输出最高频率方波的照片,照片中需包含设置频率和示波器测量波形。

找不着照片了

1.6.【问答题】(5分)
你最终实现了多少范围内的频率输出功能?误差是多少?

范围达到了题目要求,这里误差不是我算的,不知道。

1.7.【问答题】(10分)
在基础实验内容的基础上,使用元器件搭建外围电路,简述外围电路原理?

带通滤波器设计:

1.8.【问答题】(10分)
上传外围电路图及仿真测试结果,并说明仿真情况

带通滤波器:

积分器:

1.9.【问答题】(10分)
制作实物电路与开发板连接,实现以下功能:
产生1kHz-10kHz范围内的三角波信号,频率可由按键和计算机进行调节;上传最低频率和最高频
率时输出三角波的测量结果照片。

1.10.【问答题】(10分)
产生7kHz-10kHz范围内的正弦波信号,频率可由按键和计算机进行调节。上传最低频率和最高频
率时输出正弦波的测量结果照片。

2.【问答题】(10分)
上传搭建的外围电路与开发板连接的实物照片。

3.【问答题】(10分)
你在实验调试过程中出现了哪些问题?如何解决的?有何实验心得体会?

(1)有时会出现不明原因的报错,报错中会出现“License”相关字眼,这是在程序运行途中发生了破解失效,需要妥善保存工程后再一次进行破解。

(2)在仿真过程中,程序选择的文件保存路径经常会出现问题,“.vwf”文件与“.vt"文件可能会被写入不同路径,这会导致报错并且仿真错误。摸索出来的解决方法是在可能的路径中分别复制一份对应文件。

(3)可以通过给FPGA断电后再上电来清除上一次下载到FPGA中的程序。

(4)遇到报错,可将报错信息输送给一些大语言模型,往往会得到不错的改进建议,适时适量使用AI工具并非坏事。

附录(代码及资源)

代码

dds.v

//主程序
module dds(input wire clk,           // FPGA主时钟input wire rst_n,         // 复位信号input wire button_up,     // 增加频率按钮input wire button_down,   // 减少频率按钮input wire uart_rx,       // 计算机控制的UART输入input wire select_control,// 选择控制信号:0为按键控制,1为UART控制output wire wave_out,     // 输出方波信号output wire [6:0] hex0,   // 数码管显示output wire [6:0] hex1,output wire [6:0] hex2
);wire [19:0] freq_from_button;  // 来自按键控制的频率选择wire [19:0] freq_from_uart;    // 来自UART控制的频率选择reg  [19:0] freq_sel;          // 实际选择的频率// 按键控制模块button_control btn_ctrl (.clk(clk),.rst_n(rst_n),.button_up(button_up),.button_down(button_down),.freq_sel(freq_from_button));// 方波信号生成模块clock_divider clk_div (.clk(clk),.rst_n(rst_n),.freq_sel(freq_sel),.wave_out(wave_out));// 数码管显示模块seven_segment_display display (.clk(clk),.rst_n(rst_n),.freq_sel(freq_sel),.hex0(hex0),.hex1(hex1),.hex2(hex2));// 计算机调节模块uart_control uart_ctrl (.clk(clk),.rst_n(rst_n),.uart_rx(uart_rx),.freq_sel(freq_from_uart));// 多路选择器always @(*) beginif (select_control) freq_sel = freq_from_uart;   // 如果select_control为1,用UART控制频率else freq_sel = freq_from_button; // 否则用按键控制频率endendmodule

clock_divider.v 

// 时钟分频器模块
module clock_divider(input wire clk,        // FPGA主时钟,例如50MHzinput wire rst_n,      // 复位信号input wire [31:0] freq_sel, // 选择的频率(步进为1kHz)output reg wave_out    // 输出方波信号
);reg [31:0] counter;reg [31:0] threshold;always @(posedge clk or negedge rst_n) beginthreshold = 85899*freq_sel;if(!rst_n)  counter <= 0;  else counter <= counter + threshold;       end  always@(posedge clk or negedge rst_n)  begin  if(!rst_n)  wave_out <= 0;  else if(counter < 32'h7FFF_FFFF)  wave_out <= 0;  else wave_out <= 1;  end  endmodule 

button_control.v

module button_control(input wire clk,input wire rst_n,input wire button_up,  // 增加频率按钮input wire button_down, // 减少频率按钮output reg [19:0] freq_sel // 输出选择的频率
);reg [19:0] freq_max = 20'd1000;  // 最大频率 1 MHz (1000 kHz)reg [19:0] freq_min = 20'd1;     // 最小频率 1 kHzreg button_up_last;reg button_down_last;// 检测下降沿wire button_up_fall = (button_up_last == 1) && (button_up == 0);wire button_down_fall = (button_down_last == 1) && (button_down == 0);always @(posedge clk) beginif (!rst_n) beginfreq_sel <= 20'd1;button_up_last <= 1'b1;         button_down_last <= 1'b1;  // 默认频率1 kHzend else begin// 更新按键的上一个状态button_up_last <= button_up;button_down_last <= button_down;// 处理按键下降沿if (button_up_fall && freq_sel < freq_max)freq_sel <= freq_sel + 1;else if (button_down_fall && freq_sel > freq_min)freq_sel <= freq_sel - 1;end
endendmodule

seven_segment_display.v

// 数码管显示模块
module seven_segment_display(input wire clk,input wire rst_n,input wire [19:0] freq_sel, // 当前选择的频率值(单位kHz)output reg [6:0] hex0, // 数码管显示频率的最低位output reg [6:0] hex1, // 数码管显示频率的中间位output reg [6:0] hex2  // 数码管显示频率的最高位
);wire [3:0] digit0 = freq_sel % 10;      // 频率个位wire [3:0] digit1 = (freq_sel / 10) % 10; // 频率十位wire [3:0] digit2 = (freq_sel / 100) % 10; // 频率百位always @(*) beginhex0 = digit_to_segment(digit0);hex1 = digit_to_segment(digit1);hex2 = digit_to_segment(digit2);endfunction [6:0] digit_to_segment;input [3:0] digit;case (digit)4'd0: digit_to_segment = 7'b1000000; // 显示04'd1: digit_to_segment = 7'b1111001; // 显示14'd2: digit_to_segment = 7'b0100100; // 显示24'd3: digit_to_segment = 7'b0110000; // 显示34'd4: digit_to_segment = 7'b0011001; // 显示44'd5: digit_to_segment = 7'b0010010; // 显示54'd6: digit_to_segment = 7'b0000010; // 显示64'd7: digit_to_segment = 7'b1111000; // 显示74'd8: digit_to_segment = 7'b0000000; // 显示84'd9: digit_to_segment = 7'b0010000; // 显示9default: digit_to_segment = 7'b1111111; // 默认不显示endcaseendfunction
endmodule

uart_control.v

module uart_control(input wire clk,           // FPGA主时钟input wire rst_n,         // 复位信号input wire uart_rx,       // 接收来自计算机的UART信号output reg [19:0] freq_sel // 输出设置的频率值
);wire [7:0] uart_data;       // 单字节UART数据wire uart_data_ready;       // 数据是否接收完成的标志reg [15:0] received_data;   // 两字节拼接后的数据reg [1:0] byte_counter;     // 字节计数器,跟踪接收的字节数reg data_processed;         // 数据是否已处理标志// 实例化UART接收器uart_receiver uart_rx_inst (.clk(clk),.rst_n(rst_n),.rx(uart_rx),.data(uart_data),.data_ready(uart_data_ready));always @(posedge clk or negedge rst_n) beginif (!rst_n) beginfreq_sel <= 20'd1;    // 默认频率1 kHzreceived_data <= 16'd0;byte_counter <= 2'd0;data_processed <= 1'b0;end else begin// 当UART数据接收完成且尚未处理时if (uart_data_ready && !data_processed) begin// 处理接收到的第一个或第二个字节if (byte_counter == 2'd0) beginreceived_data[7:0] <= uart_data;  // 保存第一个字节byte_counter <= byte_counter + 1;end else if (byte_counter == 2'd1) beginreceived_data[15:8] <= uart_data; // 保存第二个字节byte_counter <= 2'd0;            // 重置字节计数器// 检查拼接后的频率是否在有效范围内if (received_data >= 16'd1 && received_data <= 16'd1000) beginfreq_sel <= {4'd0, received_data};  // 将16位数据扩展为20位enddata_processed <= 1'b1;  // 标记数据已处理endend// 当数据未准备好时,重置标志以等待下一个数据if (!uart_data_ready) begindata_processed <= 1'b0;endendend
endmodule

uart_receiver.v

module uart_receiver (input wire clk,             // FPGA主时钟input wire rst_n,           // 复位信号input wire rx,              // UART接收信号output reg [7:0] data,      // 接收到的数据output reg data_ready       // 数据接收完成标志
);parameter CLK_FREQ = 50000000; // FPGA主时钟频率(例如50MHz)parameter BAUD_RATE = 9600;    // UART波特率(例如9600)localparam BIT_PERIOD = CLK_FREQ / BAUD_RATE; // 每个位的时钟周期数reg [15:0] clk_counter;  // 时钟计数器reg [3:0] bit_index;     // 当前位索引reg [7:0] rx_shift_reg;  // 接收移位寄存器reg receiving;           // 接收状态标志always @(posedge clk or negedge rst_n) beginif (!rst_n) beginclk_counter <= 16'd0;bit_index <= 4'd0;rx_shift_reg <= 8'd0;data_ready <= 1'b0;receiving <= 1'b0;end else begin// 开始接收:检测到起始位(rx == 0)if (!receiving && rx == 1'b0) beginreceiving <= 1'b1;clk_counter <= 16'd0;bit_index <= 4'd0;data_ready <= 1'b0;end// 接收状态:按波特率接收位if (receiving) beginif (clk_counter == BIT_PERIOD - 1) beginclk_counter <= 16'd0;if (bit_index == 4'd8) begin// 停止位接收完成,数据完整receiving <= 1'b0;data <= rx_shift_reg;    // 将移位寄存器中的数据存入datadata_ready <= 1'b1;      // 设置数据接收完成标志end else begin// 继续接收数据位,移位存储rx_shift_reg <= {rx, rx_shift_reg[7:1]};bit_index <= bit_index + 1;endend else beginclk_counter <= clk_counter + 1;endend else begindata_ready <= 1'b0;  // 重置data_ready标志endendendendmodule

资源

1.Quartus搭配Modelsim仿真全流程/Bug解决文章浏览阅读1.6w次,点赞20次,收藏178次。Quartus搭配Modelsim仿真全流程教学,可能遇到的问题以及解决方法_quartus仿真https://blog.csdn.net/weixin_43680772/article/details/117791151?fromshare=blogdetail&sharetype=blogdetail&sharerId=117791151&sharerefer=PC&sharesource=AhandsomeA&sharefrom=from_linkhttps://blog.csdn.net/weixin_43680772/article/details/117791151?fromshare=blogdetail&sharetype=blogdetail&sharerId=117791151&sharerefer=PC&sharesource=AhandsomeA&sharefrom=from_link

Quartus使用步骤及联合Modelsim仿真教程文章浏览阅读2.1w次,点赞52次,收藏300次。Quartus使用记录及与modelsim联合仿真_quartus仿真https://blog.csdn.net/m0_64605336/article/details/134355651?fromshare=blogdetail&sharetype=blogdetail&sharerId=134355651&sharerefer=PC&sharesource=AhandsomeA&sharefrom=from_linkhttps://blog.csdn.net/m0_64605336/article/details/134355651?fromshare=blogdetail&sharetype=blogdetail&sharerId=134355651&sharerefer=PC&sharesource=AhandsomeA&sharefrom=from_link

2.Quartus串口驱动及USB-Blaster驱动下载指南https://blog.csdn.net/gitblog_09700/article/details/143154139https://blog.csdn.net/gitblog_09700/article/details/143154139

3.AI工具ChatGPThttps://chat.openai.com/https://chat.openai.com/

豆包https://www.doubao.com/chat/2377401https://www.doubao.com/chat/2377401

DeepSeekhttps://chat.deepseek.com/https://chat.deepseek.com/

4.使用手册:Terasic - All FPGA Boards - Cyclone V - DE1-SoC Boardhttps://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=836&PartNo=4https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=836&PartNo=4

Terasic - SoC Platform - Cyclone - DE10-Standardhttps://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1081&PartNo=4https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=1081&PartNo=4

相关文章:

实验六 项目二 简易信号发生器的设计与实现 (HEU)

声明&#xff1a;代码部分使用了AI工具 实验六 综合考核 Quartus 18.0 FPGA 5CSXFC6D6F31C6N 1. 实验项目 要求利用硬件描述语言Verilog&#xff08;或VHDL&#xff09;、图形描述方式、IP核&#xff0c;结合数字系统设计方法&#xff0c;在Quartus开发环境下&#xff…...

java SSM框架 商城系统源码(含数据库脚本)

商城购物功能&#xff0c;项目代码&#xff0c;mysql脚本&#xff0c;html等静态资源在压缩包里面 注册界面 登陆界面 商城首页 文件列表 shop/.classpath , 1768 shop/.project , 1440 shop/.settings/.jsdtscope , 639 shop/.settings/org.eclipse.core.resources.prefs , …...

Unet 改进:在encoder和decoder间加入TransformerBlock

目录 1. TransformerBlock 2. Unet 改进 3. 完整代码 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transformer模型架构的基本组件,广泛应用于机器翻译、文本摘要和情感分析等自然语言处理任务…...

【黄啊码】DeepSeek提示词大道至简版

1.1 有效提问的五个黄金法 法则一&#xff1a;明确需求 错误示例&#xff1a; Γ帮我写点东西」 正确姿势&#xff1a; Γ我需要一封求职邮件&#xff0c;应聘新媒体运营岗位&#xff0c;强调B年公众号运营经验 法则二&#xff1a;提供背景 错误示例 &#xff1a; Γ分析这个…...

【Linux系统】信号:认识信号 与 信号的产生

信号快速认识 1、生活角度的信号 异步&#xff1a;你是老师正在上课&#xff0c;突然有个电话过来资料到了&#xff0c;你安排小明过去取资料&#xff0c;然后继续上课&#xff0c;则小明取资料这个过程就是异步的 同步&#xff1a;小明取快递&#xff0c;你停下等待小明回来再…...

一、html笔记

(一)前端概述 1、定义 前端是Web应用程序的前台部分,运行在PC端、移动端等浏览器上,展现给用户浏览的网页。通过HTML、CSS、JavaScript等技术实现,是用户能够直接看到和操作的界面部分。上网就是下载html文档,浏览器是一个解释器,运行从服务器下载的html文件,解析html、…...

C# 数组和列表的基本知识及 LINQ 查询

数组和列表的基本知识及 LINQ 查询 一、基本知识二、引用命名空间声明三、数组3.1、一维数组3.2、二维数组3.3、不规则数组 Jagged Array 四、列表 List4.1、一维列表4.2、二维列表 五、数组和列表使用 LINQ的操作和运算5.1、一维 LIST 删除所有含 double.NaN 的行5.2、一维 LI…...

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…...

【llm对话系统】大模型 Llama 源码分析之归一化方法 RMS Norm

1. 引言 在深度学习中&#xff0c;归一化 (Normalization) 是一种常用的技术&#xff0c;它可以加速模型的训练并提高模型的性能。常见的归一化方法包括 Batch Normalization (BatchNorm)、Layer Normalization (LayerNorm) 等。Llama 模型采用了一种称为 RMS Norm 的归一化方…...

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南&#xff1a;让Docker拥抱GPU 前言一、环境准备1.1 验证驱动状态 二、安装NVIDIA Container Toolkit2.1 添加官方仓库2.2 执行安装 三、配置Docker运行时3.1 更新Docker配置 四、验证安装结果4.1 运行测试容器 五、实战应用 …...

青少年编程与数学 02-008 Pyhon语言编程基础 15课题、运用函数

青少年编程与数学 02-008 Pyhon语言编程基础 15课题、运用函数 一、函数的运用1. 问题分解2. 定义函数接口3. 实现函数4. 测试函数5. 组合函数6. 处理错误和异常7. 优化和重构示例&#xff1a;使用函数解决复杂数学问题 二、递归三、递归函数1. 确定基本情况&#xff08;Base C…...

ARM TEE

在ARM的语境中&#xff0c;TEE是Trusted Execution Environment&#xff08;可信执行环境&#xff09;的缩写。ARM TEE就是基于ARM架构实现的可信执行环境&#xff0c;以下是具体介绍&#xff1a; 定义与原理 定义&#xff1a;ARM TEE是基于独立硬件&#xff0c;和主操作系统…...

洛谷 P8724 [蓝桥杯 2020 省 AB3] 限高杆

洛谷题目传送门 题目描述 某市有 n 个路口&#xff0c;有 m 段道路连接这些路口&#xff0c;组成了该市的公路系统。其中一段道路两端一定连接两个不同的路口。道路中间不会穿过路口。 由于各种原因&#xff0c;在一部分道路的中间设置了一些限高杆&#xff0c;有限高杆的路…...

虚幻UE5手机安卓Android Studio开发设置2025

一、下载Android Studio历史版本 步骤1&#xff1a;虚幻4.27、5.0、5.1、5.2官方要求Andrd Studio 4.0版本&#xff1b; 5.3、5.4、5.5官方要求的版本为Android Studio Flamingo | 2022.2.1 Patch 2 May 24, 2023 虚幻官网查看对应Andrd Studiob下载版本&#xff1a; https:/…...

JavaWeb入门-请求响应(Day3)

(一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…...

【Rust】18.2. 可辩驳性:模式是否会无法匹配

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 18.2.1. 模式的两种形式 模式有两种形式&#xff1a; 可辩驳的&#xff08;可失败的&…...

【SLAM】于AutoDL云上GPU运行GCNv2_SLAM的记录

配置GCNv2_SLAM所需环境并实现AutoDL云端运行项目的全过程记录。 1. 引子 前几天写了一篇在本地虚拟机里面CPU运行GCNv2_SLAM项目的博客&#xff1a;链接&#xff0c;关于GCNv2_SLAM项目相关的介绍请移步此文章&#xff0c;本文不再重复说明。 GCNv2: Efficient Corresponde…...

SQL进阶实战技巧:某芯片工厂设备任务排产调度分析 | 间隙分析技术应用

目录 0 技术定义与核心原理 1 场景描述 2 数据准备 3 间隙分析法 步骤1:原始时间线可视化...

【自然语言处理(NLP)】基于Transformer架构的预训练语言模型:BERT 训练之数据集处理、训练代码实现

文章目录 介绍BERT 训练之数据集处理BERT 原理及模型代码实现数据集处理导包加载数据生成下一句预测任务的数据从段落中获取nsp数据生成遮蔽语言模型任务的数据从token中获取mlm数据将文本转换为预训练数据集创建Dataset加载WikiText-2数据集 BERT 训练代码实现导包加载数据构建…...

Kotlin判空辅助工具

1&#xff09;?.操作符 //执行逻辑 if (person ! null) {person.doSomething() } //表达式 person?.doSomething() 2&#xff09;?:操作符 //执行逻辑 val c if (a ! null) {a } else {b } //表达式 val c a ?: b 3&#xff09;!!表达式 var message: String? &qu…...

41【文件名的编码规则】

我们在学习的过程中&#xff0c;写出数据或读取数据时需要考虑编码类型 火山采用&#xff1a;UTF-16 易语言采用&#xff1a;GBK php采用&#xff1a;UTF-8 那么我们写出的文件名应该是何种编码的&#xff1f;比如火山程序向本地写出一个“测试.txt”&#xff0c;理论上这个“测…...

使用MATLAB进行雷达数据采集可视化

本文使用轮趣科技N10雷达&#xff0c;需要源码可在后台私信或者资源自取 1. 项目概述 本项目旨在通过 MATLAB 读取 N10 激光雷达 的数据&#xff0c;并进行 实时 3D 点云可视化。数据通过 串口 传输&#xff0c;并经过解析后转换为 三维坐标点&#xff0c;最终使用 pcplayer 进…...

深入解析 CSS 中不常用属性及其相互作用

深入解析 CSS 中不常用属性及其相互作用 **1. CSS 自定义属性&#xff08;CSS Variables&#xff09;****属性示例****作用****布局相关的作用** **2. box-sizing: border-box;****属性示例****作用****布局相关的作用** **3. Flexbox 布局****属性示例****作用****布局相关的作…...

JPA中基本类型集合的映射与操作实例

在Java Persistence API&#xff08;JPA&#xff09;中&#xff0c;我们经常会遇到需要将基本类型集合&#xff08;如List或Set&#xff09;持久化到数据库中的场景。JPA通过ElementCollection注解为我们提供了一种简单而强大的方式来实现这一功能。本文将详细介绍如何使用Elem…...

[MySQL]事务的理论、属性与常见操作

目录 一、事物的理论 1.什么是事务 2.事务的属性&#xff08;ACID&#xff09; 3.再谈事务的本质 4.为什么要有事务 二、事务的操作 1.事务的支持版本 2.事务的提交模式 介绍 自动提交模式 手动提交模式 3.事务的操作 4.事务的操作演示 验证事务的回滚 事务异常…...

沙皮狗为什么禁养?

各位铲屎官们&#xff0c;今天咱们来聊聊一个比较敏感的话题&#xff1a;沙皮狗为什么会被禁养&#xff1f;很多人对沙皮狗情有独钟&#xff0c;但有些地方却明确禁止饲养这种犬种&#xff0c;这背后到底是什么原因呢&#xff1f;别急&#xff0c;今天就来给大家好好揭秘&#…...

Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)

大家好&#xff0c;今天是Dest1ny漏洞库的专题&#xff01;&#xff01; 会时不时发送新的漏洞资讯&#xff01;&#xff01; 大家多多关注&#xff0c;多多点赞&#xff01;&#xff01;&#xff01; 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚…...

PHP Error处理与优化指南

PHP Error处理与优化指南 引言 在PHP编程中,错误处理是保证程序稳定性和用户体验的关键环节。良好的错误处理机制不仅能帮助开发者快速定位问题,还能提升应用程序的健壮性。本文将详细介绍PHP错误处理的方法、技巧以及优化策略。 一、PHP错误处理概述 1.1 错误类型 PHP中…...

MySQL知识点总结(十八)

说明你对InnoDB集群的整体认知。 MySQL组复制技术是InnoDB集群实现的基础&#xff0c;组复制安装在集群中的每个服务器实例上。组复制能够创建弹性复制拓扑&#xff0c;在集群中的服务器脱机时可以自动重新配置自己。必须至少有三台服务器才能组成一个可以提供高可用性的组。组…...

DeepSeek-R1模型1.5b、7b、8b、14b、32b、70b和671b有啥区别?

deepseek-r1的1.5b、7b、8b、14b、32b、70b和671b有啥区别&#xff1f;码笔记mabiji.com分享&#xff1a;1.5B、7B、8B、14B、32B、70B是蒸馏后的小模型&#xff0c;671B是基础大模型&#xff0c;它们的区别主要体现在参数规模、模型容量、性能表现、准确性、训练成本、推理成本…...