基于神经元芯片的LonWorks节点多I/O设备转让专利

申请号 : CN200810135918.1

文献号 : CN101621549B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 佟为明赵志衡林景波刘勇李璟李凤阁

申请人 : 哈尔滨工业大学

摘要 :

本发明是一种基于神经元芯片的LonWorks节点多I/O设备,解决了由于神经元芯片提供的通用I/O管脚过少,在不引入其它处理器的情况下,难以驱动多个外部I/O设备的问题。应用节点硬件电路包括神经元芯片及其外围电路,神经元芯片的指定I/O接口通过至少一片选单元与复数个缓冲器以及锁存器相连接;复数个缓冲器以及锁存器各自与一I/O设备相连接,神经元芯片的指定I/O接口还分别与复数个缓冲器以及锁存器直接相连接;基于神经元芯片的LonWorks节点实现的多I/O设备的方法由以下步骤组成:各I/O设备模块选择与神经元芯片的连接方式;各I/O设备模块设计接口电路及译码电路;应用系统设计软件实现方案。

权利要求 :

1.一种基于神经元芯片的LonWorks节点多I/O设备,其包括神经元芯片及外围电路,其特征在于,所述的神经元芯片的指定I/O接口通过至少一片选单元与复数个缓冲器以及锁存器相连接;所述的复数个缓冲器以及锁存器各自与一I/O设备相连接,所述的神经元芯片的指定I/O接口还分别与所述的复数个缓冲器以及锁存器直接相连接,其中,所述的片选单元为译码电路。

2.根据权利要求1所述的基于神经元芯片的LonWorks节点多I/O设备,其特征在于,所述的外部I/O设备包括一八路微动开关输入模块、一4×4键盘扫描模块、一八路LED显示输出模块和一蜂鸣器模块;所述的一缓冲器连接至所述的八路微动开关输入模块,所述的另一缓冲器连接至所述的4×4键盘扫描模块,所述的一锁存器连接至所述的八路LED显示输出模块,所述的蜂鸣器模块直接连接所述的神经元芯片的一个I/O接口。

3.根据权利要求1所述的基于神经元芯片的LonWorks节点多I/O设备,其特征在于,所述的外部I/O设备为一液晶显示输出模块,所述的一锁存器连接至一液晶显示输出模块的控制端,所述的一译码电路的输出端连接至所述液晶显示输出模块的控制端,所述的液晶显示输出模块的数据总线端连接所述的神经元芯片的数据总线端。

4.根据权利要求1所述的基于神经元芯片的LonWorks节点多I/O设备,其特征在于,所述的外围电路包括一电源、一晶振、一收发器。

5.根据权利要求1所述的基于神经元芯片的LonWorks节点多I/O设备,其特征在于,所述的缓冲器为74HC244。

6.根据权利要求1所述的基于神经元芯片的LonWorks节点多I/O设备,其特征在于,所述的锁存器为74HC373。

7.一种基于神经元芯片的LonWorks节点实现的多I/O设备方法,其特征在于,此方法是通过以下步骤来实现的:步骤1:将一八路微动开关输入模块、一4×4键盘扫描模块、一八路LED显示输出模块及一蜂鸣器模块都采用直接I/O对象与一神经元芯片相连;

步骤2:将一液晶显示输出模块看作一存储器映像I/O设备,连接到所述神经元芯片的数据总线上,通过所述的存储器的地址访问此设备;

步骤3:在所述的八路微动开关输入模块、所述4×4键盘扫描模块之前加入缓冲器,在所述的八路LED显示输出模块和所述的液晶显示输出模块之前加入锁存器;

步骤4:设置一译码电路用于产生所述的缓冲器的片选信号和所述的锁存器的锁存信号,设置另一译码电路用于产生所述的外部存储器的读写控制信号和所述的液晶显示输出模块的控制信号;

步骤5:所述的八路微动开关输入模块、所述的4×4键盘扫描模块、所述八路LED显示输出模块、所述蜂鸣器模块分别定义直接I/O对象,提供外部设备与所述的神经元芯片的软件接口;

步骤6:所述的液晶显示输出模块定义直接I/O对象,用于产生所述的液晶显示输出模块的部分控制信号;所述的液晶显示输出模块定义两个常数指针,用于指向所述液晶显示输出模块左右半屏的存储块地址。

说明书 :

基于神经元芯片的LonWorks节点多I/O设备

技术领域

[0001] 本发明涉及通信领域中的I/O扩展技术,特别涉及一种应用在LonWorks现场总线中的基于神经元(Neuron)芯片的I/O扩展技术。

背景技术

[0002] LonWorks现场总线技术在硬件方面支持多种通信介质,拥有功能强大的处理器神经元芯片,软件方面支持ISO/OSI模型的全部七层通信协议和面向对象的设计方法,在工业控制、楼宇自控、安全防范等领域有广泛应用。
[0003] 神经元芯片提供11个通用I/O管脚,采用Neuron C语言,可通过编程将I/O管脚设定为34种不同的I/O对象,为应用I/O设备与神经元芯片之间提供通用接口。在一般的应用系统中,通常通过使用I/O对象来访问外部I/O设备,但是在需要连接多个外部应用I/O设备的系统中,11个I/O管脚难以满足设计者的要求。对于较大型的应用系统,可以在系统中增加一个专门的主处理器来进行数据的采集和控制,但在小型的应用中,多加一个主处理器将增加硬件成本,将问题复杂化。

发明内容

[0004] 本发明的主要目的是提供一基于神经元芯片的LonWorks节点多I/O设备,克服了已有技术因I/O管脚过少而需增加其它主处理器的缺陷。
[0005] 为了上述目的及其它目的,本发明是一种基于神经元芯片的LonWorks节点多I/O设备,其包括神经元芯片及外围电路,所述的神经元芯片的指定I/O接口通过至少一片选单元与复数个缓冲器以及锁存器相连接;所述的复数个缓冲器以及锁存器各自与一I/O设备相连接,其中,所述的神经元芯片的指定I/O接口还分别与所述的复数个缓冲器以及锁存器直接相连接。
[0006] 为了达到上述目的,本发明提供了一种基于神经元芯片的LonWorks节点实现的多I/O设备的方法,其控制方法由以下步骤实现的:
[0007] 步骤1:将一八路微动开关输入模块、一4×4键盘扫描模块、一八路LED显示输出模块及一蜂鸣器模块都采用直接I/O对象与一神经元芯片相连;
[0008] 步骤2:将一液晶显示模块看作一存储器映像I/O设备,连接到所述神经元芯片的数据总线上,通过所述的存储器的地址访问此设备;
[0009] 步骤3:在所述的八路微动开关输入模块、所述4×4键盘扫描模块之前加入缓冲器,在所述的八路LED显示输出模块和所述的液晶显示输出模块之前加入锁存器;
[0010] 步骤4:设置一译码电路一用于产生所述的缓冲器的片选信号和所述的锁存器的锁存信号,设置另一译码电路用于产生所述的外部存储器的读写控制信号和所述的液晶显示输出模块的控制信号;
[0011] 步骤5:所述的八路微动开关输入模块、所述的4×4键盘扫描模块、所述八路LED显示输出模块、所述蜂鸣器模块分别定义直接I/O对象,提供外部设备与所述的神经元芯片的软件接口;
[0012] 步骤6:所述的液晶显示模块定义直接I/O对象,用于产生所述的液晶模块的部分控制信号;所述的液晶显示输出模块定义两个常数指针,用于指向所述液晶显示输出模块左右半屏的存储块地址。
[0013] 本实用新型的有益效果在于,这种扩展I/O的方法避免了需增加一个专门的主处理器来进行数据的采集和控制,降低了硬件成本,从而达到驱动更多的应用I/O设备。

附图说明

[0014] 图1为本发明的节点结构示意图;
[0015] 图2为本发明节点扩展I/O设备的框图;
[0016] 图3为本发明的节点的I/O设备接口电路图。

具体实施方式

[0017] 以下结合附图,对本发明上述的和另外的技术特征和优点作更详细的说明。
[0018] 请参阅图1所示,为本发明节点的结构示意图,其节点包括神经元芯片(Neuron3150)、收发器、电源、晶振和外部I/O设备模块,其中,
[0019] Neuron芯片既是LonWorks技术的核心也是智能节点的核心,Neuron 3150芯片内部带有3个8位微处理器:1个用于链路层的控制,1个用于网络层的控制,1个用于执行用户的应用程序。该芯片还包含11个I/O口和完整的LonTalk通信协议,同时具有通信和控制功能;收发器是通信电路的核心,连接LonWorks总线与神经元芯片,是节点通信的桥梁;电源用于给系统供电,晶振是给神经元芯片提供时钟信号,外部I/O设备模块通过片选单元与神经元芯片相连。
[0020] 请参阅图2所示,为本发明节点扩展I/O设备的框图,其包括神经元芯片及外围电路;所述的神经元芯片的指定I/O接口通过至少一片选单元与复数个缓冲器以及锁存器相连接;所述的复数个缓冲器以及锁存器各自与一I/O设备相连接,其中,所述的神经元芯片的指定I/O接口还分别与所述的复数个缓冲器以及锁存器直接相连接;所述的外围电路包括收发器、电源、晶振,所述的片选单元为一译码电路。
[0021] 请参阅图3所示,为本发明的节点的I/O设备接口电路图,外部I/O设备包括一八路微动开关输入模块、一4×4键盘扫描模块、一八路LED显示输出模块和一蜂鸣器模块;译码电路一的输入端与神经元芯片的I/O9与I/O10相连,译码电路一的输出端连接缓冲器和锁存器,所述的一缓冲器连接至所述的八路微动开关输入模块,所述的另一缓冲器连接至所述的4×4键盘扫描模块,所述的一锁存器连接至所述的八路LED显示输入模块,所述的蜂鸣器模块直接连接所述的神经元芯片的一个I/O接口,通过神经元芯片的I/O9与I/O10输出不同的状态而使缓冲器和锁存器的片选有效,这样达到了不用连接多个I/O口就能驱动多个外部I/O设备的目的。
[0022] 所述的外部I/O设备还包括一液晶显示输出模块,所述的一锁存器连接至一液晶显示输出模块的控制端,译码电路二的输出端连接至所述液晶显示输出模块的控制端,所述的液晶显示输出模块的数据总线端连接所述的神经元芯片的数据总线端,一外部存储器的数据总线与神经元芯片的数据总线相连接,所述的外部存储器与所述的译码电路二相连。
[0023] 其中,所述的译码电路一包括74HC139与复数个门电路,所述的缓冲器为74HC244,所述的锁存器为74HC373。
[0024] 一种基于神经元芯片的LonWorks节点实现的多I/O设备的方法,此方法是应用在上述的基于神经元芯片的LonWorks节点多I/O设备系统中,此方法由以下步骤来实现的:
[0025] 步骤1:由于神经元芯片的直接I/O对象类型可以以任意组合方式定义,即同一个I/O管脚可定义为多种I/O对象,所以,在此应用系统中,八路微动开关输入模块、4×4键盘扫描模块、八路LED显示输出模块及蜂鸣器模块都可采用直接I/O对象与神经元芯片相连,即将一八路微动开关输入模块、一4×4键盘扫描模块、一八路LED显示输出模块及一蜂鸣器模块都采用直接I/O对象与一神经元芯片相连。
[0026] 步骤2:由于选用的液晶显示输出模块与神经元芯片之间采用并行数据传输方式,若选择通过神经元芯片的I/O管脚连接到液晶显示输出模块,需定义并行方式的I/O对象,要使用全部11个I/O管脚,这种情况下,其它类型的I/O对象就没有I/O管脚可供使用了,这种方案不可取。考虑到神经元芯片(Neuron3150)的片外存储区除去已配置的Flash区域,剩下的外存地址空间0x8000~0xE7FF可作为外存与存储器映像I/O设备的接口,可选择通过存储器的地址访问外设。
[0027] 将一液晶显示模块看作一存储器映像I/O设备,连接到所述神经元芯片的数据总线上,通过所述的存储器的地址访问此设备。
[0028] 步骤3:对于节点中被重复定义的管脚IO0~IO7,当数据输入时,输入设备通过I/O管脚向神经元芯片传送数据,因为I/O管脚上同时挂有多个数据源,为了传送数据时来自不同I/O设备的数据不发生冲突,只允许当前时刻正在进行数据传送的数据源使用I/O管脚,其余的数据源应处于隔离状态,为此,对八路微动开关输入模块和4×4键盘扫描模块选取三态输出的缓冲驱动器;当数据输出时,多个I/O设备都通过I/O管脚获得数据信号或控制信号,当I/O管脚上的数据要从一个I/O设备流向另一I/O设备时,需要对前一I/O设备从I/O管脚获得的数据进行锁存,为此,对八路LED显示输出模块选取带三态的八D锁存器。另外,由于液晶显示输出模块的部分控制信号也来自I/O管脚,也需在液晶显示模块和神经元芯片之间增加三态的锁存器。
[0029] 步骤4:设置一译码电路用于产生所述的缓冲器的片选信号和所述的锁存器的锁存信号,设置另一译码电路用于产生所述的外部存储器的读写控制信号和所述的液晶显示输出模块的控制信号。
[0030] 步骤5:所述的八路微动开关输入模块、所述的4×4键盘扫描模块、所述八路LED显示输出模块、所述蜂鸣器模块分别定义直接I/O对象,提供外部设备与所述的神经元芯片的软件接口;
[0031] 八路微动开关输入模块定义一个字节(byte)输入对象io-switches,程序中定义语句如下:
[0032] IO_0 input byte io-switches;
[0033] 4×4键盘扫描模块定义两个半字节(nibble)对象io_key_columns和io_key_rows,4个I/O管脚作为一组,同时进行读、写,其中管脚IO0~IO3作为扫描输出,驱动键盘矩阵的列,管脚IO4~IO7作为扫描输入,检测键盘矩阵的行,程序中定义语句如下:
[0034] IO_0 output nibble io_key_columns;
[0035] IO_4 input nibble io_key_rows;
[0036] 八路LED显示输出模块定义一个字节(byte)输出对象io-leds,程序中定义语句如下:
[0037] IO_0 output byte io-leds;
[0038] 蜂鸣器模块定义一个位(bit)输出对象io-beep,程序中定义语句如下:
[0039] IO_8 output bit io-beep;
[0040] 步骤6:所述的液晶显示模块定义直接I/O对象,用于产生所述的液晶模块的部分控制信号;所述的液晶显示输出模块定义两个常数指针,用于指向所述液晶显示输出模块左右半屏的存储块地址。
[0041] 液晶显示输出模块的控制信号定义三个位输出对象,用于控制液晶模块的读写选择信号、数据指令选择信号和复位信号,程序中定义语句如下:
[0042] IO_0 output bit io_lcd_di;
[0043] IO_1 output bit io_lcd_rw;
[0044] IO_2 output bit io_lcd_rst;
[0045] 除了以上定义的重复使用的各直接I/O对象(io-beep除外),还要定义两个位输出对象,作为一译码电路的地址输入信号,来产生缓冲驱动器74HC244的片选信号和八D锁存器74HC373的锁存信号,从而控制各外部设备依序正常工作,程序中定义语句如下:
[0046] IO_9 output bit dec1_a0;
[0047] IO_10 output bit dec1_a1;
[0048] 对于液晶显示输出模块,可将其看作存储器映像I/O设备,在Neuron C程序中定义两个常数指针,用于指向液晶显示输出模块左右半屏的存储块地址。液晶显示输出模块的左半屏连接到神经元芯片的地址0xA000,右半屏连接到神经元芯片的地址0xC000,访问这两个地址的存储区,实际是访问液晶显示输出模块,程序中定义语句如下:
[0049] const unsigned char*lcd_l,*lcd_r;
[0050] lcd_l=0xA000;
[0051] lcd_r=0xC000;
[0052] 完成这些基本定义后,当神经元芯片需要与某个外部I/O设备进行通信时,需要通过控制IO9和IO10管脚的输出,使该I/O设备的接口电路的能传送数据。具体控制关系如表1所示:
[0053] 表1神经元芯片的I/O管脚输出与I/O设备的接口电路的选通关系[0054]
[0055] 本方法为神经元芯片连接多个外部I/O设备提供了一种解决方案。在此设计中,为了神经元芯片能同时连接多个外部I/O设备,既用到了一般LonWorks应用系统中常见的I/O设备连接方法,即将外部设备连接到神经元芯片的I/O引脚上,通过使用I/O对象来建立二者之间的通信关系,同时,还根据外部存储空间的使用情况,将设备看作存储器映像I/O设备,为外部设备分配外存空间,将外部设备的数据总线直接连接到神经元芯片的数据总线上,配合由I/O管脚送来的控制信号,使外部设备与神经元芯片之间建立通信关系。在LonWorks应用系统中,神经元芯片的I/O对象可重叠使用,所以为同一个I/O管脚连接多个外部设备提供了可能,这种情况下,通过设计合适的接口电路和译码电路,可使这些外部设备按照使用者的要求,分时复用I/O端口,从而避免这些设备之间产生数据传送冲突。
[0056] 以上说明对本发明而言只是说明性的,而非限制性的,本领域普通技术人员理解,在不脱离以下所附权利要求所限定的精神和范围的情况下,可做出许多修改,变化,或等效,但都将落入本发明的保护范围内。