ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
« 1 (2) 3 4 5 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2006-8-16 23:45
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
初期化できないカウンターの謎
ちゃんとプリセット時に3つのカウンターを0リセットする行を追加したが3つのうち一つだけ初期化されない。

調べてみるとそれに関係したようなWarningメッセージが出ていた。

WARNING:Simulator:29 - at 100.000 ns(1): Warning: There is an
'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es).

最初のプリセット信号がサンプルされるクロックの立ち上がりで確かに問題のカウンターは16'hXXXXになっている。なんだこれは。

webadm
投稿日時: 2006-8-17 0:00
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
ISE Simulatorのこつ
ISE Simulatorを使うときに注意しないといけないのは、

・既にISE Simulatorがactiveな場合先に閉じる必要がある
・既にISE Simulatorの結果が表示されている時に新たなSimulatorを起動するとうまく行かない
・ISE Simulatorの開始はSimulatorメニューではなくProcessメニューのRunである

ISE Simulatorがcompilerシミュレーターなので毎回テストベンチを論理合成して実行ファイルを生成して行うかららしい。Simulatorメニューはサードパーティ製のSimulator用と思われる。

既にSimulatorの結果が表示されている状態で新たなSimulatorを開始しようとすると現在activeなSimulatorを閉じるかどうか訪ねるdialogが表示されるがこれにyesと答えると新に起動したSimulatorが強制終了させられるというばかな結果となる。その後で本当に古いSimulatorを閉じるか訪ねられるという理不尽な事に。なので古いSimulator結果は先に閉じておかないといけない。
webadm
投稿日時: 2006-8-17 0:11
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
ISE Simulatorの制限
どうやらWeb Packで使えるISE Simulatorはシミュレーション時間に制限があるようだ。

100000nsまではよかったものの倍の200000nsに設定するといろいろおかしなことが起こる。

・テストベンチウェーブ表示でズームのアイコンが使えない状態になる(右クリックメニューからはできる)
・ProcessメニューからRun以降が使えない状態になる(ナビゲーターアイコンをダブルクリックによってシミュレーション開始は可能)
・シミュレーション開始するとISEのView内が真っ白になる
・シミュレーションが永久に終了しない(CPU負荷は高いの状態なので何か走っていることは確か)

どうも機能制限機能の実装がいいかげんでバグっている模様。

使うのは止めたほうがよさそうだ。
webadm
投稿日時: 2006-8-17 0:15
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
ISE SimulatorはISE 9.1i以降で直るくさい
先のISE Simulatorの数々の挙動不審だがどうやらそのほとんどはISE 9.1iで直す予定とのことがAnswer Recordから判明。

最新のISE 8.2iでも状況は変わらないぽい。

Q1. When running a design for 60 seconds or more of simulation time, ISE seems to freeze up and hang. Why does this occur?
A1. This has been improved. Now ISE does not hang, and instead it issues an out of memory error. This problem will be addressed in the ISE 9.1i release of ISE Simulator.
webadm
投稿日時: 2006-8-17 1:38
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
Verilog版での対策
Initialブロックで3つのカウンターをリセットするようにすると、カウンターが進むようになった。しかしどうも7Segのデコード出力がおかしいようで最初の表示桁(x000年)に出るはずのない値(ブランク)が最初出てきている。次の表示桁切り替え時にはそれらしい表示値(9の表示)が出ている。



謎は深まる一方。

ISE Simulatorで延長してシミュレーションする方法を見つけたが、入力データのクロックが最初に設定した期間分しか無いのでそれ以降シミュレーションを続けても意味が無いことが判明。クロックの範囲をのばそうとするとハングするし。
webadm
投稿日時: 2006-8-17 2:41
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
RTL Viewerで見てみると
SEG出力信号がおかしいのでRTL Viewerで見てみると想像と大分違った論理合成がされていることに驚く。



112本のデコード入力(7seg x 16桁分)を16本のセレクト信号で対応する桁だけを出力するという風になっている。いかにもVLSI的な論理合成だ。

すぐ下にある尻切れトンボのANDはクロックを入力にしているが表示のバグだろうか。

更に中を見ると驚くことに16桁分の1segデコード結果を7seg分セレクタで抜き出して束にしている。



これもFPGAならではの発想の転換だろう。人間なら7seg単位で扱うだろうけど。

たぶんこの単純なセレクタは何も間違っていなくてそれ以前のBCDデコーダーがおかしいのだろうと予測。



ところが何の変哲もない単純なBCD->7Segmentデコーダーが生成されているだけだった。年の桁は4桁ともどれも同じ論理になるのでまるで一緒だがセレクトされて出てくる結果が違っている。

ちょっとお手上げ状態。この続きは別スレッドで後日
webadm
投稿日時: 2006-8-17 3:51
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
やはりISE Simulatorは長いタイムスケールはだめだ
延長シミュレーションを使って見る限りでは最初の表示桁更新タイミング以降は14桁すべての桁が正しく表示されるようになっている。

たぶん年を格納するレジスタのクロックイネーブル信号を生成するロジックが意図せずして最初の表示桁更新が無いとイネーブルにならないためレジスタの出力が不定のままのためブランク表示にデコードされてしまうのだろうと予測。

すると秒替わりの動作はどうだろうとタイムスケールをテストベンチウェーブの作成時に長めに指定(1000000000nsとか)してみると途中までは作成がうまくいっているようだが表示途中でフリーズしてしまう。ISE Simulatorの開発者はそんなに長いタイムスケールでシミュレーションすることを設計上まったく想定していないらしい。表示もタイムスケール表示が重なってしまってべた塗り状態、尋常ではない。スケールをns単位のままで表示しようとしているのでおかしいことになってしまっている。

クロックスピードは10MHzでも問題なく動作する回路なので1秒間分の動作なら100msだけ見ればいいのだが、100msも想定外らしくフリーズしてしまう。
webadm
投稿日時: 2006-8-17 14:57
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
とりあえずISE Simulatorで動作確認
結局ISE SimulatorはいくらEnd timeを長くしてもどうやら一定時間以降は入力信号が変化しなくなるという制限があるらしい。



End Timeは101msでTBWを作成したのだが生成されるテストベンチコードを見てもEnd Timeまではクロックを生成するコードになっているのでシミュレーター内部でどうやら一定時間(3?ms程度)以降は変化しなくなるような制限処理を行っていると思われる。

仕方がないのでデザインを修正して1秒の分周値を10分の1に減らしてクロック周期を20倍(20MHz)にすることで1秒を200倍に短縮し5msで秒替わりが来るようにしたところ制限内で何度か秒替わりの動作を確認できた。



本来はデザインを修正せずに確認したいところだが致し方ない。ハングするように見えるのはTBWのグラフィック描画が異常に時間がかかるためで、最初は短いEnd Timeで作成して後で生成されたテストベンチソースコードをエディタで修正してEnd Timeを書き換えるのがよさそうである。シミュレーション結果の波形の表示は長いEnd Timeでも問題ないので今度からそうしよう。


それとやはり最初にデコードされ表示されるべき年の最上位桁が年レジスタの初期値(initialブロックで初期化しないと不定、初期化するとその値)のままである。プリセットによってレジスタには設定入力がロードされているのだがその出力が変化しないのはおかしい。レジスタの実装はFDCEになっているので更新されれば出力も変化してしかるべきである。



これは実際どうなのかは実機で検証するしかない。もしかしたらシミュレーターの問題なのかもしれない。

それとSimulation結果の表示の仕方もUIがおかしい。横にスクロールしようとしてもすぐ隣のタイミングではなくかなり離れたタイミングまで一気に飛んでしまう。なのでその間のタイミングは見ることができない。なんだこれは。使えない。

なんとか見るためにはズームイン・アウトしながらみたい時間帯がうまく画面に収まるようにするしかない。一旦画面から外れてしまうとスクロールしても見ることはできない。
webadm
投稿日時: 2006-8-17 23:37
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
Xilinxのレジスタ固有の話だったらしい
最初に表示される桁が正しくデコードされない原因はXilinxのレジスタ固有の問題だったらしい。

ALTERAの場合はレジスタは単純にD-FFなのでクロックに同期して出力が更新される。

それに対してXilinxのレジスタはD-FF内部の後段の出力ラッチをCE(Chip Enableというらしい)によって更新するかしないかを制御できる。これによって高速なクロックを用いていても後段のラッチが変化するのは必要な条件だけにすることができる。

実際RTL Viewerで見るとCEは条件付きでそれぞれenbaleになるように論理合成されている。おそらくその条件として表示桁の変化や秒替わりが含まれているだろう。



ならば表示桁制御のカウンター初期値を最初のクロックの立ち上がりで表示桁が更新されるようにすれば誤った値が表示されるのは最初のクロックの立ち上がりまでの間に限定される。

実際にデザインをそのように修正してみたところ意図した通りに動くようになった。



最初シミュレーション時間が早いだろうとBehavior Simulationをしようとしたら永遠に応答が無いので使えないということが判明。

ISE SimulatorのBehavior Simulationは本当にモジュールの入出力しか見ることができないのでほとんど使えない。

Post-fit Simulationは内部のレジスタや変数だけは見ることはできるがそれ以外の内部信号は見ることができないのでAlteraと比べるとかなり使えない。

たぶんModelSimならば任意のネットリストを見ることができるとは思うが。とりあえずCドライブをなんとか用意しないとライセンスが...コンパクトフラッシュを買ってこようかな。
webadm
投稿日時: 2006-8-19 3:38
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3094
ISE Simulatorでも内部信号が見える
ターゲットデバイスをSpartan2Eに変更しコンパイル後にGenerate Post-Synthesis ModelとかGenerate Post-Map ModelとかGenerate Post-Route Modelとかが?マークがついていたのでそれをクリックして実行して再度シミュレーションをやったところ、今度はちゃんと内部信号もリストに全部出てくるようになった。

ということはデフォルトでは内部の信号はみれないということか。
いちいち合成後のモデルを生成しなおさないといけないのはなんとかならないのだろうか。

Spartan2EにしたのがよかったのかBehavior Simulationもハングせずに出来るようになった。

ISE Simulatorの場合は合成後のモデルを用いたシミュレーションはPost-Route Simulationしか無いのでそれを実行すると、最初ModelSimから変更した影響かタイミング違反が起きたとかでシミュレーションがしょっぱなで停止した。

もう一度やり直すと今度は嘘のように先へ進んだ。なんだったんだろう。

どうやらCPLDだとシミュレーションはいろいろ難がありそうなのかもしれない。

シミュレーションに要する時間はAlteraの時とそんなに感覚的に変わらない程度。ちょっと開始時にかなり長い時間だんまりになるのが精神衛生上良くない。本当にrunしたのか我を疑ってしまう。

性能的にはModelSimの方がシミュレーション速度が目に見えて速い。ISE Simulatorだとシミュレーションが終わる間にたっぷり食事とかが出来てしまう。

なので普通は面倒でもModelSimをインストールしてライセンス申請をして使うのが正解だろう。ライセンスは自動で即時交付されるので待ち時間は無い。
« 1 (2) 3 4 5 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索