FPGA中的硬件邏輯與軟件程序的區(qū)別,相信大家在做除法運(yùn)算時(shí)會(huì)有深入體會(huì)。若其中一個(gè)操作數(shù)為常數(shù),可通過簡單的移位與求和操作代替,但用硬件邏輯完成兩變量間除法運(yùn)算會(huì)占用較多的資源,電路結(jié)構(gòu)復(fù)雜,且通常無法在一個(gè)時(shí)鐘周期內(nèi)完成。因此FPGA實(shí)現(xiàn)除法運(yùn)算并不是一個(gè)“/”號(hào)可以解決的。
好在此類基本運(yùn)算均有免費(fèi)的IP核使用,本人使用的VIVADO 2016.4開發(fā)環(huán)境提供的divider gen IP核均采用AXI總線接口,已經(jīng)不再支持native接口。故做除法運(yùn)算的重點(diǎn)從設(shè)計(jì)算法電路轉(zhuǎn)變成了調(diào)用AXI總線IP核以及HDL中有符號(hào)數(shù)的表示問題,極大降低了開發(fā)難度。以下就上述兩個(gè)方面進(jìn)行探討。
VerilogHDL中默認(rèn)數(shù)據(jù)類型為無符號(hào)數(shù),因此需要數(shù)學(xué)運(yùn)算的場(chǎng)合必須要用“signed”聲明,如:reg signed [8-1:0] signal_a;wire signed [32-1:0] signal_b;需要注意一點(diǎn),F(xiàn)PGA將所有有符號(hào)數(shù)視為二進(jìn)制補(bǔ)碼形式,運(yùn)算的結(jié)果同樣為補(bǔ)碼。再來看看除法器IP核配置界面。
總共就兩頁,非常簡單。需要重點(diǎn)關(guān)注的有三個(gè)地方:1 算法實(shí)現(xiàn)結(jié)構(gòu)(algorithm type)2 被除數(shù)與除數(shù)的位寬 3 第二頁flow control模式?,F(xiàn)來一一說明:
就算法結(jié)構(gòu)來說官方文檔pg151 LogiCORE IP Product Guide中說得很詳細(xì):LUTMult結(jié)構(gòu)操作數(shù)最好不要高于12bit,且充分利用DSP slice和BRAM以降低對(duì)FPGA 邏輯資源的消耗。Radix-2操作數(shù)不要超過16bit,且利用資源與LUTMulti相反,大量使用register和LUT從而將DSP slice和BRAM資源節(jié)省出來用在別的地方。最后一個(gè)High Radix結(jié)構(gòu)支持超過16bit的大位寬操作數(shù),利用DSPslice等專用硬件資源。根據(jù)自己的需求選擇即可。
位寬問題沒什么好說的,需要特別注意保留位寬滿足計(jì)算范圍,也就是運(yùn)算之前的“補(bǔ)碼符號(hào)位擴(kuò)展”。至于flow control 模式與接口和AXI總線有關(guān)。
接口劃分得十分清晰,被除數(shù) 除數(shù)和商通道以及必要的時(shí)鐘和復(fù)位邏輯接口。每個(gè)AXI總線通道總是包括tdata tuser tlast 和握手信號(hào)tvalid tready,其中tuser為附加信息,tlast表示流模式下最后一個(gè)數(shù)據(jù),相當(dāng)于數(shù)據(jù)包中的包尾處。數(shù)據(jù)傳輸僅在tvalid和tready同時(shí)拉高時(shí)有效并更新。
而Non Blocking Mode在除法運(yùn)算時(shí)較常用,一句話概括:IP核接口不帶有FIFO緩存,輸出通道數(shù)據(jù)必須被下游模塊實(shí)時(shí)處理。上圖就明白了:
這一模式實(shí)際上是對(duì)AXI總線的簡化,很多場(chǎng)合下并不完全需要AXI總線強(qiáng)大的流控功能,特別是在AXI總線模塊的上下游均為可進(jìn)行實(shí)時(shí)處理的FPGA邏輯電路的情況下。AXI總線的另一個(gè)特點(diǎn)就是data packing,需要將不是8bit倍數(shù)位寬的數(shù)據(jù)高位填充從而確保數(shù)據(jù)最小單位是1byte,具體填充方式有所不同。很容易想到,這樣的data packing 功能對(duì)SOC中PL與PS部分的交互是十分友好的。
總體來說,在FPGA中做基本的數(shù)學(xué)運(yùn)算沒什么難度,即使是指數(shù) 對(duì)數(shù) 開根號(hào)之類的復(fù)雜運(yùn)算也有浮點(diǎn)IP Core的支持。本人后續(xù)用到復(fù)雜算法時(shí),會(huì)采用HLS方式開發(fā),僅用于算法驗(yàn)證,歡迎關(guān)注。
原文標(biāo)題:FPGA中的除法運(yùn)算及初識(shí)AXI總線
文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1629文章
21738瀏覽量
603459 -
除法運(yùn)算
+關(guān)注
關(guān)注
1文章
5瀏覽量
7639 -
AXI總線
+關(guān)注
關(guān)注
0文章
66瀏覽量
14263
原文標(biāo)題:FPGA中的除法運(yùn)算及初識(shí)AXI總線
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論