組み込みソフト技術者のための ハードウエア知識講座 HDL言語による

組み込みソフト技術者のための ハードウエア知識講座
HDL言語によるASI
C開発をちょっとかじってみよう!
はじめに
それよりも、 要求機能の大規模化に伴
ハードを言語で設計する
い、 使用する論理ゲート数が大きくなり、
最近では、 組み込み製
設計の手法も大きく
回路図によるロジック設計に必要な工数が
L
HD
品の多くに、SoC・AISCが
異なります。 ロジック
搭載されています。 組み
IC の組み合わせによ
込みソフトの開発において
る回路設計は、実現
も、 ASIC チップを相手に
したい論理をAND 、
することが多くなっています。 本特集は、
OR、NOT、Flip-Flopの組み合わせに置
ASIC チップ設計を専門としない組み込み
き換え、これをそのままロジックIC の素子
現実的では無くなって来たこと、汎用のロ
ジックIC の組み合わせでは、コストが高く
なりすぎることが原因でしょう。
言語設計
HDLの特徴
ソフト開発者を対象とした勉強講座です。
に対応させて配線して作りました。これは
この機会に、ASIC開発をちょっとかじって
既製品の IC チップを使うことが前提です
H D L は回路を定義するための言語で
から、 回路図を中心とした設計手法が主
す。 現在多く使用 され ているものは、
みましょう。
「
Verilog-HDL」と「
VHDL」の2つです。
流です。
ASI
Cの設計手法入門
ASIC とは主に論理回路を1つのシリコン
チップ(
ダイと言う)の上に集積したもので
す。 簡単に言えばシリコンのダイの上に
自由な種類の論理素子を形成できるもの
です。一昔前は、AND、OR、NOT、FlipFlop などのような論理 (
ロジック)IC を手
配線して、機能ロジック回路を作っていま
したが、ASIC の中身は、これと本質的に
同じです。
しかしながら、ロジックIC (
74シリーズ等
があります)の組み合わせによる回路と
ASIC の中身では、 その回路規模 (
ゲー
ト数と言う)が大きく違います。 最近の大
規模 ASIC は数百万ゲートと言われてお
ASIC においても、回路図をベースに開
その他に UDL/I や SFL と呼ばれるものが
発する方法は、 小規模な機能の開発や
ありますが、マイナーな存在です。(
各々
最小限のリソースで回路を作りたい場合な
の特徴などありますが、 本稿では特にふ
ど、 今でも今でも使用されています。
れず、 他の専門書に任せたいと思いま
す。)
これとは異なる設計手法として、 「
HDL
(
ハードウエア記述言語)
」による開発手
また、最近では、開発する機器の高機
法があります。 これは回路を直接設計す
能化により、安易に回路を設計しても、満
るのでなく、 機能を言語で記述して定義
足に動作しない状況が顕著になっていま
し、 マイコンソフトで言うコンパイラの様な
す。 ASIC はもちろんのこと、 ボード設計
ツール 「
論路合成ツール」によって回路
においても、 「
シミュレーション」による事
ロジックを生成するものです。
前動作検証の重要性が高まっています。
この概念は古くから考案されていたもの
HDL による大きなメリットの1つが、 「
シ
ですが、最近のPC の高性能化 ・低価格
ミュレータ」による動作の検証が非常に容
化や 「
論理合成ツール」が実用レベルに
易であることです。 H D L にはシミュレー
達したことにより、 主流になりつつありま
ションのためのテストデータを記述するた
す。
めの仕様も含まれています。
り、せいぜい数十個のロジックICによる回
HDL によるASIC/FPGA の開発手順
路とは比べものになりません。
ASIC用 ネットリスト
NOT,OR,AND,JK-Flip-Flopなどゲート部品の回路記号
最近の ASIC ではこのような部品が数百万個実装される
VHDL
Verilog -HDL
Description
c:>quartus2
テキストエディタ
HDL記述
量 産 ASIC
レイアウト
プロセス
論理合成ツー ル
FPGA
開 発 ツー ル
c:>HDLsimulat
HDLシミュレー タ
(事前動作検証)
4
GAIO CLUB 2004.10
FPGA用 ネットリスト
論理合成用ライブラリ
試 作 FPGA
論理合成とFPGA
DIP スイッチによる2進数設定に従って 7セグ LED を点灯するためのデコーダ回路 : デコードロジックをFPGA で実現する
出力表示
7seg LED
前頁下の図が HDL によるASIC の開発
入力
DIP スイッチ
手順です。ここでのキーワードが、「
論理
合成」と「
FPGA」です。論理合成とは、
H D L で動作定義した回路を、 実際の
ゲート回路に変換することです。「
論理合
SW 1
SW 2
SW 3
SW 4
a
A
B
f
C
D
g
e
成ツール」により、 「
ネットリスト」よ呼ば
れる、各回路部品 (
セル)の接続関係を
FPGA ALTERA MAX7032
b
c
d
示すテキストファイルを生成します。生成
すると言っても、実際は多数の 「
セルライ
ブラリ」が用意されており、定義されたロ
実際の回路を設計してみる
か、シミュレータによる検証が容易なことか
ら、現在の大規模回路の設計には、無く
ジックに応じて、 このライブラリを組み合
わせて回路を合成する仕組みです。
では、 実際に VHDL で設計した回路の
てはならないものになっています。
また、 「
FPGA」とは、 多数の回路部
例を見てみましょう。ここでは、4つのDIP
いかがでしたか?限られた紙面ですが、
品 (
セル)を予め内蔵した特殊なチップ
スイッチによって設定した数 (
2進数)に
回路記述言語によるチップ設計がどんなも
で、 後から論理合成ツールが生成した
従って、 その数を7セグLED に表示する
のか、 お分かり頂けたかと思います。
ネットリストデータを書き込むことで、その
回路を考えてみます。
接続関係を変えられる 「
プログラマブル
チップ」のことです。
半導体工場でシリコンを製造することな
く、 その場で要求仕様通りのチップがで
この回路をVHDL で設計する
VHDL で記述したロジックを論理合成して出力された実際の回路
と、 左のようになります。 ここで
は、 C 言語と同じような 「
case」
文によって、 スイッチの信号設
きるため、シリコン本生産の前に、FPGA
定(INPUT)に従って、 7ビット出
をボードに実装して動作検証を行うことが
力信号線 (
Y)を2進数で定義
一般的に行われています。
しています。 C 言語をご存じで
あれば、 お分かり頂けると思い
上の回路 (
7 セグ LED デコーダ)をVHDL で記述した例
‑ ************************************************* ‑‑
‑‑ 7seg decoder SWで7seg点灯 VHDL記述
‑‑ ************************************************ ‑‑
library ieee;
use ieee.std̲logic̲1164.all;
use IEEE.std̲logic̲unsigned.all;
use IEEE.std̲logic̲arith.all;
entity alps002 is
port(
INPUT : in std̲logic̲vector(3 downto 0);
Y
: out std̲logic̲vector(6 downto 0) );
end alps002;
architecture RTL of alps002 is
begin
process(INPUT)
begin
case INPUT is
when "1111" => Y <= "0000001";
when "1110" => Y <= "1001111";
when "1101" => Y <= "0010010";
when "1100" => Y <= "0000110";
when "1011" => Y <= "1001100";
when "1010" => Y <= "0100100";
when "1001" => Y <= "0100000";
when "1000" => Y <= "0001101";
when "0111" => Y <= "0000000";
when "0110" => Y <= "0000100";
when others => null;
end case;
end process ;
end RTL;
< 参考 :上の VHDL ソースについて >
8行目の「
entity」文で、チップへの入出力ピンの定義を行っ
ています。 DIP スイッチからの入力信号が 「
INPUT」
、7セグ
への出力が 「
Y」で定義されています。 (
3 downto 0)の文
は、 信号ラインの数 (
ビット幅)とその並び順を示します。
下の「
case」はC言語と同じ意味です。whenの文で、「
INPUT」
の条件を示し、各々の場合の出力 「
Y」の信号を定義してい
ます。
ます。
この記述を論理合成すると、
右のような回路ができあがりま
す 。 論 理 合 成 ツー ル には、
ALTERA 社の WEB サイトで無
料で入手できる 「Quartus II
4 . 0 」を使用し、 F P G A には
MAX7032 (
32 個のマクロセル
が入った最小の FPGA)を使用
しています。
論理合成ツールを使用して生
成した回路はライブラリセルの組
み合わせであるため、 手入力
で回路図を設計した場合に比
べて、 多少の無駄があります。
しかしながら、 回路図と比べれ
ば、HDL ソースはご覧の通りロ
ジックの可視性 が高 いばかり
組み込みソフト教育はもちろん VHDL 設計教育も行っています
ガイオ ・テクノロジー 営業部 和光 泰平
ガイオでは、 各種ボード・LSI などのハードウエア受託開発を通じて培ったノウハウを、 教育
講座として皆様にフィードバックしています。 ISA バス拡張ボード開発、 VHD L設計の FPGA
によるPCI バスブリッジの設計を題材に、 ポリテクセンター、 文部科学省 IT フロンティア事業
内セミナーなどで、 多くの教育講座の実績を持ちます。 新人教育など、 ご相談下さい。
GAIO CLUB 2004.10
5