![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 利用ispLSI实现单片机与计算机间的通信 | |||||
作者:崔少辉 文章来源:工业仪表与自动化装置 点击数: 更新时间:2007-1-15 ![]() |
|||||
|
[关键词] 通信;可编程逻辑器件;电子设计自动化 单片机结构简单、开发方便,能够满足各种应用领域的需求,在工业控制及自动化装置中得到了广泛的应用。它既可以单独使用,也可以多片协同工作或作为计算机的信号预处理器,在这种情况下,通信问题就成了限制系统性能的瓶颈。通常使用的通信方式有串行和并行两种,串行方式硬件结构简单但数据传输速率低,不适合大批量数据的传送;并行方式下使用最多的中断方式,以期提高CPU效率。但中断方式也存在不少问题,除了具体的中断服务外,保护、恢复断点和寄存器的内容、查取中断向量等也占用不少CPU时间,如果数据较长,传送一组数据CPU会被多次中断,大量的断点和寄存器的保护、恢复等工作特别影响CPU效率。为了解决这一问题,本文提出了一种新的通信方式,称之为中断查询方式,并利用在系统可编程逻辑器件ispLIS1016实现了通信接口。 1 通信原理 中断查询方式的实质是中断方式和查询方式的结合:通信双方由中断方式进入数据传送状态,之后双方在中断内利用查询方式完成数据传送,直至一组数据传送完毕,各自退出中断服务。 基于这种方式,通信接口应具有数据锁存、状态控制和中断产生等功能。如图1—1所示为接口框图,数据锁存由锁存器m和锁存器s完成,分别锁存送往主计算机和单片机的数据;中断和状态信号由状态控制器形成,包括中断信号(INTm和INTs),数据锁存器m满(FULLm)、锁存器s满(FULLs),以及数据传送完毕(ENDm和ENDs)等状态,供通信双方查询;通信数据和各状态信号均通过数据总线传送,通信双方读数据还是读状态由各自的地址译码器控制,通过数据选择器选择;数据的三态输出由数据缓冲器实现。我们以计算机向单片机发送数据为例说明数据传送过程:当计算机将数据写入锁存器s时,状态控制器产生一中断请求信号INTs,并置状态FULLs=1、ENDs=0;单片机响应中断后便利用查询方式接收数据,查询状态信息FULLs和ENDs,每次FULLs=1时读取一个数据,同时该读信号通过状态控制器使FULLs清0,并产生中断信号INTm;由于处于发送状态,计算机进入中断后,先检查FULLs,等待FULLs=0后向数据锁存器s写数据(仅为利用该写信号)将ENDs置位并退出中断,单片机查到FULLs=0但ENDs=1后停止接收数据也退出中断,一次通信完成。 可见,利用这种方式进行数据传送,无论数据量多大,每次数据传送过程中CPU只响应一次中断,与单一的中断方式比较,节约了CPU的中断响应时间,对于大批量数据的传送,不仅效率高,而且数据量可任意改变,使用非常灵活。
2 接口功能的实现 ![]() 数据锁存器是数据可靠传送的基础,对主计算机而言,向300H单元写入数据就是将数据写入锁存器s中,也就是说锁存器s的输入信号为主计算机的数据总线,时钟为主计算机对300H单元的写信号,对应的ABEL语言方程可表示为:
数据选择器根据通信双方对不同地址的读取选择不同信号,其ABEL语言方程为:
when(ADRs==^h8000)then Ds=Qs;else when(ADRs==^h8010)then Ds=STs; (2—4) 式中,STs=[FULLs,FULLm,ENDs,ENDm,x,x,x,x,x,x,x,x,x,x,x,x],12个任意值x的引入是为了使STs与数据总线宽度匹配。由于省去了图1—1的数据缓冲器,数据选择器的输出即为数据总线,故其三态控制端为单片机读数据(8000H)和读状态(8010H)信号的“或”信号。 !FULLs=(!(ADRm==^h300)#WRm)& FUL1s;(2—5) !FUL1s=(!(ADRs==^h8000)#RDs)& FULLs;(2—6) 其中FUL1s为FULLs的反相输出端。ENDs的清零与FULLs的置位同时产生,但其置位必须由主计算机写310H单元触发,故ENDs的ABEL语言方程为: !ENDs=(!(ADRm==^h310)#WRm)&EN1s; (2—7)
(2—8) 显然,无论是主计算机将数据写入Qs,还是主计算机将数据从Qm中读走,INTs都应置位,因此INTs=FULLs+FULLm,但这样若FULLm为零则INTs将始终为1,无法产生中断。为解决这一问题,我们将INTs的方程写为: INTs=FULLs#!(FULLm#ENDm);(2—9) 使其在ENDm为零时按INTs=FULLs+FULLm运算,只要由软件上控制,保证每次通信前双方的状态为:ENDs=ENDm=1,FULLs=FULLm=0,即可实现正确的中断和通信。显然,利用同样的方法不难写出主计算机一方各信号的逻辑关系,本文不再累述。 通过以上设计,我们实现了主计算机与多个80C196单片机系统之间的数据通信,将各80C196系统置于主计算机的总线扩展槽中,使整个系统不仅通信速度快,而且性能稳定可靠,效果良好。 [参考文献] [1] 刘乐善等.微型计算机接口技术原理及使用.华中理工大学出版社,1996.3[2] 黄正瑾.在系统编程技术及其应用[M].东南大学出版社,1997.8 |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|