关闭

关闭

关闭

封号提示

内容

首页 CORDIC的IP核生成平台的设计与实现.pdf

CORDIC的IP核生成平台的设计与实现.pdf

CORDIC的IP核生成平台的设计与实现.pdf

上传者: xl46512 2012-05-08 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《CORDIC的IP核生成平台的设计与实现pdf》,可适用于IT/计算机领域,主题内容包含武汉理工大学硕士学位论文CORDIC的IP核生成平台的设计与实现姓名:刘波申请学位级别:硕士专业:通信与信息系统指导教师:黄秋元武汉理工大学硕士学位符等。

武汉理工大学硕士学位论文CORDIC的IP核生成平台的设计与实现姓名:刘波申请学位级别:硕士专业:通信与信息系统指导教师:黄秋元武汉理工大学硕士学位论文摘要坐标旋转算法(CoordinateRotationalDigitalComputerCORDIC)是一种用迭代方式完成矢量旋转的方法可用于三角函数、双曲线函数、平方根、对数、指数等一系列函数的运算。由于CORDIC算法中对数据的操作只有移位和加减易于硬件实现能够极大地降低设计的复杂度因而被广泛应用于各种系统级芯片(SystemOnChipSOC)中。而随着电路规模和复杂度的不断增加以及越来越紧迫的项目开发时间基于口核重用的系统设计方法逐渐成为了SOC设计的主流。本课题以三网合一项目niNOC(nighPerformanceNetworkOverCoax)为依托首先完成了系统中数字下变频、频率偏移校正等应用场合下的CORDIC电路的设计使用仿真工具LDV(LogicDesignandVerification)对所设计的CORDIC电路进行了功能验证并采用FPGA芯片进行了实现和测试。然后通过比较不同应用场合中的CORDIC电路的结构针对不同迭代次数、不同运算精度和不同实现架构等构造出了CORDIC的Ⅲ核生成平台。为了验证生成的CORDIC软核的功能设计出了一个可配置的一致性验证平台。使用本文中设计的P核生成平台用户只需设置相关的参数然后运行该平台就能得到经过验证功能正确的CORDIC软核既可以集成到SOC中也可以用于FPGA设计中。可配置的一致性验证平台可以根据用户设置完成对不同CORDIC电路的功能验证从而大大缩短电路的设计和验证时间使设计人员可以更多地关注于系统的整体设计。本文所设计的CORDIC电路具有以下优点:()通过对输入的角度进行预处理将CORDIC的运算范围扩大到了整个坐标系()简化了校正因子的运算进一步节省了资源。本文中所采用的思想对于类似的常用电路的设计具有可借鉴性可以根据实际的应用场合设计出相似的Ⅲ核生成平台从而能够在较短的时间内得到功能正确的口核用于系统集成加快项目的开发进度。关键词:CORDIC旋转模式相角模式P核一致性验证武汉理工大学硕士学位论文AbstractCORDICisanalgorithmemploysmultipleiterationstocompletevectorrotationwhichcallbeusedtocalculatemanyfunctionssuchastrigonometricfunctionshyperbolicfunctionsthesquarerootlogarithmicexponentialandSOon.BecausethedataoperationsinCORDICalgorithmjustcontainadditionsubtractionandshiftwhichaleeasytobeimplementedbyhardwareandgreatlyreducesthecomplexityofdesignSOitiswidelyusedinavarietyofSoC(SystemOnCrap).AndwiththescaleandcomplexityofthecircuitsincreasingsystemdesignedbasedonreusableIPisbecomingmoreandmorepopular.ThispaperisbasedontheprojectHiNOCthedesignoftheCORDICcircuitsusedindigitaldownconversionandfrequencyoffsetcorrectionarecompletedfirstthenUSethesimulationtoolLDVverifythefunctionalityandimplementedwithFPGA.Andthen,afterdeeplystudythestructureandtechnicaldetailsofCORDICcircuitdesignconstructallIPcoregeneratorofCO剐DICfordifferentiterationtimesdifferentcomputingprecision,aswellastherealizationstructureofdifferentapplications.AflexibleuserconfigurableconsistencyverificationplatformisalsodesignedtoverifytheCORDICsoftIP.Usetheplatformdesignedinthispaper,aftersimplysetsomeparameterssuchasworkmodesiterationtimespipelinestagesandSOonandruntheplatformnetscallgetaverifiedCORDICmodulewhichCanbeusedbominSOCandFPGAdesign.TheuserconfigurableconsistencyverificationplatformmakesCORDICcircuitdesignandverificationCanbecompletedatthesametimesignificantlyreducesthedesigntimeSOtheengiricersCallfocusmoreonthetopdesign.evel.TheCORDICcircuitdesignedinthispaperhasthefollowingadvantages:()extendstheinputangletoacompletecycleviacoarserotation()simplifiesthecomputingofthecorrectionfactorofoveralliterationsandgreatlysavetheresources.TheplatformdesignedinthispaperhasacertainnaturewhichCanusedbyothersforafunctionalcircuitblockwhichcompletecertainfunctionespeciallyII武汉理工大学硕士学位论文theolleswhichareusedveryoftenengineerscalldesignasimilarcommonplatformbasedontheactualapplications.ThenaverifiedandfunctioncorrectIPcorecallbegeneratedinaveryshortperiodoftimeandusedforsystemintegrationgreatlyspeedupthescheduleoftheprojects.Keyword:CORDICRotationModeVectoringModeIPCoreCoherenceVeriticationIH独创性声明本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知除了文中特别加以标注和致谢的地方外论文中不包含其他人已经发表或撰写过的研究成果也不包含为获得武汉理工大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。签名:翁邀日期:垫&:童:l星关于论文使用授权的说明本人完全了解武汉理工大学有关保留、使用学位论文的规定即学校有权保留、送交论文的复印件允许论文被查阅和借阅学校可以公布论文的全部或部分内容可以采用影印、缩印或其他复制手段保存论文。(保密的论文在解密后应遵守此规定)日期:型!:童必武汉理工大学硕士学位论文.课题研究背景第章绪论随着超大规模集成电路(WryLargeScaleIntegratedCircuitVLSI)的设计及工艺技术的进步经常需要使用硬件电路来实现三角函数、指数、对数、双曲线函数和其它超越函数的运算。通常情况下有如下几种可选的实现方法:()ROM查表法()多项式近似法()CORDIC算法。使用ROM查表法的优点是简单、直接能用于任何函数的计算其缺点是随着数据长度的变大所需的存储空间将呈指数级增加因而它只适用于数据长度比较小的情况。多项式近似法由于需要乘法运算在硬件上实现起来比较复杂且消耗资源较多因而很少被采用【。与前两个方法相比CORDIC具有突出的优势:()不需要硬件乘法器所有运算只有移位和加减消耗资源少且易于实现()可使用流水线实现方法提高工作频率()可使用循环迭代方法节约硬件资源。CORDIC已被广泛应用于诸多领域例如数学协处理器、HP一计算器、雷达信号处理、D图像处理等。利用CORDIC算法可以方便地实现数字通信中的调制与解调【】。CORDIC算法也被运用到了移动通信设备中下图.中所示的是一个抽象的WCDMA极化发射机的结构图其中就包括了一个CORDIC处理模块。IInI删卜一Lrc(粕lcModflgLotQA。’。lmc删ioabr图.WCDMA极化发射机结构图可以预见的是随着通信技术的发展CORDIC电路将会得到更加广泛的应用其特点将是高精度、高数据吞吐量【。武汉理工大学硕士学位论文课题研究目的随着硅片工艺技术的不断发展系统芯片集成的功能日益复杂电路的规模也日益庞大因而基于口核重用的方法成为了系统设计的主流【】。本课题的研究目的是设计并实现一个CORDIC的伊核生成平台。该平台能够根据用户的参数设置快速生成针对不同应用场合的CORDIC软核。生成的CORDIc软核可直接用于系统设计从而大大缩短丌发时间。两太主流FPGA厂商Xilinx和Alt廿a都免费提供了CORDIC软核供用户使用。下图l中所示的是使用Xilinx公司韵母核生成工具CoreG渊ator来生成CORDIC电路的图形化操作界面。图Xilinx公司的口核生成工具CoreGenerator上图中所示的工具相当于一个软P核生成器用户配置相关的参数后运行该工具生成的结果就是CORDIC电路的RTL代码可直接用于FPGA设计中。需要注意的是采用上图中所示的工具生成的CORDIC模块是一种结构级的描述其结构只有FPGA芯片中的基本逻辑单元如查找表(LookUpTable,LUT)、多路选择器rMulfiplexer)等【”因此只能使用FPGA厂商提供的工具来进行综合和实现而不能用于SOC系统集成。本文中设计的CORDIC的D核生成平台与上图中所示的工具相比生成的CORDIC电路既可以用于FPGA设计也可以集成到SOC中因而更具有通用性。武汉理工大学硕士学位论文.课题所做工作及本文结构本文依托于三网合一项目HiNOC首先完成了数字下变频、频率偏移校正等应用场合中的CORDIC电路的设计与验证然后分析比较了不同应用场合下CORDIC电路的功能结构的异同对电路中的相同部分以库文件的方式提供对不同部分则根据用户控制参数来生成由此构造出了CORDIC的IP核生成平台。该平台包括了一个RTL代码生成器以及一个可配置的一致性验证平台用户通过运行RTL代码生成器可以快速得到CORDIC的RTL代码运行一致性验证平台可以完成对CORDIC电路的验证。因而可以保证生成的CORDIC软核的功能的正确性可以直接用于系统集成。该平台所采用的思想对类似的常用电路也具有一定的可借鉴性。本论文的内容安排如下:第章首先描述了CORDIC算法的基本原理及其两种工作模式然后进行了CORDIC算法的定点化设计详细分析了定点CORDIC运算产生的误差并提出了减小误差的方法。第章首先设计出了用于数字下变频中的CORDIC电路包括旋转模式和相角模式的电路。然后详细描述了CORDIC电路所能采用的实现架构并分别给出了不同实现架构电路的仿真结果最终选择串并结合的方式来实现所需的CORDIC电路。在CORDIC电路设计中作了两点改进:一是采用输入预处理的方法扩大了CORDIC运算的范围二是简化了系统增益的处理。第章首先阐述了一致性验证的原理然后采用Cadence公司的验证工具LDV.完成了对CORDIC电路的功能仿真使用Novas公司的Debussy查看生成的波形最后将CORDIC电路在FPGA芯片上实现并在开发板上进行了测试验证所设计的电路的功能正确性。第章首先按功能对CORDIC电路的结构进行了划分对不同应用场合下的CORDIC电路的结构进行了比较分析确定D核生成平台的控制参数后采用C语言构造出了COIIC的RTL代码生成平台然后设计出了与RTL代码生成平台相对应的可配置一致性验证平台用于验证生成的CORDIC软核的功能。第章总结了全文所做的工作并对下一步的研究工作做了一定的展望。武汉理工大学硕士学位论文第章CORDIC算法及其定点化本章首先描述了CORDIC算法的基本原理及其两种工作模式旋转模式(RotationMode)和相角模式(VectoringMode)。由于定点实现方式比浮点实现消耗的硬件资源更少而且性能更优因此对CORDIC算法进行了定点化设计分析了定点运算产生的误差并提出了减小误差的方法。.CORDIC算法..CORDIC基本原理假设在直角坐标系下有向量(xy)按图所示的方向旋转角度得到向量(朋)则二者的关系可以表示为:{yx,。=:xycco。ss((J痧))yxssiilln((J))()上式可以进一步写为:髓黝害::嬲y图.直角坐标系下的向量旋转如果对式()中描述的旋转角度矽进行限制使其满足tan()=~则乘武汉理工大学硕士学位论文积项就可以简化为移位操作。如果想要旋转任意的角度日则可以通过次连续旋转一系列指定的角度毋来完成即将护分解成为个依次递减的小旋转角度幺=arctan(一)之和亦即p=d幺()其中d{}当顺时针旋转时d=当逆时针旋转时吐=。由于每次旋转的角度为预定义的值即cos(e)是常数因此旋转任意角度的迭代处理可以写成如下的公式:一“fIx,咄‘di()【Yf=KfYixfdi叫】其中:墨=兀cos(arctan(叫))=n(/’‘)K可以在系统的其它部分处理(ap不一定在CORDIC中处理)或者可以直接作为系统的增益来处理。事实上当i趋近于无限的时候K取得极限值.因此K可以看作是一个常量【。如果对Ki另作处理则式()中仅有移位和加减运算特别适合硬件直接实现为硬件快速计算三角函数提供了一种新的方法这也是提出CORDIC算法的初衷。在迭代过程中为了跟踪已经旋转的角度还需引入一个新的变量将其定义为:Z“l=zfdfarctan()()表示第i次旋转后剩下的未旋转的角度。其中d与前面一样表示旋转方向。而arctan(q)的值可以预先求出保存在存储器中。式()和()构成了CORDIC算法的基本迭代关系。根据d取值的判定方式的不同CORDIC算法可以分为旋转模式(RotationMode)和相角模式(VectoringMode)两种。..旋转模式设跟踪旋转过的角度的变量的初始值zo=秒进过次旋转迭代后使得z。=此时有:S武汉理工大学硕士学位论文这样的模式称为旋转模式弘铲孑:。()()可以看出旋转模式用于实现将一个矢量旋转预定角度的操作即已知初始矢量以及需要旋转的角度求旋转完成后得到的新的矢量。如果令Xo=/PYo=‰=p则有jJ一=P‘Xo’cos(Zo)一y。’sm(z。)】=cos(口)(.)【Y。=P.【yocos(zo)IXosin(zo)】sin()、由此可见CORDIC算法的旋转模式可以用来计算一个指定输入角的正弦和余弦值【。..相角模式设跟踪旋转过的角度的变量的初始值z。=秒进过n次旋转迭代后使得Y。=此时有:咖P嚣这样的模式称为旋转模式。由式(.)及(.)可得:.Xn=P而y{y一()Iz。=口arctan(yo/xo)IP》可以看出相角模式用于计算一个矢量的相位角以及模即给定一个向量通过将其旋转到直角坐标系的X轴上得到它的相位角以及模。如果令口=则有麓以k帆耵鬈一武汉理工大学硕士学位论文臣二蠕由此可见COMIC算法的相角模式可以用来计算向量(而Y。)的模和相位。显然它也可以用于将直角坐标转换为极坐标还能进行开方运算‘。.CORDIC的定点化设计数字信号运算的定点(fixed.point)硬件实现比相应的浮点(floWingpoint)实现需要的运算更少因而消耗的硬件资源更少系统的成本以及功耗也就更低。实验研究表明数字信号处理的定点实现可以工作在更高的时钟频率下但所需的硬件资源只相当于相应浮点实现的二分之一甚至三分之一【】。定点运算的这些优点使得它在现代集成电路设计中被广泛采用。本文中设计的COMIC电路采用的是定点实现方式具体而言就是要将每次迭代的角度值只=arctall(一)进行定点量化根据运算要求选择合适的整数位及小数位的位宽。..CORDIC的定点量化对于一个定点数而言它能表示的数值的范围与精度是一对矛盾:数值范围越小精度就越高而数值范围越大精度就越低。开发者要想表示比较大的数值范围则必须以牺牲精度为代价【】。在实际的定点算法中为了能达到最佳性能必须充分考虑到这一点。将浮点数瞑=arct锄(一)进行定点量化的关系式为:矽(后)=floor(川幸arctan(一‘)O.)(l)其中k代表的是迭代的次数N代表的是所取的精度即表示小数部分的位宽。N值越大数的精度就越高。但是定点数的字长是有限的因而如果N值过大则表示整数部分的位就变少了能表示的数的范围就变小了。上式中的floor是向下取整操作加上O.是为了减小在取整过程中产生的截断(truneate)误差。因此对于字长确定的定点数合理确定其中分别表示整数位及小数位的位数是非常重要的也就是要对式(.)中的N选择合适的值。武汉理工大学硕士学位论文..定点CORDIC的误差分析对于浮点的CORDIC运算其误差主要是由迭代次数带来的。由于浮点数可以表示的数的范围以及精度都比较大不会带来误差。但是CORDIC本身是一种逼近型的算法因而不论进行多少次迭代都不会消除误差得到的只是一个近似的结果。只能采取措施使误差尽可能地小使之达到系统的要求【l。对于定点的CORDIC运算的误差则包括三个方面:()谚=aretan(。)的量化误差()算法本身的误差()迭代过程中的Round(截尾)误差。由式(.)可得出每次迭代的角度值的定点值如下面表.中所示。表不同N值情况下矽(七)的值N矽(O)矽()矽()矽()矽()矽()ll’从上表可以看出在N值一定的情况下随着k值越来越大矽(七)的值越来越小最后可能会等于。这样就会造成后面的迭代没有意义了因此标的精度即N的值要取得恰当。实际操作时可以直接取一个较大的精度如N=需要不同的精度就通过移位来得到例如需要位精度就右移位。在每次的迭代中乘以。是由诸如y【k】>>l【的右移操作来实现的这会带来round误差。当round误差过大的时候迭代就没有意义了。round误差可以通过扩展输入位宽来补偿也就是把输入精度提高。但扩展位宽会带来硬件面武汉理工大学硕士学位论文积的增大因此要选合适的补偿位宽一般经验值为三=log:k(k是迭代次数)【。L的值取时就迭代次对应的精度就是位。综上所述提高定点精度的办法有两种:一是增加迭代次数k二是当迭代没有效果时就说明输入精度不够那就需要扩展位宽。最理想的情况是能达成二者的统一。.本章小结本章首先描述了CORDIC算法的基本原理及其两种工作模式然后进行了CORDIC算法的定点化设计详细分析了定点CORDIC运算产生的误差并提出了减小误差的方法。武汉理工大学硕士学位论文第章CORDIC电路的设计从所完成的功能上来看CORDIC算法有两种工作模式:旋转模式和相角模式。旋转模式用于实现将一个矢量旋转预定角度的操作而相角模式用于计算一个矢量的相位角以及模。本章首先完成了用于数字下变频的旋转模式和相角模式CORDIC电路的设计然后详细描述了CORDIC电路所能采用的实现架构分别给出了采用不同实现架构的电路的仿真结果为所需的CORDIC电路选择了合适的架构。.数字下变频本文中设计的CORDIC电路主要用于系统的数字下变频、频率偏移校正等场合。下图中所示的是数字下变频的结构框图。图.数字下变频结构框图其中数字混频器将数字中频信号和正交本振信号相乘生成I/Q两路混频信号将所需的信号下变频至零中频抽取滤波器组用于低通滤波滤除带外信号提取有用信号重采样滤波器组以低速率采样生成低速的基带信掣】。幅角变换模块用于计算VQ两路信号的幅度和相位自动增益控制(AGC)模块根据幅角变换模块提供的信号幅值对低通滤波后的小信号提供足够的增益从而优化不同输入信号电平时后级模块的位分辨率。武汉理工大学硕士学位论文这里的数字混频器和幅角变换模块都是用CORDIC算法来完成的。由于数字混频器要完成正余弦信号的产生以及I/Q两路信号的混频功能因而采用旋转模式的CORDIC来实现幅角变换模块要完成信号的幅值和相位的计算因而采用相角模式的CORDIC来实现。.旋转模式CORDIC电路的设计如前所述这里用旋转模式COImIC电路完成对数字下变频的输入中频信号进行混频。旋转模式CORDIC电路接收输入的向量以及需要旋转的角度对输入向量进行有限次数的迭代后生成旋转以后的向量这一过程完成的就是中频信号与正交本振信号的相剩】。由于CORDIC算法本身的特性这里同时完成了正交本振信号的生成与相乘操作而且过程中只有移位和加减操作大大降低了设计的复杂度以及资源消耗。旋转模式CORDIC电路的工作流程图如下图.中所示。输入数据!细角度位路数据Q路数据数教图.旋转模式CORDIC电路的工作流程图武汉理工大学硕士学位论文可以看出CORDIC算法的迭代形式使得在实现时可以采用流水的结构整个CORDIC混频模块是对CORDIC迭代单元的多次级联例化。输入的角度值的作用只是控制向量的迭代过程理论上迭代完成以后它的值应该变为因此输出中没有与角度相关的值。由于可能采用不同的架构来实现因而完成一次完整的运算所需的时间也就是时钟周期数是不同的这里需要使用输入有效信号来指示何时输入了新的向量以及输出有效信号来表明何时迭代完成。上图所示的旋转模式的COIIC电路的信号流向以及功能描述如下表.中所示。表旋转模式CORDIC的输入输出端口端口名称数据位宽信号流向功能描述CLKLnput系统时钟RSTNLnput异步复位R髓OOTInput同步复位D玳VInput输入有效I玳‘可变Input输入矢量分量QIN可变Input输入矢量Q分量Z玳可变Input需要旋转的角度IOUT可变Output输出矢量分量QoUT可变Output输出矢量Q分量DOUTVOutput输出有效对于输入的向量、要旋转的角度以及输出的向量因为在不同的应用场合下所需的数的精度是不同的因而它们的数据位宽都是可变的它们的实际位宽要根据应用场合的运算精度来决定。.相角模式CORDIC电路的设计这里使用相角模式CORDIC电路来计算数字下变频的基带输出信号的模值反馈给自动增益控制模块对小信号提供足够的增益从而优化不同输入信号电平时后级模块的位分辨率【】。相角模式接收输入的向量通过将其旋转到直角坐标系的X轴上并记录旋转过的角度最后可以得到它的相位角以及模。其武汉理工大学硕士学位论文工作流程图如下图中所示。叠帅数教图.相角模式CORDIC电路的工作流程图上图所示的相角模式的CORDIC电路中各个信号的流向以及功能描述如下表所示。表相角模式CORDIC的输入输出端口端口名称数据位宽信号流向功能描述CLKInput系统时钟RSTNInput异步复位REBOOTlInput同步复位DNVlInput输入有效IⅣ可变Input输入向量分量QIN可变Input输入向量Q分量MODOUT可变Output向量的模PHOUT可变Output向量的相位DOUl'VOutput输出有效与旋转模式CORDIC电路类似相角模式CORDIC电路也需要输入有效信武汉理工大学硕士学位论文号DINV和输出有效信号DOUTV并且向量及角度的数据位宽也是可变的。不同的是在旋转模式中需要输入角度值来指定要旋转的角度而在相角模式中是输出旋转完成以后累计转过的角度值。.CORDIC电路的实现架构从可以采用的实现架构上来看CORDIC电路有三种实现方式:()全串行方式()全并行方式()串并结合方式【。全串行方式是指只用一个迭代单元进行反复迭代全并行方式是指用个迭代单元并行操作在每一级加入流水寄存器串并结合方式是指用m(<m<nm是的约数)个迭代单元并行操作【】。..全串行方式采用全串行的实现方式是指不论一次向量旋转要进行多少次迭代都只使用一个迭代单元来完成将迭代单元的输出反馈到输入端以供下一次迭代时使用。因此对于需要n次迭代的向量旋转每n个时钟周期才能产生一个输出结果。以旋转模式为例下图中所示为其全串行实现方式。相角模式的模型与之类似只是输入输出信号有些不同结构基本上是相似的。迭代t次图全串行实现方式模型为了简洁上图中没有画出所有的输入输出信号只给出了与迭代运算相关的信号。下图.中所示的是总迭代次数为次的旋转模式CORDIC电路的全串行实现方式的仿真结果。武汉理工大学硕士学位论文酊一..全并行方式采用全并行方式是指使用与向量旋转所需的总共迭代次数相同个数的迭代单元来并行处理将前一级迭代单元的输出作为后一级迭代单元的输入。因此当所有迭代单元满负荷工作时经过周有的初始等待时间后每个时钟周期都能产生一个输出结果。以旋转模式为例下图中所示为其全并行实现方式的模型图。相角模式与之类似只是输入输出信号有些不同电路结构基本上是相似的。ⅫI『一一l一一『一一xOlIT二叫H卜一叫H卜一!。U。。L!{il!i一。。U。。L二三一!}i:i二k一”“}:一JLJo一一JJ一n十%Ri'图全并行实现方式模型武汉理工大学硕士学位论文为了简洁上图中没有画出所有的输入输出信号只给出了与迭代运算相关的信号。下图中所示的是总选代次数为次的旋转模式CORDIC电路的全并行实现方式的仿真结果。nhg叫胁M《amtmHIo一mo”日PBr丁=n图旋转模式全并行CORDIc电路的仿真结果这里用于迭代的基本单元个.即采用级流水线操作。其中CLKM为时钟信号XN和Y分别为输入向量的x和Y分量zⅢ为要旋转的IN角度D斟一V为输入有效信号。XOUT和YOUT分别为输出向量的x和Y分量DOUT为输出有效信号。从上陶中可以看出由于采用了流水线操作V经过初始的个周期的等待时间之后每个时钟周期都可以产生一个向量旋转完成后的结果因而这里每个时钟周期都可以送入一个新的输入数据。.串并结合方式采用串并结合方式是指使用m个迭代单元(‘m<nm是n的约数n为一次向量旋转所需的总的迭代次数)并行处理将前一级迭代单元的输出反馈回输入端并作为后一级迭代单元的输入在一次向量旋转过程中每个选代单元进行n/m次迭代。因此当所有迭代单元满负荷工作时经过固有的初始等待时间后每n/m个时钟周期可以产生一个输出结果。以旋转模式为例下图中所示的是其串并结合实现方式。相角模式与之类似只是输入输出信号有些不同.电路结构基本上是相似的。武汉理T人学硕士学位论文扩计t^U‘叫单^lH:F科一ItRU‘叫iIH。:量一武汉理工大学硕士学位论文所需要的时间最长采用全并行的架构运算速度最快但所消耗的资源最多而采用串并结合的架构则可以获得一个比较好的折衷。具体选用哪种架构需要根据实际情况来决定。由于所需的数据吞吐量不是很高因此本文中数字下变频中的CORDIC电路是采用串并结合的架构来实现的。.对CORDIC电路的两点改进本文中针对CORDIC算法本身原有的限制在设计CORDIC电路时作了两点改进:一是通过对输入进行预处理扩大了CORDIC的运算范围二是采用了更加节省资源的系统旋转增益的处理方法。..输入预处理假设CORDIC算法中总的迭代次数为N则旋转角度范围可表示如下:Ⅳ一lⅣ一一arctan(”)臼arctan()()‘一‘一、n=n=根据上式可以算出给定N值所对应的旋转角度的范围如下表.中所示。表给定N值所对应的旋转角度的范围NIpINI口I傩l.............从上表可以看出旋转角度的范围最大为一.秒.无法达到一个完整的周期一秒。为了扩大运算的范围需要对输入进行额外的处理【】。常采用的解决方法是先进行多次的旋转使得CORDIC算法可以覆盖到所有四个象限。这种方法虽然扩大了CORDIC算法覆盖的角度范围但缺点是武汉理工人学硕士学位论文不易提前确定校正因子【l”.而实时计算校正因子的难度比较大。本文采用的是分象限法。所谓分象限法是指将整个周期(一】内的角度全部转换到第一象限或第四象限(一。。】即先进行一次。的旋转然后再进行迭代l。对于旋转模式如果要旋转的角度z^>o则将它输入向量预先顺时针旋转。如果z。<则将它预先逆时针旋转。。对于相角模式如果初始向量的Yo>O则将初始向量预先顺时针旋转如果只cO则将初始向量预先逆时针旋转。。旋转模式的预处理结果如袁所示。表旋转模式中输入预处理的结果输入角度z.旋转预处理变换后角度z变换后膏变换后y一。z.一。逆时针一。zo。一矗xo一。sz。Soo逆时针ZS一矗五o。zoS。顺时针一ZO。匕一以。z。。顺时针!ZS。丘一鼠.系统增益处理在前面描述CORDIC算法基本原理的时候已经指出多次CLDIC选代会产生系统增益这个增益具有极限值。也就是说对于多次选代后产生的武汉理工大学硕士学位论文结果向量必须再乘以这个系数后才是最终的结果【。但是用硬件直接实现乘法运算是非常消耗资源的而且这里要实现的是乘以一个小数硬件电路势必更加复杂这与使用CORDIC算法的初衷是相违背的。可以考虑将乘以小数的操作分解为多次运算来降低硬件实现的难度。对于.有:./()这里除以可以通过右移lO位(=)来实现而右移操作适合于硬件直接实现。因而这里仅需要考虑如何用一种简单的方法来实现乘以的定系数乘法操作。为了便于硬件实现对于定系数的乘法可以考虑采用分解为移位加减的方式来实现。例如对于将一个数A乘以的操作可以由下式来实现:彳幸=彳木()()=(彳<<)(彳<<)(彳“)AA乘以的操作还可以由下式()来实现:宰=A宰()=A宰()一A宰()()=(么<<)一A可以根据系数的二进制表示来对被乘数进行移位和加减操作来完成乘法操作。系数的二进制表示中的每个“”代表需要一个加法器。为了消耗的加法器数目最少可以先对系数的二进制表示进行编码。可以看出式(.)中的实现方法比()中的少用了个加法器。引入“”来表示.编码的结果就是使二进制表示中的ttl’’和“i’’的数目尽可能地少【】。这种编码方法的结果称之为正则有符号数字量(CanonicSignedDigitCSD)表示法。最佳的CSD编码规则如下【】:()从最低有效位开始用()取代所有长度大于的全“”序列()从最低有效位开始用():取代(l):()从最高有效位开始用():取代():。根据上面的编码规则的CSD编码的结果为():。“”表示需要一个加法器“i”表示需要一个减法器它们的位置则表示需要左移的位数。武汉理工大学硕士学位论文因而这里只需次左移和次加减就可以完成乘以的操作再结合右移位来实现除以的操作这样只使用移位和加减而未使用乘除运算就完成了输出增益的处理进一步节省了资源。.本章小结本章首先进行了用于数字下变频中的CORDIC电路的设计包括旋转模式和相角模式的电路。然后详细描述了CORDIC电路所能采用的实现架构并分别给出了不同实现架构电路的仿真结果最终选择串并结合的方式来实现所需的CORDIC电路。在CORDIC电路设计中作了两点改进:一是采用输入预处理的方法扩大了CORDIC运算的范围二是简化了系统增益的处理。武汉理工大学硕士学位论文第章CORDIC电路的验证与FPGA实现专有集成电路(ApplicationSpecificIntegratedCircuitASIC)一般具有较长的开发时间以及较大的风险【。设计一旦流片(TapeOut)完成就无法进行修改因而如果需求变更或者设计有Bug就必须重新开发。FPGA芯片由于具有可以灵活地反复进行编程的优点因而经常被用来进行ASIC设计的原型验证【】。即用FPGA芯片来实现ASIC设计验证其功能是否正确从而增加一次性流片的成功率。本章将首先阐述一致性验证的原理然后使用仿真工具LDV对CORDIC电路进行一致性功能验证最后采用Xilinx公司的FPGA芯片对CORDIC电路进行实现并在开发板上测试验证其实际功能的正确性。.CORDIC电路的验证..一致性验证原理所谓一致性验证是指针对所设计的电路找到一个能实现相同功能且其功能经过正确验证的“黄金参考”模型用来与之进行对比从而判断所设计电路的正确性【】。C语言由于功能强大且使用灵活并且有大量的实例可以参考借鉴因而在系统算法开发和验证阶段得到了广泛的运用。本文中的CORDIC参考模型是采用C语言建立的。将采用C语言建立的算法模型称为CU将采用VerilogHDL语言建立的RTL模型称为RU将相同的数据同时输入到CU和RU模型中并采用某种控制方法使它们的输出时序相一致然后对它们的输出进行比较。如果比较结果一致则证明电路的功能正确反之则证明电路的功能不正确。一个独立模块的一致性验证模型如下面图.中所示。武汉理工大学硕士学位论文图.一致性验证模型上图中的输入信号的类型对不同的设计是不一样的。如果模块的输入数据会影响模块本身的内部状态例如有限状态机(FiniteStateMachineFSM)此时输入的数据需要能够让电路遍历所有的情况即能让状态机达到所有可能的状态【】。对于这里的COImIC功能验证要做的是证明迭代运算结果的正确性因此这里采用随机数作为输入数据。需要注意的是输入数据的位宽是确定的因此输入的随机数必须在一定的范围之内。还有比较重要的一点是需要采用合适的控制方法使CU模型与RU模型的时序相一致即需要保证CU模型的输出与RU模型的输出是同步的【引。..功能仿真由于采用硬件来模拟所设计电路的实际工作环境是比较费时且成本较高的而且在开发过程中需要对设计不断进行修改因而采用硬件模拟是不现实的。基于软件仿真的验证方法运用得十分广泛。利用PC机或者工作站的强大的处理能力和内存空间开发人员可以借助仿真工具方便地模拟出所设计电路的实际工作环境【l。在验证过程中针对设计的特定功能将输入激励加到测试平台(Testbench)上对待测设计(DeviceUnderTestDUT)然后检查它的响应是否正确。为了全面验证设计的各种功能需要根据要求生成功能完备的测试激励。功能仿真验证的模型如下面图.中所示【】。武汉理工人学硬士学位论文图功能仿真验证模型上图中的参考输出这一项并不是必须的。例如状态机等控制类的逻辑需要验证的是时序状态的转换以及控制信号的有效性对于它而言是投有确定的参考输出的。一般采用的方法是利用仿真工具生成波形文件然后在波形图中观察信号的时序是舌j】==确ⅢJ。对于CORDIC的验证需要做的是检查它的运算结果是否正确因而参考输出是必须的。这里所使用的参考输出是CORDlC算法的C模型的输出结果。在响应检查中必须保证待测设计的输出与参考输出在时序上是同步的口】。本文中采用Cadence公司的仿真工具LDVl进行功能仿真通过Novas公司的Debussy.查看输出波形。下图中所示的是总的迭代次数为次的旋转模式CORDIC电路的仿真波形。采用的是串并结台的实现架构有个迭代单元即级流水线。因而经过开始阶段的等待时间后每个时钟周期就可毗产生一个迭代后的结果。图扛旋转模式CORDIC电路的仿真结果武汉理I.大学硕学位论文上图.中CORDICXOUT是输出向量的x分量xoutmcmdata是C模型产生的参考X输出:CORDICYOUT是输出向量的Y分量voutmemdata是C模型产生的参考Y输出。从图中可以看出CORDIC电路的输出与C模型产生的参考输出是完全一致的因而可以判定旋转模式CORDIC电路正确完成了迭代运算。下图中所示的是总的迭代次数为次的相角模式CORDIC电路的仿真波形。采用的也是串并结合的实现架构.有个迭代单元即级流水线。因而经过开始阶段的个周期的等待时间后每个时钟周期就可以产生一个迭代后的结果。自。。叭o£哥日瓯晋印一ns圈.相角模式CORDIC电路的仿真结果上图.中CORDICXOUT是输出向量的x分量xoutmemdata是C模型产生的参考x输出CORDlCZOUT是旋转过的角度值zoutmcradata是C模型产生的参考z输出。从图中可以看出CORDIC电路的输出与C模型产生的参考输出是完全一致的因而可以判定这里的相角模式CORDIC电路正确完成了迭代运算。.CORDIC电路的FPGA实现本文采用Xilinx公司的FPGA芯片对CORDIC电路进行了实现选用的是Spa,lanE系列FPGA的XCSE芯片。浚芯片具有多达个输入查找表和个触发器以及多达个用户引脚完全符合CORDIC电路的资武汉理工大学硕士学位论文源需求。..CORDIC电路的综合对于针对FPGA实现的综合过程需要关注的是时钟频率是否满足设计需求以及消耗的资源是否在所选FPGA芯片的容量之内【】。下图.中所示的是采用Xilinx的综合工具XST对CORDIC电路进行综合时生成的对时钟信号的综合结果。图.时钟信号的综合结果从上图中可以看出电路可实际达到的最大时钟频率为.MHz而系统需求是MHz因而所设计的电路是满足系统要求的。下图.中所示的是XST对整个CORDIC电路综合完成以后生成的资源消耗报告可以看出CORDIC电路消耗的资源远小于FPGA芯片的容量因而可以保证COImIC电路的功能被正确实现。图CORDIC电路的资源消耗..CORDIC电路的实现与测试综合完成以后再经过翻译(Translate)、映射(Map)、布局布线(PlaceRoute)等操作后就可以生成用于下载到FPGA芯片中的比特流文件‘。这个比特流文件用于对FPGA芯片进行配置使它完成指定的功能。将CORDIC电路在FPGA芯片上实现以后为了检查其功能是否正确需武汉理工大学硕士学位论文要选用合适的埂件测试平台来完成检测。本文中选用的是Xilinx的SpartanEStartKit开发板硬件实物图如下面图中所示。图CORDIC测试板实物图为了观察CORDIC电路的功能是否正确本文采用Xilinx公司的在线逻辑分析仪chipso叩e对运行于FPGA芯片中的CORDIC电路的信号进行了观测。下图中所示的是使用ChipScope获取的CORDIC电路的信号波形。“eⅫ州l^oChain印”£I^口口咖pw抑研“Mn《州出I口‘}w口奢々宁pp强瞄裟:篙舞『面雪可至茎二:互二箜二i芒f谶TfIQ。er岁Setupi畦==:={:l:赢聂磊纛磊纛蓄弱I:Ih一‘uIll广l。。篙嚣。l”“t一l*I”巨沿驳强副强睡强碰鲴姗碰利图使用ChipScope获取的CORDIC电路的信号波形将这里获得的运行于FPGA芯片上的CORDIC电路的信号与前面功能仿真中的信号值相比较可以看出它们的值相一致表明CORDIC电路的功能在FPGA芯片上得到了正确实现。武汉理工大学硕士学位论文.本章小结本章首先阐述了一致性验证的原理然后采用Cadence公司的验证工具LDV.完成了对CORDIC电路的功能仿真使用Novas公司的Debussy查看生成的波形最后将CORDIC电路在FPGA芯片上实现并在开发板上进行了测试验证了所设计的CORDIC电路功能的正确性。武汉理工大学硕士学位论文第章IP核生成平台的设计从所完成的功能上来看CORDIC算法有旋转模式和相角模式两种工作模式。从可以采用的架构上来看CORDIC有三种实现方式:全串行方式、全并行方式和串并结合方式。在不同的应用场合下根据所要完成的功能可能需要使用旋转模式和相角模式中的一种或两种。而出于性能以及所消耗的资源的考虑可能会需要采用不同的架构来实现CORDIC电路。基于这个情况可以设计出一个参数化控制的RTL代码生成平台由RTL代码生成器自动生成所需要的CORDIC的代码

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/50
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部