基于CPLD的PROFIBUS-DP主站实现系统及方法
技术领域
本发明涉及自动控制领域,更具体地说,涉及一种基于CPLD的PROFIBUS-DP主站实现系统及方法。
背景技术
PROFIBUS-DP用于实现现场层的高速数据传送,其主站周期地读取从站的输入信息并周期地向从站发送输出信息。虽然PROFIBUS-DP协议是公开的,但是其主站核心技术一直被德国西门子公司等少数几个大公司所垄断。
目前国内DP主站的开发主要通过购买专用模块,然后进行二次开发。该种开发方式的开发周期短,风险小,但是购买专用模块的成本昂贵,没有核心技术,大大降低了产品的竞争力。
国内DP主站的开发还通过自主开发ASIC芯片方案。如图1所示,该方案设置有专用CPU 13和ASIC芯片(即ASPC214)进行主站协议处理,然后通过双口RAM 12和主控CPU 11进行数据交互,专用CPU 13和ASIC芯片共享RAM15。在该方案中,专用CPU 13和ASIC芯片的总线共享方式有两种:(1)专用CPU 13为主,ASIC芯片为从;(2)ASIC芯片为主,专用CPU 13为从。该两种方式都是主芯片永久占有总线,从芯片访问RAM 15时需要事先向主芯片申请总线控制权,得到主芯片的许可之后,才能够访问RAM 15。
由于上述方案采用了专用CPU 13来实现主站协议,而专用CPU 13和主控CPU 11之间还需要双口RAM 12进行数据交互,这直接导致了方案的成本较高(例如需要专用CPU和双口RAM)。并且上述方案中专用CPU和ASIC芯片共享RAM,其中一方为主,掌握总线的永久控制权。而实际专用CPU和ASIC芯片两者都无需时刻占有总线,两者同时需要使用总线的时候很少,因此大量的时间都浪费在两者的交互上,系统的交互效率不高。
此外,申请号为201010619135.8和201020695386.X的中国专利,揭露了采用ARM作为专用CPU和ASIC(ASPC2)芯片实现主站协议的方案。专用CPU和ASIC芯片之间的交互虽然采用了CPLD进行协调来共享RAM,但是实际上还是专用CPU对总线拥有永久控制权,ASIC芯片为从属地位,ASIC芯片需要访问RAM时必须通过CPLD向专用CPU申请总线控制权。ASIC(ASPC2)芯片需要访问RAM时,必须向CPLD提出申请,然后由CPLD产生中断信号给ARM7(CPU),CPU在中断处理程序中把总线控制权交给ASIC芯片。然而CPU并不是时刻都使用总线,实际上使用总线的时间非常少,即使空闲的时候也占用着总线,这样导致ASIC芯片无论什么时候使用总线都需要申请。而且CPU在中断服务子程序里面释放总线,如果中断响应不及时,就会导致ASIC芯片出错。
发明内容
本发明要解决的技术问题在于,针对上述PROFIBUS-DP主站开发成本高以及主站通讯效率不高的问题,提供一种基于CPLD的PROFIBUS-DP主站实现系统及方法。
本发明解决上述技术问题采用的技术方案是,提供一种基于CPLD的PROFIBUS-DP主站实现系统,包括主控CPU、复杂可编程逻辑器件、ASIC芯片、访问RAM的总线以及多个电平转换芯片;所述主控CPU经由所述复杂可编程逻辑器件连接到访问RAM的总线;所述ASIC芯片经由所述电平转换芯片连接到访问RAM的总线;所述复杂可编程逻辑器件根据所述主控CPU或ASIC芯片的总线使用请求及所述访问RAM的总线的状态将所述访问RAM的总线的控制权分配给所述主控CPU或ASIC芯片,所述电平转换芯片将来自所述ASIC芯片的信号转换为与所述复杂可编程逻辑器件的工作电压匹配的信号。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现系统中,所述ASIC芯片包括第一信号发送单元及第二信号接收单元,所述复杂可编程逻辑器件包括第一信号接收单元及第二信号发送单元;所述第一信号发送单元和第一信号接收单元用于实现所述ASIC芯片与复杂可编程逻辑器件之间的总线请求信号及总线释放信号的发送和接收;所述第二信号发送单元和第二信号接收单元用于实现所述复杂可编程逻辑器件与ASIC芯片之间的等待信号或总线使用信号的发送和接收。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现系统中,所述复杂可编程逻辑器件包括总线忙标志位,所述复杂可编程逻辑器件在第一信号接收单元接收到总线使用请求且所述总线忙标志位未置位时,将总线忙标志位置位并通过第二信号发送单元发送总线使用信号,所述ASIC芯片在所述第二信号接收单元接收到总线使用信号时通过所述访问RAM的总线收发数据。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现系统中,所述主控CPU包括第三信号发送单元及第四信号接收单元,所述复杂可编程逻辑器件包括第三信号接收单元及第四信号发送单元;所述第三信号发送单元和第三信号接收单元用于实现所述主控CPU和复杂可编程逻辑器件之间的总线请求信号及总线释放信号的发送和接收;所述第四信号发送单元和第四信号接收单元用于实现所述复杂可编程逻辑器件和主控CPU之间的等待信号或总线使用信号的交互。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现系统中,所述复杂可编程逻辑器件包括总线忙标志位,所述复杂可编程逻辑器件在第三信号接收单元接收到总线使用请求且所述总线忙标志位未置位时,将总线忙标志位置位并通过第四信号发送单元发送总线使用信号,所述主控CPU在所述第四信号接收单元接收到总线使用信号时通过所述访问RAM的总线收发数据。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现系统中,所述主控CPU包括独立的外部存储器管理模块并在所述第四信号接收单元接收到等待信号时通过该外部存储器管理模块与外部存储器进行数据交互。
本发明还提供一种基于CPLD的PROFIBUS-DP主站实现方法,该方法包括以下步骤:
步骤(a),复杂可编程逻辑器件检测是否有来自ASIC芯片或主控CPU的总线使用请求,其中所述主控CPU经由所述复杂可编程逻辑器件连接到访问RAM的总线,所述ASIC芯片经由电平转换芯片连接到访问RAM的总线;
步骤(b),所述复杂可编程逻辑器件在接收的来自所述主控CPU或ASIC芯片的总线使用请求时,检查所述访问RAM的总线的状态;
步骤(c),所述复杂可编程逻辑器件在所述访问RAM的总线的状态为空闲时,将所述访问RAM的总线的状态修改为忙并将所述访问RAM的总线的控制权分配给所述发送总线使用请求的主控CPU或ASIC芯片。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现方法中,所述步骤(c)之后包括:所述主控CPU或ASIC芯片在访问RAM的总线使用完毕向复杂可编程逻辑器件发送总线释放信号,所述复杂可编程逻辑器件将所述访问RAM的总线的状态修改为空闲。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现方法中,所述步骤(b)之后包括:所述复杂可编程逻辑器件在所述访问RAM的总线的状态为忙时,向发送总线使用请求的ASIC芯片或主控CPU返回等待信号。
在本发明所述的基于CPLD的PROFIBUS-DP主站实现方法中,还包括在主控CPU接收到等待信号时通过外部存储器管理模块与外部存储器进行数据交互。
本发明基于CPLD的PROFIBUS-DP主站实现系统及方法,通过主控CPU和ASIC芯片分享总线控制权,既减少了外围器件、降低了成本,又提高了系统性能、降低了系统出错的可能性。
附图说明
图1是现有PROFIBUS-DP主站的示意图。
图2是本发明基于CPLD的PROFIBUS-DP主站实现系统实施例的示意图。
图3是图中主控CPU、复杂可编程逻辑器件以及ASIC芯片实施例的示意图。
图4是本发明基于CPLD的PROFIBUS-DP主站实现方法实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明基于CPLD的PROFIBUS-DP主站实现系统及方法,无需专用CPU,直接由主控CPU来实现主站协议。主控CPU和ASIC芯片之间共享RAM数据,由CPLD实现两者之间的总线仲裁。
如图2所示,是本发明基于CPLD的PROFIBUS-DP主站实现系统实施例的示意图。该系统包括主控CPU 21、复杂可编程逻辑器件(CPLD)22、ASIC芯片(ASPC2)23、访问RAM 24的总线以及多个电平转换芯片25。主控CPU 21经由CPLD 22连接到访问RAM的总线,而ASIC芯片23则经由电平转换芯片25连接到访问RAM的总线。复杂可编程逻辑器22件根据主控CPU 21或ASIC芯片23的总线使用请求及访问RAM的总线的状态将访问RAM的总线的控制权分配给主控CPU或ASIC芯片。
电平转换芯片25用于将来自ASIC芯片23的信号转换为与CPLD的工作电压匹配的信号。由于ASIC芯片的工作电压为5V,而其他芯片的工作电压为3.3V,因此必须通过上述的电平转换芯片25进行电平转换。特别地,该电平转换芯片25可采用SN74ALVC164245芯片。
上述系统中,主控CPU 21和ASIC芯片23访问RAM 24时的总线控制权由CPLD 22进行协调。与其他方案不同的地方在于:主控CPU 21和ASIC芯片23对访问RAM的总线都没有永久控制权,谁需要访问RAM时,就必需向CPLD 22进行申请,CPLD 22在确定访问RAM的总线空闲之后就把总线控制权交给申请者;如果总线被占用,则通知申请者“等待”,待总线空闲时把总线控制权交给申请者。当申请者使用完访问RAM的总线之后,又及时的交出总线控制权。由于总线空闲的时间远大于总线占用时间,因此总线申请者在申请总线控制权的时候总能够得到及时的满足,这样就大大提高了交互效率。
如图3所示,上述的ASIC芯片23包括第一信号发送单元231及第二信号接收单元232;CPLD 22包括第一信号接收单元221及第二信号发送单元222。
第一信号发送单元231和第一信号接收单元221用于实现ASIC芯片23与CPLD 22之间的总线请求信号及总线释放信号的发送和接收。第二信号发送单元222和第二信号接收单元232用于实现CPLD 22与ASIC芯片23之间的等待信号或总线使用信号的发送和接收。CPLD 22还包括总线忙标志位,该CPLD 22在第一信号接收单元221接收到总线使用请求且总线忙标志位未置位时,将总线忙标志位置位并通过第二信号发送单元222发送总线使用信号,ASIC芯片23在第二信号接收单元232接收到总线使用信号时通过访问RAM的总线与RAM24通信。
上述ASIC芯片23与CPLD 22之间的总线请求信号及总线释放信号可以诸如图2中所示的hold信号;而CPLD 22与ASIC芯片23之间的等待信号或总线使用信号可诸如图2中所示的holda信号。ASIC芯片23需要使用访问RAM的总线时,通过hold信号告诉CPLD 22,CPLD 22通过置位holda信号来通知ASIC芯片23可以使用访问RAM的总线。当ASIC芯片23完成对RAM操作之后,放弃总线使用权的时候再改变hold信号状态来通知CPLD 22,同时CPLD 22改变holda信号来剥夺ASIC芯片23的总线控制权。
上述主控CPU 21包括第三信号发送单元211及第四信号接收单元212,相应地,CPLD 22包括第三信号接收单元223及第四信号发送单元224。第三信号发送单元211和第三信号接收单元223用于实现主控CPU 21和CPLD 22之间的总线请求信号及总线释放信号的发送和接收;第四信号发送单元224和第四信号接收单元212用于实现CPLD 22和主控CPU 21之间的等待信号或总线使用信号的交互。CPLD 22包括总线忙标志位,该CPLD 22在第三信号接收单元223接收到总线使用请求且总线忙标志位未置位时,将总线忙标志位置位并通过第四信号发送单元224发送总线使用信号,主控CPU 21在第四信号接收单元212接收到总线使用信号时通过访问RAM的总线与RAM 24通信。
上述主控CPU 21和CPLD 22之间的总线请求信号及总线释放信号可以为诸如图2中主控CPU 21的CS(片选信号,CONTROL);而CPLD 22和主控CPU21之间的等待信号或总线使用信号则可以为诸如图2中的WAIT信号。主控CPU需要访问RAM时,置CS有效,CPLD 22判断主控CPU 21申请总线控制权后使用WAIT信号指示主控CPU 21的读写操作是否有效,WAIT信号由CPLD 22根据当前总线是否空闲来决定。当WAIT信号为‘1’时说明访问RAM的总线被ASIC芯片23占用,主控CPU 21的读写时间会自动延时,直到WAIT信号为‘0’;当WAIT信号为‘0’时表明访问RAM的总线空闲,主控CPU 21读写有效。
在上述的基于CPLD的PROFIBUS-DP主站实现系统中,主控CPU 21还可包括独立的外部存储器管理模块并在第四信号接收单元接收到等待信号(即WAIT信号为“0”)时通过该外部存储器管理模块与外部存储器进行数据交互。这样在当WAIT信号为“1”期间,外部存储器管理模块自动插入读写延时,而不影响主控CPU 21运行其他任务。这样就可以把主控CPU 21从频繁的总线控制权的交互操作中解放出来,有更多的时间运行其它的程序,这样才能实现PROFIBUS-DP主站协议和其他控制功能由同一CPU完成。
如图4所示,是本发明基于CPLD的PROFIBUS-DP主站实现方法的流程图。该方法包括以下步骤:
步骤S41:CPLD检测ASIC芯片或主控CPU的状态,其中主控CPU经由所述CPLD连接到访问RAM的总线,ASIC芯片经由电平转换芯片连接到访问RAM的总线。
步骤S42:CPLD判断ASIC芯片或主控CPU的状态是否发送了总线使用请求。若存在总线使用请求,则执行步骤S43,否则返回步骤S41。
步骤S43:CPLD检查访问RAM的总线的状态,若访问RAM的总线空闲,执行步骤S45,否则执行步骤S44。
步骤S44:向申请者(即发送总线使用请求的主控CPU或ASIC芯片)发送等待信号,并返回步骤S43。
步骤S45:将访问RAM的总线的状态修改为忙并将该访问RAM的总线的控制权分配给申请者。
步骤S46:在上述申请者访问完RAM,向CPLD发送总线释放信号,CPLD收回总线控制权并将访问RAM的总线的状态修改为空闲。
在主控CPU接收到CPLD的等待信号时通过其外部存储器管理模块与外部存储器进行数据交互。
上述基于CPLD的PROFIBUS-DP主站实现系统及方法,无需专用CPU来实现PROFIBUS-DP主站协议,主控CPU芯片既完成控制功能,也实现PROFIBUS-DP主站协议,大大节省了成本。此外,主控CPU和ASIC芯片之间采用“无主式”的交互方式,大大提高了交互的效率,同时增强了系统的可靠性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。