實驗六 項目二 簡易信號發生器的設計與實現 (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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67708.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67708.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67708.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SCRM系統如何提升客戶管理及業務協同的效率與價值

內容概要 在當今商業環境中&#xff0c;SCRM系統&#xff08;社交客戶關系管理系統&#xff09;正逐漸受到越來越多企業的關注和重視。隨著科技的發展&#xff0c;傳統的客戶管理方式已經無法滿足快速變化的市場需求&#xff0c;SCRM系統通過整合客戶數據和社交網絡信息&#…

[免費]微信小程序智能商城系統(uniapp+Springboot后端+vue管理端)【論文+源碼+SQL腳本】

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;看到一個不錯的微信小程序智能商城系統(uniappSpringboot后端vue管理端)&#xff0c;分享下哈。 項目視頻演示 【免費】微信小程序智能商城系統(uniappSpringboot后端vue管理端) Java畢業設計_嗶哩嗶哩_bilibili 項目介紹…

PID算法的數學實現和參數確定方法

目錄 概述 1 算法描述 1.1 PID算法模型 1.2 PID離散化的圖形描述 1.3 PID算法的特點 2 離散化的PID算法 2.1 位置式PID算法 2.2 增量式PID算法 2.3 位置式PID與增量式PID比較 3 控制器參數整定 3.1 PID參數確定方法 3.1.1 湊試法 3.1.2 臨界比例法 3.1.3 經驗法…

《DeepSeek R1:大模型最簡安裝秘籍》

DeepSeek R1&#xff1a;AI 大模型界的新起之秀 在人工智能的璀璨星空中&#xff0c;大模型如繁星般閃耀&#xff0c;而 DeepSeek R1 無疑是其中一顆冉冉升起的新星&#xff0c;自問世以來便吸引了全球的目光&#xff0c;在人工智能領域占據了重要的一席之地。 從性能表現上看…

【論文閱讀】RAG-Reward: Optimizing RAG with Reward Modeling and RLHF

研究背景 研究問題&#xff1a;這篇文章要解決的問題是如何優化檢索增強生成&#xff08;RAG&#xff09;系統&#xff0c;特別是通過獎勵建模和人類反饋強化學習&#xff08;RLHF&#xff09;來提高大型語言模型&#xff08;LLMs&#xff09;在RAG任務中的效果。研究難點&…

【數據結構】(3)包裝類和泛型

一、包裝類 1、什么是包裝類 將基礎類型包裝成的類就是包裝類。由于基礎類型不是繼承 Object 類的類&#xff0c;所以在泛型不能直接支持基礎類型&#xff0c;為了解決這個問題&#xff0c;就需要把基礎類型轉換為對應的包裝類。 基礎類型對應的包裝類 基礎類型包裝類byteByte…

DBUtils中QueryRunner(空參,傳數據源)構造方法的區別及應用場景

關于學習Spring框架時重構DAO層時&#xff0c;遇到的QueryRunner構造方法的問題&#xff0c;回憶MySQL中DBUtils部分 1. 空參構造方法 new QueryRunner() 特點&#xff1a; 不綁定數據源&#xff1a;QueryRunner 實例內部沒有 DataSource&#xff0c;因此無法自動獲取連接。 …

C++11線程

C11提供了線程庫&#xff0c;下面我們來看一下如何使用。 線程的創建 頭文件 要創建一個線程需要包一個線程頭文件:#include <thread> 我們先來看看thread支持的構造方式。 支持默認構造&#xff0c;直接使用thread創建一個空的線程對象。 也支持帶參的構造&#x…

梯度提升用于高效的分類與回歸

人工智能例子匯總:AI常見的算法和例子-CSDN博客 使用 決策樹(Decision Tree) 實現 梯度提升(Gradient Boosting) 主要是模擬 GBDT(Gradient Boosting Decision Trees) 的原理,即: 第一棵樹擬合原始數據計算殘差(負梯度方向)用新的樹去擬合殘差累加所有樹的預測值重…

Golang 并發機制-3:通道(channels)機制詳解

并發編程是一種創建性能優化且響應迅速的軟件的強大方法。Golang&#xff08;也稱為 Go&#xff09;通過通道&#xff08;channels&#xff09;這一特性&#xff0c;能夠可靠且優雅地實現并發通信。本文將揭示通道的概念&#xff0c;解釋其在并發編程中的作用&#xff0c;并提供…

Unity開發游戲使用XLua的基礎

Unity使用Xlua的常用編碼方式&#xff0c;做一下記錄 1、C#調用lua 1、Lua解析器 private LuaEnv env new LuaEnv();//保持它的唯一性void Start(){env.DoString("print(你好lua)");//env.DoString("require(Main)"); 默認在resources文件夾下面//幫助…

筆記:使用ST-LINK燒錄STM32程序怎么樣最方便?

一般板子在插件上&#xff0c; 8腳 3.3V;9腳 CLK;10腳 DIO;4腳GND ST_Link 19腳 3.3V;9腳 CLK;7腳 DIO;20腳 GND 燒錄軟件&#xff1a;ST-LINK Utility&#xff0c;Keil_5; ST_Link 接口針腳定義&#xff1a; 按定義連接ST_Link與電路板&#xff1b; 打開STM32 ST-LINK Uti…

網絡測試工具

工具介紹&#xff1a; 這是一個功能完整的網絡測速工具&#xff0c;可以測試網絡的下載速度、上傳速度和延遲。 功能特點&#xff1a; 1. 速度測試 - 下載速度測試 - 上傳速度測試 - Ping延遲測試 - 自動選擇最佳服務器 2. 實時顯示 - 進度條顯示測試進度 - 實時顯示測試狀…

java每日精進1.31(SpringSecurity)

在所有的開發的系統中&#xff0c;都必須做認證(authentication)和授權(authorization)&#xff0c;以保證系統的安全性。 一、基礎使用 1.依賴 <dependencies><!-- 實現對 Spring MVC 的自動化配置 --><dependency><groupId>org.springframework.bo…

簡單的SQL語句的快速復習

語法的執行順序 select 4 字段列表 from 1 表名列表 where 2 條件列表 group by 3 分組前過濾 having 分組后過濾 order by 5 排序字段列表 limit 6 分頁參數 聚合函數 count 統計數量 max 最大值 min 最小值 avg 平均 sum 總和 分組查詢使…

《程序人生》工作2年感悟

一些雜七雜八的感悟&#xff1a; 1.把事做好比什么都重要&#xff0c; 先樹立量良好的形象&#xff0c;再橫向發展。 2.職場就是人情世故&#xff0c;但也不要被人情世故綁架。 3.要常懷感恩的心&#xff0c;要記住幫助過你的人&#xff0c;愿意和你分享的人&#xff0c;有能力…

17.2 圖形繪制8

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請在顯著位置標明本文出處以及作者網名&#xff0c;未經作者允許不得用于商業目的。 17.2.10 重繪 先看以下例子&#xff1a; 【例 17.28】【項目&#xff1a;code17-028】繪制填充矩形。 private void button1_Clic…

自定義數據集 使用pytorch框架實現邏輯回歸并保存模型,然后保存模型后再加載模型進行預測,對預測結果計算精確度和召回率及F1分數

import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.metrics import precision_score, recall_score, f1_score# 數據準備 class1_points np.array([[1.9, 1.2],[1.5, 2.1],[1.9, 0.5],[1.5, 0.9],[0.9, 1.2],[1.1, 1.7],[1.4,…

neo4j入門

文章目錄 neo4j版本說明部署安裝Mac部署docker部署 neo4j web工具使用數據結構圖數據庫VS關系數據庫 neo4j neo4j官網Neo4j是用ava實現的開源NoSQL圖數據庫。Neo4作為圖數據庫中的代表產品&#xff0c;已經在眾多的行業項目中進行了應用&#xff0c;如&#xff1a;網絡管理&am…

腳本運行禁止:npm 無法加載文件,因為在此系統上禁止運行腳本

問題與處理策略 1、問題描述 npm install -D tailwindcss執行上述指令&#xff0c;報如下錯誤 npm : 無法加載文件 D:\nodejs\npm.ps1&#xff0c;因為在此系統上禁止運行腳本。 有關詳細信息&#xff0c;請參閱 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_…