HLS 開發學習(二)向量加法器

2021-10-08 05:15:31 字數 2211 閱讀 8030

參考資料

通過hls建立乙個vectoradd工程

記得晶元選xc7z020clg400-1

首先新增標頭檔案vectoradd.h

#define n 5

typedef

int data_t;

void

vectoradd

(data_t a[n]

,data_t t,data_t b[n]

);

然後新增原始檔vectoradd.cpp

#include

"vectoradd.h"

void

vectoradd

(data_t a[n]

,data_t t,data_t b[n]

)}

還有乙個testbenc**件

#include

#include

#include

"vectoradd.h"

using namespace std;

intmain()

; data_t c =5;

data_t b[n]=;

data_t refb[n]=;

unsigned

int i =0;

unsigned

int errcnt =0;

vectoradd

(a,c,b)

; cout<<

setfill

('-'

)<<

setw(30

)<<

'-'<<

'\n'

; cout<<

setfill

(' '

)<<

setw(10

)<

"a";

cout<<

setfill

(' '

)<<

setw(10

)<

"c";

cout<<

setfill

(' '

)<<

setw(10

)<

"b"<<

'\n'

; cout<<

setfill

('-'

)<<

setw(30

)<

'\n'

;for

( i =

0;i)else

} cout <<

setfill

('-'

)<<

setw(30

)<<

'-'<<

'\n';if

(errcnt >0)

else

}

執行c**,可以得到乙個結果

是根據我們的testbenc**件進行的向量相加。

ok,接下來c綜合,然後跑一下rtl和c的聯合**

vivado將會被自動開啟

可以根據需要檢視波形

新建乙個solution

對myloop insert乙個derivative

然後繼續綜合

選擇compare reports來進行一下比較

solution2的latency和interval確實吧1小了

這個優化也可以被直接寫到原始檔中,迴圈變為

myloop:

for(i=

0;i)

verilog學習記(加法器)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!程式語言,光看書其實作用不大的,關鍵還需要自己進行實踐。看書的時候,你覺得自己明白了 弄懂了,等到用modelsim實踐的時候還是會出現這樣那樣的問題。因此,還是希望自己能夠不斷地訓練和練習,這樣可以達到熟能生巧的程度。就今天的加法器來說,其實內容...

2 論二進位制加法器

乙個簡單的二進位制加法如下 0 100001101 10我們現在需要把它的結果分為兩位,乙個是加法位,乙個是進製位。分別如下 加法位01 0011 10 進製位01 0001 01進製位的邏輯跟我們上一章介紹的邏輯與門一樣,這就很好辦了。加法位跟或門邏輯較相似,除了右下角的0邏輯不一樣。也跟與非門較...

HLS 開發學習(五) 稀疏矩陣向量乘法

優化 b即為a的crs表示,值 values 陣列儲存矩陣中非零元素的值。列索引 columnindex 陣列和行指標 rowptr 陣列對非零元素的位置資訊進行編碼。我看了一下rowptr意思是在第幾個元素處換行是吧 對稀疏性沒有要求。include spmv.h void spmv int ro...