mil-std-1553b数据总线协议(编辑修改稿)内容摘要:

者同时对双口 RAM进行读或者写,当两者同时读或写时,进行相应控制,规定两者的访问优先级。 ②双口 RAM:它是整个芯片的数据存储区,用以存储不同工作方式下的各类字,是传输消息的内容数据,也是处理器与总线接口芯片通信的数据交换媒介 [18]。 ③并行通信控制接口 :该部分主要实现总线接口芯片与主处理器并行通信。 ④串行通信接口 :该部分即为了实现总线接口芯片的串行通信,在 FPGA中嵌入UART(通用异步收发器 ),可以与具有 UART的通信接口部件相连接,例如通过 RS232总线与 PC机进行串行通信。 总线接口寄存器模块功能 接口寄存器是以控制和状态寄存器来实现的,主要有以下几个寄存器 :远程终端命令字寄存器 :RT模式下,存储接收到的所有命令字和方式指令字。 接收命令字寄存器 :只在 RT的模式下使用,信息完整的接收后,命令字会从远程终端命令字寄存器送入此寄存器 [18]。 第一命令字寄存器 :存放 BC要发送的命令字,或者存放 RT一 RT传输的第一个命令字。 矢量字 /第二命令字 /方式指令数据寄存器 :在 BC模式下,可以存放 RT一 RT传输时的第二个命令字或者方式指令需要的数据字。 在 RT模式下,存放方式指令提取的矢量字。 第一状态字寄存器 :存放 RT返回的状态字,或者是 RT一 RT模式下 RT返回的第一个状态字。 同步 /第二状态字 /返回方式指令数据寄存器 :在 BC模式下,此寄存器既可以存放来自 RT一 RT模式下传输的第二个状态字也可以存放来自 RT的方式指令返回字 :RT模式下,作为存放带数据字的方式指令字的数据字的寄存器。 操作寄存器 :子系统用来控制总线接口的寄存器。 配置整个接口的功能选择。 方式指令寄存器 :RT接收到的方式指令 [14]。 南昌航空大学学士学位论文 15 4 1553B 总线接口具体设计与实现 总线 BC 功能 总线控制器 BC 是 1553B 总线上唯一可以发起和终止消息传输任务的终端。 一条总线上只可以存在一个总线控制器,它是 1553B 总线的指挥和调度者。 其 主要功能是,向系统中的远程终端发出指令,控制终端的行为。 包括发送广播指令,模式代码( mode code)指令;普通发送数据指令,普通接收数据指令。 作为总线控制器 ,要实现的任务包括 : (1)数据字的正确接收 :包括接收器,同步检出,数据检出,曼彻斯特 n 码错误检出奇偶检测,位 /字计数 ; (2)数据字的发送 :包括发送控制,同步 /数据编码,时钟产生 ; (3)字 /消息的处理 :包括, a 接收部分,计数器,状态寄存器。 b 自测试部分。 c 主子系统接口部分,控制,数据地址,控制寄存器 ; d 存储器缓冲器部分 ; e 状态字译码部分,字计数识别,消息错误检出等任务 [18]。 作为 MILSTD 一 1553B 总线的通用接口应完成以下功能 : ①将总线上的串行信息流转换成处理机可以处理的并行信息或者与之相反 ; ②接收或发送信息时,能够识别或生成标准的 1553B 信息字和消息 ; ③完成与处理机之间的信息交换,这包括1553B 信息 地址的分配,命令字 (或状态字 )的译码或返回状态字、发送数据字等。 1553B 协议处理器 BC 功能模块设计 模拟收发器 模拟收 /发器是 BCR/T/MT 直接与传输电缆接口的关键部件, 1553B 总线采用的是双相码中的曼彻斯特码,本身包含了自定时的信息,同时它能与变压器祸合协调,十分适宜用于变压器祸合形式,电缆长度为 500 英尺左右航电综合系统中。 简要的说就是 将双电平曼彻斯特码转化为单电平曼彻斯特码,以及将单电平曼彻斯特码转化为双电平曼彻斯特码。 总线控制器 BC 设计 总线接口的每一种 类型的终端的设计都包括模拟收发器、总线接口模块、总线控制模块、处理机接口模块四部分,都需要完成字处理和消息处理,而 BC 是总线上唯一被安排为执行建立和启动数据传输任务的终端,被指派启动数据总线上信息传输任务的终端。 针对 BC 功能,其 FPGA 部分的逻辑结构如图 示。 南昌航空大学学士学位论文 16 外部时钟 外部控制信号 图 总线 控制器内部 结构图 下面将结构图中的各小模块进行设计说明。 消息发送器 在 BC 模式下,需要涉及 到发送指令文字,所以发送消息控制模块根据工作模式从接口寄存器中读取相应的指令字,从而判断消息传输模式是否带数据字等。 然后控制发送单元将指令字和数据字发送出去。 BC 在发送命令字的同时也对发出的命令字进行译码,包括提取 RT 地址,以及要发送数据字的个数,来产生控制信号提供给其他模块。 在 RT 模式只需要发送状态字、数据字和方式指令数据码,数据字计数需要从命令字的字计数字段提取,方式指令数据码是 BC 通过方式指令字读取的 RT 状态,包括上一状态字、上一命令字、矢量字等。 Moore 型有限状态机的输出只与有限状态机的当前状态 有关,与输入信号的当前值无关。 在图 中描述了 Moore 型有限状态机的示意图 . 时钟产生模块 存储器接口 双口RAM 状态字译码 /接收数据字 发生器控制 检错控制 发送超时监测 数字接收器 数字发送器 串行通信接口 并行通信接口 地址控制 发送命令字 南昌航空大学学士学位论文 17 input state output current state clok reset 图 Moore 型有限状态机示意图 Moore 型有限状态机在时钟 clock 脉冲的有效边沿后的有限个门延时后,输出达到稳定值。 即使在一个时钟周期内输入信号发生变化,输出也会在一个完整的时钟周期内保持稳定值而不变。 输入对输出的影响要到下一个周期才能反映出来, Moore 型有限状态机最 重要的特点就是将输入与输出信号隔离开来。 单进程 Moore 型有限状态机 ,其 VHDL 语言描述如下: Library ieee。 Use。 Entity moore is Port(datain : in std_logic_vector(1 downto 0)。 Clk,clr : in std logic。 q : out std_logic_vector(3 downto 0)。 End moore。 Architecture behav of moore is Type st_type is (st0,st1,st2,st3,st4)。 Signal c_st : st_type。 Begin Processs(clk,clr) Begin If clr=’1’ then C_st=st0。 q=”0000”。 Elsif clk event and clk=’1’ then Case c_st is When st0=if datain”10” then c st=st1。 Else c_st=st0。 end if。 q=”1001”。 state register state logic output logic 南昌航空大学学士学位论文 18 When st1=if datain”11” then c st=st2。 Else c_st=st1。 end if。 q=”0101”。 When st2=if datain”01” then c st=st3。 Else c_st=st0。 end if。 q=”1100”。 When st3=if datain”00” then c st=st4。 Else c_st=st2。 end if。 q=”0010”。 When st4=if datain”11” then c st=st0。 Else c_st=st3。 end if。 q=”1001”。 When others=c_st,=st0。 End case。 End if。 End process。 End behav。 其特点是组合进程和时序进程在同一个进程中,此进程可以认为是一个混合进程。 注意在此进程中, CASE 语句处于测试时钟上升沿的 ELSIF 语句中,因此在综合时,对 Q 的赋值操作必然引进对 Q 锁存的锁存器。 这就是说,此进程中能产生两组同步的时序逻辑电路,一组是状态机本身,另一组是由 CLK 作为锁存信号的 4 位锁存器,负责锁存输出数据 Q。 与多进程的状态机相比,这个状态机结构的优势是,输出信号不会出现毛刺现象。 这是由于 Q 的输出信号在下一个状态出现时,由时钟上升沿锁入锁存器后输出,即有时序器件同步输出,从而很好地避免了竞争冒险现象。 从输出的时序上看,由于 Q 的输出信号要等到进入下一状态的时钟信号的上升沿进行锁存,即 Q 的输出信号在当前状态中由组合电路产生,而在稳定了一个时钟周期后在次态 由锁存器输出,因此要比多进程状态机的输出晚一个时钟周期,这是此类状态机的缺点。 图 单进程 Moore 状态机的工作时序图: 图 单进程 Moore 型状态机的工作时序 南昌航空大学学士学位论文 19 寄存器 1: I/O 写 寄存器 寄存器的写操作 VHDL 语言描述如下 : write:proeess(strb, wr) FPGA 的 I/O 端口进程 begin if(wr’event and wr=’0’)then 写信号 wr 有效时继续执行该进程 if(ios=’0’ and strb=’0’)then 判断是 信息 否是写外部 I/O 端口 case addr is when”11111”=mandword=datadsp。 写入 I/O 地址 IF when”11110”=dataword=datadsp。 写入 I/O 地址 IE when”11101”=timerword=datadsp。 写入 I/O 地址 ID when others=null。 end case。 end if。 end if。 end proeess。 其操作波形如图 所示 :图中在 wr 下降沿,在 strb 和 ios 信号为低电 平时分别对 I/O 端口 1F, lE, 1D 都进行了写操作。 图 I/O 接口写操作 2: I/O 读寄存器 读 寄存器的 VHDL 实现如下 : read:process(strb, rd) 读 FPGA 的 I/O 进程 begin if(rd’event and rd=’0’)then 读信号 rd 有效时执行该进程 南昌航空大学学士学位论文 20 if(ios=’0’ and strb=’0’)then 判断端口 状态 case addr is when”11100”=datadsp=datal553。 读出 1553B 数据,地址 IC when”11011”=datadsp=statusl553。 读出 1553B 状态,地址 IB when”11010”=datadsp=timervalue。 读出计数器的值,地址 IA when other=datadsp=”zzzzzzzzzzzzzzzz”。 读其它 I/O 端 口则总线置为高阻状 态 end case。 end if。 else datadsp= “zzzzzzzzzzzzzzzz”。 end if。 end process: 计数器 计数器单元的功能是实现一个 4~12 微妙的计数器,如图 所示。 该计数器的输入信号有 :(l)clock32m, 32 兆赫兹的时钟输入信号。 (2)timerstart,计数器启动信号。 TIMRER DATAIN[8… 0] CLOCK32M TIMERSTART TIMERROR TIMERCLR TIMERCTL 图 计数器方框图 (3)timerclr,计数器清零信号 ; (4)timerctl,计 数器控制信号,当该端口收到一个高脉冲时,表示 F206 要写入新的计数值,该计数值由 F206 通过 I/O 地址 ID 写入 FPGA的寄存器 timerword; 计数器收到该信号后,就会把新的计数值装入计数周期单元中,该值由用户自己定义大小,它的取值范围 M 为 : 4 微妙 12 微妙 计数器的时钟周期 计数器的时钟周期 可算得, 128 384 之间; DATAIN[8… 0] CLOCK32M TIMERSTART。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。