低レベルFizzFuzz回路

投稿日 : 2007年11月10日 0:19

 FizzBuzz問題が流行っていましたが(←オブジェクト指向前の状態を指してる)、折角なので私も。

 普通のFizzBuzz問題を低レベル、つまりハードウェア的に考えるとどうなるでしょうか。ハードウェア記述言語(HDL)というものがありまして、これはプログラミング言語のようにコードを書くことでデジタル回路が設計できるものです。HDLの有名なものとしてVerilog HDLやVHDLがあるのですが意外にもこれらで書かれたFizzBuzz問題がググっても出てきませんでした。ので書いてみます。

 ソフトウェアでも以下の条件でちらっと考えてみてもらえるとこれ幸い。

仕様1

  • 除算・剰余禁止

 ソフトウェアの場合まぁほとんどの場合3、5、15で割り切れる場合の判定に剰余演算子が出てくると思いますが禁止ね。剰余の回路は規模が大きくなっちゃうのでダメなのです。そもそも記述しても回路にできない場合もあります。乗算も規模大きいので使わなくて良いよね。ただしビットシフトになる乗除算はOKです。

 

仕様2

  • ループ(for, whileなど)禁止

 回路でループ? 意味が分かりません。使えません。1から順に回すのにどうしましょうか。HDLではよく値が0, 1, 0, 1, 0, ...と繰り返されるクロック信号というものを基準にして設計します。ですので0と1が交互に変化する値が何らかの方法で与えられるとして作成してみてください。

 

 以上です。他は都合の良いようにオレオレ仕様で。文字を表示するところは普通に考えてください。そもそも回路自体に文字を表示するってのはありませんから、適当に設計してみます。

 プログラムはまだ書いていないので明日にでも起きて土曜日を満喫した後アップします。HDLをバリバリ業務で使用してるってわけではないので入門程度の知識です。過度な期待と過度な参考はしないように。

続く。

フィードバック

# re: 低レベルFizzFuzz回路

2007/11/10 11:07 by JZ5
忘れてた。ループをしないとしたけど、テストするためにクロック信号を生成するとこはループOKです。

# FizzBuzz問題 Verilog HDL版

2007/11/11 3:23 by katamari.text
FizzBuzz問題 Verilog HDL版
コメントの入力
タイトル
名前
Url
コメント