verilog实现矩阵乘法,我是FPGA初学者, 现在要实现一个矩阵相乘,即输入矩阵A, 矩阵B, 输出矩阵c=A*B

具体疑惑的问题:1把两个矩阵存进存储单元(寄存器),是怎样的时钟去写入数据的
2.如何取出数据进行乘法运算并累加,看到常用的是脉动阵列,但是我不是很懂
3.在软件编程中利用的是for循环,在用verilog实现时,是设置一个标志位来决定运算什么时候结束吗?
我的思维比较混乱,求大家给我指点指点~

1把两个矩阵存进存储单元(寄存器),是怎样的时钟去写入数据的

如果A B是变量,数据就需要写入存储器而不是初始化进去,写入遵循存储器写入时序。
2 如何取出数据进行乘法运算并累加,看到常用的是脉动阵列,但是我不是很懂
提供矩阵元素的地址,从存储器中读出,脉动阵列就是流水线结构。
3.在软件编程中利用的是for循环,在用verilog实现时,是设置一个标志位来决定运算什么时候结束吗?

硬件设计的思维方式和软件设计的不同,软件中的for是循环利用循环体内的代码执行,硬件中的for要实实在在的硬件电路来实现的。

我的思维比较混乱,求大家给我指点指点~
思维的确混乱,概念不清楚,还是打好基础的好:)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-09
1)矩阵的话,如果是预设好的,可以先存在fpga里面的rom里面,然后调用;
2)运算的话,你需要将你的系统级算法分解(比如这里的A*B分解成乘积和的形式)
3)fpga里面也是可以用for的(当然是有要求的:循环次数为常数),只是不太推荐。

自己的一点理解,只当抛砖引玉吧~~~本回答被网友采纳
第2个回答  2012-07-15
你说要把矩阵存进存储单元,我估计你需要用双口RAM吧?“怎样的时钟”什么意思?我用RAM没遇到过时钟的问题啊?给个时钟信号和数据信号就往里存了啊
其他问题我的理解和skiller_520差不多
相似回答