推荐星级:
- 1
- 2
- 3
- 4
- 5
基于PYTHON软硬件协同设计方法
资料介绍
针对当前系统设计中软硬件设计者分别采用不同的设计语言存在的天然鸿沟和如何将基于Python的大量软件算法快速地转换为硬件设计的问题,研究了一种新的基于Python的软硬件协同设计方法。并以基于Python的MyHDL扩展包为例,重点研究了以Python作为软硬件协同设计、仿真和校验的系统设计流程,得出基于Python的软硬件协同设计方法能大幅度提高系统设计及算法硬件实现的效率的结论。
部分文件列表
文件名 | 大小 |
基于PYTHON软硬件协同设计方法.pdf | 2M |
部分页面预览
(完整内容请下载后查看)2013 年 4 月 15 日
第 36 卷第 8 期
Apr.2013
现代电子技术
Modern Electronics Technique
Vol.36 No.8
76
基于 Python 软硬件协同设计方法
刘毅飞
(湖北科技学院 生物医学工程学院,湖北 咸宁 437100)
摘
要:针对当前系统设计中软硬件设计者分别采用不同的设计语言存在的天然鸿沟和如何将基于 Python 的大量软
件算法快速地转换为硬件设计的问题,研究了一种新的基于 Python 的软硬件协同设计方法。并以基于 Python 的 MyHDL 扩
展包为例,重点研究了以 Python 作为软硬件协同设计、仿真和校验的系统设计流程,得出基于 Python 的软硬件协同设计方法
能大幅度提高系统设计及算法硬件实现的效率的结论。
关键词:Python;FPGA;软硬件协同设计;硬件加速
中图分类号:TN911⁃34; TP391.9
文献标识码:A
文章编号:1004⁃373X(2013)08⁃0076⁃03
Hardware⁃software co⁃design method based Python
LIU Yi⁃fei
(School of Biomedical Engineering,Hubei University of Science and Technology,Xianning 437100,China)
Abstract:Since there is a great design difference due to the different design languages applied by software and hardware
designers,a new hardware and software co⁃design method based on Python is studied in this paper for quickly converting a large
number of software algorithms based on Python to its hardware implementation. The Python system design flowchart in hardware⁃
software co⁃design,simulation and verification is researched emphatically by taking MyHDL package based on Python as a study
case. The flowchart show the Python software and hardware co⁃design method can highly improve efficiency of system design and
hardware algorithm implementation.
Keywords:Python;FPGA;software⁃hardware co⁃design;hardware acceleration
opsys 公 司 Synphony C Compiler 和 Calypto Design Sys⁃
0
引
言
tems 公司的 Catapult SL Synthesis 可以将 C/C++算法转
换为相应的硬件[2⁃3]。Python 是一种简单易学并且功能
强大的编程语言,有许多算法是由 Python 来实现,而且
这些算法很多是免费、开源的,和 C/C++类似需要如何
完成基于 Python 的软硬件协同设计[4]。
现代系统设计许多都是由 C/C++,Python 等高级语
言来完成,而且这些系统越来越复杂,涉及到的算法的
运算量也越来越大,许多算法需要用硬件实现来满足算
法的实时性要求。FPGA 是一种可编程的逻辑器件,它
具有便于修改,调试,并能并行地完成大量的运算,从而
提高算法的实时性,并且随着硬件制造水平不断地提
高,FPGA 的资源越来越大,工作频率也越来越高,使得
能在其上面完成的算法也越来越复杂。但是传统的软
硬件分开设计的方法由于软硬件设计者采用不同的设
计语言,存在软硬件设计者之间难以沟通导致设计周期
长等问题,这种设计方法已不能满足快速地增长的市场
要求,如何将这些系统设计中的算法快速转换为相应的
硬件来实现,需要新的软硬件协同设计方法。当前基于
C/C++的软硬件协同设计,有一个 SystemC 标准化组织
一直致力于这个工作[1],也有少量商业化工具例如 Syn⁃
1
基于 Python 的软硬件协同设计发展
由于 Python 的强大的软硬件描述能力,近年来许多
研究者在 Python 的软硬件协同设计方面进行了许多研
究,其中 Logaras E 提出了一种称为 SysPy(System Py⁃
thon)可以使用 Python 来描述硬件并将其自动转换为
[5]
VHDL ,Zhang mi 采用 PDSDL(Dynamic System Descrip⁃
tion Language)来进行系统建模和校验并可将系统转换
为 Verilog 的硬件描述[6],特别是 Decaluwe J 提出一种称
为 MyHDL 的 Python 扩展包来进行软硬件协同设计[7],
Villar J I 采用 MyHDL 完成了一个接口设计实例[8]。这
些开发工具各自具有自己的一些特点,但是他们有一点
是相同,就是采用 Python 来进行软硬件协同设计。下面
收稿日期:2012⁃11⁃09
刘毅飞:基于 Python 软硬件协同设计方法
77
第 8 期
以 MyHDL 为例介绍基于 Python 的软硬件协同设计。
发的先进方法比如快速应用开发,测试驱动开发都在
Python 上得以体现,由于硬件描述语言的硬件设计和软
件开发具有一定的相似性,采用 MyHDL 可以使用最新
的软件开发技术。
2
基于 Python 的 MyHDL 包简介
MyHDL 采用 Python 扩展包的形式使其能支持硬件
设计和仿真并在仿真结果符合要求后可将软件算法自
动转换为相应的采用 Verilog 或 VHDL 硬件描述,由于
MyHDL 包是基于 Python 的硬件扩展,下面主要对 MyH⁃
DL 硬件方面的一些主要特点做简要介绍[9]。
2.1 数据类型
3.3 软硬件设计可以采用同样的开发环境
Python 是算法实现的一种理想的语言,很多算法都
由 Python 实现,通常算法的软硬件实现由不同工程师来
实现,软件工程师使用 Python,硬件工程师使用通用的
硬件描述语言,例如 Verilog 或 VHDL,硬件工程师和软
件工程师之间存在一条鸿沟,而采用 MyHDL,就可以在
同一个 Python 环境实现算法设计,仿真和校验。
3.4 其他优点
标准 Python 的 int 类型已经具有许多硬件设计所需
要特征,但是在硬件设计中由于包含许多位操作和处
理,MyHDL 设计了 intbv 类,提供索引和切片操作来支持
位的操作和处理。
对于没有一定硬件设计经验的设计者,通常采用
Verilog 设计会混淆阻塞和非阻塞赋值,不清楚 Verilog
的符号运算,采用 VHDL 进行设计又不理解 VHDL 的信
号概念,会觉得 VHDL 的类型和位宽转换很繁琐,但是
如果采用基于 Python 的 MyHDL 包作为设计语言,这些
都将不成为问题。
2.2 模块,端口和信号
在 MyHDL 采用函数来对硬件的模块进行建模,My⁃
HDL 也有信号对象,类似于 VHDL 语言的信号,采用信
号作为函数的参数来定义模块的端口。
2.3 发生器
发生器是 MyHDL 的一个关键概念,用来建立并发
性模型,对应于 Verilog 的 always 块或者 VHDL 的进程。
2.4 自动转换
4
基于 Python 的软硬件设计流程
在现代系统设计中,软件工程师采用 Python 等高级
在一定限制条件下,MyHDL 使用 toVerilog()或者
toVHDL()函数将 MyHDL 设计自动转换为相应的 Veril⁃
og 或者 VHDL 代码,如果符合 MyHDL 可综合子集的要
求,就可使用 MyHDL 完成可硬件综和的代码并在 FPGA
上实现。
语言,而硬件系统设计多采用 Verilog,VHDL 硬件描述语
言,在如何将 Python描述的软件映射为相应的硬件上,软
硬件开发者之间的交流存在一道天然的鸿沟,而采用 Py⁃
thon 来进行软硬件协同设计就可以解决这一个问题,基
于 Python的软硬件协同设计的流程如图 1所示。
2.5 仿真
MyHDL 通过 Cosimulation 对象使其能支持仿真,对
于自动转换的 Verilog 代码或者 VHDL 代码,MyHDL 还
可作为硬件校验语言来对转换后的 Verilog 或 VHDL 进
行协同仿真和校验。
3
采用 MyHDL 的硬件设计优点
Verilog 和 VHDL 是当前的主流硬件设计语言,但是
使用基于 Python 的 MyHDL 作为硬件设计也具有许多优
点
[10]使得其可以作为设计者特别是硬件设计的初学者
另外一种较好的选择。
3.1 MyHDL 使用成本低
MyHDL 是免费的并且开源,在使用 MyHDL 设计的
工具链中同样可以使用大量的免费工具比如 ICArus,
IVERILOG 仿真工具,GTKWAVE 查看仿真波形,从而可
以减少设计成本。
图 1 基于 Python 软硬件协同设计流程
3.2 在硬件设计中使用先进的软件开发技术
由于 Python 本身是一种软件开发语言,现代软件开
首先采用 Python 进行系统设计,然后根据系统性能
要求进行软硬件划分,对于系统性能要求比较高的部分
全部评论(0)