ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

arithmetic

加算器を作ろう 最後の高速化

最初に決めた条件をはずせるなら、さらに高速になる可能性があります。 FPGAを変える まずオプションよりも何よりも一番効くのが「最速のデバイスにする」事です。アルゴリズムによる最適化を図る前に、最速のPCを買ってくるやり方です。現在入手可能な最速…

加算器を作ろう 手でチューニングしてみた。

「lpm_add_subを使っていれば問題無い」が結論なのですが、悔しいのでさらにチューニングしてみました。Fmaxを上げる事だけを考えているので実用的ではありません。手間暇かければ速くなるという例です。 回路の方針 32bitずつで加算を行い、各クロックでキ…

加算器を作ろう carry select adderによる加算

http://d.hatena.ne.jp/natsutan/20081121の続きです。前回はlpm_add_subを使用しましたが、手動で高速化を図ってみましょう。今回はcarry select adderと呼ばれる手法を用いました。carry select adderとは上位の加算をキャリー有り、キャリー無しの両方で…

加算器を作ろう lpm_add_subによる加算

次に最も実践的であるMegacore wizardを使う方法を紹介します。通常はこの方法だけ知っていれば十分です。 lpm_add_subの設定 Quatus2のTools→Maga Wizard Plug-In Managerを起動します。Arithmeticからlpm_add_subを選択しましょう。bit幅の設定と、Create …

加算器を作ろう マルチサイクルによる加算

CLKの周波数を維持したままタイミング制約を満たさない加算を実行するには、マルチサイクル制約を使うという手法があります。要するに加算自体を数クロックかけて行うので、タイミング制約は緩くしてねという事です。クロックによる同期設計を半ば放棄してい…

加算器を作ろう 最初の一歩

加算器のFPGA実装について調べた所、奥が深くとても面白い事がわかりました。特にFPGA実装に限ると、キャリー専用配線や、LUT構造により通常の加算器とは少し違った性能になることがあります。加算器をいかに速くできるかについて、いろいろと挑戦してみまし…

グレイコード

符号付き2進数のバリエーションのコメントで面白い話が聞けましたので検証してみました。元ネタは、第二の魚の骨発見です。どうしてこういう事が起きるのか、またグレイコードならどう違うのかをシミュレーションしてみました。Verilogによる実装も後ろで説…

符号付き2進数のバリエーション

ディジタル数値演算回路の実用設計に綺麗にまとまっていたので、表をそのまま使わさせていただきます。いろんな表記の中から好きな物を選べるのがVerilogの楽しいところでもあります。 10進 ストレートバイナリ 符号+絶対値 1の補数 2の補数 オフセットバイ…