電子回路系のナレッジを集約しています。主に自分用です。

ModelSimを早く実行させるコツ

ステートマシンの各ステート値はtype宣言で文字列で定義するより、数値で 指定したほうが早い。 type STATE is {IDLE,RUN,WAIT} より、 signal state : std_logic_vector(1 downto 0) で書いたほうが高速に動作する。

Raspberry Pi Pico + microPythonでST7789を制御する

外部ライブラリを使うことなく、microPythonでST7789を制御してカラー液晶に表示できたので、メモ。 使用したのはこちらの安価なIPSカラー液晶ディスプレイ。 https://www.amazon.co.jp/gp/product/B07SZC2PSP/ ソースは以下の通り。 動作内容は、初期化で全…

Vivadoのシミュレーションがexecuting analysis and compilation stepから進まなくなる

いったんシミュレーションをキャンセルして、[Window|Tcl Console]でTclコンソールを表示してから、 reset_simulation を実行する。

VivadoのシミュレーションでVRFC 10-2063エラーが発生して実行できない

古くからあるVivadoのバグです。 多くのファイルを手で修正する必要があります。テストベンチを作り直しても、このバグは解消しません。

axi_iicドキュメントの誤記

scl_t、sda_tの初期値が0x0となっているが、シミュレーションしてみると初期値としてHighレベルが出てくる。IOBUFのTはHighでゲート閉/Input、Lowでゲート開/Outputであり、初期値が0x0でゲート開/ドライブ状態となるのはおかしい。0x1が正しいと思われ、ド…

XILINXのIOBUFの3-stateゲート信号TはActive-Lowである

XILINXのドキュメントにはActive Highと記載されており、図にも負論理を示す○はついていないが、実際は負論理である。 参考: www.reddit.com 追記: ドキュメントによっては High:Input Low:Output というのが書いてあるので、TはTであってGateではないのだ…

FPGAの回路内でHi-Zになるようなゲートは使わない

FPGA/CPLDでは、チップ内にHi-Zを作らないようにすべきである。絶対使っちゃいけないってことはないが、動作速度の面で不利になる。また、FPGA内の回路リソースの使い方としてはちょっともったいない。 ふつう、FPGAのロジック・エレメントには、トライステ…

ModelSimが突然落ちる

あきらめよう。

Signal TapのNode Finderで観測信号を指定する際のこつ

Options の Filter は、「Signal Tap:pre-synthesis」を指定しておくと、ほとんどの信号名を拾うことができる。

VHDLのtype宣言で要素がStringなものは使わないほうがいい

type STATE is (IDLE, WRITE, READ, ACK); のように、Stringからなるtypeを作ると、ModelSimにおいてシミュレーションが極端に遅くなる。ステートマシンのステートはintegerかstd_logic_vectorにするのが無難。

ModelSimがPAUSEで止まってしまう

ModelSimでStart SimulationとかMacroを実行すると、たまにPAUSEとなって処理が止まることがある。 resume [Enter] で続きが流れる。