Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PICを作ろう ,ALU ~昼休みにまったり進めるプロジェクト~

すっかり、「昼休みにまったり」というより、「週末にヤケクソ」というペースになっていますが、今回はALUです。(コードは最後に載せます)7/12の記事の図のALUの右側の入力をA、左側の入力をB、出力をYとします。出力には、ステータスレジスタへの各フラグのほかに、スキップ系の命令のスキップの条件を表す、skipという信号を追加しています。

ALUは組み合わせ回路ですが、alwaysブロックで実装しています。alwaysブロックの中での代入文は強いて、ブロッキング代入(=)を使用しています。こういう書き方が嫌われることがあるのは、知っていますが、副作用(代入後の結果)を積極的に使いたいためです。たとえば、zフラグの生成などに、yの代入後の値を参照しています。

 また、skipフラグ以外の出力に関して、alwaysブロックのはじめで、xを代入しています。その後、必要な場合のみ代入する形にしています。こういう書き方をすることで、論理合成時に意図しないラッチができてしまうことを防げます。また、この書き方は(まえにも書きましたが、)「Don't care」を表すため、デコーダのロジックを最小にするためのヒントを論理合成ツールに与えることにもなります。

あとは、だらだらとcasex文でデコーダを書いています。書きあがってから、気がつきましたが、加算と減算は同じ部分でデコードするようにして、加算器をひとつに減らすこと(リソースシェアリング)ができますね。後で直せばいいことにしましょう...
----
 本日の御託
庭の芝生に、コガネムシの幼虫がいる。一匹見つけて捕まえたのだが、あとで庭を見ていたら、スズメが別のを見つけて、咥えていた。さすがに、スズメには大きすぎるので、そうとう苦戦した末、咥えたままどこかに飛んでいってしまった。農薬を撒けばいいのだが、クモなどの益虫にも害があると思うと、ちょっと躊躇する。



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/360-0f2c846f
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。