レジスタ転送レベル
レジスタ転送レベル(レジスタてんそうレベル、英: register transfer level、RTL)は、論理回路の動作記述などにおいて、「ゲートレベル」よりも一段抽象的な記述レベルである。ゲートレベルでは、組合せ論理回路の(すなわち、状態を持たない)ゲートのネットリストを記述するが、レジスタ転送レベルでは、状態を持つラッチ回路など順序回路に相当する最小の部分を「レジスタ」として抽象化(ブラックボックス化)する。その上で、論理回路の動作を、レジスタからレジスタへの転送と、(その転送中に組合せ論理回路を通すことで行われる)論理演算の組み合わせとして記述する。
概要
[編集]一般に論理回路は次のような2つの部分に分けるようなモデル化ができる。1つは状態を持つ順序回路によるレジスタの集まりであり、もう1つは状態を持たない組合せ論理回路の集まりである。レジスタは通常、クロック信号のエッジに同期して動作し、回路におけるメモリ的特性は全てレジスタが担うものとする。組合わせ回路はあらゆる論理機能を担い、(ループを持たない[1])いわゆる論理ゲートで構成される。
ハードウェア記述言語を使ってディジタル集積回路を設計するとき、設計はトランジスタや論理ゲートよりも高い抽象度で行われることが多い。
なお、一部の(しかし、広く普及している)HDL[どれ?]では、レジスタをあたかも通常のコンピュータ・プログラミング言語における変数であるかのように扱うと同時に、状態を持たない組合せ論理回路中の単なる信号も、プログラミング言語における変数と同様に扱う。そのため、(いわゆるノイマン型コンピュータの動作とは全く質的に異なる)論理回路の動作を記述するにあたって、プログラミング言語の各種制御構造や演算機能を大変不自然に駆使して記述しなければならない(特に、ほんの僅かな不注意で、本来意図していないラッチが合成されてしまう)。
フリップフロップの出力にインバータを接続して、それを同じフリップフロップの入力に接続した回路を VHDL で記述すると、次のようになる。
process(clk)
begin
if rising_edge(clk) then
Q <= not Q;
end if;
end process;
EDAツールは、レジスタ転送レベルの記述から論理回路を合成する論理合成及び最適化(いわゆる簡単化)などを行い、さらに電子回路としての記述に変換し ASIC や FPGA のためのハードウェア実装ファイルを生成する。
注
[編集]- ^ ループを持つからといって、必ずしも状態を持つとは限らないが、ループがあれば状態を持つ可能性がある。従って一般にループは排除する。