采用动态滤波器分配的串行通信设备的制作方法

文档序号:7748673阅读:252来源:国知局
专利名称:采用动态滤波器分配的串行通信设备的制作方法
技术领域
本发明涉及串行通信设备,尤其涉及控制区域网(CAN)设备。并且,本发明还涉及带有串行通信设备的微控制器和操作串行通信设备的方法。
背景技术
控制区域网(CAN)是有效支持安全度高的分布式实时控制的串行通信协议。CAN的应用范围从高速数字通信网络到低成本多路复用连线。CAN是用于实时应用的高度完整的串行数据通信总线。CAN以高达每秒1兆位的数据速率运行,具有极好的检错和限制能力,和最初是为用在汽车中而开发的。CAN总线和CPU之间的接口通常被称为CAN控制器。在CAN后面的动机是,通过在降低布线线束重量和复杂性的同时,提高汽车电子设备、引擎控制单元、传感器、和防滑制动系统等的互用性,使汽车更加可靠、安全和省油。自从CAN诞生以来,CAN协议越来越普及地应用在工业自动化和汽车/卡车中。CAN总线在噪声环境下的抗干扰性和检测故障状况和从故障状况中恢复过来的能力使CAN适合于用在工业控制仪、治疗仪、测试仪、移动和便携式机器、和各种器具等上。
CAN是带有一条逻辑总线的异步串行总线系统。它具有总线节点平等的开放、线性总线结构。CAN总线由两个或多个节点组成。可以动态地改变总线上节点的个数,而不会干扰其它节点的通信。
CAN逻辑总线对应于“wired-AND(线与)”机制,“隐性”位(大多数,但未必等效于逻辑电平“1”)被“显性”位(大多数是逻辑电平“0”)盖写。只要没有总线节点发送显性位,总线就处在隐性状态,但来自任何总线节点的显性位都形成显性总线状态。因此,对于CAN总线,选择能够发送两个可能位状态(显性和隐性)的媒体。所使用的公共物理媒体是扭绞线对。然后,总线被称为“CANH”和“CANL”,可以直接与CAN控制器节点连接,或通过连接器与之连接。
在CAN总线协议中,不是寻址的总线节点,而是地址信息包含在发送的消息中。这是通过标识消息内容,例如,引擎速度和油温等的标识符(每个消息的一部分)完成的。标识符另外还指示消息的优先级。标识符的二进制值越低,消息的优先级就越高(更显性的位)。
原始CAN规范(1.0,1.2和2.0A版本)把消息标识符定义成具有11个位的长度,给出2048个可能消息标识符。“扩充CAN”规范2.0B版本允许使用11和/或29个位的消息标识符长度(29个位的标识符长度允许消息标识符超过536百万个)。将CAN规范(所有版本)结合于此作为参考。
一般说来,由于CAN标准不涵盖用于CAN控制器的结构,有两种途径可用于CAN,这两种途径是“BasicCAN”和“FullCAN”(不要与CAN 1和CAN 2,或标准标识符和扩充标识符混淆);它们在消息的缓冲方面存在差异。
除了发送完全帧,而不是字符之外,BasicCAN控制器结构与简单UART类似。通常,存在单个发送缓冲器和双缓冲接收缓冲器。例如,微控制器把帧放入发送缓冲器中,和当发送帧时,接收中断。当接收接收缓冲器中的帧时,微控制器接收中断,以便清空接收缓冲器,并且在接收随后的帧之前,从接收缓冲器中清空帧。在BasicCAN控制器结构中,微控制器必须管理发送和接收,和管理帧的存储。
FullCAN控制器结构把帧存储在自身的控制器中。可以处理有限个数的帧。每个帧缓冲器用映射到缓冲器的帧的标识符来标记。微控制器可以更新缓冲器中的帧和标记它,以便加以发送。可以检查接收缓冲器,看一看是否已经接收到含有匹配标识符的帧。另外,滤波器可以用于预筛选接收帧,以便只把打算供特定CAN控制器使用的那些帧存储在接收缓冲器中。
标准CAN与扩充CANCAN协议通常流行两种版本CAN 1.0和CAN 2.0。CAN 2.0向后兼容CAN1.0,和大多数新控制器都是根据CAN 2.0建造的。对于CAN 2.0标准,存在两个部分部分A和部分B。至于CAN 1.0A和CAN 2.0A,标识符必须长11个位。至于CAN 2.0B,标识符可以长11个位(“标准”标识符)或29个位(“扩充”标识符)。为了遵从CAN 2.0,控制器必须是无源2.0部分B,或有源2.0部分B。如果是无源的,那么,它必须忽略扩充帧(当CAN 1.0控制器看见具有29-位标识符的帧时,它们将生成错误帧)。如果是有源的,那么,必须允许接收和发送扩充帧。为了发送和接收两种类型的帧,存在一些兼容规则
CAN 2.0B有源控制器将发送和接收标准和扩充帧两者。
CAN 2.0B无源控制器将发送和接收标准帧,和将放弃没有错误的扩充帧。
当CAN 1.0控制器看见扩充帧时,它们将生成错误。
因此,网络上存在单个CAN 1.0控制器的网络不能同网络上的扩充帧共处;所有控制器必须利用标准帧发送。
控制器结构CAN标准不涵盖控制器的结构,因此,在如何使用它们方面存在着可变性。然而,存在两种一般途径BasicCAN和FullCAN(不要与CAN 1和CAN 2,或标准标识符和扩充标识符混淆);它们在消息的缓冲方面存在差异。
除了发送完全帧,而不是字符之外,在BasicCAN控制器中,其结构与简单UART类似存在(通常)单个发送缓冲器、和双缓冲接收缓冲器。CPU把帧放入发送缓冲器中,和当发送帧时,获取中断;CPU接收接收缓冲器中的帧,获取中断和清空缓冲器(在接收随后的帧之前)。CPU必须管理发送和接收,和管理帧的存储。
在FullCAN控制器中,把帧存储在控制器中。可以处理有限个数的帧(通常16个);由于在网络上可以存在更多的帧,所以每个缓冲器用映射到缓冲器的帧的标识符来标记。CPU可以更新缓冲器中的帧和标记它,以便加以发送;可以检查缓冲器,看一看是否已经接收到含有匹配标识符的帧。
FullCAN设计的目的是在网络中提供一组“共享变量”;CPU周期性更新变量(即,缓冲器中帧的内容);CPU还可以检查变量。实际上,由于同时存在的困难,事情(当然)没有那么简单在从帧中读取一组字节的同时,控制器用新帧的内容盖写数据,并且,在许多控制器中,这只通过状态标志发出信号。
在“Basic CAN”实施方案中,一般存在着带有一个或多个相关消息接受滤波器的一个双缓冲接收信道。仅有一个双缓冲消息信息意味着处理器必须能够在这个时间内处理以前的消息。在“Full CAN”实施方案中,一般存在着多达15个消息缓冲器或信道,每一个都带有一个相关消息接受滤波器。如果处理器非常慢,拥有大量接收缓冲器可以有助于处理成组消息业务,但是,如果总消息业务如此之多,以致于超出处理器能力,那么,不管多少缓冲量都不能防止消息的最终损失。如果处理器的CPU非常慢,接收许多不同编址消息需要分开的接收缓冲器和接受滤波器。至于较快的处理器,可以使用在接受滤波器的编程方面具有灵活性的个数更受到限制的接收缓冲器。简而言之,处理器必须具有为总线上的所有业务服务的带宽。作为一种折衷,通常实现多个缓冲器。但是,每个接收缓冲器与多个掩码寄存器和滤波器寄存器相联系。这需要大量的硅实物。并且,每个掩码和滤波器可以只与相应的缓冲器一起使用。如果一个或多个缓冲器未使用,那么,不能把相应的掩码和滤波器指定给不同的缓冲器。
因此,在有关CAN实施方案的技术中存在着不需要大量掩码和滤波器寄存器和比现有技术实施方案更灵活、和可以以比现有技术实施方案更不同的方式管理消息的需要。

发明内容
本发明通过包括如下部件的CAN模块克服上述问题,以及现在技术的其它缺点和缺陷含有数据和地址输入端和多个可编址缓冲器的缓冲存储器、从串行数据流中接收数据的与缓冲存储器耦合的数据接收寄存器、滤波器寄存器、将滤波器寄存器值与在串行数据流中发送的标识符相比较生成接受信号的比较器、与比较器耦合接收接受信号的缓冲器指示器、和为了寻址缓冲存储器从缓冲器指示器接收地址的地址寄存器。
另一个示范性实施例是包括中央处理单元、与中央处理单元连接的随机访问存储器、和与中央处理单元耦合的CAN模块的微控制器,从而,CAN模块包括含有数据和地址输入端和多个可编址缓冲器的缓冲存储器、从串行数据流中接收数据的与缓冲存储器耦合的数据接收寄存器、滤波器寄存器、将滤波器寄存器值与在串行数据流中发送的标识符相比较生成接受信号的比较器、与比较器耦合接收接受信号的缓冲器指示器、和为了寻址缓冲存储器从缓冲器指示器接收地址的地址寄存器。
可以配备多个滤波器寄存器和相关缓冲器指示器,其中,地址总线将多个缓冲器指示器与地址寄存器耦合。可以进一步在消息组装缓冲器移位寄存器内配备数据接收寄存器。缓冲存储器可以包括n个缓冲器,然后,地址指示器包括m个位,从而,2m=n。并且,可以配备与至少一个滤波器寄存器耦合的至少一个掩码寄存器。缓冲存储器最好是双端口存储器。一个端口与CPU耦合,和另一个端口与数据接收寄存器耦合。因此,微控制器的CAN模块和CPU可以独立地访问缓冲存储器。对于包含标识符的每个帧,比较可以以串行的方式按位进行或并行地进行。为此,每个掩码和滤波器寄存器可按位寻址,和配备位选择单元,以便从所述寄存器中选择相应的位,将其与每个帧的标识符位流内的位相比较。
操作CAN模块的方法包括如下步骤接收数据流;从数据流当中生成标识符和数据;将标识符与滤波器值相比较;如果比较结果是肯定的,生成接受信号;一旦生成接受信号就把地址供应给缓冲存储器地址输入端;和把相关数据存储在编址缓冲器中。
该方法可以进一步包括将标识符与多个寄存器值相比较和为每次匹配生成可编程缓冲器地址的步骤。并且,供应地址的步骤可以包括如下步骤一旦生成接受信号就输出地址;把地址锁存在地址寄存器内;和寻址缓冲存储器。
此外,该方法可以包括屏蔽标识符的步骤。比较和屏蔽可以以串行或并行的方式进行。
该装置可以动态地把任何滤波器寄存器指定给缓冲存储器内的任何缓冲器。因此,无需牺牲性能力,就可以使CAN控制器内提供灵活环境的必要硬件最小化。任何滤波器的指定可以在一种应用内动态地改变,因此,提供了比现有技术系统更大的灵活性。串行比较的实现避免了对要不然每个滤波器寄存器都必需的大型并行比较器的需要。
另一个示范性实施例是包括如下部件的CAN模块含有数据和地址输入端和多个可编址缓冲器的缓冲存储器、从串行数据流中接收数据的与缓冲存储器耦合的数据接收寄存器、滤波器寄存器、将滤波器寄存器值与在串行数据流中发送的标识符相比较生成接受信号的比较器、与比较器耦合接收所述接受信号的缓冲器指示器、和多功能地址寄存器单元,该多功能地址寄存器单元包括该单元为了寻址缓冲存储器从缓冲器指示器接收地址的第一种模式、和将接受信号与该多功能地址寄存器单元内的递增器耦合的第二种模式,其中,一旦接收到接受信号,递增器就将地址寄存器加1。
另一个示范性实施例是包括中央处理单元、与中央处理单元连接的随机访问存储器、和CAN模块的微控制器,从而,CAN模块包括含有数据和地址输入端和多个可编址缓冲器的缓冲存储器、从串行数据流中接收数据的与缓冲存储器耦合的数据接收寄存器、滤波器寄存器、将滤波器寄存器值与在串行数据流中发送的标识符相比较生成接受信号的比较器、与比较器耦合接收所述接受信号的缓冲器指示器、和多功能地址寄存器单元,该多功能地址寄存器单元包括该单元为了寻址缓冲存储器从缓冲器指示器接收地址的第一种模式、和将接受信号与该多功能地址寄存器单元内的递增器耦合的第二种模式,其中,一旦接收到接受信号,递增器就将地址寄存器加1。
可以配备多个滤波器寄存器和相关缓冲器指示器,其中,地址总线将多个缓冲器指示器与地址寄存器耦合。可以进一步在消息组装缓冲器移位寄存器内配备数据接收寄存器。缓冲存储器可以包括n个缓冲器,然后,地址指示器包括m个位,从而,2m=n。并且,可以配备与至少一个滤波器寄存器耦合的至少一个掩码寄存器。缓冲存储器最好是双端口存储器。因此,微控制器的CAN模块和CPU可以独立地访问缓冲存储器。对于包含标识符的每个帧,比较可以以串行的方式按位进行或并行地进行。为此,每个掩码和滤波器寄存器可按位寻址,和配备位选择单元,以便从所述寄存器中选择相应的位,将其与每个帧的标识符位流内的位相比较。
利用多种操作模式操作CAN模块的方法包括如下步骤接收数据流;从数据流当中生成标识符和数据;将标识符与滤波器值相比较;如果比较结果是肯定的,生成接受信号;在第一种模式下,一旦生成接受信号就把地址供应给缓冲存储器地址输入端;在第二种模式下,一旦接收到每个接受信号就把地址加1或减1,和把地址供应给缓冲存储器;和把相关数据存储在编址缓冲器中。
该方法可以进一步包括将标识符与多个寄存器值相比较和为每次匹配生成可编程缓冲器地址的步骤。并且,供应地址的步骤可以包括如下步骤一旦生成接受信号就输出地址;把地址锁存在地址寄存器内;和寻址缓冲存储器。
此外,该方法可以包括屏蔽标识符的步骤。比较和屏蔽可以以串行或并行的方式进行。
该装置可以以第一操作模式动态地把任何滤波器寄存器指定给缓冲存储器内的任何缓冲器。因此,无需牺牲性能,就可以使CAN控制器内提供灵活环境的必要硬件最小化。任何滤波器的指定可以在一种应用内动态地改变,因此,提供了比现有技术系统更大的灵活性。在第二种模式下,模块不同地工作。在这种模式下,不把缓冲器直接指定给任何滤波器寄存器。该系统有点像FIFO(先进先出)一样地工作,其中,每个接受信号将地址寄存器递增或递减。因此,依次写缓冲器。CPU可以从双端口存储器中读取相应值。串行比较的实现避免了对要不然每个滤波器寄存器都必需的大型的并行比较器的需要。


通过结合附图,对本发明的优选实施例进行如下详细描述,本发明的上述和其它目的、特征和优点将更加清楚。
图1是根据现有技术的接收缓冲器和它们的相关滤波器的示意图;图2是根据本发明的第一示范性实施例的接收缓冲器和它们的相关滤波器的示意图;图3显示了根据如图2所示的示范性实施例的CAN协议引擎的细节;图4是根据本发明的第二示范性实施例的接收缓冲器和它们的相关滤波器的示意图;图5显示了根据图4的位比较器单元的细节;图6是根据本发明的又一个示范性实施例的接收缓冲器和它们的相关滤波器和比较器的示意图;和图7显示了根据图4的串行位比较器单元的细节。
具体实施例方式
参照图1,图1例示了根据现有技术的接收缓冲器118、120和122和它们的相关掩码102、108和滤波器寄存器104、106、110、112、114、116。被设计成消息组装缓冲器(MAB)的缓冲器120只起为了输入消息而监视CAN逻辑总线(未示出)的作用。MAB 120保存来自总线的去填充位流。位流由含有标识符和数据字段(未示出)消息,即,数据帧、远程帧、或其它帧组成。MAB 120允许接收缓冲器118和122并行访问消息。MAB 120还允许接受滤波器106和116访问消息的标识符部分。在接受掩码102和108和接受滤波器104、106、110、112、114、116把接受匹配测试应用于消息之前,不允许把位流消息并行传送到接收缓冲器118或122。
可编程接受滤波器掩码102和108分别用于选择未填充位流消息的哪些位应用与接受滤波器104和106、和110、112、114和116的内容相比较。
接受匹配测试按如下进行滤波器104、106、110、112、114、和116接收消息的标识符字段和将那个字段与滤波器值相比较。如果在标识符字段和滤波器值之间存在匹配,那么,将消息装入匹配滤波器的相应接收缓冲器118或122中。滤波器104和106与缓冲器118相连接,滤波器110、112、114和116与缓冲器122相连接。
对于接收缓冲器,存在着隐含优先级。缓冲器118是较高优先级缓冲器和含有与它相联系的消息接受滤波器104和106。缓冲器122是较低优先级缓冲器和含有与它相联系的接受滤波器110、112、114和116。与缓冲器118相联系的滤波器比与缓冲器122相联系的滤波器少意味着缓冲器118比缓冲器122更受限制。更受限制的缓冲器118隐含地具有与它相联系的更高临界性。
在MAB 120接二连三接收到两个“高优先级”消息的时候,被设计成第一高优先级缓冲器的接收缓冲器118将接收第一高优先级消息。一旦接收到第二高优先级消息,MAB 120就查明那个缓冲器118当前被高优先级消息占据着。然后,MAB 120指令设计成第二高优先级缓冲器的缓冲器122接收第二高优先级消息。在这种情形下,把缓冲器118和122分别排队成第一高优先级缓冲器和第二高优先级缓冲器。
中央处理单元(CPU)可以对接收缓冲器118和122之一进行操作,而另一个适用于接收或保存以前接收的消息。
在两个高优先级消息到达情况下的协议受接收缓冲器118和122的控制寄存器(未示出)中的BUKT位影响。表I描绘和说明了接收缓冲器118的控制寄存器,其中,R/W的意思是可读/可写位,和其中,R的意思是只读位。
表I

位7 消息就绪状态1=接收缓冲器包含有效接收消息0=接收缓冲器向接收新消息开放位只由CAN模块设置,位只由CPU清零。
位6-5接收缓冲器操作模式11=接收包括含有错误的那些消息的所有消息10=只接收含有扩充标识符的有效消息01=只接收含有标准标识符的有效消息00=接收所有有效消息位4 消息接收中断允许1=允许中断0=禁止中断位3 接收远程传送请求1=接收到远程传送请求0=没有接收到远程传送请求位2 (BUKT)允许溢出到接收缓冲器1221=接收缓冲器118溢出将写入缓冲器1220=不允许溢出到缓冲器122位1 位2(BUKT)的只读复制位0 指示哪个接受滤波器允许消息接收1=与缓冲器122相联系的接受滤波器0=与缓冲器118相联系的接受滤波器如果设置成“1”,BUKT位实现本发明基于优先级的协议。
表II描绘和说明了接收缓冲器122的控制寄存器。
表II

位7 消息就绪状态1=接收缓冲器包含有效接收消息0=接收缓冲器向接收新消息开放位只由CAN模块设置,位只由CPU清零。
位6-5接收缓冲器操作模式[这些位是可选的]11=接收包括含有错误的那些消息的所有消息10=只接收含有扩充标识符的有效消息01=只接收含有标准标识符的有效消息00=接收所有有效消息位4 消息接收中断允许1=允许中断0=禁止中断位3 接收远程传送请求1=接收到远程传送请求0=没有接收到远程传送请求位2-0指示哪个接受滤波器允许消息接收101=接受滤波器116100=接受滤波器114011=接受滤波器112010=接受滤波器110001=接受滤波器106[只有当在缓冲器118的控制寄存器中把BUKT位设置成“1”时]000=接受滤波器104[只有当在缓冲器118的控制寄存器中把BUKT位设置成“1”时]图2显示了根据本发明的一个示范性实施例的缓冲器和相关掩码以及滤波器/比较器寄存器的配置。图2只显示了这些配置的相关部件。这个实施例包括以并行方式存储和比较。两个掩码寄存器210和220与多个滤波器寄存器和比较器单元230、240(在图2中只显示了两个)耦合。每个掩码寄存器可以通过相应选择线215和225来选择。单元230、240从消息组装寄存器270接收标识符字段。每个单元230、240含有相关的4位缓冲器指示器250、260。这些缓冲器指示器250、260的输出端通过缓冲器指示器总线255与地址寄存器290的输入端耦合。地址寄存器290的输出端与缓冲存储器280的地址输入端耦合。消息组装寄存器270从CAN协议引擎275接收串行数据流并组装标识符和附加发送的数据。消息组装寄存器270并行地把标识符输出到滤波器寄存器和比较器单元230、240和并行地把数据输出到缓冲存储器280的数据输入端。缓冲存储器280可以被设计成双端口存储器。一个端口与消息组装寄存器耦合和另一个端口与包括CAN模块的微控制器的中央处理单元(CPU)205耦合。CPU 205与存储程序和数据信息的存储器206,例如,随机访问存储器耦合。
滤波器/比较器和掩码的功能与如上所述的功能相同。但是,不把多个滤波器寄存器和比较器单元230...240静态指定给特定缓冲器。可以把每个滤波器和比较器单元230...240动态指定给缓冲存储器280内的任何缓冲器。缓冲存储器280可以由,例如,16个缓冲器组成。因此,在这个示范性实施例中,4个位是寻址缓冲存储器280中的每个单独缓冲器所必需的。缓冲存储器280内缓冲器的任何个数n都是可能的。为了能够寻址缓冲存储器280内的所有n个缓冲器,缓冲器指示器必须提供m的位长,从而,2m=n。因此,每个滤波器和比较器单元230、240含有相关缓冲器指示器250、260。每个缓冲器指示器250、260是可编程的(与未示出的CPU相连接),和在所示的示范性实施例4中,包括4个位,以寻址缓冲存储器280内的16个缓冲器。滤波器和比较器单元230、240以并行方式比较标识符。每当滤波器和比较器单元,例如,滤波器和比较器单元230匹配从消息组装寄存器270供应的标识符时,滤波器就生成接受信号。另外,可以选择两个掩码寄存器之一。掩码寄存器210、220定义滤波器寄存器的那些位将被比较。如果生成滤波器和比较器单元230的接受信号,那么,这个信号迫使缓冲器指示器250的内容进入地址寄存器290随后锁存它的缓冲器指示器总线255。然后,把来自消息组装寄存器270的相应数据存储在缓冲存储器280内的相应编址位置上。由于可以把任何值装入缓冲器指示器,所以可以把滤波器和比较器单元230、240编程成指向多达16个消息缓冲器的任何一个。因此,可以容易地在接收缓冲器之间切换滤波器。这使资源得到灵活使用。所以,利用较少的部件和因此较少的硅实物就可以完成与现有技术相同的任务。
如上所述,CPU 205最好通过缓冲存储器280的第二端口与缓冲存储器280耦合。因此,CAN协议引擎275和CPU 205可以独立地访问缓冲存储器280内的缓冲器。
图3更详细地示出CAN协议引擎275。CAN协议引擎275组合几个功能块。引擎275的中心是协议有限状态机310(FSM)。这个状态机通过消息逐位定序,随着各种帧类型的各个字段被发送或接收,改变机器的状态。FSM 310是分别控制RX/TX移位寄存器320、325,CRC寄存器330,与接收总线350和发送总线360之间的顺序数据流的定序器。移位寄存器320、325可以是消息组装寄存器270的组成部分。配备附加部件355和365是为了转换数据流和适应总线350和360上的相应定时。FSM还控制错误管理逻辑块340(EML)和TX/RX移位寄存器320、325与CAN模块的其它部件之间的并行数据流RecData。接收判优、发送和错误信号发送的过程是根据CAN协议进行的。FSM310还管理总线上消息的任何自动发送。
与协议引擎275的数据接口由字节宽度发送和接收数据组成。不是组装和移动整个帧,而是把帧分解成字节。来自协议FSM 310的接收或发送地址表明当前是帧的哪个字节。为了发送,选择来自发送缓冲器的适当字节,和将其呈现给引擎,然后引擎利用8-位移位寄存器将数据串行化。为了接收,8-位移位寄存器组装字节,然后将其装入消息组装缓冲器270中的适当字节内。
循环冗余校验寄存器330生成要在数据字节上发送的循环冗余校验(CRC)码和检验输入消息的CRC码。错误管理逻辑块(EML)340负责CAN设备的故障限制。它的计数器,即接收错误计数器和发送错误计数器按照来自位流处理器的命令递增或递减。根据错误计数器的值,将CAN控制器的状态设置成有源错误、无源错误或总线关闭。
单元355内的位定时逻辑块(BTL)监视总线输入端,和根据CAN协议管理总线相关位定时。如果CAN控制器本身不发送显性位,BTL在帧的开头使隐性到显性总线过渡同步,和使任何进一步的隐性到显性总线过渡同步。BTL还提供可编程时间段,以补偿传播延迟时间和相移并以位时间定义样本点的位置。BTL的编程取决于波特率和取决于外部物理延迟时间。
图4示出带有根据本发明的串行比较的本发明示范性实施例。第一和第二掩码寄存器415和420可按位寻址并包括单个输出位。而且,多个滤波器寄存器0...N(只显示了两个)用标号425和430表示。滤波器寄存器425、430还包括单个输出位并可按位寻址。另外,掩码寄存器415和420,以及滤波器寄存器425、430都可由中央处理单元497以并行方式读写。定序器和控制单元410起位选择单元作用,并生成馈送到掩码寄存器415和420和所有滤波器寄存器425、430的地址信号。每个滤波器寄存器425、430包括相关位比较器单元435、440。掩码寄存器415和420的位输出信号被馈送到位比较器单元435、440的第一和第二输入端。而且,滤波器寄存器425、430的每个位输出被馈送到它们相关位比较器单元435、440的第三输入端。来自CAN总线的位流信号由CAN协议引擎495提供,并被馈送到每个位比较器单元435、440的第四输入端。滤波器寄存器425、430可以提供耦合到每个相关位比较器单元的第五输入端的附加存储位。每个位比较器单元435、440的输出携带接受信号,并被耦合到相关缓冲器指示器445、450的控制输入端。配备输入端与滤波器寄存器的个数一样多的OR(或)门455。每个输入端接收来自相应位比较器单元435、440的接受信号。每个缓冲器指示器445和450的输出端被耦合到与多功能地址寄存器460的地址输入端相连接的缓冲器指示器总线462。OR门455的输出端被耦合到多功能寄存器460的控制输入端。多功能寄存器460进一步包括模式控制输入端465、指示缓冲存储器485是否已满的第一状态输出端475、指示缓冲存储器485是否空着的第二状态输出端480、和用于多功能地址寄存器460的计数功能的向上/向下控制输入端。多功能地址寄存器460的地址输出端464被耦合到缓冲存储器485的地址输入端。缓冲存储器485最好是双端口存储器,它的第一端口被耦合到从CAN协议引擎495接收串行数据流的消息组装缓冲器移位寄存器490,和它的第二端口被耦合到进一步与存储程序和数据信息的存储器496耦合的中央处理单元497。
尽管这不是本发明的关键,但本实施例提供了两种把来自串行数据流的数据写入缓冲存储器485的选择。如具有本发明特征的图4所示,这两种选择可以作为独立实施例或组合实施例来实现。存储在滤波器寄存器425、430中的滤波器值与发送的标识符的比较以按位的方式而不是并行地进行。因此,避免了需要相对大量硅实物的并行比较器。CAN协议引擎495提供的串行数据流包括直接馈送到所有位比较器单元435、440的标识符。定序器和控制单元410寻址掩码寄存器415、420和所有滤波器寄存器425、430,以便把对应位输出到位比较器单元435、440。位比较器单元435、440将所有滤波器寄存器位与帧内的相应标识符位相比较。通过将结果与相应掩码寄存器位相比较,进一步对结果加以处理。为此,每个滤波器寄存器425、430的附加存储位可以指示哪个掩码寄存器应该用于这种比较。下面将更详细地说明这种功能。对帧内每个标识符的所有位累加最后比较结果。如果单次比较失败,那么不生成接受信号。如果每位比较是肯定的,那么把接受信号馈送到相应缓冲器指示器445、450和OR门455的相应输入端。
中央处理单元可以以如下方式控制多功能地址寄存器460。两种模式可以通过模式信号465来选择。在第一种模式下,缓冲器指示器445、450以与上面结合图4所述相同的方式工作。多功能地址寄存器460锁存已经放在地址总线462上的地址,和寻址并行地存储已经由消息组装缓冲器移位寄存器490组装的数据的缓冲存储器485。
第二种模式可以通过控制信号465来选择。在这种模式下,不需要缓冲器指示器445、450,因此,忽略它们的输出信号。当激活这种模式时,多功能地址寄存器内的实际地址寄存器被设置成,例如,“Fh”,和状态信号480将把信号发送到一个空缓冲器。每当位比较器单元435、440生成接受信号时,这个信号就触发多功能地址寄存器460的递增功能,所以将它的内容加1。因此,消息组装缓冲器移位寄存器490组装的第一数据将被存储在存储位置0上。这种功能提供了没有缓冲器与任何位比较器相联系的CAN模块的所谓FIFO功能。除非CPU已经读取了以前的条目,依次写缓冲存储器485,直到地址再次达到指示缓冲器已满的“Fh”为止。满缓冲存储器485由控制信号475指示。在另外的模式下,控制信号470可以在地址寄存器的递增功能和递减功能之间选择。附加信号可以由CPU提供,以指示是否为了生成适当状态信号475和480而已经读取了缓冲器值,和保证没有值会在CPU将它取出之前被盖写。而且,地址寄存器的递增/递减功能当然可以在数据被存储之前或在数据被存储之后执行。
图5更详细地示出功能还要多的位比较器单元435、440的另一个示范性实施例。虽然只显示了位比较器单元0的细节,但据此可应用于所有其它位比较器单元。掩码寄存器415和420的输出端被耦合到4:1多路复用器520的第一和第二输入端。可以把附加输入端560和570配备在多路复用器520的第三和第四输入端上。例如,将输入端560与用标号580表示的滤波器寄存器15的输出端耦合。滤波器寄存器425包括,例如,与多路复用器520的选择输入端耦合的两个附加输出端。多路复用器520可以具有任意尺寸,例如,可以扩充成把掩码个数增加到N的N:1多路复用器。多路复用器520的输出端与NOR(或非)门530的第一输入端相连接。NOR门530起指示使用还是忽略比较结果的确认单元的作用。NOR门530的第二输入端被耦合到Exclusive NOR(同)门510的输出端,Exclusive NOR门510的第一输入端接收来自滤波器寄存器425的位输出信号和它的第二输入端接收来自CAN协议引擎495的串行数据流。NOR门530的输出端被耦合到D型触发器540的控制输入端。D型触发器540的D输入端接收逻辑低电平信号。在D-型触发器540的负输出端上传送接受信号。
第一比较级由Exclusive NOR门510形成。在这一级中,将串行位流的标识符位与滤波器寄存器425的相应位相比较。如果这两个输入信号相同,那么Exclusive NOR门510在它的输出端上只生成“高”逻辑电平。定序器单元410选择滤波器寄存器425内的相应位。滤波器寄存器425包括指示应该使用哪个掩码寄存器的附加数据位。在这个示范性实施例中,可以选择四个不同值。可以选择掩码寄存器415或420之一,或者,第三值可以由另一个滤波器寄存器,例如,滤波器寄存器15提供。第四可能选择570可以用于通过提供相应电平,例如,逻辑“1”,指示没有使用掩码。因此,可以将各自屏蔽功能指定给每个滤波器寄存器425、430。所选掩码值将被放在NOR门530的第一输入端上。如果掩码值指示应当使用滤波器寄存器425中的相应位,NOR门530将起可控开关作用,并且把Exclusive NOR门510的比较结果馈送到控制输入的D型触发器540。D型触发器540用作被预置成“1”的寄存器。如果一次比较的结果是指示没有匹配的否定和相应掩码位是有效的,那么清除D型触发器540和不生成接受信号550。D型触发器540因此被复位成“0”。从下一个帧开始再次把D型触发器540预置成“1”,以便像如上所述那样比较另一个标识符。
任何其它类型的适当逻辑块都可以用于实现比较器。例如,可以使用可控开关、和等效布尔运算器等。而且,可以将确认单元放置在比较器之前,或者设置在比较器之后。确认单元的基本功能是合并所选的位或将它们排除在比较之外。
图6显示了根据本发明又一个示范性实施例的缓冲器和相关掩码和滤波器/比较器寄存器的配置。另外,图6只显示了这些配置的相关部件和把与图2中相同的标号用于相似或类似的部件。这个实施例包括以并行方式存储和比较。两个掩码寄存器210和220与多个滤波器寄存器和比较器单元230、240(在图6中只显示了两个)耦合。每个掩码寄存器可以通过相应选择线215和225来选择。单元230、240从消息组装寄存器270接收标识符字段。每个单元230、240含有相关的4位缓冲器指示器250、260。这些缓冲器指示器250、260的输出端通过缓冲器指示器总线255与多功能地址寄存器700的地址输入端耦合。另外,OR门265配有N个输入端。OR门265的每个输入端与滤波器寄存器和比较器单元230、240的输出端耦合。OR门265的输出端与多功能地址寄存器700的计数输入端耦合。多功能地址寄存器700进一步包括模式控制输入端,计数器模式输入端和指示缓冲存储器280是满的还是空的两个状态信号输入端。多功能地址寄存器700的输出端与缓冲存储器280的地址输入端耦合。消息组装寄存器270从CAN协议引擎275接收串行数据流并组装标识符和附加的发送数据。消息组装寄存器270并行地把标识符输出到滤波器寄存器和比较器单元230、240和并行地把数据输出到缓冲存储器280的数据输入端。缓冲存储器280可以被设计成双端口存储器。一个端口与消息组装寄存器耦合和另一个端口与包括CAN模块的微控制器的中央处理单元(CPU)205耦合。CPU 205与存储程序和数据信息的存储器206,例如,随机访问存储器耦合。
滤波器/比较器和掩码的功能与如上所述的功能相同。但是,可以以两种不同方式访问缓冲存储器280。这两种方式可以通过多功能地址寄存器700中的模式输入端来选择。在第一种模式下,不把多个滤波器寄存器和比较器单元230...240静态指定给特定缓冲器。可以把每个滤波器和比较器单元230动态指定给缓冲存储器280内的任何缓冲器。缓冲存储器280可以由,例如,16个缓冲器组成。因此,在这个示范性实施例中,4个位是寻址缓冲存储器280中的每个单独缓冲器所必需的。缓冲存储器280内缓冲器的任何个数n都是可能的。为了能够寻址缓冲存储器280内的所有n个缓冲器,缓冲器指示器必须提供m的位长,从而,2m=n。因此,每个滤波器和比较器单元230、240含有相关缓冲器指示器250、260。每个缓冲器指示器250、260是可编程的(与未示出的CPU相连接),和在所示的示范性实施例4中,包括4个位,以寻址缓冲存储器280内的16个缓冲器。滤波器和比较器单元230、240以并行方式比较标识符。每当滤波器和比较器单元,例如,滤波器和比较器单元230匹配从消息组装寄存器270供应的标识符时,滤波器就生成接受信号。另外,可以选择两个掩码寄存器之一。掩码寄存器210、220定义滤波器寄存器的那些位将被比较。如果生成滤波器和比较器单元230的接受信号,那么,这个信号迫使缓冲器指示器250的内容进入地址寄存器700随后锁存它的缓冲器指示器总线255。然后,把来自消息组装寄存器270的相应数据存储在缓冲存储器280内的相应编址位置上。由于可以把任何值装入缓冲器指示器,所以可以把滤波器和比较器单元230、240编程成指向多达16个消息缓冲器的任何一个。因此,可以容易地在接收缓冲器之间切换滤波器。这使资源得到灵活使用。所以,利用较少的部件和因此较少的硅实物就可以完成与现有技术相同的任务。
在第二种模式下,不使用缓冲器指示器250、260。在这种模式下,滤波器和比较器单元的每次匹配通过OR门265被直接馈送到多功能地址寄存器700的计数输入端。因此,取决于计数器功能输入端向上/向下(UP/DOWN),每次匹配将导致多功能地址寄存器700内地址寄存器的递增或递减功能。最初,地址寄存器被设置成,例如,“Fh”。进一步假设通过UP/DOWN模式输入端来选择递增功能。第一次匹配将使地址寄存器递增,得出“0”的值。然后,把消息组装缓冲器移位寄存器270的数据内容存储在缓冲存储器280内的位置“0”上。任何滤波器和比较器单元230、240的下一次匹配将生成通过OR门265馈送到多功能地址寄存器700的计数输入端的另一个接受信号。所以,地址寄存器的内容递增成“1h”并把相应数据写入缓冲存储器280中。除非CPU205通过读取相应缓冲器,清空缓冲存储器280,这个过程一直继续到缓冲存储器达到状态信号“满”所指的已满为止。缓冲存储器280的状态估计可以通过对于每次写过程加1和对于每次读过程减1的附加计数器(未示出)来完成。在另一个实施例中,以相似方式使用第二地址寄存器和通过CPU以每次访问来递增/递减第二地址寄存器。每当第二寄存器的内容比第一寄存器的内容少一个时,就指示缓冲器已满了。如果没有什么东西被写入缓冲存储器中,把状态信号设置成“空”。
如上所述,CPU 205最好通过缓冲存储器280的第二端口与缓冲存储器280耦合。因此,CAN协议引擎275和CPU 205可以独立地访问缓冲存储器280内的缓冲器。
在图7中,显示了根据本发明的比较器单元的另一个示范性实施例。虽然只显示了单个位比较器单元的细节,但据此可应用于所有其它位比较器单元。标号600指示提供馈送给消息组装缓冲器寄存器680和Exclusive NOR门690的第一输入端的CAN串行数据流的单元。滤波器寄存器620的单个位输出端被耦合到Exclusive NOR门690的第二输入端,Exclusive NOR门690的输出端与NOR门650的第一输入端相连接。NOR门650的第二输入端接收来自掩码寄存器630的单个位输出信号。NOR门650的输出端被耦合到AND(与)门660的第一输入端,AND门660的输出端与D型触发器670的控制输入端耦合。D型触发器670的输入端D与诸如Vcc之类的逻辑“低”电平信号耦合。D型触发器670的反向输出端被耦合到AND门640的第一输入端,AND门640的输出端提供接受信号。AND门640和660分别包括第二输入端ACC_RDY和BIT_RDY,它们用于与相应输入信号同步。位选择逻辑块610与滤波器寄存器620和掩码寄存器630耦合,以选择将在每个帧内用于比较的相应位。
使输入CAN位流与位选择逻辑块610同步。换句话说,位选择逻辑块610选择滤波器寄存器620和掩码寄存器630中与串行位流的输入位相对应的相应位。实际的比较器由Exclusive NOR门690形成,如果两个输入信号相同,Exclusive NOR门690在它的输出端上只生成“高”逻辑电平。NOR门650用作屏蔽单元,如果设置掩码寄存器630内的相应位,则把结果屏蔽掉。D型触发器670用作寄存器,累加一连串比较中的结果并在帧的开头被设置成“1”。只有当帧内的所有比较都取得成功时,才生成在AND门640的输入端上的接受信号AccN。否则,通过假比较结果把D型触发器670设置成“0”和把“0”一直保持到帧的末端为止。两个控制信号ACC_RDY和BIT_RDY用于使相应信号同步和激活相应信号。
因此,本发明相当适合于实现所述目的和获得所述结果和优点,以及本文固有的其它目的、结果和优点。虽然通过参考本发明的特定优选实施例已经对本发明进行了描绘、描述和定义,但是这样的参考并不意味着对本发明的限制,也推断不出这样的限制。对于本领域的普通技术人员来说,本发明能够得到相当大的修改、改变,和在形式和功能上是等效的。所描绘和所描述的本发明优选实施例只是示范性的,而不是排除在本发明的范围之外。因此,本发明只受在所有方面都被认定等效的所述权利要求书的精神和范围限制。
权利要求
1.一种控制区域网模块,包括含有数据和地址输入端和多个可编址缓冲器的缓冲存储器;从串行数据流中接收数据的与所述缓冲存储器耦合的数据接收寄存器;滤波器寄存器;将所述滤波器寄存器值与在所述串行数据流中发送的标识符相比较生成接受信号的比较器;与所述比较器耦合接收所述接受信号的缓冲器指示器;和为了寻址所述缓冲存储器从所述缓冲器指示器接收地址的地址寄存器。
2.根据权利要求1所述的控制区域网模块,其中,地址寄存器是多功能地址寄存器单元,具有所述单元为了寻址所述缓冲存储器从所述缓冲器指示器接收地址的第一种模式、和将所述接受信号与所述多功能地址寄存器单元内的计数输入端耦合的第二种模式,借此当生成所述接受信号时,改变所述地址寄存器值。
3.根据权利要求2所述的控制区域网模块,进一步包括多个滤波器寄存器、比较器和相关缓冲器指示器,其中,地址总线将所述缓冲器指示器与所述地址寄存器耦合和″或″门将所述接受信号与所述多功能地址寄存器单元耦合。
4.根据权利要求2或3所述的控制区域网模块,其中,所述多功能地址寄存器单元生成指示所述缓冲存储器的状态的状态信号。
5.根据前述权利要求之一所述的控制区域网模块,进一步包括多个滤波器寄存器和相关缓冲器指示器,其中,地址总线将所述缓冲器指示器与所述地址寄存器耦合。
6.根据前述权利要求之一所述的控制区域网模块,其中,所述数据接收寄存器配备在消息组装寄存器内。
7.根据前述权利要求之一所述的控制区域网模块,其中,所述缓冲存储器包括n个缓冲器和所述地址指示器包括m个位,从而,2m=n。
8.根据前述权利要求之一所述的控制区域网模块,进一步包括与至少一个滤波器寄存器耦合的至少一个掩码寄存器,用于屏蔽来自所述滤波器寄存器的所选位。
9.根据前述权利要求之一所述的控制区域网模块,进一步包括选择所述滤波器寄存器的单个位的位选择单元,和其中,所述滤波器寄存器可按位寻址,和所述比较器是将来自所述串行位流的在一个帧中发送的标识符的每个标识符位与所述滤波器寄存器的所述单个位相比较的单个位比较器。
10.根据权利要求9所述的控制区域网模块,进一步包括一个触发器,该触发器与如果至少一次比较失败在一个帧期间撤消其输出信号的所述比较器耦合。
11.根据权利要求10所述的控制区域网模块,进一步包括可按位寻址的至少一个掩码寄存器,其中,所述位选择单元寻址所述掩码寄存器和所述所选位控制确认单元确认所述位比较。
12.根据权利要求11所述的控制区域网模块,其中,所述滤波器寄存器包括来自多个掩码寄存器的指示掩码寄存器的数据位,和选择单元与所述数据位耦合,以便选择所述掩码寄存器之一。
13.根据权利要求1所述、用于接收串行位流、其中所述滤波器寄存器含有位选择输入端和单个位输出端的控制区域网模块,进一步包括根据所述串行位流选择所述滤波器寄存器的一个位的位选择单元,和其中,所述比较器与所述单个位输出端耦合并与所述串行位流耦合,以便生成比较信号,和所述寄存器接收所述比较信号,以便累加多个比较结果和生成接受信号。
14.根据权利要求13所述的控制区域网模块,进一步包括含有位选择输入端和单个位输出端的掩码寄存器;接收所述掩码单个位输出和所述比较结果并生成馈送到所述寄存器的结果信号的屏蔽单元。
15.根据权利要求14所述的控制区域网模块,进一步包括含有位选择输入端和单个位输出端的至少两个掩码寄存器;选择所述掩码单个位输出之一的多路复用器。
16.根据权利要求15所述的控制区域网模块,其中,所述多路复用器包括与另一个滤波器寄存器的单个位输出端耦合的输入端。
17.根据权利要求15所述的控制区域网模块,其中,所述多路复用器包括与指示没有屏蔽功能的恒定信号耦合的输入端。
18.根据权利要求15所述的控制区域网模块,其中,所述多路复用器受来自所述滤波器寄存器的至少一个位控制。
19.根据权利要求18所述的控制区域网模块,其中,所述滤波器寄存器包括控制所述多路复周器的两个附加位。
20.根据权利要求11-19之一所述的控制区域网模块,其中,所述比较器是“同”门。
21.根据权利要求11-20之一所述的控制区域网模块,其中,所述屏蔽单元是“同”门。
22.根据权利要求11-21之一所述的控制区域网模块,其中,所述寄存器是D型触发器。
23.一种包括根据前述权利要求之一所述的控制区域网模块的微控制器。
24.一种操作控制区域网模块的方法,包括如下步骤接收数据流;从所述数据流当中生成标识符和数据;将所述标识符与滤波器值相比较;如果所述比较结果是肯定的,生成接受信号;在生成所述接受信号时把地址供应给缓冲存储器地址输入端;和把相关数据存储在所述编址缓冲器中。
25.根据权利要求24所述的方法,其中,在第一种模式下,在生成所述接受信号时把地址供应给缓冲存储器地址输入端;在第二种模式下,在接收到每个接受信号时递增或递减地址,和把所述地址供应给所述缓冲存储器;和把相关数据存储在所述编址缓冲器中。
26.根据权利要求25所述的方法,进一步包括生成指示所述缓冲存储器的状态的状态信号的步骤。
27.根据权利要求25所述的方法,其中,在所述第二种模式下,所述相关数据的所述存储是在所述地址的递增或递减之前进行的。
28.根据权利要求24-27之一所述的方法,进一步包括将所述标识符与多个滤波器值相比较和为每次匹配生成可编程缓冲器地址的步骤。
29.根据权利要求24-28之一所述的方法,其中,供应地址的所述步骤包括如下步骤在生成所述接受信号时输出地址;把所述地址锁存在地址寄存器内;和寻址所述缓冲存储器。
30.根据权利要求24-29之一所述的方法,其中,所述比较是以串行方式逐位进行的。
31.根据权利要求24-30之一所述的方法,其中,所述比较是以并行方式进行的。
32.根据权利要求24-31之一所述的方法,进一步包括屏蔽所述标识符的步骤。
33.一种操作控制区域网模块的方法,包括如下步骤接收数据流;从所述数据流当中生成标识符和数据;逐位将所述标识符与滤波器值相比较;如果所述比较结果是肯定的,生成接受信号;在生成所述接受信号时把相关数据存储在缓冲器中。
34.根据权利要求33所述的方法,进一步包括逐位屏蔽所述比较结果的步骤。
35.根据权利要求34所述的方法,进一步包括从多个掩码值中选择一个掩码值的步骤。
36.根据权利要求35所述的方法,其中,所述滤波器值提供选择所述掩码值的附加数据信息。
37.根据权利要求35所述的方法,其中,所述掩码值是从多个掩码寄存器和滤波器寄存器中选择出来的。
38.根据权利要求35所述的方法,其中,一个掩码值提供非屏蔽功能。
全文摘要
控制区域网模块包括含有数据和地址输入端和多个可编址缓冲器的缓冲存储器、从串行数据流中接收数据的与缓冲存储器耦合的数据接收寄存器、滤波器寄存器、将滤波器寄存器值与在串行数据流中发送的标识符相比较生成接受信号的比较器、与比较器耦合接收接受信号的缓冲器指示器、和为了寻址缓冲存储器从缓冲器指示器接收地址的地址寄存器。该装置可以动态地把任何滤波器寄存器指定给缓冲存储器内的任何缓冲器。
文档编号H04L12/56GK1589547SQ02822749
公开日2005年3月2日 申请日期2002年9月10日 优先权日2001年9月20日
发明者詹姆斯·R·巴特林 申请人:密克罗奇普技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1