WordPress手動アップグレード
wordpress/wp-content/とwp-config.php以外を上書き
wordpress/wp-content/languages/を上書き
予期せぬラッチのなぞ
同期設計では「予期せぬラッチ」は禁じ手となっている.だけど,私はそれがなぜなのか知らない.次はこの問題を考えてみようと思う.例によってめちゃくちゃなこと言っているかもしれないので,鵜呑みにしないように.
同期設計では同一クロックで動くFFが組み合わせ回路を介して延々つながっている.予期せぬラッチってのは,その中のひとつがD-FFではなくD-ラッチになってしまうこと.クロックとは関係なしに入力データが出力される.これがなぜ悪いのか?
ラッチの出力先のFFにとっては迷惑な話だろう.組み合わせ回路2段分の遅延とラッチの遅延が加わったデータがやってくるのだ.それの変化が自分のセットアップ時間とホールド時間の間にたまたま入るかもしれない.そうなったらメタステーブルになってまずい.ラッチ生成が悪いのはこれで分かった.
じゃあ,予期せぬラッチではなくて,予期したラッチなら良いのかってことを考えよう.ラッチ出力を受けるFFのセットアップ時間より早くデータが到着してホールド時間より遅く次のデータが到着してって,待て待て.ラッチ出力を受けるFFはラッチのせいでクロックを1つ飛ばすなんて知らない.1つめのクロックでデータを受けようとするだろう.組み合わせ回路2段分がよほど軽い回路でない限り,セットアップ時間に間に合うとは思えない.じゃあ,間に合えば良いのか?たぶん良い.しかし配置配線ツールのセットアップ時間解析が混乱するだろう.組み合わせ回路2段分+ラッチをひとつの組み合わせ回路として解析しなくてはならない.こんなことを柔軟にやってくれるとは思えない.
結論:ラッチができるとツールが混乱するので,禁じ手なのだ.
ホールドタイムの謎
めちゃくちゃなことを言っているかもしれないので,以下の記述を鵜呑みにしないように.
同期設計では,セットアップ時間よりも早くデータが到着して,そのデータがホールド時間よりも長く維持できていなくてはならないと思っていた.ところが,これが微妙に違っていることに気付いた.セットアップ時間は良いのだが,ホールド時間ってのは,現データを維持するのではなく,ホールド時間が終わるまでに次のデータが来てはいけないって制約らしい.本当か?じゃあ,次のデータが来なければ,ホールド時間中にデータが暴れても良いってこと?そんなはずはないと思うのだが,どうもそうらしい.
FFの中身に立ち戻って考えると理解できるのだろうか.FFの中身って,インバータが二組くるっと回って繋がっている(うわっ,誤解を生みそうな表現だ.インバータ2個のループ回路が前段と後段にあるという意味だ).クロックがHighになると前段のインバータの入り口が遮断される.遮断される直前に入力データが変わってしまうと,前段のインバータ出力が安定した値に落ち着かないかもしれないので,あんまり直前は困るよってのがセットアップ時間.ここまでは良い.
クロックがHighの間は入り口は遮断されているので,入力データがどんなに暴れていようと知ったことじゃない.ここまでも良い.そうこうしているうちにクロックはLowになる.すると入り口が繋がる.これからは入力データが変わると前段のインバータ入力が変わるので,前段の出力はころころ変わるかもしれない.ころころ変わっているのは良いが,次にクロックがHighになるちょっと前(セットアップ時間)までには変わるのは止めてくれよとなる.
これまで書いたことを振り返ると,クロックがHighになった後は入り口は遮断されている訳だから,入力データがどんなに暴れていてもかまわない.つまり,入力データが維持されていなくても良いってことになる.ホールド時間中にデータが暴れても良いってことだ.これで疑問の半分は解けた.もう半分の疑問は,ホールド時間中に次のデータが来てしまったらどうなるかってことだ.入り口が遮断されているのだから,次のデータが来ても良いじゃないかと思う.あれ?おかしいぞ.ホールド時間の意味が無いってことじゃないか.ええっ?どこで間違えたのだろう.
もっと考えてみよう.クロックで開閉するスイッチについて良く考えてみると,クロックがHighになってすぐにFFの入り口が遮断される訳じゃない.Highになってから徐々に遮断されていくだろう.遮断しきる前に入力データが変わってしまっては前段が不安定になる.これがホールド時間ってことじゃないだろうか.たぶんそうだ.これで残り半分の疑問も解決した.めでたし,めでたしかな.
Thinkpad T43+kali linuxでプレゼン可能
Thinkpad X30 + kali linuxで外部ディスプレイに表示できなくて困っていたが,Thinkpad T43を入手したことで解決した.T43にWindows7を入れたものでは,ディスプレイドライバが標準ディスプレイドライバになり,外部ディスプレイには非対応となってしまう.しかし,kali linuxを入れるとFn+F7キーで外部ディスプレイに表示可能となる.ミラーもできるし,追加ディスプレイとすることもできる.ちょっと重いが,プレゼン用にはT43を使うことにしよう.
なぜにハイインピーダンス
Avnet製のS6LX150Tボードを使っているんだが,ある端子の信号がいくらやり直してもハイインピーダンスから動かない現象に悩んでいた.2日ほど悩んだ.ボードを変えてみたりしたが現象は変わらない.あきらめかかっていたんだが,もしやと思い,ISEのプロジェクトを新たに作ってから動かしてみたら解決してしまった.古いプロジェクトからの修正でいじっていたので,ゴミができていたのかもしれない.とりあえず良かった.