新人技術者のためのロジカル・シンキング入門(6) ―― ハードウェア基礎の基礎

冴木 元

tag: 組み込み

技術解説 2008年9月25日

【1】ハードウェアはメモリ・マップド・レジスタで設定

 CPUからハードウェア回路を設定する場合,ほとんどのケースでは「メモリ・マップド・レジスタ」と呼ばれるものがあらかじめ用意されていて,プログラマはそれを使うことになっています(図2).これは,回路の設定を行うときに使うレジスタを,メモリのある番地に割り当てておくものです.こうすることによってプログラマは番地を指定すれば,メモリにアクセスするときと同じように周辺回路のレジスタにアクセスできるようになります.

zu02_01.gif
図2 回路の設定はメモリ・マップド・レジスタで
ハードウェア回路をCPUから設定する場合,メモリ・マップド・レジスタを使って設定することが多い.メモリ・マップド・レジスタは,メモリの特定番地に割り当てられたレジスタのことで,プログラマは番地を指定することでメモリと同じようにアクセスできる.

 したがって,ソフトウェアのプログラマは,ハードウェア回路を扱う際にはまず,メモリ・マップド・レジスタを調べます.今回の例では,ハードウェアの仕様書を入手したら,メモリ・マップド・レジスタにどのようなものがあって,どの番地に割り当てられているのかを最初に調べなければなりません.

● ハードウェアを単純化して見通しを良くする

 メモリ・マップド・レジスタがどのようなもので,何番地に割り当てられているのかがわかれば,次にそれらをどのように設定するのかを調べます.当然,回路ごとに設定は異なりますが,ここでは「ハードウェア回路」という抽象化された観点で話を進めます.

zu03_01.gif
図3 回路の基本的な信号線の種類と役割
ハードウェア回路につながる信号線は大きく分けて,クロック,リセット,制御信号,(入出力)データ信号がある.実際はもっと複雑だが,大まかにあたりをつけて調べていくと,使いかたが見えてくる.

 まず信号線についてですが,ごく単純にいうとディジタル回路には図3に示すような,クロック,リセット,制御信号,(入出力)データ信号が存在します.それらを図4のように設定すると,回路を動かすことができます注1

注1;ハードウェア技術者には,これは極端に単純化したものにも見えるかもしれません.しかし,ソフトウェア技術者の中には回路設計の「常識」をほとんど知らない人が数多くいます.そのため,まずは全体像を大まかにとらえる方法がないと,(筆者も含めて)どうやって切り分ければよいのかがわからない場合もあるのです.また,ソフトウェア技術者の観点から「回路は作るものではなく使うもの」と割り切って単純化してしまうことで,システム全体の見通しがよくなることもあります.

 ハードウェアを動作させるには図4に示したように,リセット,クロック供給,初期設定,処理開始という流れをたどります(ソフトウェアとの違いや注意点は後述).この場合の初期設定とは,制御用の信号線に回路の動作パラメータを設定することです.

zu04_01.gif
図4 回路の大まかな初期設定の流れ
大まかな流れは,回路を止めて初期化した後に処理を開始するというもの.図は,リセットとリリースをそれぞれ手動で行う場合のフローを表している.

 ここで,クロックを省いてリセットと初期化処理をまとめれば,リセット→処理開始となります.こうするとソフトウェアと同じように考えられるかもしれません(ソフトウェアの場合も基本的な処理の流れを単純化すれば,リセット→処理開始).

 しかし,少し細かくみていくと,ソフトウェアとハードウェアの考えかたの違いが現れてきます.これらを,クロックとリセットに分けて解説していくことにします.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日