ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
(1) 2 3 4 5 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2006-5-24 12:25
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
万年カレンダー時計回路図(参考用)
数えてみれば構想から2ヶ月、当初はFLEX8000が搭載されたCQ/FLEX基板に載せるLEDスイッチ基板だけつくればよかったはずが、FLEX8000では回路が収まりきれないことが後になって発覚し、新にFLEX10Kが搭載されたボードを自作しなければならなくなり、プログラミングケーブルも必要になって、かなり周り道をしてようやく完成へこぎ着けた万年カレンダー時計の回路図を公開します。

万年カレンダー時計AHDLデザインプロジェクトファイル(ZIP)

万年カレンダー時計Verilog HDLデザインプロジェクト(Quartus II 6.0 Archive)

万年カレンダー時計Verilog HDLソースリスト(PDF)

万年カレンダー時計VHDLデザインプロジェクト(Quartus II 5.1sp2 Archive)

万年カレンダー時計VHDLソースリスト(PDF)

万年カレンダー時計用LEDスイッチ基板回路図(PDF)

万年カレンダー時計用FPGAボード回路図(PDF)

万年カレンダー時計用FPGAボード基板レイアウト図(PDF)

万年カレンダー時計用EAGLEプロジェクトディレクトリ内容(ZIP)

EAGLE用自作FLEX10K-84部品ライブラリファイル(ZIP)

以下完成写真



最終的なデザインにはゼロサプレス表示を追加しました。2桁目が0の場合には表示しないようにしました。その方が時計らしいです。それとQuartus IIでLE占有率が高かったのはOptimization Adviserの指示通りにONにできる最適化オプションをONにしたらMAX+PLUS IIと遜色無いLE使用率となりました。冗長なLE使用をなくす指定が効いたようです。それでもAHDLが最もLE使用率が少ないようです。



裏側の様子



今思えば、万年時計とは10,000 year clockなので短縮すると10k year clock。これにFLEX10Kを使うことになってしまったのは偶然ではない気がする。

今回作成したFPGAボードはALTERA Byteblaster IIおよび拙作のPoorman's Byteblaster II Rev1.2でPSおよびJTAGのどちらでもMAX+PLUS IIおよびQuartus IIでコンフィグレーションできることを確認しています。

2006.8.29改訂

以前公開した版にはバグがあり10月末の月替わりが正しくありませんでした、現在は修正済みです。またVerilogおよびVHDL版では以前よりもサイズが少し小さくなるようにデザインを修正しました。
webadm
投稿日時: 2006-5-31 12:15
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
デザイン更新
基板はそのままでRTLだけ以下の点を変更し、新にVerilog HDLで書いたものも追加しました。

・日替わり時のバグ修正
・LED表示関連カウンター更新処理修正
・時刻プリセット時の不要なカウンターリセットを無くした。

最初のものよりも時刻設定がわかりやすく(値を表示したまま設定対象の値だけ更新される、設定中は時刻更新が停止する)しました。

一応カウンター分周比を変えて時計を早送りして観測したところ閏年も含めて数年分の日付更新は意図した通りいっているように見えます。
webadm
投稿日時: 2006-6-3 17:45
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
VHDL版追加その他更新
VHDL版を追加しました。

併せて以下の以前のRTLにあったバグを修正。

・xxx9,xx99,x999年の年替わりのロジックを追加
webadm
投稿日時: 2006-8-15 2:35
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
Xilinx ISE 8.1iでもOK
Xilinx ISE 8.1i Web Editionを入れたので何か試してみようと万年カレンダーのVerilog版のソースをコピペしてコンパイルしてみた。

XC95シリーズではさすがに入らなかった。

CoolrunnerIIは256ので入った。ほぼ使い切っているけど。

特にソースコードは修正していない。

動作確認しようとシミュレーターを使おうと思ったが、どうにも使い方がわからない。テストベンチウェーブは同じような感覚で作成できるのだがそれをどうやってISE Simulatorで使うのかが謎。もしかして使えないのか。テストベンチコードを書かないとだめとかあるのだろうか。

何も調べてないのでまずはここまで。たぶん動くのではと楽観視。

VHDL版はなぜか1ランク大きなXC2C384でしか入らなかった。しかもVHDL入力だとソース編集して保存する前にコンパイル開始しないとセーブした後からではコンパイルできなくてはまった(ソースモジュールが隠れて出てこなくなる)
webadm
投稿日時: 2006-8-15 19:21
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
ISE 8.1iでのシミュレーション
一見するとISE Simulatorが使えそうな感じではあるが(単純にシミュレーションをrunするとそれらしい不定の入力に対して不定の出力波形が表示されるだけだが)、東京エレクトロンのページを見るとISE Simulatorが使えるのはISE Foundationからだそうだ。でもよく見るとISE Foundationに付属するのは機能制限されたISE Simulator Liteらしい、ちゃんとしたのは別売とか。

なんだそれは。AlteraはMAX+PLUS II Web Editionの時からちゃんとしたのがついてるのに。

どうりでXilinxのCPLDの使い方を紹介しているサイトではどれもシミュレーションをスキップしていきなり合成と書き込みしか説明してないわけだ。

確かにソフトウェアは開発保守要員を抱えているだけでもお金は出ていってしまうので使う人から費用を回収しないといけないのは確かだけど。たぶん石作っている人より人数多いだろうし。

外部に委託しているとなおさらお金は出ていく。

ISE Simulatorの代わりにModelSim XE Starterというのがあるらしい。機能制限付きでフル機能は別売り。ModelSimは有名だ。

でもVerilogだったら他にも優秀なシミュレーターはいろいろある。単にISEに統合されていないのが難点だけど。

もう少し調べてみよう。

しかしキットとかに付属する冊子ではいとも簡単にModelSim使ってどうのこうのとか書いてあるけど、内容もかなり古いバージョンのISEベースらしいから当てにはならない。
webadm
投稿日時: 2006-8-15 19:31
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
ISE 8.1iはだめぽ
どうにも何かするとすぐfaultを起こして消えてしまう。

最新のISE 8.2iだとISE Simulator Liteが付くらしい。Linux版のことしか言及していないがWindows版はどうなのだろう。

謎だ。
webadm
投稿日時: 2006-8-15 19:46
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
ISE 8.1iでもISE Simulatorは使える
やり方というか操作手順にこつがあるらしい(なんだそれは)

今度は別のファイル名でtbwファイルを作成すると2つのシミュレーターがリストアップされる。一つは今まで見たことがなかったGenerate Expected Simulation Resultというもの。これをクリックしてみたらtbwファイルで入力した波形に基づいた出力波形が出てきた。

なんだできるじゃないか。

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



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

webadm
投稿日時: 2006-8-15 21:08
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
やはりISEは評判悪いのは理解できる
デザインを修正してプリセット時に内部のカウンターをリセットするようにしたところ、合成すると今度は256でも入るようになった謎だ。

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

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

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



しかし合成結果がおかしいのかリセットしたはずの3つカウンタのうち1つ(dispcnt)が変わらずリセットされていない。これが更新されないと表示も変化しないので結果は同じ。なんなんだ。
webadm
投稿日時: 2006-8-15 21:58
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3088
みんなISE Simulator使わないのわかる気がする
普通にAlteraの時のようにクロック10倍の10MHzで1msecだけシミュレーションしてLED表示更新がうまくいくか見てみようとしたら、えらく時間がかかる。

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

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

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

これじゃシミュレーションよりも実機で確かめた方が速いと誰もが思うのは確かだ。
(1) 2 3 4 5 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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