パスワードを忘れた? アカウント作成
14244641 journal
日記

kitune-sanの日記: 8255をVerilogで書いてみた 6

日記 by kitune-san

恥ずかしいけど上げちゃう。
https://github.com/kitune-san/KF8255

FPGAの勉強の題材として手元にある8255を書いてみることにした。
所詮I/Oだろwと思ってたらMODE1-2が難しい…。
最初はMODE0のみ実装で終わらせようかと思ったけれども、これはこれで物足りなさを感じる。

オリジナルはWE信号等のエッジでデータが書き込まれたりするけれども、
タイミング解析で難しくなりそうだったので、クロック同期(8088と同じ立ち下がりエッジ)の動作にした。

書いたコードを見直してみると全体的にかなり汚く見える…^^;
でもHDLコード美的感覚もよくわからない。。。
言語機能をもっと駆使すると再利用性のあるきれいな回路がかけるのだろうか。
ポートCの回路はもうちょっと見直しをしていきたい。

シュミレーションは(一応)思った通りの波形が出せたので、もうちょっと確認・修正して、
今度はFPGAにコンフィギュレーションして動作を見ていこうと思う。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2020年07月19日 22時32分 (#3855153)

    VerilogじゃなくてSystem Verilog……

    インスタンス接続が.*で省略できるのはVerilog 2000からで、System Verilogは
    だめなんだっけ? もう忘れた。

    タイミング解析関係で言うと、リセット解除は同期にすると思うが
    FPGAってどうなんかね。デバイスによるのかな。

    しかしコードの美的感覚なんていうロジック屋は、おれのまわりに限ると
    見たことないね。そういう点ではハード屋(ファーム屋も!)はだめだと思ったよ。
    言語仕様書を読んでるやつもいなかったもん。
    そのかわりSTARCルールに基づいて書きましょうとか、それのルールチェッカ
    みたいのをかけてたね。

    • by kitune-san (48712) on 2020年07月19日 23時06分 (#3855168) 日記

      興味深いお話ありがとうございます。

      ルールチェッカは興味ありますので調べて見ようと思います。

      あららSystemが抜けてましたね。
      wireやregをlogicにまとめられると聞いてそれだけでこちらにしてしましましたが、
      always_combや_ffがicarus verilogではエラーを出してしまい、後で後悔しました。

      リセットについては自分も調べましたが、
      一番最善は同期リセット・解除。どうしても非同期でリセットしたい場合はリセット発生のみ非同期。のようにしていくのが良さそうです。

      親コメント
      • by Anonymous Coward

        リセットについてはリセットの最小時間要件とクロックの関係で決まることもあります。
        自分で決めてよければ同期リセットのほうが考えなくて楽かなあ?
        昔は非同期リセットが推奨されてたような気がするけど最近のFPGAは同期リセット推奨だし。

        で、古い人と新しい人の共同作業だとリセットがバラバラになるまでがお約束:)
        特にASIC経験者は非同期リセット派が多いし…

        # 古いコードはえいやっで一から書き換える派。ただしテストベンチがマトモであることが前提。

    • by Anonymous Coward

      ハード屋さん・ロジック屋さんは記述うんぬんより
      「波形が正しければ正しい」で動いている印象。

      • by Anonymous Coward

        そして内部PLLの上限を超えた設定でも気づかなかったりすると :)

        # シュレーディンガーの内部PLL

        • by kitune-san (48712) on 2020年07月20日 21時57分 (#3855774) 日記

          > シュレーディンガーの内部PLL
          なにそれ怖い。

          仕事でロジック設計している人たちってド・モルガンやらカルノー図やらを駆使してガチガチに設計していくんだと勝手に思っていたのですが、
          少しイメージと違う?失敗が高くつくASICの設計とやり直ししやすいFPGAの設計の違いなのかな?

          親コメント
typodupeerror

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

読み込み中...