|
//----------
1 a7 p! O' f) N1 L00.前提说明
* s" y& z" C& {个人使用vivado自带的仿真工具完成array_a和array_b的乘法运算,结果写入array_axb中。
$ _) s- F$ ]% i! p" Y: ~! W3 w同时有一点要说明,不同的人对verilog实现矩阵运算的理解不同,我的理解是用二维数组array代替二维矩阵matrix,同理,三维数组可以代替三维矩阵。所以,工程名字取名matrix,变量名用array,实际使用的时候依据个人命名习惯来处理。
$ Q9 _1 z# M x- I9 t; W再有,我写的矩阵运算代码比较low,仅当做参考。实际工程中使用矩阵常见两种方式,一种是在arm软核中处理,还有一种是依据C/C++等的矩阵算法进行HLS处理转化成verilog代码。当然,也有高手直接敲verilog代码实现矩阵运算的。$ u4 t" W. u# N. G9 u1 j/ s
//----------
6 k, ?! N- C; M0 X' c01.文件说明, @: @1 }' R% K6 @4 a
sim文件matrix_2x3_sim.v,用来理解矩阵matrix如何使用数组array代替,以及矩阵的赋值;0 P% g1 |( T0 ]9 L. g
矩阵运算文件matrix_2x3_top.v,用来实现2x2矩阵array_a与2x3矩阵array_b相乘,结果赋值给2x3矩阵array_axb。
( |$ J, E/ H4 e0 S* c仿真结果截图matrix_2x3_simulation_v1.0.png0 m0 w2 i' M8 z
网址运算结果matrix_2x3_resault_v1.0.png - ~, `" r8 t) s1 N) {$ P% k& \+ |
//----------- `' t+ j; o: P% z9 C: I' H- e6 x
02.仿真说明$ B$ k* y& s$ `$ Q- [
个人使用vivado自带仿真工具,仿真运行时间1us(大于100ns即可)。其中涉及到的矩阵相乘运算中,矩阵显示方式为无符号十进制数unsigned decimal。其他为软件默认设置。
: j3 x5 P; _0 k5 Y) G! M9 i1 i) |代码也可以在modelsim中运行。
3 c4 c% t& e7 ?! [* h0 [7 w03.个人参考的矩阵运算网址 |
|