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

实验六 项目二 简易信号发生器的设计与实现 (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…...

基于最近邻数据进行分类

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 完整代码&#xff1a; import torch import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt# 生成一个简单的数据…...

SpringSecurity:There is no PasswordEncoder mapped for the id “null“

文章目录 一、情景说明二、分析三、解决 一、情景说明 在整合SpringSecurity功能的时候 我先是去实现认证功能 也就是&#xff0c;去数据库比对用户名和密码 相关的类&#xff1a; UserDetailsServiceImpl implements UserDetailsService 用于SpringSecurity查询数据库 Logi…...

redex快速体验

第一步&#xff1a; 2.回调函数在每次state发生变化时候自动执行...

Flask框架基础入门教程_ezflaskapp

pip install flaskFlask 快速入门小应用 学东西&#xff0c;得先知道我们用这个东西&#xff0c;能做出来一个什么东西。 一个最小的基于flask 的应用可能看上去像下面这个样子&#xff1a; from flask import Flask app Flask(__name__)app.route(/) def hello_world():ret…...

Anaconda 全面解析:从入门到精通的操作教程

大家好&#xff0c;我是滔滔&#xff0c;欢迎来到我的空间。先简单介绍下anconda 一、环境管理 轻松创建独立的 Python 环境&#xff1a;可以为不同的项目创建不同的环境&#xff0c;每个环境可以有不同的 Python 版本和安装不同的包&#xff0c;避免了包冲突问题。例如&…...

3D图形学与可视化大屏:什么是材质属性,有什么作用?

一、颜色属性 漫反射颜色 漫反射颜色决定了物体表面对入射光进行漫反射后的颜色。当光线照射到物体表面时&#xff0c;一部分光被均匀地向各个方向散射&#xff0c;形成漫反射。漫反射颜色的选择会直接影响物体在光照下的外观。例如&#xff0c;一个红色的漫反射颜色会使物体在…...

HTML-新浪新闻-实现标题-排版

标题排版 图片标签&#xff1a;<img> src&#xff1a;指定图片的url&#xff08;绝对路径/相对路径&#xff09; width&#xff1a;图片的宽度&#xff08;像素/相对于父元素的百分比&#xff09; heigth&#xff1a;图片的高度&#xff08;像素/相对于父元素的百分比&a…...

.Net / C# 分析文件编码 并将 各种编码格式 转为 另一个编码格式 ( 比如: GB2312→UTF-8, UTF-8→GB2312)

相关库 .Net 8 编码识别: github.com/CharsetDetector/UTF-unknown <PackageReference Include"UTF.Unknown" Version"2.5.1" />代码 using UtfUnknown;var dir_path "D:\\Desktop\\新建文件夹2\\新建文件夹"; var dir_new_path &quo…...

本地部署 DeepSeek-R1 大模型

本地部署 DeepSeek-R1 大模型指南 1. 引言 1.1 DeepSeek-R1 模型简介 在人工智能的世界里&#xff0c;大型语言模型&#xff08;LLM&#xff09;正如一座巨大的宝库&#xff0c;里面储存着丰富的信息和无限的潜力。而DeepSeek-R1&#xff0c;就像那扇打开智慧之门的钥匙。它…...

canvas的基本用法

canvas canvas元素简介 1.是个container元素<canvas width100 height100></canvas>&#xff0c;有开闭标签 2.有且只有width和height两个attribute&#xff0c;不需要写单位 canvas的基本使用 const canvasEl document.getElementById(canvas01) const ctx …...

力扣【416. 分割等和子集】详细Java题解(背包问题)

首先我们可以求出数组和&#xff0c;当我们找到一个子集中元素的和为数组和的一半时&#xff0c;该就说明可以分割等和子集。 对于该问题我们可以转换成背包问题&#xff0c;求 数组里的元素 装入 数组和的一半大小的背包 能取得的最大值。 然后注意可以剪枝的地方。 代码&…...

UE学习日志#17 C++笔记#3 基础复习3

19.2 [[maybe_unused]] 禁止编译器在未使用某些内容时发出警告 19.3 [[noreturn]] 永远不会把控制权返回给调用点 19.4 [[deprecated]] 标记为已弃用&#xff0c;仍然可以使用但是不鼓励使用 可以加参数表示弃用的原因[[deprecated("")]] 19.5 [[likely]]和[[un…...

c++:vector

1.使用 1.1构造函数 常见的三种构造方式&#xff1a;空构造&#xff0c;拷贝构造&#xff0c;指定元素构造 1.2iterator begin和end也分为正向和反向。 注意&#xff1a;反向迭代器可以反向遍历是因为在定义rbegin和rend函数的时候把尾地址给到了rbegin&#xff0c;而不是说改…...

37. RGBLCD实验

一、RGBLCD显示原理简介 1、像素点 于一个“小灯“&#xff0c;不管是液晶屏&#xff0c;还是手机&#xff0c;平板&#xff0c;RGBLCD屏幕他都是有由一个个的彩色小灯构成的。彩色点阵屏每个像素点有三个小灯&#xff0c;红色、绿色和蓝色&#xff0c;也叫做RGB。RGB就是光的…...

反馈驱动、上下文学习、多语言检索增强等 | Big Model Weekly 第55期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 A Bayesian Approach to Harnessing the Power of LLMs in Authorship Attribution 传统方法严重依赖手动特征&#xff0c;无法捕捉长距离相关性&#xff0c;限制了其有效性。最近的研究利用预训练语言模型的…...

【深度分析】微软全球裁员计划不影响印度地区,将继续增加当地就业机会

当微软的裁员刀锋掠过全球办公室时&#xff0c;班加罗尔的键盘声却愈发密集——这场资本迁徙背后&#xff0c;藏着数字殖民时代最锋利的生存法则。 表面是跨国公司的区域战略调整&#xff0c;实则是全球人才市场的地壳运动。微软一边在硅谷裁撤年薪20万美金的高级工程师&#x…...

H. Mad City

题目链接&#xff1a;Problem - H - Codeforces 题目大意&#xff1a;给定一个带环的图&#xff0c; 以及a, b两点 判断再图上不断的移动&#xff0c; b想不与a相遇&#xff0c; a想捉到b, 并且二者只能移动一步。 若b跑不掉 NO 否则YES. 具体题目看链接 输入&#xff1a; …...

【C++】类与对象(下)

&#x1f984; 个人主页: 小米里的大麦-CSDN博客 &#x1f38f; 所属专栏: 小米里的大麦——C专栏_CSDN博客 &#x1f381; 代码托管: 小米里的大麦的Gitee仓库 ⚙️ 操作环境: Visual Studio 2022 文章目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit 关键…...

AJAX案例——图片上传个人信息操作

黑马程序员视频地址&#xff1a; AJAX-Day02-11.图片上传https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p26 图片上传 <!-- 文件选择元素 --><input type"file"…...

Redis-布隆过滤器

文章目录 布隆过滤器的特点:实践布隆过滤器应用 布隆过滤器的特点: 就可以把布隆过滤器理解为一个set集合&#xff0c;我们可以通过add往里面添加元素&#xff0c;通过contains来判断是否包含某个元素。 布隆过滤器是一个很长的二进制向量和一系列随机映射函数。 可以用来检索…...

OpenCV 图像旋转

在学习 OpenCV 和 Matplotlib 处理图像时&#xff0c;遇到了一些关于 cv2.imread()、cv2.getRotationMatrix2D()、plt.imshow() 的问题&#xff1a; import cv2 import numpy as np import matplotlib.pyplot as pltimg cv2.imread(img2.png, 1) # 读取彩色图像&#xff08;…...

联想Y7000+RTX4060+i7+Ubuntu22.04运行DeepSeek开源多模态大模型Janus-Pro-1B+本地部署

直接上手搓了&#xff1a; conda create -n myenv python3.10 -ygit clone https://github.com/deepseek-ai/Janus.gitcd Januspip install -e .pip install webencodings beautifulsoup4 tinycss2pip install -e .[gradio]pip install pexpect>4.3python demo/app_januspr…...

在线知识库创建与维护提升企业效率与知识共享能力

内容概要 在当今数字化快速发展的背景下&#xff0c;在线知识库逐渐成为企业管理信息的重要工具。其核心在于将知识进行系统化、结构化的整理和存储&#xff0c;便于员工获取和分享。这不仅提高了信息的访问效率&#xff0c;还促进了团队之间的协作。在线知识库的建立可以有效…...

C语言指针专题二 -- 字符指针与字符串

目录 1. 字符指针与字符串的核心原理 字符串的本质 字符串的存储 字符指针的特性 字符指针的操作 2. 编程实例 3. 常见陷阱与注意事项 4. 总结 1. 字符指针与字符串的核心原理 字符串的本质 C语言中没有独立的字符串类型&#xff0c;字符串本质是 以\0&#xff08;空…...

玄武计划--干中学,知行合一

作为开发者转型安全领域有一定优势,但需要系统学习网络安全知识。以下是针对你的情况(Java背景 + 快速入门)的实战导向学习路径,分为基础、工具、漏洞利用和进阶四个阶段: 一、基础准备(1-2周) 网络协议与渗透基础 重点协议:深入理解 TCP/IP、HTTP/HTTPS、DNS、SMTP,用…...

处理 .gitignore 未忽略文件夹问题

本地删除缓存 例如 .idea 文件夹被其他同事误提交&#xff0c;那么他本地执行以下代码 git rm -r --cached .idea对应本地再提交即可...

实验七 JSP内置对象II

实验七 JSP内置对象II 目的&#xff1a; 1、掌握JSP内置对象的使用。 2、理解JSP的作用域 3、掌握session&#xff0c;application对象的使用 实验要求&#xff1a; 1、完成实验题目 2、要求提交实验报告&#xff0c;将代码和实验结果页面截图放入报告中 实验过程&#xff1a…...

【Leetcode 每日一题 - 补卡】219. 存在重复元素 II

问题背景 给你一个整数数组 n u m s nums nums 和一个整数 k k k&#xff0c;判断数组中是否存在两个 不同的索引 i i i 和 j j j&#xff0c;满足 n u m s [ i ] n u m s [ j ] nums[i] nums[j] nums[i]nums[j] 且 ∣ i − j ∣ < k |i - j| < k ∣i−j∣<…...

Flask数据的增删改查(CRUD)_flask删除数据自动更新

查询年龄小于17的学生信息 Student.query.filter(Student.s_age < 17) students Student.query.filter(Student.s_age.__lt__(17))模糊查询&#xff0c;使用like&#xff0c;查询姓名中第二位为花的学生信息 like ‘_花%’,_代表必须有一个数据&#xff0c;%任何数据 st…...

web自动化——前端知识

<iframe> 是 HTML 中的一个元素&#xff0c;用于在当前网页中嵌入另一个网页或文档。它就像一个“窗口”&#xff0c;可以在页面中显示其他内容。 主要特点&#xff1a; 嵌入外部内容&#xff1a;可以在网页中嵌入其他网页、视频、地图等。独立上下文&#xff1a;嵌入的…...

计算机网络一点事(22)

地址解析协议ARP ARP&#xff1a;查询Mac地址 ARP表&#xff08;ARP缓存&#xff09;&#xff1a;记录映射关系&#xff0c;一个数据结构&#xff0c;定期更新ARP表 过程&#xff1a;请求分组&#xff0c;响应分组 动态主机配置协议DHCP 分配IP地址&#xff0c;配置默认网关…...

SG算法解析

Savitzky-Golay 滤波器的核心代码主要集中在计算投影矩阵B并使用这个矩阵对输入信号进行滤波。这部分核心代码包括计算B矩阵、处理边界效应和进行实际滤波操作。以下是对核心代码的一点解释&#xff1a; ① 计算 Savitzky-Golay 投影矩阵B B sgolay(order, framelen, weight…...

Ubuntu Server连接wifi

背景 家里服务器放在客厅太吵了, 准备挪到阳台, 所以买了TP wifi接收器, 因此需要配置wifi连接. 刚开始买了Tenda Ax300, 结果不支持服务器系统, 买前还是得和客服交流交流. 准备 驱动安装 对于windows系统来说, 这款接收器是免驱的, 但在linux上需要安装相应型号驱动 安装…...

Linux 4.19内核中的内存管理:x86_64架构下的实现与源码解析

在现代操作系统中,内存管理是核心功能之一,它直接影响系统的性能、稳定性和多任务处理能力。Linux 内核在 x86_64 架构下,通过复杂的机制实现了高效的内存管理,涵盖了虚拟内存、分页机制、内存分配、内存映射、内存保护、缓存管理等多个方面。本文将深入探讨这些机制,并结…...

L30.【LeetCode笔记】设计链表

1.题目 707. 设计链表 - 力扣&#xff08;LeetCode&#xff09; 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向…...

使用Pygame制作“Flappy Bird”游戏

1. 前言 Flappy Bird 是一款“点击上浮、松手下落”的横向卷轴游戏&#xff1a; 场景中持续出现上下成对的管道&#xff0c;玩家需要让小鸟在管道之间穿行&#xff1b;每穿过一对管道记 1 分&#xff1b;若小鸟碰到管道或掉到地面&#xff0c;则游戏结束&#xff1b;一旦上手…...

PHP中配置 variables_order详解

variables_order 是 PHP 配置文件 php.ini 中的一项配置指令&#xff0c;决定了 PHP 在处理请求时&#xff0c;哪些类型的变量将被注册到全局变量空间&#xff08;如 $GLOBALS&#xff09;中&#xff0c;以及这些变量的顺序。理解和正确配置 variables_order 对于开发和维护安全…...

Go学习:运算符总结

在 Go语言中&#xff0c;一元运算符拥有最高的优先级&#xff0c;二元运算符的运算方向均是从左至右。 下表列出了所有运算符以及它们的优先级&#xff0c;由上至下代表优先级由高到低&#xff1a;...

JS面相对象小案例:自定义安全数组

在JS中&#xff0c;数组不像其他语言&#xff08;java、python&#xff09;中那样安全&#xff0c;它具有动态性和弱类型性&#xff0c;切越界访问没有具体的报错&#xff0c;而是返回空&#xff0c;为提升数组的安全性&#xff0c;我们可以自行定义一个安全数组。 一、增加报…...

将markdown文件转为word文件

通义千问等大模型生成的回答多数是markdown类型的&#xff0c;需要将他们转为Word文件 一 pypandoc 介绍 1. 项目介绍 pypandoc 是一个用于 pandoc 的轻量级 Python 包装器。pandoc 是一个通用的文档转换工具&#xff0c;支持多种格式的文档转换&#xff0c;如 Markdown、HTM…...

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

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

LeetCode题练习与总结:两个列表的最小索引总和--599

一、题目描述 假设 Andy 和 Doris 想在晚餐时选择一家餐厅&#xff0c;并且他们都有一个表示最喜爱餐厅的列表&#xff0c;每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个&#xff0c;则输出所有答案并且不考虑顺序。…...

IBM数据与人工智能系列 安装 IBM 编程助手

登录CPD环境 ${CPDM_OC_LOGIN} 安装编程助手 cpd-cli manage apply-olm \ --release${VERSION} \ --cpd_operator_ns${PROJECT_CPD_INST_OPERATORS} \ --componentswca cpd-cli manage apply-cr \ --componentswca \ --release${VERSION} \ --cpd_instance_ns${PROJECT_CPD…...

细说机器学习算法之ROC曲线用于模型评估

系列文章目录 第一章&#xff1a;Pyhton机器学习算法之KNN 第二章&#xff1a;Pyhton机器学习算法之K—Means 第三章&#xff1a;Pyhton机器学习算法之随机森林 第四章&#xff1a;Pyhton机器学习算法之线性回归 第五章&#xff1a;Pyhton机器学习算法之有监督学习与无监督…...

unity学习25:用 transform 进行旋转和移动,简单的太阳地球月亮模型,以及父子级关系

目录 备注内容 1游戏物体的父子级关系 1.1 父子物体 1.2 坐标关系 1.3 父子物体实际是用 每个gameobject的tranform来关联的 2 获取gameObject的静态数据 2.1 具体命令 2.2 具体代码 2.3 输出结果 3 获取gameObject 的方向 3.1 游戏里默认的3个方向 3.2 获取方向代…...

如何利用天赋实现最大化的价值输出

这种文章&#xff0c;以我现在的实力很难写出来。所以需要引用一些视频。 上92高校容易吗 如果基于天赋努力&#xff0c;非常容易。 如果不是这样&#xff0c;非常非常难。 高考失败人生完蛋&#xff1f;复读考上交大&#xff0c;进入社会才发现学历只是一张纸&#xff0c;98…...

使用 postman 测试思源笔记接口

思源笔记 API 权鉴 官方文档-中文&#xff1a;https://github.com/siyuan-note/siyuan/blob/master/API_zh_CN.md 权鉴相关介绍截图&#xff1a; 对应的xxx&#xff0c;在软件中查看 如上图&#xff1a;在每次发送 API 请求时&#xff0c;需要在 Header 中添加 以下键值对&a…...

代码随想录33

目录 leetcode738.单调递增的字符串 优化过的算法&#xff1a; 困难模式&#xff1a;968.监控二叉树 leetcode738.单调递增的字符串 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于…...

解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(7)(其他Hint)

10.5.3. 常用hint 10.5.3.7. 其他Hint 1)cardinality:显式的指示优化器为SQL语句的某个行源指定势。该Hint具体语法如下所示。 SQL> select /*+ cardinality([@qb] [table] card ) */ ...; --注: 1)这里,第一个参数(@qb)为可选参数,指定查询语句块名;第二个参数…...