技术解析:在FPGA上利用Python 实现定点平方根
品慧电子讯作为可编程的逻辑器件,FPGA便于调试、修改、功耗低,能够完成大量算法。在处理图像和信号时平方根运算被广泛使用。在FPGA上利用VHDL和Verilog等编程语言进行硬件设计,存在仿真和校验效率低、算法复杂等问题。而Python以其简单、功能强大的特点在此次设计中起到关键作用。 一、平方根实现 平方根的FPGA实现方法很多,有的算法为了减少片上资源的使用,逻辑实现上尽量避免使用乘法,比如CORDIC,逐位计算,non-restoring 等,现在FPGA上通常都有硬件乘法器,可采用迭代法和泰勒级数展开,本文采用泰勒级数展开的方法,级数采用5级,系数采用3.15的定点表示形式,小数部分15位,整数部分2位为了保证后续计算结果不溢出,整个位宽为18位,计算公式如式(1)所示:




- 第一页:平方根算法实现的环境及过程;
- 第二页:平方根算法实现的测试结果



七、综合结果 在上面仿真校验符合设计要求后,将Python自动转换为Verilog描述,采用Quartus编译综合,并使用Model-sim仿真的波形如图5所示,与图3的Python环境下仿真波形相似,由此可见采用Python的软硬件协同设计方法能有效地进行FPGA 设计。综合后FPGA 资源使用情况:LE共1 506个,寄存器64个,嵌入式9位硬件乘法器10个。

结语:本文在FPGA 上利用Python的扩展包MyHDL完成了定点平方根算法,仿真校验和传统的设计方法仿真速度更快,效率更高,实现了将软件算法向硬件转换,完成软硬件系统协同设计。
相关阅读:
专家分析:为何数字电源转换被抛弃?
简单电路让数字电源控制器与模拟控制兼容
电源设计技巧十例:多相数字电源解决方案应对挑战<上一页12
- 第一页:平方根算法实现的环境及过程;
- 第二页:平方根算法实现的测试结果