mmult mA mB = result
where
mBT = transpose mB
dot a b = sum $ zipWith (*) a b
result = map (\ar -> dot ar <$> mBT) mA
either way, this is along the right lines. however, what FPGAs can you target? any xilinx chips?it's really gonna take xilinx or altera to innovate in this space, but that is unlikely any time soon.