当前位置:首页 > 电源 > 数字电源
[导读]针对当前系统设计中软硬件设计者分别采用不同的设计语言存在的问题,采用基于Python的软硬件协同设计方法,以信号处理和图像处理中常用的平方根算法为例,在FPGA上实现了定点平方根算法。实验结果表明Python可以有效地将软件算法快速地转换为硬件设计,并能大幅度提高系统设计,仿真和校验的效率,使得这种方法设计的产品能更快地进入市场。

  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 平方根实现

  平方根的FPGA实现方法很多,有的算法为了减少片上资源的使用,逻辑实现上尽量避免使用乘法,比如CORDIC,逐位计算,non-restoring 等,现在FPGA上通常都有硬件乘法器,可采用迭代法和泰勒级数展开,本文采用泰勒级数展开的方法,级数采用5级,系数采用3.15的定点表示形式,小数部分15位,整数部分2位为了保证后续计算结果不溢出,整个位宽为18位,计算公式如式(1)所示:

  

 

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

  

 

  整个过程的设计模块如图1所示。

  

 

  1.3 Python软硬件协同设计

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

  

[!--empirenews.page--]

 

  2 结果

  2.1 实验环境

  采用MyHDL 0.8,采用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编译综合,并使用Model-sim仿真的波形如图5所示,与图3的Python环境下仿真波形相似,由此可见采用Python的软硬件协同设计方法能有效地进行FPGA 设计。综合后FPGA 资源使用情况:LE共1 506个,寄存器64个,嵌入式9位硬件乘法器10个。

  

 

  3 结论

  本文采用基于Python的扩展包MyHDL的软硬件协同设计方法,在FPGA 上完成了定点平方根算法,设计仿真过程仅使用Python语言,所以仿真校验和传统的设计方法相比效率更高,仿真速度也更快,另外此方法还可以方便,有效地将一个软件算法快速地转换为其相应的硬件实现,从而完成软硬件系统协同设计。

  现代系统的算法越来越复杂,传统的软硬件设计方法越来越不适应市场对设计的要求,采用Python进行系统设计,仿真和校验的速度会大大地提高,也能够自动将算法转换为对应的硬件实现,所以采用Python来进行软硬件协同设计的产品能更快地进入市场,并且随着设计复杂性的进一步增强和这种设计方法本身的发展和完善,基于Python的软硬件协同设计方法将会有更加广阔的应用前景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭