基于Python定点平方根FPGA实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Python定点平方根FPGA实现

基于Python定点平方根FPGA实现   摘 要: 针对当前系统设计中软硬件设计者分别采用不同的设计语言存在的问题,采用基于Python的软硬件协同设计方法,以信号处理和图像处理中常用的平方根算法为例,在FPGA上实现了定点平方根算法。实验结果表明Python可以有效地将软件算法快速地转换为硬件设计,并能大幅度提高系统设计,仿真和校验的效率,使得这种方法设计的产品能更快地进入市场。 关键词: Python; FPGA; 平方根; 软硬件协同设计 中图分类号: TN710?34 文献标识码: A 文章编号: 1004?373X(2013)22?0131?03 0 引 言 FPGA作为可编程的逻辑器件,它具有功耗低、便于修改、调试等特点,并能在上面实时完成大量的算法,平方根运算作为信号和图像处理中的常见算法,目前在FPGA上有许多实现,但是这些实现方法通常采用目前硬件设计中普遍采用的Verilog和VHDL语言进行硬件设计,这种设计方法存在着仿真和校验效率低,对于复杂的算法和软件设计者之间的沟通较为困难等问题。Python[1]是一种简单易学并且功能强大的编程语言,并具有强大的软硬件描述能力,MyHDL[2]采用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],采用GTKWAVE查看仿真波形,FPGA器件采用Altera公司CycloneⅡ 2C35F672C6,编译综合采用Quartus 12.1sp1 webpack。 2.2 仿真波形 在设计过程中生成的VCD仿真波形可以随时采用GTKWAVE查看,可以便于校验设计是否正确,最终完成的仿真波形如图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的软硬件协同设计方法,在FPGA上完成了定点平方根算法,设计仿真过程仅使用Python语言,所以仿真校验和传统的设计方法相比效率更高,仿真速度也更快,另外此方法还可以方便,有效地将一个软件算法快速地转换为其相应的硬件实现,从而完成软硬件系统协同设计。 现代系统的算法越来越复杂,传统的软硬件设计方法

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档