免费论文查重: 大雅 万方 维普 turnitin paperpass

试述平方根基于Python定点平方根FPGA实现

最后更新时间:2024-01-16 作者:用户投稿原创标记本站原创 点赞:5703 浏览:17756
论文导读:综合采用Quartus12.1sp1webpack。2.2仿真波形在设计过程中生成的VCD仿真波形可以随时采用GTKWE查看,可以便于校验设计是否正确,最终完成的仿真波形如图3所示。2.3测试数据,精度及误差由于整个过程采用Python设计,Python存在大量的软件包可以使用,平方根完成的测试数据结果如表1所示,采用基于Python的绘
摘 要: 针对当前系统设计中软硬件设计者分别采用不同的设计语言存在的问题,采用基于Python的软硬件协同设计方法,以信号处理和图像处理中常用的平方根算法为例,在FPGA上实现了定点平方根算法。实验结果表明Python可以有效地将软件算法快速地转换为硬件设计,并能大幅度提高系统设计,仿真和校验的效率,使得这种方法设计的产品能更快地进入市场。
关键词: Python; FPGA; 平方根; 软硬件协同设计
源于:毕业小结www.7ctime.com
1004?373X(2013)22?0131?03
0 引 言
FPGA作为可编程的逻辑器件,它具有功耗低、便于修改、调试等特点,并能在上面实时完成大量的算法,平方根运算作为信号和图像处理中的常见算法,目前在FPGA上有许多实现,但是这些实现方法通常采用目前硬件设计中普遍采用的Verilog和VHDL语言进行硬件设计,这种设计方法存在着仿真和校验效率低,对于复杂的算法和软件设计者之间的沟通较为困难等问题。Python是一种简单易学并且功能强大的编程语言,并具有强大的软硬件描述能力,MyHDL采用Python扩展包的形式使其能支持硬件设计和仿真并在仿真结果符合要求后可将软件算法自动转换为相应的Verilog或VHDL硬件描述。
本文试图采用这种新的基于Python的软硬件设计方法在FPGA上实现定点平方根。
1 方 法

1.1 定点数表示

通常在FPGA上的运算可以采用定点和浮点两种方式来实现,定点运算和浮点运算相比尽管数表示的范围较小,设计较为复杂,但是速度较快,占用FPGA资源较小,本设计采用定点来完成。平方根的输入为非负数,包括符号位为定点32位输入,其中高16位为整数部分,低15位为小数部分,可以直接计算的平方根范围为(65 536,0],结果采用32位输出,最高位为符号位,接着的高8位为整数部分,低23位为小数部分。

1.2 平方根实现

对于输入x位于(65 536,0]之间,由于数的范围较大,通常进行归一化处理,采用的方法通过左移运算去掉二进制定点数的所有前导零,将输入的数转换为定点小数[0.5,1)之间,在完成平方根运算之后,然后根据前导零个数的奇、偶性不同分别进行去归一化处理,原理如式(2)所示,将输入数y分为sx,s=2n,n即为y的二进制前导零的个数。

1.3 Python软硬件协同设计

基于Python的软硬件协同设计的过程如图2所示[9],由于本设计最终要在硬件上实现,在设计时Python的硬件设计部分采用MyHDL可综合子集,最后使用 MyHDL的toVerilog()函数将MyHDL设计自动转换为相应的Verilog代码,由于MyHDL支持与Verilog混合仿真,设计时的测试平台可以重用,仿真速度和设计效率大大提高。在完成基于Python软硬件设计并仿真正确之后,就可以回到进行传统的FPGA设计流程,进行后续的下载,综合和测试工作。
2 结 果

2.1 实验环境

采用MyHDL 0.8[10],采用GTKWE查看仿真波形,FPGA器件采用Altera公司CycloneⅡ 2C35F672C6,编译综合采用Quartus 1

2.1sp1 webpack。

2.2 仿真波形

在设计过程中生成的VCD仿真波形可以随时采用GTKWE查看,可以便于校验设计是否正确,最终完成的仿真波形如图3所示。

2.3 测试数据,精度及误差

由于整个过程采用Python设计,Python存在大量的软件包可以使用,平方根完成的测试数据结果如表1所示,采用基于Python的绘图包matplotlib绘制的当x在[0.5,

1.0]之间时的平方根误差如图4所示。

2.4 综合结果

在上面仿真校验符合设计要求后,将Python自动转换为Verilog描述,采用Quartus编译综合,并使用Modelsim仿真的波形如图5所示,与图3的Python环境下仿真波形相似,由此可见采用Python的软硬件协同设计方法能有效地进行FPGA设计。综合后FPGA资源使用情况:LE共1 506个,寄存器64个,嵌入式9位硬件乘法器10个。
3 结 论
本文采用基于Python的扩展包MyHDL的软硬论文导读:terey,CA:ACM,1998:191?200.SUTIKNOT,JIDINAZ,IDRISNRN,etal.AsimplestrategytosolvecomplicatedsquarerootprobleminDTCforFPGAimplementation//IEEESymposiumonIndustrialElectronicsandApplications.Penang,Malaysia:IEEE,2010:691?69

5.VIJEYUMARKN,SUMATHYV,

件协同设计方法,在FPGA上完成了定点平方根算法,设计仿真过程仅使用Python语言,所以仿真校验和传统的设计方法相比效率更高,仿真速度也更快,另外此方法还可以方便,有效地将一个软件算法快速地转换为其相应的硬件实现,从而完成软硬件系统协同设计。
现代系统的算法越来越复杂,传统的软硬件设计方法越来越不适应市场对设计的要求,采用Python进行系统设计,仿真和校验的速度会大大地提高,也能够自动将算法转换为对应的硬件实现,所以采用Python来进行软硬件协同设计的产品能更快地进入市场,并且随着设计复杂性的进一步增强和这种设计方法本身的发展和完善,基于Python的软硬件协同设计方法将会有更加广阔的应用前景。
参考文献
Python Software Foundation. Python documentation (Python 2.7) [EB/OL]. [2013?6?10]. http:// .cn/soft/ACRD4CHS.EXE">PDF浏览器用户请先下载安装[3] ANDRA R. A survey of CORDIC algorithms for FPGAs [C]// Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays. Monterey, CA: ACM, 1998: 191?200.
[4] SUTIKNO T, JIDIN A Z, IDRIS N R N, et al. A simple strategy to solve complicated square root problem in DTC for FPGA implementation [C]// IEEE Symposium on Industrial Electronics and Applications. Penang, Malaysia: IEEE, 2010: 691?695.
[5] VIJEYUMAR K N, SUMATHY V, VASIPRIYA P, et al. FPGA implementation of low power high speed square root circuits [C]// IEEE International Conference on Computational Intelligence & Computing Research. Coimbatore, India: IEEE, 2012: 1?5.
[6] DINECHIN F D, JOLDES M, PASCA B, et al. Multiplicative square root algorithms for FPGAs [C]// International Conference on Field Programmable Logic and Applications. Milano, Italy: IEEE, 2010: 574?577.
[7] MEYER?BAESE U. 数字信号处理的FPGA实现[M].3版.刘凌,译.北京:清华大学出版社,2011.
[8] WEISSTEIN E W. Horner's method [EB/OL]. [2013?7?10]. http://mathworld.wolfram.com/HornersMethod.
[9] DECALUWE Jan. MyHDL manual [M/OL]. [2013?05?20]. http:// .cn/soft/ACRD4CHS.EXE">PDF浏览器用户请先下载安装 源于:毕业设计论文范文www.7ctime.com