表-33说明了一个标准ACE总线控制器(BC)的内存映射。注意其中的8个固定存储器位置。对于每个区域(A和B),都包含堆栈指针、消息计数器、初始堆栈指针和初始消息计数器。在主处理器开始处理单帧前必须初始化堆栈指针和消息计数器。在帧自动重复模式,在初始化单个帧前主处理器需设置初始堆栈指针和初始消息计数器。
表33-标准BC存储器组织结构(4K RAM) ADDRESS 0000-00FF 0100 0101 0102 0103 0104 0105 0106 0107 0108-012D 012E-0153 0154-0179 · · · 0ED6-0EFB 0EFC-0EFF 0F00-0FFF
256字边界
应注意,BC(RT同样)堆栈区在边界时会发生回滚,堆栈大小由配置寄存器#3位14、13设置,可选大小为256字(64消息)、512、1024和2048字(512消息),默认256字。也就是说,堆栈指针值将由XXFF增至XX00而非(XX+1)00。如果配置寄存器#2位10(256字边界无效位)置“0”,则256字边界对BC消息块同样有效。
然而,如果256字边界无效位置“1”,BC消息块地址在256字边界不会回滚,这可以更有效对于BC模式,强烈推荐256字边界无效位置“1”。
DESCRIPTION 堆栈A(Stack A) 堆栈指针A(Stack Pointer A)(固定) 消息计数器A(Message Count A)(固定) 初始堆栈指针A(Initial Stack Pointer A)(固定)(帧自动重复) 初始消息计数A(Initial Message Count A)(固定)(帧自动重复) 堆栈指针B(Stack Pointer B)(固定) 消息计数器B(Message Count B)(固定) 初始堆栈指针B(Initial Stack Pointer B)(固定)(帧自动重复) 初始消息计数B(Initial Message Count B)(固定)(帧自动重复) 消息块0(Message Block 0) 消息块1(Message Block 1) 消息块2(Message Block 2) · · · 消息块93(Message Block 93) 未使用 堆栈B(Stack B) 注:(1)4个初始内容只在带帧自动重复的增强BC模式下使用。
(2)用户可以自由地在ACE地址任何地方定义BC栈和BC消息块。
的为存储BC消息块分配共享RAM地址空间。
为说明方便,表-33的标准BC存储器映射为每个BC消息块分配了最大消息大小。注意,最大
- 1 -
消息为38字:带32数据字的RT-RT传输指令(控制字+2指令字+回送字+2状态字+32数据字)。表-33的定义需要将256字边界无效位置“1”。
活动区双缓冲
活动区机制将共享RAM部分区域区分为“活动”和“非活动”的。在任何时刻,内部1553存储器管理逻辑只能访问处在“活动”区的一些数据结构。需要注意的是,然而,任意时刻主处理器都可以访问“活动”区以及“非活动”区。 需要注意,如果一个BC帧正在被处理,此时主处理器改变了活动区(通过配置寄存器#1位13),活动区直到当前帧完成才会实际切换。
- 2 -
BC消息帧编程(PROGRAMMING OF BC MESSAGE FRAMES)
BC存储器管理
图3为BC模式存储器管理图解概述。BC可以发送包含最多512消息的帧,要处理的消息数通过共享RAM中固定位置的消息计数器设置。另外,主处理器必须初始化另外一个固定位置的堆栈指针,在每条消息被处理前,该指针指向一个4字消息块描述符(在堆栈中)。该指针必须在处理消息前由主处理器加载。每条BC消息的第一个字是BC控制字。
ACE的全局双缓冲特性为保证数据连贯性提供了一种简便机制,这种技术也消除了对共享RAM访问争夺的可能性。主处理器通过配置寄存器#1位13选择当前活动区。当1553协议逻辑访问“活动”区时,主处理器的一般操作是访问“非活动”区。当前帧在“活动”区处理完成后,主处理器应切换活动区和非活动区。
在处理单帧前,主CPU初始化“活动区”堆栈指针和消息计数器。在帧自动重复模式,还需初始化初始堆栈指针和初始消息计数器。初始堆栈指针和初始消息计数器只需要初始化一次,在处理第一个消息帧之前执行。
任何时刻,堆栈指针总是指向当前消息的块描述符的第一个字。如图3所示,每个BC消息的块描述符都包含4个字。头两个字分别为块状态字和时间标签字,这两个字是在每条消息开始和结束时由ACE BC协议逻辑写入的。BC块状态字位表示消息状态、完成情况、有效性以及总线通道。时间标签字反映消息开始和结束时ACE时间标签寄存器的内容。
BC块描述符剩下两个字必须由主处理器加载。消息间隔时间字只有在增强模式(配置寄存器#3位15置“1”),并且消息间隔时间使能(配置寄存器#1位5置“1”)时才被访问。消息间隔时间指,从当前消息开始到序列中下一条消息开始的时间,设置分辨率1us。消息块地址字是指向消息块第一个字(BC控制字)的指针。活动区堆栈指针值在BC处理消息结束时加4。
- 3 -
消息计数器(或初始消息计数器)必须由CPU初始化为一个消息帧里将要处理的消息数的补码。
例如,如果一个消息帧包含一条消息,(初始)消息计数器应被加载为FFFE。每个消息处理结束时(初始)消息计数器的值加1。
如图4所示,每个BC消息块的首字的都是BC控制字(字号“0”)。BC控制字不在1553总线上发送。图4说明了所有可能的BC消息格式。相应字按照在BC消息块中的出现顺序发送和接收。BC控制字包含信息涉及消息格式、总线通道、中断使能、1553A及1553B出错处理、离线自测、重试以及状态字位屏蔽。
如果处于增强BC模式,即ACE处于增强模式(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”),则BC控制字所有15位(位15为保留)都是可用的。如果不处于增强BC模式,只有位7、6、5、2、1、0可用。
BC控制字包含7个状态屏蔽位。这些位用来屏蔽RT状态字相应位,置“0”则BC受RT状态字相应位影响,置“1”则屏蔽RT状态字相应位,不受其影响。如果BC控制字中屏蔽位置“0”而RT状态字相应位为“1”则以下情况(1)会发生,情况(2)、(3)、(4)可能发生:
(1)BC块状态字中“状态置位”位(位11)置“1”。
(2)如果中断屏蔽寄存器位1(BC状态置位)为“1”,将触发一个中断请求。
(3)如果中断屏蔽寄存器位1(BC状态置位)为“1”或者处增强中断模式(增强模式下配置(4)如果配置寄存器#1位4置“1”(重试使能),并且配置寄存器#4位9置“1”(状态置位主CPU在BC控制字之后写入(首个)指令字,在这之后可能是第二个指令字(对于RT-RT
寄存器#2位15置“1”),则中断状态寄存器位1置“1”。
重试使能),并且BC控制字位8置“1”(重试使能),消息将重试。
传送),然后是需要主机加载的BC将要发送的数据字。在地址分配中,回送字和接收状态字及接收数据字的位置需保留。
消息块格式
在BC模式,ACE支持所有MIL-STD-1553B消息格式。对于每个1553消息格式,BC消息块中字分配都有特定的顺序。这些字包括:控制字、指令、(发送)数据字(由主处理器加载到RAM然后由BC协议逻辑从中读取),另外,序列中必须留出位置存储接收到的回送字、RT状态字和数据字。表-34和表-35分别说明了指令字和状态字的位映射。图4说明了各种MIL-STD-1553B消息格式的BC消息块结构。注意,对于所有消息格式,BC控制字都是消息块的首字。
- 4 -
表34-MIL-STD-1553B指令字(COMMAND WORD) BIT 15(MSB) 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(LSB)
表35-MIL-STD-1553B RT状态字(RT STATUS WORD) BIT 15(MSB) 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(LSB)
DESCRIPTION RT地址(RT ADDRESS)位4 RT地址(RT ADDRESS)位3 RT地址(RT ADDRESS)位2 RT地址(RT ADDRESS)位1 RT地址(RT ADDRESS)位0 发送/接收(TRANSMIT/RECEIVE) 子地址/方式(SUBADDRESS/MODE)位4 子地址/方式(SUBADDRESS/MODE)位3 子地址/方式(SUBADDRESS/MODE)位2 子地址/方式(SUBADDRESS/MODE)位1 子地址/方式(SUBADDRESS/MODE)位0 数据字计数/方式码(DATA WORD COUNT/MODE CODE)位4 数据字计数/方式码(DATA WORD COUNT/MODE CODE)位3 数据字计数/方式码(DATA WORD COUNT/MODE CODE)位2 数据字计数/方式码(DATA WORD COUNT/MODE CODE)位1 数据字计数/方式码(DATA WORD COUNT/MODE CODE)位0 DESCRIPTION RT地址(RT ADDRESS)位4 RT地址(RT ADDRESS)位3 RT地址(RT ADDRESS)位2 RT地址(RT ADDRESS)位1 RT地址(RT ADDRESS)位0 消息错误(MESSAGE ERROR) 仪表设备(INSTRUMENTATION) 服务请求(SERVICE REQUEST) 保留 保留 保留 广播指令接收(BROADCAST COMMAND RECEIVED) “忙”(BUSY) 子系统标志(SUBSYSTEM FLAG) 接受动态总线控制(DYNAMIC BUS CONTROL ACCEPT) 终端标志(TERMINAL FLAG) - 5 -
- 6 -
BC控制字(BC CONTROL WORD)
对于任意一种消息格式,BC消息块首字都是BC控制字。BC控制字不在1553总线上发送。 BC控制字可以选择总线和消息格式、使能离线自测、定义RT状态字广播指令接收位期望值。BC控制字位映射定义如表36所示: 表36-BC控制字寄存器(BC CONTROL WORD REGISTER)(RD/WR 04H) BIT 15(MSB) 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(LSB) DESCRIPTION 保留 屏蔽消息错误位(MESSAGE ERROR BIT MASK) 屏蔽服务请求位(SERVICE REQUEST BIT MASK) 屏蔽子系统“忙”位(SUBSYS BUSY BIT MASK) 屏蔽子系统标志位(SUBSYS FLAG BIT MASK) 屏蔽终端标志位(TERMINAL FLAG BIT MASK) 屏蔽保留位(RESERVED BITS MASK) 重试使能(RETRY ENABLED) 总线通道A/B*(BUS CHANNEL A/B*) 离线自测(OFF LINE SELF TEST) 屏蔽广播位(MASK BROADCAST BIT) 消息结束中断使能(EOM INTERRUPT ENABLE) 1553A/B*选择(1553A/B* SELECT) 方式码格式(MODE CODE FORMAT) 广播格式(BROADCAST FORMAT) RT-RT格式(RT-RT FORMAT) 注:位14-8和位4、3只有在增强模式(配置寄存器#位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)。若上述两个条件没有满足,则ACE只能使用非扩展BC控制字,只包含位7、6、5、2、1、0。
如果使用非扩展BC控制字,“状态置位”条件可以是RT状态字的RT地址域不匹配,也可以是8位非保留位中有任何位置位。有个例外情况是,对于广播指令接收位(RT状态字位4),“状态置位”条件是其值与屏蔽广播位(BC控制字位5)值不同。
当使用扩展BC控制字时,“状态置位”条件可以是RT状态字的RT地址域不匹配,也可以是8位非保留位中有任何位置位并且其在BC控制字中相应屏蔽位置“0”。在扩展BC控制字模式,如果相应屏蔽位置“1”,则忽略收到的RT状态字相应位,进而对“状态置位”条件产生影响。
(位14)屏蔽消息错误位(MESSAGE ERROR BIT MASK):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位为“0”,则当RT状态字中消息错误位(位10)置“1”时,状态置位条件产生。如果该位为“1”,则RT状态字消息错误位无论何值都不产生状态置位条件。
(位13)屏蔽服务请求位(SERVICE REQUEST BIT MASK):该位只在增强模式使能(配置寄
- 7 -
存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位为“0”,则当RT状态字中服务请求位(位8)置“1”时,状态置位条件产生。如果该位为“1”,则RT状态字服务请求位无论何值都不产生状态置位条件。
(位12)屏蔽“忙”位(BUSY MASK):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位为“0”,则当RT状态字中“忙”位(位3)置“1”时,状态置位条件产生。如果该位为“1”,则RT状态字“忙”位无论何值都不产生状态置位条件。
(位11)屏蔽子系统标志位(SUBSYSTEM FLAG BIT MASK):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位为“0”,则当RT状态字中子系统标志位(位2)置“1”时,状态置位条件产生。如果该位为“1”,则RT状态字子系统标志位无论何值都不产生状态置位条件。
(位10)屏蔽终端标志位(TERMINAL FLAG BIT MASK):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位为“0”,则当RT状态字中终端标志位(位0)置“1”时,状态置位条件产生。如果该位为“1”,则RT状态字终端标志位无论何值都不产生状态置位条件。
(位9)屏蔽保留位(RESERVED BITS MASK):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位为“0”,则当RT状态字中3个保留位(位5-7)不全为“0”时,状态置位条件产生。如果该位为“1”,则RT状态字保留位无论何值都不产生状态置位条件。
)并(位8)重试使能(RETRY ENABLE):该位只在增强模式使能(配置寄存器#3位15置“1”且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位为“0”,消息不会重试。如果该位为“1”,并且配置寄存器#1位4置“1”(重试使能),则响应超时和格式错误的时消息重试。
如果该位为“1”,并且配置寄存器#1位4(重试使能位)置“1”,并且配置寄存器#4位10(1553A且消息错误重试位)置“1”,并且BC控制字位3(1553A/B*选择位)置“1”,则RT状态字中消息错误位(位10)为“1”时,消息重试。
(位7)总线通道A/B*(BUS CHANNEL A/B*):选择消息在通道A处理还是通道B,为“1”选通道A,为“0”选通道B。
(位6)离线自测(OFF-LINE SELF-TEST):如果该位置“1”,则使能离线自测。在离线自测消息中,1553发送机被禁止,在外部1553总线上没有活动。离线自测时,根据曼彻斯特II码串行编
- 8 -
如果该位为“1”,并且配置寄存器#1位4(重试使能位)置“1”,并且配置寄存器#4位9(状消息重试的次数由配置寄存器#1位3(两次/单次*重试位)定义,为“0”重试一次,为“1”
态置位重试位)置“1”,则RT状态字出现“状态置位”条件时,消息重试。
重试两次。第一次和第二次重试的通道选择(不变或更换)由配置寄存器#4位8、位7定义。
码后输出,然后直接由选中的总线通道解码输入,通过这种方式可以练习ACE的数字协议部分。在消息处理后,用户可以通过读回送字以及块状态字的回送测试失败位(位8)来确定离线自测成功还是失败。
(位5)屏蔽广播位(MASK BROADCAST BIT):如果配置寄存器#4位11(屏蔽广播使能/异或*)为“0”,并且该位为“1”,则RT状态字广播指令接收位的期望值变为“1”而不是“0”,也就是说,广播指令接受位为“0”将导致“状态置位”条件。
如果增强模式使能(配置寄存器#3位15置“1”),并且扩展BC控制字使能(配置寄存器#4位12置“1”),并且配置寄存器#4位11(屏蔽广播使能/异或*)置“1”,此时该位用作屏蔽位,而不是与状态字广播指令接受位进行异或操作。在这种情况下, RT状态字广播指令接收位的“状态置位”条件就为BC控制字中屏蔽广播位为“0”,并且RT状态字广播指令接收位为“1”。
(位4)消息结束中断使能(EOM INTERRUPT ENABLE):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果中断寄存器位4(BC消息/RT子地址控制字消息结束位)置“1”,该位置“1”则会在当前消息结束时触发中断请求。
(位3)1553A/B*选择(1553A/B* SELECT):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。如果该位置“0”,BC核实RT响应是否与MIL-STD-1553B协议一致,也就是,对于T/R*位为“1”并且方式码最高有效位(位4)也为“1”的方式码指令,RT响应状态字和一个数据字。另外,对于“1553B”响应,假设配置寄存器#4位9(状态置位重试)为“0”,RT状态字消息错位置位时,BC不进行消息重试。
如果该位置“1”,BC核实RT响应是否与MIL-STD-1553A协议一致,也就是,对于T/R*位为“1”并且方式码最高有效位(位4)也为“1”的方式码指令,RT只响应状态字,没有数据字。另外,对于“1553A”响应,如果重试使能(配置寄存器#1位4置“1”),并且配置寄存器#4位10(1553A且消息错误重试位)置“1”,并且BC控制字位8(重试使能位)置“1”,则RT状态字中消息错误位(位10)为“1”时,消息重试。另外,如果该位置“1”,对于T/R*位为0的方式指令无数据字。
假设配置寄存器#4位9(状态置位重试)为“0”,RT状态字消息错位置位时,BC不进行消息重试。
(位2、位1、位0)方式码、广播、RT-to-RT(MODE CODE、BROADCAST、RT-to-RT):1553B消息格式选择如下: Bit 2 (MODE CODE) 0 0 0
Bit 1Bit 0(BROADCAST) (RT-to-RT) 0 0 1 - 9 -
消息格式 BC-to-RT(若T/R*=0)或RT-to-BC(若T/R*=1) RT-to-RT 广播 0 1 0 0 1 1 1 1
1 0 0 1 1 1 0 1 0 1 RT-to-RTs(广播) 方式码 未使用 广播方式码 未使用 在RAM中,BC控制字之后是MIL-STD-1553B指令字。这个字由1553协议逻辑读取并在1553
总线上传输。指令字后是第二条指令字(如果有)或者是将要发送的数据字,再之后是为接收回送字的位置,再后是为接受RT状态字和接收数据字的位置。假设在BC响应超时发生之前RT响应,这些字就存储在共享RAM中。如果回送测试通过,RT在BC响应超时之前响应一个正确的RT状态字(正确的RT地址和期望的低11位值)以及正确数目的有效数据字,在BC消息结束时序中块状态字将被改写表明“消息结束,无错误”。注意,对于RT-to-RT传输,BC对来自发送RT和接收RT的状态字都要检查。
- 10 -
描述符堆栈(DESCRIPTOR STACK)
主处理器通过读取各个消息的描述符块的第一个字(块状态字)来确定消息状态。在BC模式,块状态字包含信息关系到消息是正在处理还是已经完成、消息由哪条总线通道发送以及消息中是否有错误。BC块状态字位映射描述如下: 表37-BC模式块状态字(BC MODE BLOCK STATUS WORD) BIT 15(MSB) 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(LSB)
(位15)消息结束(EOM):在BC消息完成后置“1”,无论消息中是否有错误。
(位14)消息开始(SOM):在BC消息开始时置“1”,并在消息结束时清零。
(位13)通道B/A*(CHANNEL B/A*):如果消息在通道A上处理该位置“0”,在通道B上置“1”。
(位12)错误标志(ERROR FLAG):位10-8中有一位或多位置位,则该位置“1”,表明消息中有格式错误、响应超时或回送测试失败等错误发生。
如果该位置“1”,并且ACE设置为处理器接口的“透明模式”,并且位11-7均为“0”,那么表明发生了握手失败。有两种情况可能导致握手失败(对于20MHz时钟输入最大分配时间为4.4us,16MHz为4.0us,12MHz为3.5us,10MHz为3.2us):
1)ACE数据传输请求(DTREQ*)引脚输出信号发出后,在分配时间内,数据传输确认(DTGRT*)2)处理器传输周期结束时(由READYD*引脚下降沿指示),STRBD*引脚输入信号保持低电平引脚未收到输入信号;
时间长于分配时间。在缓存模式结构(buffered mode configuration)下STRBD*保持低电平太
- 11 -
DESCRIPTION 消息结束(EOM) 消息开始(SOM) 通道B/A*(CHANNEL B/A*) 错误标志(ERROR FLAG) 状态置位(STATUS SET) 格式错误(FORMAT ERROR) 无响应超时(NO RESPONSE TIMEOUT) 回送测试失败(LOOP TEST FAIL) 屏蔽状态置位(MASKED STATUS SET) 重试计数(RETRY COUNT)位1 重试计数(RETRY COUNT)位0 数据块传输良好(GOOD DATA BLOCK TRANSFER) 状态地址错误/无间隙(WRONG STATUS ADDRESS/NO GAP) 字计数错误(WORD COUNT ERROR) 不正确同步类型(INCORRECT SYNC TYPE) 无效字(INVALID WORD) 注:在BC模式,如果消息重试,块状态字反映的是最后一条消息重试的结果。
长时间不会导致握手失败。
(位11)状态置位(STATUS SET):如果该位置“1”,则说明从响应RT收到的RT状态字低11位中包含非期望值。通常情况下低11位预期值为“0”,但存在一个例外:如果非增强模式使能或者广播屏蔽使能/异或位(配置寄存器#4位11)为“0”,并且消息的BC控制字中屏蔽广播位(位5)置“1”,那么RT状态字中广播指令接收位预期值为“1”而非“0”。注意,BC控制字的屏蔽位(位14-9)对该位的值没有影响。
(位10)格式错误(FORMAT ERROR):如果该位置“1”,则说明接收到的消息版本存在一个或多个不符合1553消息有效性标准的错误(同步、编码、奇偶性、位计数、字计数等),或者收到的RT状态字的RT地址域不正确。
(位9)响应超时(RESPONSE TIMEOUT):如果该位置“1”,则说明RT无响应或者在BC无响应超时时间之后响应。在非增强模式(配置寄存器#3位15置“0”),BC无响应超时时间为17.5-19.5us。在增强模式,通过配置寄存器#5位10和位9可编程改变BC无响应超时时间,可选值大约为18.5、22.5、50.5或130us。
(位8)回送测试失败(LOOP TEST FAIL):回送测试是对BC模式下的每条消息的发送版本执行的,检查RT收到的版本是否正确。另外对BC发送的每条消息的最后一个字与收到的版本进行逐位比较,检查是否一致。若上述两种情况有一种检查不正确,则回送测试失败。
注意,如果在非增强模式(配置寄存器#3位15置“0”),位7-0将总是为“1”。
(位7)屏蔽后状态置位(MASKED STATUS SET):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)时适用。下面两种情况只要有一种发生,该位置“1”:
(1)如果BC控制字中一个或多个状态屏蔽位(位14-9)为“0”,并且收到的RT状态字相应位为“1”。如果屏蔽保留位(位9)为“0”,则只要RT状态字中3个保留位有一个为“1”即导致该位置“1”。
(位6、5)重试计数(RETRY COUNT):该位只在增强模式使能(配置寄存器#3位15置“1”)并且扩展BC控制字使能(配置寄存器#4位12置“1”)并且重试使能(配置寄存器#1位4置“1”)并且各自BC控制字的重试使能位(位8)置“1”时适用。还会受到配置寄存器#4位10(1553A且消息错误重试位)、位9(状态置位重试位)以及BC控制字位3(1553A/B*选择位)的影响。消息重试次数如下表所示:
(2)如果广播屏蔽使能/异或*位(配置寄存器#4位11)为1,并且BC控制字的屏蔽广播位(位5)为0,并且收到的RT状态字的广播指令接收位(位4)为“1”。另见表-41和表-42。
如果握手失败,消息将被认为无效。在握手失败发生后,ACE将立即终止BC帧的处理。
- 12 -
Bit 6 0 0 1 1
Bit 5 0 1 0 1 (RETRY COUNT 1) (RETRY COUNT 0) 重试次数 0 1 N/A 2 (位4)数据块传输良好(GOOD DATA BLOCK TRANSFER):该位只在增强模式使能(配置寄存器#3位15置“1”)适用。在一条有效(无错误)的部分类型消息完成后置“1”,包括类型:RT-to-BC传输、RT-to-RT传输以及带数据的发送方式码消息。该位在无效的消息后置“0”。对于BC-to-RT传输、带数据的接收方式码消息以及不带数据方式码消息,该位总是置“0”。回送测试对该位值无影响。该位可以用来判断一个RT-to-RT传输的发送部分是否出错,如果该位和错误标志位(位12)同时置“1”,则说明发送RT正确响应,但在消息的接收部分出现错误。
(位3)状态地址错误/无间隙(WRONG STATUS ADDRESS/NO GAP):该位只在增强模式使能(配置寄存器#3位15置“1”)适用。下面两种情况只要有一种发生,该位置“1”:
(位2)字计数错误(WORD COUNT ERROR):该位只在增强模式使能(配置寄存器#3位15置“1”)适用。该位对RT-to-BC传输、RT-to-RT传输以及带数据的发送方式码消息有效。置“1“则表示响应RT未发送正确数目的数据字。对于BC-to-RT传输、带数据的接收方式码消息以及不带数据方式码消息,该位总是置“0”。
(位1)不正确同步类型(INCORRECT SYNC TYPE):该位只在增强模式使能(配置寄存器#3位15置“1”)适用。置“1”则表示RT在响应时在状态字中使用了数据同步或者在数据字中使用了指令/状态同步。
)适(位0)无效字(INVALID WORD):该位只在增强模式使能(配置寄存器#3位15置“1”用。置“1”则表明RT响应的一个或多个字包含一个或多个以下错误类型:同步域错误、曼彻斯特编码错误、奇偶检验错、位计数错。
(1)收到的RT状态字中RT地址与指令字中RT地址不一致。
(2)间隙检查使能(配置寄存器#5位8置“1”),并且RT响应时间少于4us。
BC消息块描述符第二个字为时间标签字。在BC消息开始(SOM)序列和消息结束(EOM)
序列中都将内部时间标签寄存器的当前值写入时间标签字。
BC消息块描述符第三个字在非增强BC模式时保留。在增强模式,并且消息间隔计时器使能(配
置寄存器#1位5置“1”),该位置保存设定的消息间隔时间。
BC消息块描述符第四个字用来存储消息块地址字。消息块地址必须在处理消息先由主处理器加
- 13 -
载。然后,它将被ACE存储器管理逻辑用作开始访问消息块的指针。
对于非增强BC模式,共享RAM地址空间中还有两个固定位置需要主处理器初始化:堆栈指针和消息计数器。堆栈指针处于地址0100(活动区A)或0104(活动区B)。堆栈指针应被初始化指向待处理的第一个消息的消息块描述符的首字(块状态字)。消息计数器处于地址0101(活动区A)或0105(活动区B)。活动区消息计数器必须由处理器预先加载待处理消息数的补码(例FFFE代表消息数为1)。每条BC消息处理完成后,消息计数器加1。
注意,如果BC设定为帧自动重复模式,初始堆栈指针和初始消息计数器必须被初始化。
- 14 -
BC软件初始化序列(BC SOFTWARE INITIALIZATION SEQUENCE)
以下软件序列是主CPU在电源打开后将ACE配置为BC模式需执行的标准步骤。对于大多数应用,许多步骤可以跳过。
(1)通过将0001(hex) 写入启动/复位寄存器,执行软件复位。
(2)如果有任何增强模式功能(例如重试、消息间隔、扩展BC控制字等)被使用,通过将8000(hex) 写入配置寄存器#3,激活增强模式。
(3)初始化中断屏蔽寄存器。对于大多数BC应用,BC帧结束(位3)中断应该被使能。
(4)初始化配置寄存器#1。对于BC模式,位15和位14必须都置“0”。当前存储器B/A*需要选定。
(5)初始化配置寄存器#2。对于BC模式,强烈推荐256字边界无效位(位10)置“1”从而使得ACE的地址空间得到最好的使用。如果主处理器的中断请求输入信号是电平而非脉冲则电平/脉冲*中断请求位(位3)应置“1”。时间标签分辨率(位9-7)应用来初始化时间标签寄存器分辨率。默认分辨率(“000”)为64us/LSB。
(6)初始化配置寄存器#3。如果任何该寄存器的低15位或任何其他增强模式特性被使用,当该寄存器被写时增强模式使能位(位15)必须保持为“1”。
(7)初始化配置寄存器#4。
(8)初始化配置寄存器#5。
(9)如果需要,初始化时间标签寄存器。需要注意的是,通过将启动/复位寄存器的时间标签复位(位3)写入“1”,则在BC启动的同时,时间标签寄存器清零,这可以作为步骤(15)的一个部分。
(10)如果使用帧自动重复模式(配置寄存器#1的帧自动重复位和内部触发使能位都置“1”),初始化BC帧时间寄存器。这个寄存器分辨率被设定为100us/LSB。
(11)将堆栈的开始位置加载到活动区堆栈指针RAM位置。如果使用帧自动重复模式,活动区初始堆栈指针同样需要加载。
(12)初始化活动区堆栈。对每个即将被处理消息的消息描述符,其中消息块地址提供各个BC消息块首字(BC控制字)的指针,消息块地址必须由CPU写入。如果使用消息间隔时间,则消息描述符中消息间隔时间字同样必须为每条消息写入。消息间隔时间分辨率为1us/LSB。消息间隔时间指当前消息开始到子序列消息开始的时间。如果这个时间少于当前消息所需要的时间,子序列消息开始前的间隙默认为最小值大约9us。如果在处理BC帧的过程中需要查询块状态字,建议由主CPU
- 15 -
将块状态字初始化为零。
(13)将BC控制字、指令、要发送的数据字加载到各自BC消息块。可选地,预先回送字位置应该加载与BC将要发送的最后一个字不同的内容。主处理器必须确保在要发送的最后一个字后有充足的地址位置预留给回送字、接收的状态字和数据字。
(14)活动区消息计数器位置应该加载帧中需要处理的消息数的补码。如果使用帧自动重复模式,活动区初始消息计数器RAM位置同样需要加载。
(15)如果外部触发使能位(配置寄存器#1位7)为“0”,BC帧的起始必须执行BC启动操作,通过将0002(hex)写入启动/复位寄存器实现。如果外部触发使能位置“1”,BC帧可以由BC启动操作起始,也可以由EXT_TRIG引脚输入一个上升沿实现。
- 16 -
因篇幅问题不能全部显示,请点此查看更多更全内容