ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
(1) 2 3 4 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2008-5-14 10:31
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
LEDスイッチ基板回路
途中までEagleで回路図を描いてそのままほっておいたLEDスイッチ基板、そろそろ仕上げないと。だんだんとモチベーションが低下していく一方。

迷ったけど、オリジナルHP5004Aにあるような現在選択している信号極性を示すLEDは付けないことにして、トグルスイッチの向きでわかるだろうということで妥協。どうしてもというなら最近はマルツパーツ館とかにLED付きスイッチなんてのがあるのでそういうのを使えばいいし。結構LEDに流さなければならない電流が大きいのでいろいろ考えてしまうので割愛。

レベル変換件保護用にシュミットタイプのインバーターを使用し、CPLD側の信号は負論理とする。これによって入力信号にはそれぞれインバーターがひとつづつ外付けすることを前提とする。5V入出力可能なCPLDを使う場合には正論理にすればいいけど、その場合でも保護用のバッファはあったほうがよいので同じシュミットインバーターを使うならこのほうが良い。実際にどんなところにつないでしまうかは予想もできないので。バッファICが壊れる分にはいいけど、虎の子CPLDが壊れると。将来いろんなレベルの信号を扱えるようにコンパレーターとかを外付けする場合もそのままでいけるし(やらないけど)。

7Seg LED駆動回路は万年カレンダー時計で使った回路を借用。シミュレーションしてみると3.3V電源でも動作することを確認。順方向電圧の大きなLEDだと5V動作時より暗いかもしれないが、その場合は電流制限抵抗を減らす方向で。

さてここまで外堀がうまれば、あとはCPLDの信号アサインを決めてそれに合わせて基板側の信号配線をするだけ。

ああオリジナルHP5004Aにあるようなテスト用の信号出力も割愛。

うまく小さな基板に部品が全部載ればオートルーターでパターンをひいて調整した後、それをベースに手配線とハンダずけ。

ああそうだ基準クロックはトラ技付録CPLD基板上の水晶発振器を使用してそれを分周してダイナミック表示用の0.6kHzのクロックを生成。オリジナルのHP5004Aのように555による方形波発振回路を外付けしてもいいけど面倒なので。もちろんMAX II内蔵のオシレーターを使って分周しても得られるけどMAX II専用になるし面倒なので。

あとは天候の良い集中出来る日を選んで順番にこなすだけ。


webadm
投稿日時: 2008-4-8 23:48
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
XC95108大量入荷
先日また千石に立ち寄った際に期末時には空っぽだったXC95108の引き出しが満杯になっていた。

再入荷したらしい。

買おうかとおもったけど、とりあえず優先順位は低いのでやめといた。

在庫無くてがっかりしていた人は今が買い時かも。
webadm
投稿日時: 2008-3-24 4:18
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
XC95108在庫切れ
千石電商にXC95108を買いにいった。

商品棚に型名があるのを確認して引き出してみると、

中は空っぽだった(;´Д`)

確かにCPLDで唯一5V動作なので人気が高いのは想像できる。

あとは全部3.3v以下だしね。

ということでXC95108は選択肢から消滅。

結局カメレオンロジアナ用に32本のポットグラバを作ることにして部品を買って帰ってきた。

いまようやく加工が終了したところ。

これでHP3456Aのリセットスタート後からのメモリアクセスを見ることができる。

ちゃんとしたロジアナもあるけど、簡単なトリガで済む観測ならカメレオンロジアナの方が操作が簡単。

signature analyzerの方はトラ技付録MAXII基板を孫ボードとするLEDスイッチ基板で構成する予定。まだLEDスイッチ基板の回路図が途中までしか入力していない。CPLDの信号ピンアサインを決めないと続きができないのだ。付録の付いてきたトラ技に付録基板のピン情報が書いてあるのでそれを見て適当に割り振る必要がある。
webadm
投稿日時: 2008-3-22 20:34
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
Re: Xilinx ISE 9.2sp4
よく考えたらXilinx ISEの場合はVHDLが推奨だったような。プロジェクトを新規に作成した際のシミュレーション言語のデフォルトがVHDLだったし。

ISEでのVerilogはおまけ的な意味合いが強いかも。

今回もAltera QuartusIIとXilinx ISEの性格の違いが変わっていないのを確認。

QuartusIIの場合は論理合成の段階でかなりの最適化を行う方式。それに対してISEは論理合成はあくまで記述に忠実で、Fitterで積極的な最適化を行うというもの。

顕著なのがラッチの扱いで、ステートマシン(sm.v)のclearとshift出力はreg宣言されているのでラッチが生成される可能性がある。



実際に9.2iではネットリスト上ではreg宣言されたclearとshift出力はラッチが挿入されている。



FitterがPlace & RouteしたTechnology Mapにはラッチは含まれていない。Fitterの警告が出ていてラッチは不要として最適化されている。

ISE8.2iの時はネットリスト上からしてラッチは削除されていたので、このあたりの役割分担がバージョンによって微妙にトレードオフポイントが変わっているようである。

なのでISEのRTL Viewはあまり当てにならないし、QuartusIIに比べるのは酷である。

ISEのTechnology Schematic ViewはまるでLSIの配線を見ているような感じでこちらの方がわかりやすい。QuartusIIのは本当にLE間を線でつなげたというそのままなのでRTL Viewの方がわかりやすい。両者の特徴の違いが良くわかる。
webadm
投稿日時: 2008-3-22 11:00
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
Re: Xilinx ISE 9.2sp4
ちょっとISEでシミュレーションをと思ったけどISEシミュレーターは相変わらず使えない(;´Д`)

波形入力でやろうとしたら波形入力の期間を延長しただけで延々に応答が返ってこない状態に。

まあ、ISEの場合はModel-Sim XEを使う方がやりやすいのでいいけどね。

XC95108を使うとなるとCPLDとPLCCソケットを買って来て電源やらグランド、JTAGピン、信号配線をしないといけない。

トラ技付録のMAXII基板を使えばCPLD周りは出来上がっているので、LED周りや入出力信号系の回路を配線すれば良い。

悩む。

小学生の頃、模型屋さんの店内で閉店時間になるまで、どのプラモデルを買えば良いかよく悩んでいた。今も変わらない気がする。

結局どれでも対して変わらないのだけれども、最初になんか見極めようとしちゃうんだよね。悩む時間があるならさっさと決めて結果を早く知った方がよかった気もする。たった500円とは言え子供には大金だったからね。有る意味自分への投資なわけだし。悩んでも良い気はする。

どっちなんだ(´∀` )

webadm
投稿日時: 2008-3-22 9:26
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
Xilinx ISE 9.2sp4
Xilinx ISE 9.2sp4のインストールが出来たので、そちらでもやってみた。

always構文中のif条件式は変わらずにわかりにくいエラーが出るけど、同様に条件式を外に出して簡略化すればOK。

問題のRTL Viewだけど、さすがに9.2sp4では8.2にあった手抜きは改善されたようで、今度はちゃんとした回路の格好をしている。



他のブロックもだいぶまともになった。それでも依然として盲腸のような回路表示がある。こちらはTechnology Viewを見て確認するしかあるまい。

下手にネットリストを目を追うよりも、シミュレーションをしてみるのが確実である。

9.2sp4は多少回路が冗長になったために最高動作速度が27MHzに落ちている、PRGとかを見ても8.2の時より見た目ゲートが増えていたりするがシンプルになってしまったところもあるので、リソースの占有率はほとんど差が無い。

XC95108で作ってみようか。
webadm
投稿日時: 2008-3-21 7:29
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
Re: Xilinx ISEでの問題点
Xilinx ISEのRTL Viewerを見てがっかりしたが、念のためにFitterの結果を見てみようとTechnology Mapを見てみたら意外な事実が判明。



問題の疑似乱数生成ブロックに該当する部分をみたら、ちゃんと意図した通りの回路になっている。どこも盲腸のようなところはない。

ということはRTL Viewerの表示上の手抜きらしいことが判明。

たぶん複雑過ぎて描画が面倒で表示を手抜きしているように見える。実際にはネットリストもFitterも意図した通りに仕事をしていたのに。もったいない。
webadm
投稿日時: 2008-3-21 7:13
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
Re: Xilinx ISEでの問題点
後学のためにXilinx ISEのRTL Viewerで合成結果を見てみることにした。



トップレベルはこんな感じ。



その内訳もまあ想定通り。

ところがそっから下の各ブロックを見てみると驚愕の事実が発覚。



これは疑似乱数生成ブロックだが、上のレベルではshift信号が入力されているはずが、実際には消えてしまっている。そればかりか、resetとclear信号から合成されるrstclr信号パスが盲腸のように行き場を失っている。それとシフトレジスタのフィードバックがレジスタ出力からではなく入力信号から生成されている。これらを見ても意図した動作しない回路になってしまっているのは明らか。

Fitterでshift信号に関して警告が出ているがアンサーデータベースには該当するものが無い。

どうやらネットリストとしては意図した通りに合成しているがそれがFitterでデバイスにマッチしないので適当に省略されてしまったように見える。他にもいくつか他のブロックでも盲腸のような回路がRTL Viewerで確認されているので問題が他にもあるような気がする。

Xilinxの場合には、有る程度どんなネットリストが意図した通りにFitするか知った上でRTLを記述しないとだめなような気がする。このあたりはAlteraのQuartusIIの方が気が利いている。

まあISE 8.2sp3なのでこういう問題があるかもしれない。でも盲腸のような回路は昔からあった。

最新のISEではどうなのかは後日やってみよう。
webadm
投稿日時: 2008-3-21 5:29
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
Xilinx ISEでの問題点
Alteraの最新のFPGA/CPLDは手に入り難いので、千石とかにあるようなXilinxの5v系 CPLDに入るならそのほうがいいかと思って久々にISE 8.2iを立ち上げてみた。

web updateをクリックしたらサービスパックが出ているようなのでそれをあてておくことに。

ソースをそのまま同じように作成していざコンパイル...やり方をすっかり忘れてたり(;´Д`)

Impelement Top Moduleを実行すればよいのね。

すると警告が1つとエラーが16個出た。

なんだ?

ごく普通のVerilogで書いたのに何故?

とERRORをクリックすると驚愕の事実が判明。

引用:
// Shift everything over, load the incoming bit
always @ (posedge shift or negedge clear or negedge reset)
begin
if (!clear | !reset)
begin
sr <= 0;
end
else
begin
sr[15:1] <= sr[14:0];
sr[0] <= data ^ sr[6] ^ sr[11] ^ sr[12] ^ sr[15];
end
end


エラーになったのは上の構文で、ifの条件式が複雑すぎるためらしいことが表示されたアンサーデータベースから判明。そうなのか、結構Xilinx ISEは手抜きなのね。QuartusIIの方がさすがにSystem Verilogサポートしているだけに気が利いている感じ。

さっそく以下の様に修正。

wire rstclr;

assign rstclr = (!clear | !reset);

// Shift everything over, load the incoming bit
always @ (posedge clock)
begin
if (rstclr)
begin
sr <= 0;
end
else if(shift)
begin
sr[15:1] <= sr[14:0];
sr[0] <= data ^ sr[6] ^ sr[11] ^ sr[12] ^ sr[15];
end
end

これでImplementしたらXC95108に収まることが判明。これはPLCCパッケージもある比較的ポピュラーだけど古いデバイス。秋葉原だと千石電商で売っている。

これを使ってシグネチャアナライザーを作ってもいいかもしれない。

まだシミュレーションはしていないので問題が無いとは言えないが、動作周波数も十分大きいし余裕もあるのでなんとかなる気がする。



webadm
投稿日時: 2008-2-19 11:28
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3093
HOLD回路
気になっていたHOLD動作関連の回路をオリジナルのかすれた所々消えている回路図を古文書の修復のような感じで調べてみた。



中央にあるNANDゲートの出力がNANDゲートの入力にフィードバックしているのがHOLD信号が関係する唯一の回路。

最初なんのためかわからなかったが、古いデジタル回路の参考書を見ると、これは典型的なラッチ回路を構成しているらしい。

そういえば、老齢のハードウェア屋さんが、「むかしDECのpdp-11のUNIBUSインタフェースの回路図に、ゲートの出力が入力にループしている回路があってね...」という昔話をしているのを聞いたことがある。当時は標準ICを使っていかに少ない素子数で回路を組むかというのを競っていた時代でもあり、こういったトリッキーなラッチ回路は当たり前のように使われていたと思われる。

もうHDL時代ではこうしたループでラッチを構成する記述は御法度となっているので、いきなり回路を見てもそれとは気づかない。

実際に動作を理解するのもややこしい。初期状態からして出力値が入力値にフィードバックされているので、ピンとこない。

真理値表を書いてみてようやくわかってくる。

他にもHP5004Aの回路には謎めいた回路がある。それはトランジスタ1石でくまれたパワーオンリセット回路。これが電源いれたとたんにどういう動作をするかまるで予想がつかない。シミュレーターでやっても現実の動作は示してくれない。



RESET信号線は行き先の回路を見る限り負論理信号である。おそらく電源投入直後しばらくはLを維持して、次第にHになると思われる。確かにそういう動作をするためにはと考えると、最初コンデンサが充電されるまでベースに電流が流れトランジスタがONし、充電が完了すると流れなくなってトランジスタがOFFするという動作をしそうなことがようやく見えてくる。

HOLD信号は次ぎのステートを強制的に初期値に戻す信号を生成するのに関与している。それ以外の回路にはHOLD信号が供給されていない。JS00という出力信号が1になると次ぎのステートが強制的に初期状態になる。しかしJS00はHOLD信号が入力されている初段のNANDゲートの入力にもなっている。もう片方の初段のNANDゲートは計測中にSTOPがアサートされた時に0を出力する。従って出力段のNANDゲートのどちらかの入力が0であれば自動的に出力は1となりステートマシンを初期状態に戻すことになる。

これらのことから、HOLD信号は正論理信号で、0の場合にはSTOP信号と状態値のみがステートマシンを初期状態に戻すのに関与する。1の場合には出力が0の状態では関与せず、出力が1の状態では常に出力を1に保つ効果を持つ。従って、計測中には影響せず計測が終了時にステートが初期状態に戻るとそのまま初期状態を維持する動作をするということになる。巧妙だが回路からそれを読み取るのは難しい。





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

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