ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
« 1 2 3 (4) 5 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2006-8-17 3:51
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
やはりISE Simulatorは長いタイムスケールはだめだ
延長シミュレーションを使って見る限りでは最初の表示桁更新タイミング以降は14桁すべての桁が正しく表示されるようになっている。

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

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

クロックスピードは10MHzでも問題なく動作する回路なので1秒間分の動作なら100msだけ見ればいいのだが、100msも想定外らしくフリーズしてしまう。
webadm
投稿日時: 2006-8-17 2:41
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
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 1:38
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
Verilog版での対策
Initialブロックで3つのカウンターをリセットするようにすると、カウンターが進むようになった。しかしどうも7Segのデコード出力がおかしいようで最初の表示桁(x000年)に出るはずのない値(ブランク)が最初出てきている。次の表示桁切り替え時にはそれらしい表示値(9の表示)が出ている。



謎は深まる一方。

ISE Simulatorで延長してシミュレーションする方法を見つけたが、入力データのクロックが最初に設定した期間分しか無いのでそれ以降シミュレーションを続けても意味が無いことが判明。クロックの範囲をのばそうとするとハングするし。
webadm
投稿日時: 2006-8-17 0:15
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
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 0:11
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
ISE Simulatorの制限
どうやらWeb Packで使えるISE Simulatorはシミュレーション時間に制限があるようだ。

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

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

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

使うのは止めたほうがよさそうだ。
webadm
投稿日時: 2006-8-17 0:00
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
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-16 23:45
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
初期化できないカウンターの謎
ちゃんとプリセット時に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-15 21:58
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
みんなISE Simulator使わないのわかる気がする
普通にAlteraの時のようにクロック10倍の10MHzで1msecだけシミュレーションしてLED表示更新がうまくいくか見てみようとしたら、えらく時間がかかる。

おまけにISEの画面は真っ白で無応答。いつ終わるんだか。

それに2GBのメモリ積んでいながらページングファイル使用が1.25GBってなんだそれは。これ以上はメモリ積めないぞ。

何度か異常終了したからメモリーリークが起きているのかもしれないけど。

これじゃシミュレーションよりも実機で確かめた方が速いと誰もが思うのは確かだ。
webadm
投稿日時: 2006-8-15 21:08
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
やはりISEは評判悪いのは理解できる
デザインを修正してプリセット時に内部のカウンターをリセットするようにしたところ、合成すると今度は256でも入るようになった謎だ。

シミュレーションしてみると、これがまたユーザーインターフェースがだめだめで、シミュレーション開始したのかどうかもわからない、カーソルシェープも変化せずにただ応答が無くなる。これではハングしたのかと思われてもしかたがない。

AlteraだとMAX+PLUS IIの頃からちゃんとシミュレーションでもなんでも経過表示があるので、あとどのくらい時間かかるかとか見ることが出来安心できた。

しばらく待っているとシミュレーションは勝手に終わって結果が表示される。



しかし合成結果がおかしいのかリセットしたはずの3つカウンタのうち1つ(dispcnt)が変わらずリセットされていない。これが更新されないと表示も変化しないので結果は同じ。なんなんだ。
webadm
投稿日時: 2006-8-15 20:13
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3095
Xilinxのデバイスでは動かない可能性が
シミュレーションしてみたところ内部のレジスタにプリセット値は取り込まれるのは確認できたが、どうやらXilinxの論理合成ではレジスタの初期値は不定となるためカウンターが不定のままで意図した波形は出てこないことが判明した。小さくて見にくいけどAlteraの時と同じ条件(9999年12月31日の日替わり)でシミュレーションした結果。



Alteraの場合はデフォルトでレジスタ内容はコンフィグレーション時に0に初期化されるので特にレジスタの初期値を与える必要はなかったがXilinxではそうはいかないらしい。

« 1 2 3 (4) 5 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

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