FPAG IP核調用小練習

一、調用步驟

1、打開Quartus
右上角搜索ROM,如圖所示
請添加圖片描述
2、點擊后會彈出如圖所示
在這里插入圖片描述
其中文件路徑需要選擇你自己的
3、點擊OK彈出如圖所示
請添加圖片描述
圖中紅色改為12與1024在這里插入圖片描述
4、然后一直點NEXT,直到下圖請添加圖片描述
這里要選擇后綴為 .mif的文件
5、用C語言生成 .mif文件
在這里插入圖片描述

// 生成1024點正弦波表(C程序)
#include <stdio.h>
#include <math.h>#define PI 3.14159265358979323846
#define DEPTH 1024  // ROM深度
#define WIDTH 12    // 數據寬度(12位)int main() {FILE *fp = fopen("sine_rom.mif", "w");if (!fp) return -1;fprintf(fp, "WIDTH=%d;\nDEPTH=%d;\nADDRESS_RADIX=HEX;\nDATA_RADIX=HEX;\nCONTENT BEGIN\n", WIDTH, DEPTH);for (int i = 0; i < DEPTH; i++) {float phase = (float)i / DEPTH * 2 * PI;short value = (short)(sin(phase) * (pow(2, WIDTH-1) - 1));fprintf(fp, "%03x : %03x;\n", i, value & 0xFFF);}fprintf(fp, "END;\n");fclose(fp);return 0;
}

然后運行.c文件,會在文件所在目錄下生成一個.mif文件,然后你就在第4步中選擇它就行。
然后一直next,直到finish

二 、核心模塊

1、相位累加器

module phase_accumulator (input wire clk,          // 50MHz系統時鐘input wire [23:0] K,     // 頻率控制字(24位)output reg [23:0] phase  // 相位累加值
);always @(posedge clk) beginphase <= phase + K;  // 相位累加end
endmodule

2、波形選擇器

module waveform_selector (input wire [23:0] phase, // 相位地址(24位)input wire sel,          // 波形選擇(0:正弦,1:方波)output reg [11:0] data_out
);reg [11:0] sine_data;    // 正弦波數據reg [11:0] square_data;  // 方波數據// 正弦ROMreg [11:0] sine_rom [0:1023];initial begin$readmemh("sine_rom.mif", sine_rom);endassign sine_data = sine_rom[phase[22:12]]; // 取中間12位地址// 方波ROMreg [11:0] square_rom [0:1023];initial begin$readmemh("square_rom.mif", square_rom);endassign square_data = square_rom[phase[22:12]];always @(*) beginif (sel) data_out = square_data;else     data_out = sine_data;end
endmodule

3、時鐘分頻器

module clock_divider (input wire clk_in,    // 50MHz輸入時鐘output reg clk_out    // 分頻后的時鐘(10MHz)
);reg [1:0] cnt;always @(posedge clk_in) begincnt <= cnt + 1;if (cnt == 2'b11) // 分頻系數為4(50MHz → 12.5MHz),或調整為5(10MHz)clk_out <= ~clk_out;end
endmodule

4、頂層模塊

module dds_top (input wire clk_50m,    // 系統時鐘(50MHz)input wire [23:0] K,   // 頻率控制字(來自撥碼開關)input wire sel,        // 波形選擇(按鈕控制)output reg [11:0] dac_data // DAC數據輸出
);wire [23:0] phase;     // 相位累加值wire clk_out;          // 分頻后的時鐘// 相位累加器phase_accumulator phase_acc (.clk(clk_50m),.K(K),.phase(phase));// 波形選擇器waveform_selector wave_sel (.phase(phase),.sel(sel),.data_out(dac_data));// 時鐘分頻(可選,用于DAC時鐘)clock_divider clk_div (.clk_in(clk_50m),.clk_out(clk_out) // 連接到DAC時鐘輸入);
endmodule

5、波形圖
請添加圖片描述
請添加圖片描述
參考博客https://blog.csdn.net/weixin_50722839/article/details/109960391

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

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

相關文章

Spring Cloud 服務間調用深度解析

前言 在構建微服務架構時&#xff0c;服務間的高效通信是至關重要的。Spring Cloud 提供了一套完整的解決方案來實現服務間的調用、負載均衡、服務發現等功能。本文將深入探討 Spring Cloud 中服務之間的調用機制&#xff0c;并通過源碼片段和 Mermaid 圖表幫助讀者更好地理解…

AF3 generate_chain_data_cache腳本解讀

AlphaFold3 generate_chain_data_cache 腳本在源代碼的scripts文件夾下。該腳本從指定目錄中批量解析 mmCIF/PDB 文件的工具,并將每個鏈的基本信息(序列、分辨率、是否屬于聚類等)提取并寫入 JSON 文件,主要用于后續蛋白質建模、過濾或訓練數據準備。 源代碼: import ar…

vue項目打包部署到maven倉庫

需要的資源文件&#xff0c;都放在根目錄下&#xff1a; 1. versionInfo.js const fs require(fs) const path require(path) const mkdirp require(mkdirp) const spawn require(child_process).spawnconst packageObj require(./package.json) const versionNo packa…

MegaTTS3: 下一代高效語音合成技術,重塑AI語音的自然與個性化

在近期的發布中&#xff0c;浙江大學趙洲教授團隊與字節跳動聯合推出了革命性的第三代語音合成模型——MegaTTS3&#xff0c;該模型不僅在多個專業評測中展現了卓越的性能&#xff0c;還為AI語音的自然性和個性化開辟了新的篇章。 MegaTTS3技術亮點 零樣本語音合成 MegaTTS3采用…

【教程】PyTorch多機多卡分布式訓練的參數說明 | 附通用啟動腳本

轉載請注明出處&#xff1a;小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你&#xff0c;歡迎[點贊、收藏、關注]哦~ 目錄 torchrun 一、什么是 torchrun 二、torchrun 的核心參數講解 三、torchrun 會自動設置的環境變量 四、torchrun 啟動過程舉例 機器 A&#…

計算機視覺——基于 Yolov8 目標檢測與 OpenCV 光流實現目標追蹤

1. 概述 目標檢測&#xff08;Object Detection&#xff09;和目標追蹤&#xff08;Object Tracking&#xff09;是計算機視覺中的兩個關鍵技術&#xff0c;它們在多種實際應用場景中發揮著重要作用。 目標檢測指的是在靜態圖像或視頻幀中識別出特定類別的目標對象&#xff0…

MySQL——流程控制

一、IF條件語句 語法 IF condition THENstatements; ELSEIF condition THENstatements; ELSEstatements; END IF; 判斷成績等級 # 判斷成績等級 # 輸入學生的編號,取出學生的第一門課&#xff0c;然后判斷當前的課程的等級 drop procedure if exists p2; delimiter $$ crea…

C# + Python混合開發實戰:優勢互補構建高效應用

文章目錄 前言&#x1f94f;一、典型應用場景1. 桌面應用智能化2. 服務端性能優化3. 自動化運維工具 二、四大技術實現方案方案1&#xff1a;進程調用&#xff08;推薦指數&#xff1a;★★★★☆&#xff09;方案2&#xff1a;嵌入Python解釋器&#xff08;推薦指數&#xff1…

MLflow 入門

官方主頁 MLflow | MLflow官方文檔 MLflow: A Tool for Managing the Machine Learning Lifecycle | MLflow 0. 簡介 MLflow 是一個開源平臺&#xff0c;專門為了幫助機器學習的從業者和團隊處理機器學習過程中的復雜性而設計。MLflow 關注機器學習項目的完整生命周期&#x…

【藍橋杯選拔賽真題101】Scratch吐絲的蜘蛛 第十五屆藍橋杯scratch圖形化編程 少兒編程創意編程選拔賽真題解析

目錄 scratch吐絲的蜘蛛 一、題目要求 1、準備工作 2、功能實現 二、案例分析 1、角色分析 2、背景分析 3、前期準備 三、解題思路 四、程序編寫 五、考點分析 六、推薦資料 1、scratch資料 2、python資料 3、C++資料 scratch吐絲的蜘蛛 第十五屆青少年藍橋杯s…

智譜最新模型GLM4是如何練成的

寫在前面 這篇博客將基于《ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools》,深入剖析 GLM-4 系列在**模型架構設計、預訓練、后訓練(對齊)、以及關鍵技術創新(如長上下文處理、Agent 能力構建)**等環節的實現邏輯與設計考量,帶你全面了…

第二屆電氣技術與自動化工程國際學術會議 (ETAE 2025)

重要信息 2025年4月25-27日 中國廣州 官網: http://www.icetae.com/ 部分 征稿主題 Track 1&#xff1a;電氣工程 輸配電、電磁兼容、高電壓和絕緣技術、電氣工程、電氣測量、電力電子及其應用、機電一體化、電路與系統、電能質量和電磁兼容性、電力系統及其自…

設備調試--反思與總結

最近回顧項目&#xff0c; 發現&#xff1a;在調試過程中最耽誤時間的可能不是技術難度&#xff0c;而是慣性思維&#xff1b; 例如&#xff1a; 我寫can通信濾波器的時候&#xff0c;可能是不過濾的&#xff1b;是接收所有的id報文&#xff0c;然后用業務邏輯過濾&#xff08…

C++項目:高并發內存池_下

目錄 8. thread cache回收內存 9. central cache回收內存 10. page cache回收內存 11. 大于256KB的內存申請和釋放 11.1 申請 11.2 釋放 12. 使用定長內存池脫離使用new 13. 釋放對象時優化成不傳對象大小 14. 多線程環境下對比malloc測試 15. 調試和復雜問題的調試技…

深度學習入門:神經網絡的學習

目錄 1 從數據中學習1.1 數據驅動1.2 訓練數據和測試數據 2損失函數2.1 均方誤差2.2 交叉熵誤差2.3 mini-batch學習2.4 mini-batch版交叉熵誤差的實現2.5 為何要設定損失函數 3 數值微分3.1 數值微分3.3 偏導數 4 梯度4.1 梯度法4.2 神經網絡的梯度 5 學習算法的實現5.1 2層神經…

【第45節】windows程序的其他反調試手段上篇

目錄 引言 一、通過窗口類名和窗口名判斷 二、檢測調試器進程 三、父進程是否是Explorer 四、RDTSC/GetTickCount時間敏感程序段 五、StartupInfo結構的使用 六、使用BeingDebugged字段 七、 PEB.NtGlobalFlag,Heap.HeapFlags,Heap.ForceFlags 八、DebugPort:CheckRem…

Golang|select

文章目錄 多路監聽超時控制 多路監聽 如果selcet外面沒有for循環&#xff0c;則只會監聽一次&#xff0c;要實現一直監聽的話要加for循環但是如果要設置退出條件的話&#xff0c;break語句只會退出這個select而不會退出for循環 select也可以有default&#xff0c;用于不用等cha…

無人機的群體協同與集群控制技術要點!

一、技術要點 通信技術 高效可靠的通信鏈路&#xff1a;無人機集群需要穩定、低延遲的通信網絡&#xff0c;以實現實時數據傳輸和指令交互。通信方式包括無線自組織網絡&#xff08;Ad Hoc&#xff09;、蜂窩網絡、衛星通信等&#xff0c;需根據任務場景選擇合適的通信技術。…

新手小白如何給個人電腦安裝Deepseek?

準備工作&#xff1a;Ollama安裝包、Chatbox安裝包 一、安裝Ollama 官網下載&#xff1a; 在 Windows 上下載 Ollama&#xff1a;https://ollama.com/download/windows 下載較慢&#xff0c;大家可以自行搜索資源下載&#xff0c;直接雙擊安裝即可。 安裝完畢后&#xff0c;…

Redis之RedLock算法以及底層原理

自研redis分布式鎖存在的問題以及面試切入點 lock加鎖關鍵邏輯 unlock解鎖的關鍵邏輯 使用Redis的分布式鎖 之前手寫的redis分布式鎖有什么缺點&#xff1f;&#xff1f; Redis之父的RedLock算法 Redis也提供了Redlock算法&#xff0c;用來實現基于多個實例的分布式鎖。…