|
//----------, f/ q3 d: `; w" n' _" I
00.前提说明5 d/ |; i' |6 J7 E
个人使用vivado自带的仿真工具完成array_a和array_b的乘法运算,结果写入array_axb中。
; T, H- }) F; t: M3 @/ j5 n% f同时有一点要说明,不同的人对verilog实现矩阵运算的理解不同,我的理解是用二维数组array代替二维矩阵matrix,同理,三维数组可以代替三维矩阵。所以,工程名字取名matrix,变量名用array,实际使用的时候依据个人命名习惯来处理。' Z* F/ h4 y( Z9 G! `: z0 x1 W% X
再有,我写的矩阵运算代码比较low,仅当做参考。实际工程中使用矩阵常见两种方式,一种是在arm软核中处理,还有一种是依据C/C++等的矩阵算法进行HLS处理转化成verilog代码。当然,也有高手直接敲verilog代码实现矩阵运算的。$ o/ G. l" p: V, S# C, d) d
//----------
( m# Y& F/ Q1 p0 [01.文件说明
! ^3 w+ [$ C0 Y! Psim文件matrix_2x3_sim.v,用来理解矩阵matrix如何使用数组array代替,以及矩阵的赋值;
) Z; }* R+ Z& B; `/ `( g7 F# L( [矩阵运算文件matrix_2x3_top.v,用来实现2x2矩阵array_a与2x3矩阵array_b相乘,结果赋值给2x3矩阵array_axb。! t1 u( D$ d1 D! N
仿真结果截图matrix_2x3_simulation_v1.0.png- R* c. n& Y0 U, W3 Q! R# K. f/ \) F
网址运算结果matrix_2x3_resault_v1.0.png ) s+ S M+ z) X% G7 b) W7 L
//---------- B7 q" b0 p8 X3 ^7 U
02.仿真说明
9 I; d2 L# i+ E7 W" q& H% ^2 w) R个人使用vivado自带仿真工具,仿真运行时间1us(大于100ns即可)。其中涉及到的矩阵相乘运算中,矩阵显示方式为无符号十进制数unsigned decimal。其他为软件默认设置。
! c7 H' R6 U& V/ d' P9 [4 Y7 y代码也可以在modelsim中运行。
; I* y9 P; V! {; S4 m' \03.个人参考的矩阵运算网址 |
|