[发明专利]一种基于面向对象的VHDL语言实现方法无效
申请号: | 201110344992.6 | 申请日: | 2011-11-01 |
公开(公告)号: | CN103092588A | 公开(公告)日: | 2013-05-08 |
发明(设计)人: | 杨际荣 | 申请(专利权)人: | 镇江华扬信息科技有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 212009 江苏省镇江市镇江新*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 面向 对象 vhdl 语言 实现 方法 | ||
技术领域
本发明涉及一种基于面向对象的VHDL语言实现方法,是面向对象的VHDL语言(00-VHDL)及其设计实现方法。
背景技术
00-VHDL(Object-Orieted VHDL),即面向对象的VHDL,其主要概念来自美国国防部支持的RASSP(Rapid Prototyping of Application-Specific Signal Processors,快速专用信号处理器原型)计划。面向对象的方法在处理复杂性和增加软件的可再生性方面的能力已在软件工程界获得广泛承认。而这正是当前IC设计中迫切需要解决的问题。因此,人们希望把面向对象方法应用到VHDL中。RASSP的开发者认为面向对象的要素(如抽象、封装、模块性、层次等)同样适用于对硬件进行抽象,Vista Technologies公司由此出发扩展VHDL语言。扩展后的VHDL语言被称之为00-VHDL语言。主要的扩展是引入了新的语言对象Entity Object,是在Entity基础上增加类的特征得到的;此外,00-VHDL中的Entity和Architecture具备了继承机制,不同的Entity Object之间可以用消息来通信。
实际上VHDL本身已具备一定程序的抽象性和模块性。Entity、Procedure和Fuction支持抽象性,Package、Entity和存放在VHDL代码的文件都是可再用的模块。但在抽象性上,VHDL有很大的不足:从Entity的接口中,设计者无法获得元件的功能信息,只能通过精确的设置端口电平来启动所需要的操作,而不能以抽象的方式进行。特别是进行较高层次的仿真时,下一级单元的模型往往还没有建立或者还需要修改。在封装性上,VHDL能力也不够强,比如说Package中的Variable或Signal是不能被封装的。00-VHDL解决这些问题的方法是引入Entity Object作为抽象、封装和模块性的基本单元。在VHDL中,可再用的层次只发生在component一级,设计者要么完全按照元件原有的配置去使用它,要么重新设计新的元件。但是,实际设计时常常是对现有元件作一些修改或增加一些新的功能。如果使用标准VHDL,通常只好手工拷贝并修改原来的代码。00-VHDL的继承机制较好地解决了这一问题。
Entity Object中的operation由消息(message)激活,从消息发送者的角度,发送一条消息类似于调用子程序。但从接收者的角度,消息是执行某项操作的请求,并不一定要被立即响应。因此,消息是一种比较抽象的机制,与硬件没有直接的对应关系。而在硬件中,元件之间的通信和数据交换需要特定的协议或同步机制。通过消息,设计者可以抽象地启动某一操作而不必精确地按照协议或同步机制。这样就提高了建模的灵活性;否则。若通信协议或同步机制有所改变,则必须修改整个VHDL模型。目前,Vista Technologies正在开发00-VHDL的支持环境在这个环境中,设计者通过一定的输入工具建立00-VHDL模型,其源代码由预处理器翻译成标准的VHDL代码,这代码可以被一般VHDL仿真和综合工具接受。在仿真时,一个跟踪工具(traceability tool)把VHDL代码中语句映射回初始的00-VHDL代码,这样调试可以在00-VHDL代码中进行。
发明内容
基于上述问题,特此发明一种基于面向对象的VHDL语言实现方法;借助一个模拟调度核心来完成此工作,模拟调度核心的主要作用是在模拟过程中在适当的时候调整整个设计中的各个由进程转化来的C++类成员函数,以模拟进程的并发执行过程,可以使用事件驱动(event-driven)的模拟算法来实现。其算法如下:
(1)常量、变量和信号的翻译
在表示方法上以C++的类对象对应VHDL中的常量、变量和信号对象。为每一种VHDL中的数据类型定义一个类,在类中定义一个标识符用以区分信号、变量和常量,通过以数据类型定义对象的方式定义数据量,并通过向构造函数传递参数来区分信号、变量和常数。例如,下面的VHDL源描述(左边)402005年第6期可翻译为对应的C++代码(右边):
signal a:bit:=’0’;Wbitdata a(“a”,GVHdLobject::SIGNAL,…,’0’);
Variable b:integer:=10;Wintegerdata b(“b”,GVHdLobjcct::VARIABLE,…,10);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于镇江华扬信息科技有限公司,未经镇江华扬信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110344992.6/2.html,转载请声明来源钻瓜专利网。