1、.基于 Verilog 的下三角矩阵求逆设计与实现杨丰瑞 1,熊军洲 2(1. 重庆重邮信科 (集团)股份有限公司 重庆 400065)(2. 重庆邮电大学通信与信息工程学院 重庆 400065)摘要:矩阵运算广泛应用于各类电路计算中,矩阵运算的硬件实现能够充分发挥硬件的速度和并行性,其中矩阵求逆是矩阵运算中重要的运算。根据矩阵求逆算法的基本思想,本文提出了一种最大阶数可达1616 的矩阵求逆方案,通过硬件描述语言 Verilog 建模,用 Design Compile 进行综合及进行 modelsim仿真,仿真结果表明这种设计结构能够正确的计算出下三角矩阵的逆矩阵。关键词:矩阵求逆,Veri
2、log, 实现【中图分类号】 TN492 【文献标识码】 ADesign and Implementation of Inverse Down Triangle Matrix Calculation Based on VerilogYang Fengrui1,Xiong Junzhou 2(1.Chongqing Chongyou Information Technolog (Group)CO.,LTD.Chongqing)(2.Chongqing University Of Post and Telecommunications School Of Communication and Inf
3、ormation Engineering,Chongqing)Abstract: Matrix operation is widely used in different kinds of circuit calculation. Hardware implementation of matrix operation can fully realize the speed and parallel of the hardware. Matrix inversion is a kind of very important matrix operation. According to the al
4、gorithm of inverse matrix calculation ,this article gives a design on inverse matrix which can reach a biggest rand of 1616.The system is described in Verilog, which is compiled by Design Compile and verified in modelsim. The result shows that this design structure can be used for inverse matrix cal
5、culation.Key words: inverse matrix; Verilog; implementation1 引言矩阵运算是数字信号处理领域的基本操作,广泛应用于各类电路计算当中。而矩阵求逆的难点在于矩阵求逆。目前传统的矩阵求逆算法多用处理器串行计算来实现,严重制约着计算速度的提高。为此,作者在研究并行处理结构和并行算法 12 的基础上,试图寻求一种适合硬件实现的求逆算法及其硬件结构。此外,在专用集成电路设计方面我国起步较晚,在矩阵求逆的硬件实现方面的研究还不多。随着集成电路制造工艺的提高,采用大量超大规模集成单元和微处理器构成多处理器并行系统已经成为提高计算速度的有效手段。因而,
6、矩阵求逆算法的研究实现有着十分重要的意义。由于可逆矩阵都可以通过 LU 分解分成一个上三角矩阵和一个下三角矩阵 3,而要求的原矩阵的逆可以通过这两个三角矩阵的逆相乘得到 4,所以本文主要探讨的是下三角矩阵求逆的硬件实现。.2 算法介绍假设以下矩阵 A 为原矩阵, 是 A 的逆矩阵,n 是 A 的维数。则:1110.E12210.0.nnnnabab由矩阵的乘法可知:(j=i),()iijkjjcab而: ( ) ; ( )0,ji ji1,jicji根椐以上可知,可首先得到一些初始值: (i=1,2,n)iiab,/然后可得出计算 其他值的递推公式:1A= (i=1,2,n ; j=1,2.,
7、i-1), )(ijkjkiiji bab1,()iikjj3 硬件实现3.1 总体设计结构本文所设计的矩阵求逆算法模块(matrix_top)共分为:接口模块(regif),控制模块(ctrl),地址产生模块(addrgen),运算处理模块(proc),和存储器模块(mem) 。其中存储器模块包括输入存储器模块(inbuf)和输出存储器模块(outbuf) 。总体结构图如图 1 所示:r e g i fc t r lp r o ca d d r g e nm e mi n b u fo u t b u f图 1 总体结构图.3.2 模块介绍3.2.1 接口模块(regif)与外部的 ZSP
8、总线相连实现接口功能,数据通过接口模块写入到输入存储器或是控制寄存器中,当 zio_sel 为高电平时,写入数据到输入寄存器中,当 zio_sel 为低电平时,写入数据到控制寄存器中,控制寄存器指示矩阵的维数和启动信号;当运算完成,数据都存放到输出寄存器后,此接口模块产生一个中断,通知 ZSP 从输出存储器(outbuf)中读出数据。3.2.2 控制模块(ctrl)为一个状态数为 5 的有限状态机,产生整个运算状态信息,控制运算的进行。如图 2所示O T H E RI D L EC H E C KD I A GF I N I S H图 2 ctrl 模块中状态机示意图当处于 IDLE(即空闲)
9、状态时,表示运算还未开始或是运算结束,此时 finish 信号为零。一旦接收到来自接口模块的启动运算信号时,即转为 CHECK 状态,CHECK 状态用于对原矩阵对角线上的数据求倒数,并找出最大值,根据所求的最大值计算出矩阵归一化时的移位个数,当求得此归一化的移位个数时,即转为 DIAG 状态。DIAG 状态表示对原矩阵对角线上的数据进行求倒运算,并根据归一化的移动个数进行截位,此运算完成后,即转为 OTHER 状态,根据前面所述原理计算非对角线上的数据,全部数据运算完毕后,发出一个 finish 信号,并转入 FINISH 状态。FINISH 状态根据信号 finish 的反馈信号,对fin
10、ish 信号进行清零,并转入到下一个状态,即 IDLE 状态。3.2.3 地址产生模块(addrgen)该模块主要用于产生读写数据的地址。当处于 CHECK 和 DIAG 两个状态时,该模块产生原矩阵对角线上的地址和逆矩阵对角线的地址。 当处于计算非对角线的数据时,该模块根据矩阵在存储器中存放的位置(矩阵数据在存储器中按行存放)及计算原理,依次计算时原矩阵和逆矩阵的读地址和逆矩阵的写数据地址。3.2.4 处理模块(proc)对矩阵进行求逆运算,从输入存储器中读取原矩阵的信息,求逆后将所得的结果数据.存入到输出矩阵中。直接利用存在的除法器和乘法器 56 ,根据前述算法介绍部分的计算原理,进行运算
11、。先调用除法器作流水线除法,求出逆矩阵对角线上的数据(对原矩阵对角线上的数据求倒数) ,并找出其中最大值,根据此最大值的符号位数计算归一化的移位个数;然后计算逆矩阵对角线上的数据,利用所求的归一化移位个数进行归一化操作,并将结果存入到输出存储器;计算完对角线上的数据之后,根据算法介绍部分的算法描述调用乘法器将非对角线上的数据算出并归一化存入到输出存储器。 3.2.5 存储器模块(mem)分为输入存储器(inbuf)和输出存储器(outbuf)两个部分。输入存储器(inbuf)用来接收 ZSP 传送的数据,存放为原矩阵,只存放矩阵的下三角阵,在运算的过程中,输入存储器根据地址产生模块(addrg
12、en)产生的地址和片选信号将数据依次输出到处理模块(proc) ;输出存储器(outbuf)用来接收从处理模块(proc)送来的结果数据,存放为逆矩阵,只存放矩阵的下三角阵,在运算的过程中,输出存储器也不断地根据地址产生模块(addrgen)产生的地址和片选信号将数据依次输出到处理模块(proc)进行计算,输出存储器(outbuf)的数据可由 ZSP 直接读出。3.3 硬件模块实现框图如图 3 所示图 3 硬件模块实现框图3.4 硬件资源及运行时间直接利用已设计的乘法器和除法器,用到的乘法器资源为 6 个,除法器资源为个。该矩阵求逆电路完成一次 1616 的矩阵求逆运算所需时钟周期为 1000
13、 个时钟周期。4 仿真验证电路的仿真采用 MENTOR 公司的 ModelSim5.5d 软件,图 4 为输入一个 1616 的原矩阵,图 5 为该原矩阵下所求得的结果,可以看出,当计算完毕,发出一个中断信号matrix_irq(为高电平) ,然后 zrdata 依次读出输出存储器(outbuf)中的数据,经验结果是正确的。.图 4 modelsim 仿真波形(输入原矩阵)图 5 modelsim 仿真波形(输出逆矩阵)5 结束语本文提出了一种用于下三角矩阵求逆的并行计算阵列,阵列中各处理模块单元之间的互联规则简单,此设计能够充分发挥硬件的速度,且易于修改矩阵的规模,适用于科学研究和工程应用中
14、矩阵求逆的实时求解。作者用 Verilog 语言对本设计进行了描述 7,并用SYNOPSYS 公司的 DC 及 modelsim 对其进行综合和仿真,最终结果表明此硬件结构能够正确地求解出下三角矩阵的逆。参考文献1 K.Hwang, F.A.Briggs. Computer Architecture and Parallel Processing. McGraw-Hill,1994.2 陈国良. 并行算法的设计与分析. 高等教育出版社,1994.3 黄廷祝,钟守铭,李正良. 矩阵理论 M. 北京:高等教育出版社,2003.4 同济大学数学教研室. 线性代数 M. 北京:高等教育出版社, 199
15、3.5 Ma G K, Taylor F J. Multiplier Policies for Digital Signal ProcessingJ. IEEE A SSP Magazine,1990,7(1):620.6 傅志晖,程东方,梅其元 等. 32 位浮点阵列乘法器的设计及算法比较微电子学,2003,33(3).7 夏宇闻. Verilog 数字系统设计教程.第 2 版.北京航空航天大学出版社, 2008.作者简介:杨丰瑞(1963-) ,男,重庆人,教授,主研移动通信,电信新业务等;熊军洲(1985-) ,男,湖北安陆人,硕士生,主研移动通信。重庆市信息制造业重大科技专项TD-SCDMA 增强型终端基带芯片研发及产业化 (CSTC,2009AA2037).