8ビットバイナリカウンタ


VHDLのようなハードウェア記述言語を用いると,加算や減算のような複雑なハー ドウェアも演算子ひとつで表現できるという特長があります.8ビットのバイ ナリ・カウンタを加算演算子`+'を用いて表現してみましょう.


-- ライブラリ宣言
library IEEE;
use IEEE.std_logic_1164.all;
library ARITHMETIC;
use ARITHMETIC.std_logic_arith.all;

-- エンティティ宣言
entity counter8 is
    port (COUNT : out std_logic_vector( 7 downto 0 );
          CY    : out std_logic;  -- 桁上がり
          CLK   : in  std_logic;
          RESET : in  std_logic);
end counter8;

-- アーキテクチャ本体
architecture counter8_body of counter8 is
signal TMP : std_logic_vector( 8 downto 0 ) := "000000000";
begin
    process( CLK, RESET )
    begin
      if RESET = '1' then                 -- 非同期リセット
        TMP <= "000000000";
      elsif CLK'event and CLK = '1' then
        TMP <= TMP + "000000001";
      end if;
    end process;
    COUNT <= TMP( 7 downto 0 );
    CY    <= TMP( 8 );
end counter8_body;

ライブラリ宣言において,std_logicタイプで加算演算子を使用できるよう
library ARITHMETIC;
use ARITHMETIC.std_logic_arith.all;
を追加記述しています.エンティティ宣言部では,入力として1ビットのCLK, RESETを,出力として8ビットカウンタ値COUNT,桁上がり CY を宣言していま す.アーキテクチャ本体では, process文中で一時的に用いる信号TMPを9ビッ トで宣言しています.これは,8ビットのインクリメントを行うと,第8ビット に桁上がりが生じるためです.begin以降からはカウンタの動作の記述になり ます.信号TMPに対してインクリメントを行った後,その結果をCOUNTとCYへ同 時処理により代入しています.

8ビット・バイナリ・カウンタのように多少複雑な回路をゲートレベルで記述 すると,レジスタや1インクリメント・アダーなどを用意する必要があり,そ の記述は膨大になります.


関連項目
次は,いよいよ順序回路 (ステートマシン) 記述について学びます.

VHDLによる順序回路の記述法 −ステートマシン−



ホーム もどる 辞書

This is my e-mail address:
arch_www < www@cs.kumamoto-u.ac.jp >
Copyright (C) KITE Microprocessor Project, 1996