AR# 10822

EXEMPLAR - LeonardoSpectrum で Virtex に TMR (Triple Module Redundancy) レジスタをインスタンシエートする方法

説明

キーワード : TMR, triple, redundancy, module, register, Leonardo, Spectrum, Exemplar, Leo, モジュール, レジスタ

重要度 : 標準

概要 :
Virtex シリーズには、Virtex RadHard (または Virtex QPro) と呼ばれる信頼性の高いデバイスがあります。 これらは、TMR (Triple Module Redundancy) 機能をインプリメントするために使用します。 RadHard デバイスをターゲットとして使用する場合の詳細については、(Xilinx Answer 12618) を参照してください。

Virtex アーキテクチャでは、トライ ステート バッファはパス トランジスタではなく、実際に配線された AND-OR ロジック構造となっています。 次の例では、TMR レジスタは配線された OR 機能を使用して TMR レジスタをインプリメントします。 これらのエレメントをクロス カップルして、多数決回路のブール ファンクションと同じファンクションを生成します。

また、FD セルは、任意のロジックで置換できます。 この回路では、配線 PIP が SRAM セルにより制御されるため、そのセルの欠陥は BUFE のみに影響し、出力には影響しません 複数のフリップフロップの配線 PIP が同時に破損しない限り、この回路は破損しません。

LeonardoSpectrum の ザイリンクス Virtex ライブラリには、TMR 機能をインプリメントするセルはありません。 ただし、TMR を作成することによって、機能をインプリメントできます。 たとえば、レジスタに TMR 機能が必要な場合、Virtex デバイスではこれを比較的容易に行うことができます。

ソリューション

1

Verilog 例

// Truth Table
// fd1 fd2 fd3 out
// 0 0 0 0
// 0 0 1 0
// 0 1 0 0
// 0 1 1 1
// 1 0 0 0
// 1 0 1 1
// 1 0 1 1
// 1 1 0 1
// 1 1 1 1

module tmr_reg (d_in, clk, q_buft);
input d_in, clk;
output q_buft;

reg reg1_out, reg2_out, reg3_out;

FD fd1 (.Q(reg1_out), .C(clk), .D(d_in));
FD fd2 (.Q(reg2_out), .C(clk), .D(d_in));
FD fd3 (.Q(reg3_out), .C(clk), .D(d_in));

BUFT buft1 (.I(reg1_out), .T(reg3_out), .O(q_buft));
BUFT buft2 (.I(reg2_out), .T(reg1_out), .O(q_buft));
BUFT buft3 (.I(reg3_out), .T(reg2_out), .O(q_buft));

endmodule // tmr_reg

2

VHDL 例

--Truth Table
--fd1 fd2 fd3 out
-- 0 0 0 0
-- 0 0 1 0
-- 0 1 0 0
-- 0 1 1 1
-- 1 0 0 0
-- 1 0 1 1
-- 1 0 1 1
-- 1 1 0 1
-- 1 1 1 1

library ieee;
use ieee.std_logic_1164.all;

entity tmr_reg is
port (d_in : in std_logic;
clk : in std_logic;
q_buft : out std_logic);
end entity;

architecture tmr_reg_arch of tmr_reg is

component FD is
port (D : in std_logic;
C : in std_logic;
Q : out std_logic);
end component;

component BUFT is
port (I : in std_logic;
T : in std_logic;
O : out std_logic);
end component;

signal reg1_out, reg2_out, reg3_out : std_logic;

begin

fd1 : FD port map
(D => d_in,
C => clk,
Q => reg1_out);

fd2 : FD port map
(D => d_in,
C => clk,
Q => reg_out2);

fd3 : FD port map
(D => d_in,
C => clk,
Q => reg_out3);

buft1 : BUFT port map
(I => reg1_out,
T => reg3_out,
O => q_buft);

buft2 : BUFT port map
(I => reg2_out,
T => reg1_out,
O => q_buft);

buft3 : BUFT port map
(I => reg3_out,
T => reg2_out,
O => q_buft);

end architecture;
AR# 10822
日付 09/18/2006
ステータス アーカイブ
種類 一般