基于IP库的可编程器件辅助设计软件
时间:06-30
来源:互联网
点击:
1 引言
在基于MCU的系统设计中,一般采用"MCU+PLD"的系统结构。PLD器件具有在系统现场可重复编程的能力,用来实现系统的I/O接口等外围功能。在这类系统中,绝大多数的数字逻辑可在PLD器件内部完成。在设计一个新系统时,应尽可能利用以往设计中已使用过的IP模块,这些模块的设计已成熟、并经过时间考验,可提高设计的重复利用率,并使系统性能和质量得到保证。 在长期的设计工作中,人们已积累了大量的IP 模块,如在一个新的设计中加以利用,必然存在如何管理这些模块的问题。为此可采用"集约式"的设计方法,以提高设计效率。硬件"集约式"的设计方法如图1所示,它类似于软件中高级语言的设计方式。先用HDL语言对各种不同功能的电路模块建立IP模块,创建电路单元IP库。然后根据设计规范的要求,从库中选取不同的电路单元组成描述外围接口电路的HDL程序。最后,用相应的PLD 设计工具对HDL程序进行逻辑综合,在PLD器件内部完成布局布线,生成最终的数字电路。由于这些电路单元是用HDL语言描述的,而HDL语言的特点就是与工艺无关,因此用它描述的电路单元的可移植性非常好,可以在采用不同工艺制造的PLD器件中使用。于是,电路单元库可以用在不同的系统中,避免了重复设计与资源浪费。
Xilinx公司和Altera公司的设计工具中,提供了一些HDL形式的电路库。不过库单元都是比较简单的小规模数字电路,如逻辑门、74系列器件等,对中、大规模和复杂逻辑时序电路的设计帮助不大。另外也有一些外围功能模块和复杂逻辑的单元库提供如通用异步收发器、有限冲击响应滤波器等,但不是以HDL的形式提供的,只适用于某些特定的PLD器件,移植性比较差。因此,在实际工作中编制了一个管理和组合HDL电路单元IP库的辅助设计软件--HAD软件。通过HAD软件,对设计好的HDL电路库进行管理,按照系统设计规范的要求从库中选取相应的电路单元并将它们组合起来,大大降低了系统设计和调试的难度,提高了系统的稳定性和可靠性,并且有利于系统日后的升级。
2 HAD辅助设计软件功能
辅助设计(HAD)软件主要是对HDL语言的电路起一个辅助设计的作用。HAD软件的功能有两个:管理电路单元IP库以及生成所需外围电路的 HDL程序。
电路单元库的管理主要有两个方面:电路单元接口的管理以及电路单元HDL程序的管理。因此,电路单元库是由两个库组成的,一个是电路单元的接口库,另外一个是电路单元HDL程序库[7]。电路单元接口库里的基本单位是各个电路单元的接口信息,电路单元HDL程序库里的基本单位是描述各种电路单元的HDL源程序。类似于标准芯片,如8255芯片,电路单元的接口信息描述了这个标准芯片的输入输出以及它的功能,相当于8255的管脚和使用功能说明;而电路单元HDL程序描述了这个标准芯片内部的实际电路以及用何种电路结构实现相应功能的,这相当于8255芯片内部的电路组成和结构。对于管理一个库来说,基本的操作主要是新增、删除和修改库单元。
HAD软件的最终目的就是生成外围电路的HDL 程序。也就是根据系统设计规范的要求从IP库中选取合适的电路单元,再以适当的形式组合起来,成为一个完整的HDL程序。
3 电路模块HDL程序生成
HAD软件中最主要的功能就是电路模块HDL程序的生成。生成电路模块的HDL程序的过程,主要就是对电路单元IP库中的某些单元进行若干次例化的过程。
进行例化就必须具备两个条件:首先要有模块输入输出端口的列表,其次要知道的是与这些端口相连接的信号列表。根据两者的对应关系,完成例化,然后将例化好的电路模块组合起来,成为一个HDL程序文件,生成电路模块HDL程序的流程如图2所示:
通过上面的分析,首先创建两个数据库。一个存放各种模块HDL程序的源文件,另外一个存放与各个模块相对应的输入输出端口的信号列表。
存放HDL程序的源文件的数据库比较简单,对它的操作仅限于对文件内容的复制,因此这里不作进一步的讨论。
存放端口信号列表的数据库结构,如表1所示。
表1中,最上面的一行是数据库的表头,字段名代表了每一个字段下面内容的具体含义。其中,module为电路单元模块名;detail为存放模块端口详细信息的数据库名;PortN代表了模块中某个端口的名字, N是自然数。
从表1中第二行开始的记录是不同的模块。例如,第二行记录所描述的模块是带有一个异步清零端的D触发器,模块名是DFF,模块端口的详细信息存放在DFF_D的数据库文件中,总共有4个端口,分别是CLK、CLR、D和Q。数据库文件 DFF_D中存放的是每个端口的方向和宽度。
以DFF模块为例,其对应的数据库文件DFF_D 的内容如表2所示:
在基于MCU的系统设计中,一般采用"MCU+PLD"的系统结构。PLD器件具有在系统现场可重复编程的能力,用来实现系统的I/O接口等外围功能。在这类系统中,绝大多数的数字逻辑可在PLD器件内部完成。在设计一个新系统时,应尽可能利用以往设计中已使用过的IP模块,这些模块的设计已成熟、并经过时间考验,可提高设计的重复利用率,并使系统性能和质量得到保证。 在长期的设计工作中,人们已积累了大量的IP 模块,如在一个新的设计中加以利用,必然存在如何管理这些模块的问题。为此可采用"集约式"的设计方法,以提高设计效率。硬件"集约式"的设计方法如图1所示,它类似于软件中高级语言的设计方式。先用HDL语言对各种不同功能的电路模块建立IP模块,创建电路单元IP库。然后根据设计规范的要求,从库中选取不同的电路单元组成描述外围接口电路的HDL程序。最后,用相应的PLD 设计工具对HDL程序进行逻辑综合,在PLD器件内部完成布局布线,生成最终的数字电路。由于这些电路单元是用HDL语言描述的,而HDL语言的特点就是与工艺无关,因此用它描述的电路单元的可移植性非常好,可以在采用不同工艺制造的PLD器件中使用。于是,电路单元库可以用在不同的系统中,避免了重复设计与资源浪费。
Xilinx公司和Altera公司的设计工具中,提供了一些HDL形式的电路库。不过库单元都是比较简单的小规模数字电路,如逻辑门、74系列器件等,对中、大规模和复杂逻辑时序电路的设计帮助不大。另外也有一些外围功能模块和复杂逻辑的单元库提供如通用异步收发器、有限冲击响应滤波器等,但不是以HDL的形式提供的,只适用于某些特定的PLD器件,移植性比较差。因此,在实际工作中编制了一个管理和组合HDL电路单元IP库的辅助设计软件--HAD软件。通过HAD软件,对设计好的HDL电路库进行管理,按照系统设计规范的要求从库中选取相应的电路单元并将它们组合起来,大大降低了系统设计和调试的难度,提高了系统的稳定性和可靠性,并且有利于系统日后的升级。
2 HAD辅助设计软件功能
辅助设计(HAD)软件主要是对HDL语言的电路起一个辅助设计的作用。HAD软件的功能有两个:管理电路单元IP库以及生成所需外围电路的 HDL程序。
电路单元库的管理主要有两个方面:电路单元接口的管理以及电路单元HDL程序的管理。因此,电路单元库是由两个库组成的,一个是电路单元的接口库,另外一个是电路单元HDL程序库[7]。电路单元接口库里的基本单位是各个电路单元的接口信息,电路单元HDL程序库里的基本单位是描述各种电路单元的HDL源程序。类似于标准芯片,如8255芯片,电路单元的接口信息描述了这个标准芯片的输入输出以及它的功能,相当于8255的管脚和使用功能说明;而电路单元HDL程序描述了这个标准芯片内部的实际电路以及用何种电路结构实现相应功能的,这相当于8255芯片内部的电路组成和结构。对于管理一个库来说,基本的操作主要是新增、删除和修改库单元。
HAD软件的最终目的就是生成外围电路的HDL 程序。也就是根据系统设计规范的要求从IP库中选取合适的电路单元,再以适当的形式组合起来,成为一个完整的HDL程序。
3 电路模块HDL程序生成
HAD软件中最主要的功能就是电路模块HDL程序的生成。生成电路模块的HDL程序的过程,主要就是对电路单元IP库中的某些单元进行若干次例化的过程。
进行例化就必须具备两个条件:首先要有模块输入输出端口的列表,其次要知道的是与这些端口相连接的信号列表。根据两者的对应关系,完成例化,然后将例化好的电路模块组合起来,成为一个HDL程序文件,生成电路模块HDL程序的流程如图2所示:
通过上面的分析,首先创建两个数据库。一个存放各种模块HDL程序的源文件,另外一个存放与各个模块相对应的输入输出端口的信号列表。
存放HDL程序的源文件的数据库比较简单,对它的操作仅限于对文件内容的复制,因此这里不作进一步的讨论。
存放端口信号列表的数据库结构,如表1所示。
表1中,最上面的一行是数据库的表头,字段名代表了每一个字段下面内容的具体含义。其中,module为电路单元模块名;detail为存放模块端口详细信息的数据库名;PortN代表了模块中某个端口的名字, N是自然数。
从表1中第二行开始的记录是不同的模块。例如,第二行记录所描述的模块是带有一个异步清零端的D触发器,模块名是DFF,模块端口的详细信息存放在DFF_D的数据库文件中,总共有4个端口,分别是CLK、CLR、D和Q。数据库文件 DFF_D中存放的是每个端口的方向和宽度。
以DFF模块为例,其对应的数据库文件DFF_D 的内容如表2所示:
MCU 电路 Xilinx Altera 收发器 滤波器 嵌入式 相关文章:
- 我的FPGA学习历程(05-23)
- FPGA设计学习经验小谈(05-23)
- 在单个FPGA平台上采用多种工业以太网标准进行设计(03-13)
- FPGA的在应用编程技术研究(04-24)
- 基于CPLD与单片机的高速数据采集系统(04-08)
- Actel数模结合FPGA的远程控制器设计(05-13)