Irwindaleの呪い続編
CPUがIrwindaleであるというだけでWindows8までしかインストールできないPC. VMplayerを使おうとしてインストールしようとしたら,最新版のVMPlayerはインストールできないことが判明.なんてこった.
仕方がないので,OracleのVirtualBoxをインストールした.これは何とか動く.動くんだが,なんだか動作がもっさりしている.このもっさりはIrwindaleが悪いのか,VirtualBoxが悪いのか.いずれにしても結論はIrwindaleは呪われているってことだ.
Intelは14nmプロセスの第5世代のプロセッサをCESで発表した.TDP15Wだとか,ターボブーストで3GHz越えだとか.そんなプロセッサを使う方が,仕事は早く済むし,電気を食わないので地球にやさしい.Irwindaleのマシンは早く壊れてくれた方が世のため人のためだ.使い尽くして壊そうと思うよ.
シーケンサーのalways文のトリガー
シーケンサーというのはステートマシンのステートの遷移を担当する回路のことだ.always文で書くのだが,clkで仕事させれば良かろうと思い,
always @(posedge clk)
で作ってみると,動いたり動かなかったり.
always @(CURRENT)
のようにステートをトリガにすると正しく動く.どっちも正しく動くように思えるんだけど,なぜclkではダメなのかなあ?
ステートを進める部品では,clkの度に
CURRENT<=NEXT
が実行される.
シーケンサーのメインは
case (CURRENT)
によるステート別処理だ.もしシーケンサーをclkで回すと,clkの度にCURRENTステータスをチェックする.このときのCURRENTはNEXTが代入される前のステートだよね....あー考えがまとまらない.この件は保留しよう.
ところで,なぜprocess文ではなくて,always文かって?
実は昨年末から20年以上使っていたVHDLからVerilog HDLに乗り換えたのだ.乗り換えた感想は,Verilog HDLの方がいいかげんで良く,またタイピングも少なくて済むので私には向いているということだ.もっと早く変えれば良かった.
制約ファイルの伝承
ISEでプロジェクトの下にモジュールをたくさん作ると,生成した回路の出力が予期せぬハイインピーダンスになる現象の理由が分かった.ハイインピーダンスになったときは,ピン指定の制約ファイルが正しく読み込まれていなかったのだ.既に制約ファイルがある状態で新規にモジュールを作ると,新規モジュールのファイル名が既存モジュールのそれと似ているときは制約ファイルが引きつがれる.なので問題は生じない.新規モジュールのファイル名が既存モジュールのそれと全然似ていないときは,制約ファイルがないものと扱われる.制約ファイルがないので,所望の出力ピンには配線はされず,ハイインピーダンスになってしまっていた.
ISEのDesignパレットでHierarchyを注意深く見ると,制約ファイルがモジュール配下になっているかどうか見分けることができる.もし,モジュール配下に制約ファイルがない場合は,新たに制約ファイルを作れば良い.