當前使用版本為vivado 2018.3
vivado的IP核,IP核(IP Core):Vivado中有很多IP核可以直接使用,例如數學運算(乘法器、除法器、浮點運算器等)、信號處理(FFT、DFT、DDS等)。IP核類似編程中的函數庫(例如C語言中的printf()函數),可以直接調用,非常方便,大大加快了開發(fā)速度。
今天介紹的是vivado的三種常用IP核:時鐘倍頻(Clocking Wizard),實時仿真(ILA),ROM調用(Block Memory)。
Clocking Wizard
該IP核可以將輸入的時鐘信號進行倍頻,倍數可以大于1,也可以小于1,非常方便。
打開vivado 找到IP Catelog
在右側輸入欄中輸入clk,找到Clocking Wizard
雙擊該項目打開,根據開發(fā)板上晶振頻率進行輸入時鐘配置
配置需要輸出的倍頻頻率
在最下方可選擇IP核需要的引腳,我都沒用到,因此全取消了(之前有遇到選擇reset和lock引腳后IP核不能使用的情況,原因還未弄清楚)。
點擊OK,并點擊Generate,完成Clocking Wizard的配置
在代碼中對IP核進行調用
編寫TESTBENCH,仿真結果如下
ILA
ILA是用于實時仿真的IP核,在你將bit文件燒入芯片后,可在ILA核中看到你想觀察的圖像和數據。
打開IP Catelog,輸入ILA
雙擊打開項目,配置需要觀察的端口數,采樣的深度
配置觀察端口的位數
點擊OK,和Generate完成IP核配置
在代碼中調用IP核
完成工程綜合后,下載文件,點擊運行和循環(huán),開始觀察
Block Memory
該IP核調用片內ROM,可以用來儲正弦波,三角波等波形。該IP核引用文件的格式為.coe,因此我們需要先使用Matlab生成一個.coe文件。
打開matlab,新建一個.m文件,輸入以下代碼生成一個位寬10位,深度1024的正弦波
width=10; %rom的位寬
depth=1024; %rom的深度
x=linspace(0,2*pi,depth); %在一個周期內產生1024個采樣點
y_sin=cos(x); %生成余弦數據
y_sin=round(y_sin*(2^(width-1)-1))+2^(width-1)-1; %將余弦數據全部轉換為整數
fid=fopen(‘C:\Users\Leixx\Desktop\sin_coe.coe’,‘w’); %創(chuàng)建.coe文件
fprintf(fid,‘%d,\n’,y_sin); %向.coe文件中寫入數據
fclose(fid); %關閉.coe文件
生成文件之后,用notepad++(或UltraEdit)打開,你會看見已經生成好的1024個數據,這時需要在文件的最開始添加下面兩句:
memory_initialization_radix=10;
memory_initialization_vector =
radix表示是十進制顯示。之后,在文件的最末尾,將最后一個數據后面的逗號改成分號,點擊保存。
打開vivado,點擊IP Catalog,輸入block
雙擊打開項目,選擇Single port ROM
配置要存入的數據位寬和數據深度,我之前生成的是位寬10位,深度1024的數據
選擇Always Enanbled,讓IP核始終處于工作狀態(tài)
將之前生成好的文件載入IP核
點擊OK和Generate,完成IP核配置
在代碼中調用IP核,我這里DAC是低位在前
編寫好Testbench后,可以在仿真中看到正弦波,我這里因為低位在前,所以波形雜亂。
以上,便是vivado三種常用IP核的調用。
編輯:lyn
-
ROM
+關注
關注
4文章
563瀏覽量
85731 -
IP核
+關注
關注
4文章
327瀏覽量
49485 -
實時仿真
+關注
關注
0文章
23瀏覽量
8653 -
Vivado
關注
19文章
812瀏覽量
66470
發(fā)布評論請先 登錄
相關推薦
評論