原创 Verilog FPGA硬件电路设计之六——脉动矩阵计算矩阵乘法

2013-10-18 09:55 20490 34 36 分类: FPGA/CPLD 文集: Verilog-FPGA硬件电路设计

脉动阵列(Systolic Array)计算矩阵乘法(Array Multiplication

下一个目标是实现流水线输出,提升硬件资源的利用率。

脉动阵列(Systolic Array):数据流同步流过相邻的二维阵列单元的处理器结构,一般不同方向流过不同数据。

结构:

20130705000420470001.jpg

矩阵计算:

20130705000424344002.jpg

C语言描述每个输出矩阵中的值:

For I = 1 to N

     For J = 1 to N

          For K = 1 to N

               C[I,J] = C[I,J] + A[J,K] * B[K,J];

运用N x N processing units,输入数据呈批次输入:

20130705000429441003.jpg

二维不同数据在同一时钟下依次输入每个处理单元,而后完成乘法并存在其寄存器中。

 

 

其中每个PE(处理单元)结构如下:

是一个乘加单元  c=c+(a*b)

20130705000433485004.jpg

 

例子:计算两个3×3矩阵的乘积

20130705000439929005.jpg

结构:

20130705000443160006.jpg

 

 

CLK驱动下的每一个步骤如下:

Clk1:

20130705000448654007.jpg

 

Clk2:

20130705000452932008.jpg

Clk3:

20130705000457356009.jpg

Clk4:

         20130705000501447010.jpg

Clk5:

20130705000507520011.jpg

 

 

Clk6:

20130705000512473012.jpg

Clk7:

20130705000516602013.jpg

Clk8:输出

20130705000521664014.jpg

功能仿真图:

20130705000526105015.jpg

start 上升沿到来后的第一个CLK上升沿开始计数

Count_start高电平期间

Cout=1时,准备a11b11;

Cout=2时,将数据打入寄存器,并计数出a11*b11;

Cout=3时,计数a11*b11+a12*b21

Cout=4时,计数a11*b11+a12*b21+a13*b31

Cout=5时,用寄存器打一拍输出Y11

其他类似。

时序仿真图:

20130705000531440016.jpg

连续运算,中间忘了将乘加单元寄存器清零的情况,功能仿真:

20130705000536495017.jpg

每次计算出结果后清零寄存器,修改后的功能仿真图:

20130705000540849018.jpg

数据在送入运算单元之前,采用寄存器打一拍,功能仿真图:

20130705000545460019.jpg

 

 

 

状态机便于实现控制。

状态机控制:功能仿真

20130705000549581020.jpg

时序仿真图:

20130705000554745021.jpg

 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2016-3-8 20:45

博主,你好,想咨询一个问题,以上面的3*3例子为例,感觉每个PE只需要out_c这一个寄存器,这样每个PE之间没有联系,即就用9个PE分别计算矩阵C的每一个值,因为每个值得计算本来就可以并行。 我上面那样理解对么?还是我漏考虑了什么? 麻烦博主解答,谢谢!

用户403664 2013-7-5 15:23

博主上传个头像吧!
相关推荐阅读
用户442508 2013-10-18 09:56
[博客大赛]Verilog-FPGA硬件电路设计之二——if语句和case语句的区别
Verilog-FPGA硬件电路设计之二——if语句和case语句的区别 一个if语句中嵌套了case语句的例子,可以很好的看出if语句和case语句的区别。 module case_in...
用户442508 2013-10-18 09:56
[博客大赛]Verilog-FPGA硬件电路设计之三——关于迟滞信号
  Verilog-FPGA硬件电路设计之三——关于迟滞信号 在条件选择语句中,由于信号的处理存在时间上的差异,从前级传递到下级的数据就存在到达时间先后的问题,因此为了提高电路的速度,对迟...
用户442508 2013-10-18 09:56
[博客大赛]Verilog-FPGA硬件电路设计四——最大公约数功能仿真和时序仿真区别
综合软件:QuartusII 12.1 仿真软件:Modelsim-Altera   1、输出done无寄存器,直接从组合逻辑电路输出 1.1功能仿真   1.2时序...
用户442508 2013-10-18 09:55
Verilog-FPGA硬件电路设计之五——脉动矩阵计算FIR
脉动阵列(Systolic Array)计算有限冲激响应(FIR) 综合软件:QuartusII 12.1 仿真软件:Modelsim-Altera FIR:有限脉冲响应滤波器。有限说...
用户442508 2013-10-18 09:54
Verilog-FPGA硬件电路设计之七——矩阵乘法流水线结构
二维流水线结构矩阵乘法(Array Multiplication) 上一篇文中建立了矩阵乘法运算的数据路径,从仿真结构中可以看出整个计算方案的可行性,但是存在一个问题,就是硬件运算单...
EE直播间
更多
我要评论
2
34
关闭 站长推荐上一条 /3 下一条