您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于Verilog的下三角矩阵求逆设计与实现
基于Verilog的下三角矩阵求逆设计与实现杨丰瑞1,熊军洲2(1.重庆重邮信科(集团)股份有限公司重庆400065)(2.重庆邮电大学通信与信息工程学院重庆400065)摘要:矩阵运算广泛应用于各类电路计算中,矩阵运算的硬件实现能够充分发挥硬件的速度和并行性,其中矩阵求逆是矩阵运算中重要的运算。根据矩阵求逆算法的基本思想,本文提出了一种最大阶数可达16×16的矩阵求逆方案,通过硬件描述语言Verilog建模,用DesignCompile进行综合及进行modelsim仿真,仿真结果表明这种设计结构能够正确的计算出下三角矩阵的逆矩阵。关键词:矩阵求逆,Verilog,实现【中图分类号】TN492【文献标识码】ADesignandImplementationofInverseDownTriangleMatrixCalculationBasedonVerilogYangFengrui1,XiongJunzhou2(1.ChongqingChongyouInformationTechnolog(Group)CO.,LTD.Chongqing)(2.ChongqingUniversityOfPostandTelecommunicationsSchoolOfCommunicationandInformationEngineering,Chongqing)Abstract:Matrixoperationiswidelyusedindifferentkindsofcircuitcalculation.Hardwareimplementationofmatrixoperationcanfullyrealizethespeedandparallelofthehardware.Matrixinversionisakindofveryimportantmatrixoperation.Accordingtothealgorithmofinversematrixcalculation,thisarticlegivesadesignoninversematrixwhichcanreachabiggestrandof16×16.ThesystemisdescribedinVerilog,whichiscompiledbyDesignCompileandverifiedinmodelsim.Theresultshowsthatthisdesignstructurecanbeusedforinversematrixcalculation.Keywords:inversematrix;Verilog;implementation1引言矩阵运算是数字信号处理领域的基本操作,广泛应用于各类电路计算当中。而矩阵求逆的难点在于矩阵求逆。目前传统的矩阵求逆算法多用处理器串行计算来实现,严重制约着计算速度的提高。为此,作者在研究并行处理结构和并行算法[1~2]的基础上,试图寻求一种适合硬件实现的求逆算法及其硬件结构。此外,在专用集成电路设计方面我国起步较晚,在矩阵求逆的硬件实现方面的研究还不多。随着集成电路制造工艺的提高,采用大量超大规模集成单元和微处理器构成多处理器并行系统已经成为提高计算速度的有效手段。因而,矩阵求逆算法的研究实现有着十分重要的意义。由于可逆矩阵都可以通过LU分解分成一个上三角矩阵和一个下三角矩阵[3],而要求的原矩阵的逆可以通过这两个三角矩阵的逆相乘得到[4],所以本文主要探讨的是下三角矩阵求逆的硬件实现。2算法介绍假设以下矩阵A为原矩阵,1A是A的逆矩阵,n是A的维数。则:110...001...000...000...1EAA11112122212212120...00...0...0...0..............................nnnnnnnnabaabbaaabbb由矩阵的乘法可知:,,,()iijikkjkjcab(j=i)而:0,jic(ji);1,jic(ji)根椐以上可知,可首先得到一些初始值:iiiiab,,/1(i=1,2,…,n)然后可得出计算1A其他值的递推公式:1,,,,)(1ijkjkkiiijibaab=1,,,()iiiikkjkjbab(i=1,2,…,n;j=1,2….,i-1)3硬件实现3.1总体设计结构本文所设计的矩阵求逆算法模块(matrix_top)共分为:接口模块(regif),控制模块(ctrl),地址产生模块(addrgen),运算处理模块(proc),和存储器模块(mem)。其中存储器模块包括输入存储器模块(inbuf)和输出存储器模块(outbuf)。总体结构图如图1所示:regifctrlprocaddrgenmeminbufoutbuf图1总体结构图3.2模块介绍3.2.1接口模块(regif)与外部的ZSP总线相连实现接口功能,数据通过接口模块写入到输入存储器或是控制寄存器中,当zio_sel为高电平时,写入数据到输入寄存器中,当zio_sel为低电平时,写入数据到控制寄存器中,控制寄存器指示矩阵的维数和启动信号;当运算完成,数据都存放到输出寄存器后,此接口模块产生一个中断,通知ZSP从输出存储器(outbuf)中读出数据。3.2.2控制模块(ctrl)为一个状态数为5的有限状态机,产生整个运算状态信息,控制运算的进行。如图2所示OTHERIDLECHECKDIAGFINISH图2ctrl模块中状态机示意图当处于IDLE(即空闲)状态时,表示运算还未开始或是运算结束,此时finish信号为零。一旦接收到来自接口模块的启动运算信号时,即转为CHECK状态,CHECK状态用于对原矩阵对角线上的数据求倒数,并找出最大值,根据所求的最大值计算出矩阵归一化时的移位个数,当求得此归一化的移位个数时,即转为DIAG状态。DIAG状态表示对原矩阵对角线上的数据进行求倒运算,并根据归一化的移动个数进行截位,此运算完成后,即转为OTHER状态,根据前面所述原理计算非对角线上的数据,全部数据运算完毕后,发出一个finish信号,并转入FINISH状态。FINISH状态根据信号finish的反馈信号,对finish信号进行清零,并转入到下一个状态,即IDLE状态。3.2.3地址产生模块(addrgen)该模块主要用于产生读写数据的地址。当处于CHECK和DIAG两个状态时,该模块产生原矩阵对角线上的地址和逆矩阵对角线的地址。当处于计算非对角线的数据时,该模块根据矩阵在存储器中存放的位置(矩阵数据在存储器中按行存放)及计算原理,依次计算时原矩阵和逆矩阵的读地址和逆矩阵的写数据地址。3.2.4处理模块(proc)对矩阵进行求逆运算,从输入存储器中读取原矩阵的信息,求逆后将所得的结果数据存入到输出矩阵中。直接利用存在的除法器和乘法器[5~6],根据前述算法介绍部分的计算原理,进行运算。先调用除法器作流水线除法,求出逆矩阵对角线上的数据(对原矩阵对角线上的数据求倒数),并找出其中最大值,根据此最大值的符号位数计算归一化的移位个数;然后计算逆矩阵对角线上的数据,利用所求的归一化移位个数进行归一化操作,并将结果存入到输出存储器;计算完对角线上的数据之后,根据算法介绍部分的算法描述调用乘法器将非对角线上的数据算出并归一化存入到输出存储器。3.2.5存储器模块(mem)分为输入存储器(inbuf)和输出存储器(outbuf)两个部分。输入存储器(inbuf)用来接收ZSP传送的数据,存放为原矩阵,只存放矩阵的下三角阵,在运算的过程中,输入存储器根据地址产生模块(addrgen)产生的地址和片选信号将数据依次输出到处理模块(proc);输出存储器(outbuf)用来接收从处理模块(proc)送来的结果数据,存放为逆矩阵,只存放矩阵的下三角阵,在运算的过程中,输出存储器也不断地根据地址产生模块(addrgen)产生的地址和片选信号将数据依次输出到处理模块(proc)进行计算,输出存储器(outbuf)的数据可由ZSP直接读出。3.3硬件模块实现框图如图3所示图3硬件模块实现框图3.4硬件资源及运行时间直接利用已设计的乘法器和除法器,用到的乘法器资源为6个,除法器资源为1个。该矩阵求逆电路完成一次16×16的矩阵求逆运算所需时钟周期为1000个时钟周期。4仿真验证电路的仿真采用MENTOR公司的ModelSim5.5d软件,图4为输入一个16×16的原矩阵,图5为该原矩阵下所求得的结果,可以看出,当计算完毕,发出一个中断信号matrix_irq(为高电平),然后zrdata依次读出输出存储器(outbuf)中的数据,经验结果是正确的。图4modelsim仿真波形(输入原矩阵)图5modelsim仿真波形(输出逆矩阵)5结束语本文提出了一种用于下三角矩阵求逆的并行计算阵列,阵列中各处理模块单元之间的互联规则简单,此设计能够充分发挥硬件的速度,且易于修改矩阵的规模,适用于科学研究和工程应用中矩阵求逆的实时求解。作者用Verilog语言对本设计进行了描述[7],并用SYNOPSYS公司的DC及modelsim对其进行综合和仿真,最终结果表明此硬件结构能够正确地求解出下三角矩阵的逆。参考文献[1]K.Hwang,F.A.Briggs.ComputerArchitectureandParallelProcessing.McGraw-Hill,1994.[2]陈国良.并行算法的设计与分析.高等教育出版社,1994.[3]黄廷祝,钟守铭,李正良.矩阵理论[M].北京:高等教育出版社,2003.[4]同济大学数学教研室.线性代数[M].北京:高等教育出版社,1993.[5]MaGK,TaylorFJ.MultiplierPoliciesforDigitalSignalProcessing[J].IEEEASSPMagazine,1990,7(1):6~20.[6]傅志晖,程东方,梅其元等.32位浮点阵列乘法器的设计及算法比较.微电子学,2003,33(3).[7]夏宇闻.Verilog数字系统设计教程.第2版.北京航空航天大学出版社,2008.作者简介:杨丰瑞(1963-),男,重庆人,教授,主研移动通信,电信新业务等;熊军洲(1985-),男,湖北安陆人,硕士生,主研移动通信。重庆市信息制造业重大科技专项《TD-SCDMA增强型终端基带芯片研发及产业化》(CSTC,2009AA2037).
本文标题:基于Verilog的下三角矩阵求逆设计与实现
链接地址:https://www.777doc.com/doc-2572669 .html