參考資料
通過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...