大家好,,又到了每日學(xué)習(xí)的時(shí)間了,,今天咱們來(lái)聊一聊vivado 調(diào)用IP核。
首先咱們來(lái)了解一下vivado的IP核,IP核(IP Core):Vivado中有很多IP核可以直接使用,,例如數(shù)學(xué)運(yùn)算(乘法器、除法器,、浮點(diǎn)運(yùn)算器等),、信號(hào)處理(FFT、DFT,、DDS等),。IP核類(lèi)似編程中的函數(shù)庫(kù)(例如C語(yǔ)言中的printf()函數(shù)),可以直接調(diào)用,,非常方便,,大大加快了開(kāi)發(fā)速度。
使用Verilog調(diào)用IP核
這里簡(jiǎn)單舉一個(gè)乘法器的IP核使用實(shí)例,,使用Verilog調(diào)用,。首先新建工程,新建demo.v頂層模塊,。
一,、添加IP核
1. 點(diǎn)擊Flow Navigator中的IP Catalog,。
2. 選擇Math Functions下的Multiplier,即乘法器,,并雙擊,。
3. 將彈出IP核的參數(shù)設(shè)置對(duì)話框。點(diǎn)擊左上角的Documentation,,可以打開(kāi)這個(gè)IP核的使用手冊(cè)查閱,。這里直接設(shè)置輸入信號(hào)A和B均為4位無(wú)符號(hào)型數(shù)據(jù),其他均為默認(rèn)值,,點(diǎn)擊OK,。
4. 稍后彈出的窗口,點(diǎn)擊Generate,。
二,、調(diào)用IP核
1. 選擇IP Sources,展開(kāi)并選擇mult_gen_0 - Instantiation Template - mult_gen_0.veo,,可以打開(kāi)實(shí)例化模板文件,。如圖,這段代碼就是使用Verilog調(diào)用這個(gè)IP核的示例代碼,。
2. 將示例代碼復(fù)制到demo.v文件中,,并進(jìn)行修改,最終如下,。代碼中聲明了無(wú)符號(hào)型的4位變量a和b,,分別賦初值7、8,,作為乘數(shù)使用,;無(wú)符號(hào)型的8位變量p,用于保存計(jì)算結(jié)果,。clk為T(mén)estbench編寫(xiě)的周期20ns的時(shí)鐘信號(hào),;mult_gen_0 mul(...)語(yǔ)句實(shí)例化了mult_gen_0類(lèi)型的模塊對(duì)象mul,并將clk,、a,、b、p作為參數(shù)傳入,。
三,、行為仿真驗(yàn)證
以demo為頂層模塊,啟動(dòng)行為仿真,,即可輸出波形,。設(shè)置a、b,、p顯示為無(wú)符號(hào)十進(jìn)制(右擊選擇Radix - Unsigned Decimal),。如圖,可以看到a=7, b=8,,第一個(gè)時(shí)鐘上升沿后p = a * b = 56,。
框圖(Block Design)中調(diào)用IP核
這里舉一個(gè)簡(jiǎn)單的例子,通過(guò)調(diào)用乘法器IP核,,產(chǎn)生一個(gè)能計(jì)算平方的新模塊,。
一、創(chuàng)建框圖設(shè)計(jì)文件
1. 選擇Flow Navigator中的Create Block Design,,創(chuàng)建一個(gè)框圖設(shè)計(jì)文件,。
2. 輸入文件名并點(diǎn)擊OK。
二,、添加IP核
1. 在框圖空白處右擊,,選擇Add IP。
2. 可以直接搜索需要的IP核,,雙擊確認(rèn),。
3. IP核即可被添加進(jìn)來(lái),可以用導(dǎo)線將其與其他器件連接,。
4. 雙擊這個(gè)IP核符號(hào),,可以打開(kāi)參數(shù)設(shè)置對(duì)話框。點(diǎn)擊左上方的Documentation可以查看IP核的手冊(cè),。這里將輸入的A,、B均設(shè)置為4為無(wú)符號(hào)型,其他為默認(rèn)值,,點(diǎn)擊OK確認(rèn),。
三、繪制電路
1. 右擊Diagram窗口空白處,,選擇Create Port,。
2. 彈出窗口中,設(shè)置端口a為4位輸入信號(hào),,并點(diǎn)擊OK,。
3. 將a與A、B都連接起來(lái),。
4. 同樣的方法,,添加一個(gè)8位輸出端口p,與P連接,。
5. 再添加一個(gè)clk時(shí)鐘輸入端口,,與CLK連接。
6. 最終結(jié)果如圖,。
四,、仿真測(cè)試
1. 右擊框圖設(shè)計(jì)文件design_1,,選擇Create HDL Wrapper。
2. 選擇第二項(xiàng)并點(diǎn)擊OK,。
3. 打開(kāi)生成的design_1_wrapper.v文件如圖,,紅框中的代碼用來(lái)調(diào)用前面畫(huà)好的Block Design模塊。
4. 在design_1_wrapper.v文件中,,添加Testbench代碼即可進(jìn)行行為仿真,。修改代碼如下,給輸入信號(hào)a賦初值為8,,clk連接到Testbench生成的時(shí)鐘信號(hào)c上,。
5. 在Simulation Sources文件夾下,設(shè)置design_1_wrapper.v為行為仿真的頂層文件(右擊,,選擇Set as Top),。
啟動(dòng)行為仿真,最終輸出的波形如下,??梢钥吹剑赾lk的第一個(gè)上升沿后,,就有 p = a*a = 64,,即實(shí)現(xiàn)了平方運(yùn)算。