This is a an implementation of a classic systolic array multiplier with uart interface.
This implimention can multiply 2x2 matrix by another 2x2 matrix. The calculations are done in float16.
Your “How to Test” section outlines a clear testing protocol for your systolic array multiplier with a UART interface, designed to multiply 2x2 matrices using float16 representations. To make it more structured and clear, I’ve refined your instructions below:
Initialization Sequence: Begin by sending the initialization sequence 11111110
to the device. This sequence prepares the device to start receiving data for matrix multiplication.
Sending Matrix Data:
a11, a12, a21, a22
for A and similarly for B, send them in the order a11, a12, a21, a22, b11, b12, b21, b22
.Receiving the Result:
11111110
, indicating that the multiplication process is complete and the device is about to send the result.Interpreting the Results:
No external hardware is used for this project.
# | Input | Output | Bidirectional |
---|---|---|---|
0 | RX input | RX output | Block multiply done status |
1 | Calculation start signal | ||
2 | Send State bit 0 | ||
3 | Send State bit 1 | ||
4 | Send State bit 2 | ||
5 | Send State bit 3 | ||
6 | Done send signal | ||
7 | Send data signal |