当前位置:刘伯温火凤凰公式网 > 三模冗余 >

DEasy TMRtool V160 使用说明书

  DEasy TMRtool V1.6.0 使用说明书_电子/电路_工程科技_专业资料。三模冗余系统简称 TMR(Triple Modular Redundancy),DEasy TMR Tool解决了传统三模设计工具在进行三模设计中存在的问题和不足, 能使用户简单快速地实现三模冗余设计,极大提高了用户在 FPGA 设计中的可靠性

  1 一、DEasy TMRtool V1.6.0 简介 ............................ 1 (一)三模设计的作用 ................................... 2 (二)三模设计中的问题 ................................. 2 1.触发器的输入信号来自异步时钟域 ................ 3 2.异步 FIFO ..................................... 4 二、 DEasy TMRtool V1.6.0 软件的功能 ..................... 6 (一)实现三模冗余设计规则检查 ......................... 6 (二)可深入黑盒子模块内部进行规则检查 ................. 6 (三)定制特殊的模块,解决三模设计难题 ................. 7 (四)实现三模冗余设计结果自动修正 ..................... 8 三、DEasy TMRtool V1.6.0 软件使用说明 .................... 8 (一)工作流程和界面介绍 ............................... 8 (二)软件主界面 ....................................... 9 (三)设计输入和设计解析 ............................... 9 (四)输入管脚时钟域设置 ............................... 9 (五)三模设计规则检查 ................................ 11 (六) 三模冗余设计模块生成 ........................... 14 2 (七)修改 XTMR 结果 EDIF 文件 .......................... 15 四、DEasy TMRtool V1.6.0 设计实例 ....................... 16 (一)跨时钟域信号处理 ................................ 16 (二)跨时钟模块 ...................................... 18 (三)FIFO ............................................ 19 3 一、DEasy TMRtool V1.6.0 简介 三模冗余系统简称 TMR(Triple Modular Redundancy),是最常 用的一种容错设计技术,被广泛应用在需要高可靠性和安全性的 控制领域中。三个模块同时执行相同的操作,以多数相同的输出 作为表决系统的正确输出,通常称为三取二。三个模块中只要不 同时出现两个相同的错误,就能掩蔽掉故障模块的错误,保证系 统正确输出。由于三个模块互相独立,两个模块同时出现错误事 件概率极小,从而极大的提高了系统的可信性。三模冗余技术以 其简单、高可靠的特性,被广泛使用在针对 FPGA 中单粒子翻转 (Single-Event Upset,SEU)的容错验证。 三模冗余即可由用户手动完成,也可依靠工具完成。传统的 三模冗余工具, 可以实现三模冗余设计, 也可进行配置被冗余项, 但实际使用过程中,我们发现用户在使用传统工具进行添加三模 冗余设计时,反而对整个 FPGA 系统设计,带来很多问题和困难, 其往往不仅不能增加系统的可靠性,还会带来很多不易调试的错 误。鉴于此,目前用户在进行 FPGA 设计中,很少使用三模冗余 工具进行设计。 北京数易神州科技有限公司设计的 DEasy TMR Tool,根据多 年三模冗余设计的实践经验,从用户实际使用角度对三模冗余设 计工具进行了重新开发和完善。该工具解决了传统三模设计工具 在进行三模设计中存在的问题和不足,能使用户简单快速地实现 三模冗余设计,极大提高了用户在 FPGA 设计中的可靠性。 1 (一)三模设计的作用 基于 SRAM 工艺的 FPGA 可以根据不同功能需要反复编程, 其性能与容量远远高于反熔丝和 Flash 工艺的 FPGA。在国内外航 天器电子系统中应用最为广泛的就是 Xilinx 公司的 Virtex 各系列 FPGA 产品。 基于 SRAM 的现场可编程门阵列(Field Programmable Gate Array)对于带电粒子的辐射特别敏感,尤其是近年来高密度集成 芯片的出现,电路容量增大、操作电压降低使得它们在辐射环境 下的可靠性降低,粒子和 PN 结相互作用引起一种暂态故障,采 用三模冗余技术能有效的排除故障解决根本问题。 (二)三模设计中的问题 由于 FPGA 的设计非常复杂,为保证其设计的可靠性,通常 采用三模冗余设计来保证整个系统的可靠性。但是不完善的三模 冗余设计工具本身会给 FPGA 冗余设计带来很多问题和错误。如 果不能解决工具自身存在的问题和不足,三模冗余设计,不仅不 能提高系统的可靠性, 还会降低系统的可靠性, 甚至使系统出错。 整个 FPGA 设计包含多个不同时钟域,当信号穿过不同的时 钟域时,需要使用特殊技巧的电路设计,以保证信号的正确性。 这些特殊电路设计,其复杂度本身就很高,而且又要实现三模冗 余技术,使得整个系统设计更加复杂,不仅不能实现容错功能, 还会带来新的错误。 2 1.触发器的输入信号来自异步时钟域 以下图为例:寄存器分两组 第一组是 source_r,它的时钟是 clk_0; 第二组是 data_tr0、 data_tr1 和 data_tr2, 它们的时钟是 clk_1。 source_r 到 data_tr0、 data_tr1 和 data_tr2 三个触发器的路径 长短不同,source_r 信号到达三个目的地的时间也不同。 clk_0 和 clk_1 是异步时钟, 它们之间的相位差不停的在变化, 有时, 两个时钟的上升沿的间距会很小, 甚至为零。 此时, data_tr0、 data_tr1 和 data_tr2 的输入信号的建立时间, 可能无法得到保证, 三个触发器可能会得到不同的数值。这就是一个不定态,这种不 定态会经常发生,由于不定态的存在,它不仅会使三模冗余电路 失效,而且还会引入其他的奇怪错误,给系统调试,带来极大的 困扰。 图 1 跨时钟域寄存器 3 2.异步 FIFO 图 2 FIFO 结构图 上图是异步 FIFO 的结构图, 写、 读时钟分别是 clk_1 和 clk_2, 它的状态显示(Status)部分,信号要跨越 clk_1 和 clk_2 两个时 钟域,来产生“空”和“满” 。在对这种异步 FIFO 实现三模冗余 设计时,它的三个相同的状态显示(Status)部分,会输出信号不 相同的信号。这是因为: (1)由于信号传输路径的不同,信号到达时间不同。 (2) clk_1 和 clk_2 是异步时钟, 它们之间的相位差不停的在 变化,有时,两个时钟的上升沿的间距会很小,甚至为零。这些 情况会带来信号的不确定性,使整个系统出现不定态。加入传统 的三模冗余设计后,由于三个模组在同一时刻可能输出不同的 4 “空”和“满”信号,使得其周边电路会产生不同的动作,整个 三模设计无法同步,出现一些不易分析的错误。 传统三模冗余设计中,还有很多问题需要解决。比如高速 FPGA 芯片中, 传输路径的延迟已经大于逻辑电路的延迟。 此时如 何保证三个模组的电路同步,如何保证裁决电路的建立和保持时 间,以及如何保证整个三模系统精确同步,这些问题都是三模冗 余设计中存在的重要难题。 还有,尽量不要使用 LUT 实现移位寄存器、RAM 和 FIFO 等 组件,这会给配置 RAM 的验证带来错误。 总之,目前在三模设计中仍存有很多疑难问题,这些问题人 工解决起来非常困难,甚至无法解决。而采用 DEasy TMR Too 则 可方便地解决这些问题。 (1)三模设计本身就是一个复杂的领域,需要专业的知识 和技能。设计工程师应该集中精力在他自己的设计领域。三模设 计的难题,应该留给三模设计的专用软件和专业工程师来处理。 (2)因为很多 IP 模块是 ISE 的 CORE 自动产生的,高级语言 代码不可视,只是一个黑盒子,工程师无法了解其内容,也无法 对其进行修改。 使用 DEasy TMR Tool 提供定制的三模异步 FIFO,替换 ISE 的 IP 核生成工具——CORE Generator 产生的加密 FIFO,即可实现 跨时钟域模块的三模冗余设计,这种方法不仅实现设计的高可靠 性,而且保证了三个异步 FIFO 动作的一致性,极大提高了设计效 5 率。 二、 DEasy TMRtool V1.6.0 软件的功能 (一)实现三模冗余设计规则检查 系统可依据规则对三模冗余设计进行全面的检查,对不符合 规则的设计给出警告和提示。DEasy TMR Tool 主要是通过解析整 个 FPGA 设计的时钟树,检查出 FPGA 设计中时钟域的划分,检测 出哪些信号是跨时钟域的时序部件和容易产生不定态部分。 DEasy TMR Tool 设计规则检测功能, 通过对 ISE 综合后的 NGC、 NGO 文件, 和 XTMR 产生的结果 EDIF 文件的规则检查, 将违背三 模设计规则的部分检查出来。如下图中红色箭头所示。 图3 (二)可深入黑盒子模块内部进行规则检查 使用 DEasy TMRtool 工具,可以深入到黑盒子模块和 ISE 的 6 IP 核生成工具——CORE Generator 产生的加密 CORE 的模块中, 查 找出那些跨时钟域的寄存器,即“读”和“写”的两组指针寄存 器 pntr_gc。这两组寄存器,需要做特殊的处理,才能实现正确的 三模冗余设计。方法如下: 在 XTMR 工具中,将以上两组指针寄存器 pntr_gc,设置为 “Converge” 或是 “Don’t Touch”类型。运行的结果,如下图 所示: 图 4 异步 FIFO 的三模冗余设计 上图红色方框内,是不加三模冗余的触发器组─pntr_gc。 (三)定制特殊的模块,解决三模设计难题 很多特殊的模块,无法进行三模冗余设计。而采用 DEasy TMRtool 工具的 Core-Generation 功能, 可以定制专用三模设计模 块。DEasy TMRtool 提供了跨时钟域模块和时钟管理器模块。 7 (四)实现三模冗余设计结果自动修正 在使用 XILINX 的 XTMR 软件产生 EDIF 文件后, 有些三模冗余 设计的模块仍然存有错误,DEasy TMRtool 工具能自动修正其中 的错误。DEasy TMRtool 主要针对跨时钟域硬核 FIFO 的修正,解 决跨时钟域产生的不定态和三个模组不同步的问题。 三、DEasy TMRtool V1.6.0 软件使用说明 (一)工作流程和界面介绍 DEasy TMRtool 的工作流程,如下图所示: 设计解析 输入管脚时钟域指定 三模设计规则检查 三模设计模块自动生成 修改源代码 三模设计结果修正 XTMRtool Deasy TMRtool 图 5 工作流程图 下面详细介绍软件操作界面。 8 (二)软件主界面 软件主界面如下图所示。 工程设置窗口 结果显示 窗口 工作流程和命令 窗口 图 6 软件主界面 (三)设计输入和设计解析 指定用户设计的 ISE 项目目录和 NGC 文件。 点鼠标右键,弹出菜单——“添加项目” ,然后显示文件管 理器窗口,指定用户设计的 ISE 项目目录和 NGC 文件。 DTMR 软件解析整个 FPGA 设计的时钟树, 划分时钟域, 找出 跨时钟域的信号和 FIFO 等。 (四)输入管脚时钟域设置 将 FPGA 外部的 INPUT 和 INOUT 管脚, 指定其所属的时钟域。 这一步需要人工指定。因为管脚信号来自其他芯片,它所属的时 9 钟域,无法通过解析 FPGA 设计得到,如下图所示。 图7 图中,data_in 信号,来自其他芯片的触发器 reg_0,其时钟 是 clk_e。但 data_in 信号进入 FPGA 后,进入触发器 reg_1,它的 时钟是 clk_0。所以,data_in 所属的时钟域,需要人为指定。然 后, DEasy TMR Tool 就可以检查出 reg_1 是不适合直接做三模冗余 设计的。需要做特殊处理。 图8 10 双击右侧栏目,弹出下拉式选择框,选择该行输入管脚所属 的时钟域。 在另一个选项卡中,显示整个 FPGA 设计的时钟树结构。 图9 (五)三模设计规则检查 DEasy TMR Tool 通过解析整个 FPGA 设计的时钟树, 可以检查 出 FPGA 设计中的时钟域的划分,并检测出哪些信号是跨时钟域 的时序部件。这些器件不易直接做三模冗余设计,需要做特殊处 理。 11 图 10 上图说明了不宜做三模冗余设计的时序部件,其原因是该时 序部件是跨时钟域的。 显示内容分两类: 1.跨时钟域的时序器件和触发器: 是时序部件,如触发器、同步 RAM、乘法器等。 钟信号; 是时 是 Input 管脚。[ ]里是该时序部件的时钟, “: ” 后是该时序部件,或 Input 管脚的名 2.跨时钟域的硬核 FIFO: 是 FPGA 芯片内部的硬核异步 FIFO。 12 在另一个选项卡中,显示内容是以时钟对分组的次序排列 的。每一个时钟对下面的树叶,是那些跨越此时钟对的触发器。 时钟对有两种类型: 1.FPGA 内部时钟对: 2.FPGA 管脚到内部时钟对: 此部分内容,请参考 3.4 节。 图 11 13 (六) 三模冗余设计模块生成 图 12 在 DEasy TMR Tool 中,产生跨时钟域的模块,其原理图如下 图所示: Data_in Clk_0 Data_out Clk_1 Cross Clk Module 图 13 在此产生的模块,包括 NGC 文件,和用做黑盒子的 verilog 文件“cross_clk_reg_n.v” ,其中 n 是数据线的宽度。 该模块的 Clk_0 的频率,要小于 Clk_1 的频率。 需注意的问题: 当来自外部管脚的信号(INPUT) ,其时钟域不属于 FPGA 芯 片内部的任意一个时钟域时,需要做特殊处理。 例如串行通讯的信号,此类信号没有单独的时钟管脚。而接 收端也没有相同频率的时钟用于接收数据,而是用较大频率的时 14 钟,对该信号采样后,得到该串行通讯的数据。此时,需要将和 串行通讯的信号同源的时钟信号,引到 FPGA 芯片。如下图所示: Cross_clock regs_8 Cross_clock regs_8 图 14 图中的时钟是差分信号,对保证时钟信号的质量有很大用 处,尤其是频率较高时。 (七)修改 XTMR 结果 EDIF 文件 图 15 FPGA 芯片内部具有自身的硬核 FIFO,FIFO 内部的逻辑,不 可能为三模冗余设计而改变;若强行加入三模设计后,硬核 FIFO 会产生不定态,损坏三模系统的可靠性。为解决这一问题,我们 15 在 XTMR 的结果输出文件 edif 文件中, 为三个硬核 FIFO 加入同步 逻辑,去除不定态,此时的三模冗余设计就是真正可靠的 FPGA 设计了。具体操作很简单,在 DEasy TMR Tool 软件系统中只要指 定要修改的 edif 文件 (该文件是 XTMR 工具的输出结果文件) , 按 “Modify”键即可。 四、DEasy TMRtool V1.6.0 设计实例 下面提供了三个三模冗余设计的例子,代表了三模设计中的 几种疑难问题。设计例子的源码和 ISE 项目,在软件安装目录的 子目录 example 里。 (一)跨时钟域信号处理 此例子的源文件和 ISE 项目,在 example\clock 目录下。下图 是此设计的原理图。 图 16 16 图中, 红色线是时钟信号线 个时钟: clk、 clk_0、 clk_1、 clk_2、clk_3。它们分为三组,其中的 clk_0、clk_1 为一组,因为 来自同一个时钟管理器 dcm_1,其相位差保持不变,其它时钟, 各为一组。在此设计中,很多触发器是跨时钟域的。 以 蓝 色 方 框 内 的 data_out_0 为 例 , 其 输 入 信 号 来 自 data_buf_0, 其时钟是 clk_1; 而 data_out_0 的时钟是 clk_2。 clk_1、 clk_2 属于不同的时钟分组,其相位差可能在不停的改变,这种跨 时钟域的触发器,变成三模冗余设计后,会产生不定态,产生错 误。有些触发器,输入信号来自不同的时钟,但两个时钟,属于 同一时钟分组,则不会产生以上错误。 图 17 以 data_buf_0 为例。其时钟是 clk_1 。其输入信号来自 source_r1,其时钟是 clk_0。因为 clk_0、clk_1 为一组,因为来自 17 同一个时钟管理器,其相位差保持不变,实现三模冗余设计后, 不会产生不定态。 (二)跨时钟模块 此例子的源文件和 ISE 项目,在 example\clock 目录下。它演 示了如何解决 3.1 中讲述的跨时钟域的错误。 该设计非常简单, 只有两个模块, 用来连接两个不同时钟域。 图 18 图中的两个模块是由 DTMR-tool 自动产生,只要在设计中直 接调用他们即可。此过程和 ISE 中的 CoreGenerator 非常类似。 18 图 19 在此产生的模块,包括 NGC 文件“reg_cross_clock_8.ngc” 、 和 用 做 黑 盒 子 的 verilog 文 件 “ cross_clk_reg_8.v ”。 将 cross_clk_reg_8.v 加入 ISE 的项目中,并把 reg_cross_clock_8.ngc 放在该 ISE 项目的同一目录下。 这样的设计,再送到 Xilinx 的 XTMR 工具,加上三模冗余, 就不会产生不定态了,就是一个成功的三模冗余设计。 (三)FIFO ISE 设 计 环 境 下 , FIFO 一 般 都 是 用 ISE 软 件 自 带 的 CoreGenerator 工具,自动产生 IP 核。但此 IP 核是一个 NGC 格式 的文件。NGC 格式是 XILINX 公司自己定义的一种不公开的文件 格式,用户无法了解。对用户来说,就是一个黑盒子。异步 FIFO, 在进行三模冗余设计时,满、空信号会产生不定态,不能直接使 用。 大容量的异步 FIFO,在 Vetex5 系列以上,有两种实现方法: 用 Block RAM 加逻辑实现,或是 FPGA 芯片内部的硬核 FIFO。下 面的例子就是解决这两个问题的。它的源码和 ISE 项目,在“软 19 件安装目录\trm_fifo_cross_clk_mx” 。 图 20 其中,fifo_inst_0 是硬核 FIFO,fifo_inst_1 是用 Block RAM 加 逻辑实现的。用 DTMR-tool 解析后的结果是这样的: 图 21 20 其中,fifo_inst_1 的逻辑部分: \fifo_inst_1/BU2/U0/gen_as.fgas/normgen.flblk/clkmod/cx.wrx/ pntr_gc_x_0 等信号是跨时钟域的触发器。在 XTMR 中,将这些触 发器设置为“don’t touch” ,就不会出现不定态了。其原理如下 图所示: 图 22 fifo_inst_0 是 FPGA 芯片内部的硬核 FIFO,它内部的触发器, 不可能做处理,要用其他方法。 21 图 23 在 XTMR 的结果输出文件 edif 文件中, 为三个硬核 FIFO 加入 同步逻辑,去除不定态。此时的三模冗余设计就是真正可靠的 FPGA 设计了。 22 23

http://idagoldadv.com/sanmorongyu/275.html
点击次数:??更新时间2019-07-24??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】