0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

电子设计 来源:半导体技术 作者:俞日龙,俞承芳 2020-03-12 07:59 次阅读

1、引言

在基于MCU的系统设计中,一般采用“MCU+PLD”的系统结构。PLD器件具有在系统现场可重复编程的能力,用来实现系统的I/O接口等外围功能。在这类系统中,绝大多数的数字逻辑可在PLD器件内部完成。在设计一个新系统时,应尽可能利用以往设计中已使用过的IP模块,这些模块的设计已成熟、并经过时间考验,可提高设计的重复利用率,并使系统性能和质量得到保证。 在长期的设计工作中,人们已积累了大量的IP 模块,如在一个新的设计中加以利用,必然存在如何管理这些模块的问题。为此可采用“集约式”的设计方法,以提高设计效率。硬件“集约式”的设计方法如图1所示,它类似于软件中高级语言的设计方式。先用HDL语言对各种不同功能的电路模块建立IP模块,创建电路单元IP库。然后根据设计规范的要求,从库中选取不同的电路单元组成描述外围接口电路的HDL程序。最后,用相应的PLD 设计工具对HDL程序进行逻辑综合,在PLD器件内部完成布局布线,生成最终的数字电路。由于这些电路单元是用HDL语言描述的,而HDL语言的特点就是与工艺无关,因此用它描述的电路单元的可移植性非常好,可以在采用不同工艺制造的PLD器件中使用。于是,电路单元库可以用在不同的系统中,避免了重复设计与资源浪费。

采用IP模块和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所示:

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

通过上面的分析,首先创建两个数据库。一个存放各种模块HDL程序的源文件,另外一个存放与各个模块相对应的输入输出端口的信号列表。

存放HDL程序的源文件的数据库比较简单,对它的操作仅限于对文件内容的复制,因此这里不作进一步的讨论。

存放端口信号列表的数据库结构,如表1所示。

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

表1中,最上面的一行是数据库的表头,字段名代表了每一个字段下面内容的具体含义。其中,module为电路单元模块名;detail为存放模块端口详细信息的数据库名;PortN代表了模块中某个端口的名字, N是自然数。

从表1中第二行开始的记录是不同的模块。例如,第二行记录所描述的模块是带有一个异步清零端的D触发器,模块名是DFF,模块端口的详细信息存放在DFF_D的数据库文件中,总共有4个端口,分别是CLK、CLR、D和Q。数据库文件 DFF_D中存放的是每个端口的方向和宽度。

以DFF模块为例,其对应的数据库文件DFF_D 的内容如表2所示:

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

数据库文件DFF_D的字段有两类,前一半的字段都是以“Pn_io”的形式出现,代表了这个端口的流向,是输入、输出还是双向。后一半的字段都是以“Pn_bit”的形式出现,代表了这个端口信号的宽度。

通过上面两类数据库,就可以完整地掌握一个模块的所有接口信息。

在图1所示的流程图中,最重要的一步就是 “进行例化、组合”。根据上述几个数据库的定义和描述,例化和组合的流程如图3所示。图中两个预备处理(六边形框)的工作是“例化组合”前的准备工作。根据系统设计规范的要求,确定所需功能模块的种类和数量,然后由设计者来确定所有模块及其输入输出信号的名字。这些操作都可以通过键盘输入的方式来完成,从而将例化和组合过程中所需的信息传递给HAD软件。

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

确定好所需的模块之后,就可以逐一地对每个模块进行例化。首先打开端口信号列表数据库,从中找到所选定的模块。接着,打开存放有模块端口详细信息的数据库,读取端口的类型和数量,按照指定的连接信号名对模块进行例化。最后将例化后的HDL程序组合成一个文件。

4 、管理电路单元库程序的设计思路

管理电路单元库的软件所具备的功能是对电路单元进行增加、删除和修改等操作,流程如图4所示。

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

图4中,管理流程主要由3个处理分支组成,分别是增加、删除和修改电路单元分支。

电路单元的增加功能就是将电路模块的HDL程序加入到电路单元库中。库中增加了一个新的电路单元,意味着又多了一个功能可供我们选择。随着库中电路单元的日益增多,硬件设计中可以用HAD软件完成的比重就会越来越大,有利于系统设计。

增加电路单元处理分支的流程如图5所示。增加一个电路单元涉及到两个数据库的操作,一个是端口列表数据库,另外一个是端口详细信息数据库。首先,对端口列表数据库进行新增的操作,增加一条空记录,将新模块的I/O名称填入空记录中的相应字段里。然后,新建一个端口详细信息数据库文件。它的字段个数是新模块I/O个数的两倍,一半是用来指定I/O的方向,另一半是用来指定端口信号的宽度。最后,将I/O信号的方向以及宽度填入新建数据库的相应字段中。处理分支结束之后再返回到管理流程的入口,重新选择管理的内容。

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

删除电路单元处理分支的流程如图6所示。电路单元的删除功能就是将不再需要的电路单元从库中移掉。用程序实现时,只要将该电路单元在数据库中的记录删除,同时将对应的详细信息数据库一起删除即可。

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

修改电路单元处理分支的流程如图7所示。该单元的修改功能就是对库中的电路单元的信息进行修正。

采用IP模块和PLD设计工具实现可编程器件辅助软件的设计

5、 结束语

HAD软件采用了VB设计软件中的数据库管理控件,通过数据库管理控件完成数据库单元的增加、删除和修改等操作。该软件具有用户界面人性化、操作使用方便等优点。在多个嵌入式系统的设计中取得了很好的效果。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17040

    浏览量

    350511
  • IP
    IP
    +关注

    关注

    5

    文章

    1670

    浏览量

    149376
  • PLD
    PLD
    +关注

    关注

    6

    文章

    224

    浏览量

    59349
收藏 人收藏

    评论

    相关推荐

    利用可编程器件CPLD/FPGA实现VGA图像控制器的设计方案

    利用可编程器件CPLD/FPGA实现VGA彩色显示控制器在工业现场中有许多实际应用。以硬件描述语言VHDL对可编程器件进行功能模块设计、仿真综合,可
    发表于 08-30 12:03 1093次阅读
    利用<b class='flag-5'>可编程器件</b>CPLD/FPGA<b class='flag-5'>实现</b>VGA图像控制器的设计方案

    什么是可编程逻辑

    客户需要投入的所有成本,这些成本包括工程资源、昂贵的软件设计工具、用来制造芯片不同金属层的昂贵光刻掩膜组以及初始原型器件的生产成本。这些NRE成本可能从数十万美元至数百万美元。 ??对于可编程逻辑器件
    发表于 05-29 11:36

    PLD/可编程逻辑器件的入门知识

    同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件PLD/FPGA。PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机
    发表于 06-20 10:38

    请问如何去设计可编程器件辅助软件

    HAD辅助设计软件有哪些功能?电路模块HDL程序是怎样生成的?管理电路单元库程序的设计思路是怎样的?请问如何去设计可编程器件辅助
    发表于 04-14 06:21

    PLD可编程逻辑器件

    ,足以满足设计一般的数字系统的需要。目前常用EEPROM,CPLD,FPGA。 PLA,PAL,GAL是早期的可编程器件,已经淘汰。可编程逻辑器件PLD(Programmable Logic Dev...
    发表于 07-22 09:05

    FPGA可编程器件和CPLD可编程器件有哪些相同点和不同点

    CPLD是什么?FPGA包含哪几类可编程资源呢?FPGA可编程器件和CPLD可编程器件有哪些相同点和不同点?
    发表于 11-10 07:42

    可编程器件与MAX+plusII简介

    熟悉常用逻辑器件的分类;了解常用可编程逻辑器件的内部结构;熟悉可编程逻辑器件的开发流程;掌握MAX+plusII软件。重点:基于MAX+plusII
    发表于 12-01 17:36 19次下载

    基于可编程器件的任意进制计数器的设计

    采用可编程器件设计电路,利用MAX+plus II设计软件中LPM元件库所提供的lpm_counter元件,实现任意进制计数器的设计。该计数器电路与结构无关,
    发表于 12-29 17:47 55次下载

    什么是PLD(可编程逻辑器件)

    什么是PLD(可编程逻辑器件) PLD可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵
    发表于 06-20 10:32 2.5w次阅读
    什么是<b class='flag-5'>PLD</b>(<b class='flag-5'>可编程逻辑器件</b>)

    可编程器件实现LED显示屏的硬件扫描控制

    可编程器件实现LED显示屏的硬件扫描控制
    发表于 01-18 20:40 21次下载

    可编程器件绪论

    可编程器件绪论
    发表于 09-19 15:40 7次下载
    <b class='flag-5'>可编程器件</b>绪论

    可编程逻辑器件PLD课件下载

    可编程逻辑器件PLD课件下载
    发表于 08-13 10:58 31次下载

    一文详细了解可编程逻辑器件(PLD)

    在过去的十年中,可编程逻辑器件PLD)市场不断增长,对PLD的需求不断增加。具有可编程特性且可编程的芯片称为
    的头像 发表于 03-22 12:36 7954次阅读

    可编程逻辑器件测试方法

    可编程逻辑器件 (Programmable Loeie Device,PLD)是一种用户编程实现某种逻辑功能的逻辑器件,主要由
    的头像 发表于 06-06 15:35 1457次阅读
    <b class='flag-5'>可编程逻辑器件</b>测试方法

    可编程器件的特点和发展历程

    )和读写存储器(ROM)。 可编程器件的特点主要包括以下几个方面: 可编程性:可编程器件可以根据需求进行编程,改变其功能和行为。它们通常具有编程
    的头像 发表于 12-21 17:19 827次阅读