2014年11月06日

ISE Webpack 最終版のインストール

CPLDにデータを焼くためのツール、ISE Webpack をインストールするのに14GBも要るという驚愕の事実が発覚。
 
インストーラーが既に8Gを専有しているので、合計22G以上の空きスペースがないと、システムを組めない。 

WS000096.JPG

勿論、自分の使うチップのデータのみを予め選択すればよいのだろうが、多分あれこれいじると失敗するので、コレは仕方が無さそう。

で、案の定Fittingで撥ねられるケースが発生する。 特にTimingDrivenを優先すると、以下のようなアラートが出る。

Xst:737 - Found 1-bit latch for signal . Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.

指摘されている部分を回路図上で示すと、、、

WS000089.JPG

さらに展開すると、、、

WS000090.JPG

VHDLコード上で確認すると、この部分がアウトということになる。

WS000095.JPG

ノリッジベースによると、昔は通っていたコードがその後の仕様変更でエラー扱いになったらしい。

全体の回路構成はこんな感じ。

WS000091.JPG

WS000092.JPG

その後、Implement と Fitting の設定を変更して、なんとかコードを吐き出せるようになった。

WS000093.JPG

WS000094.JPG

旧式のCPLDに拘る最大の理由は「基板を再設計するのが邪魔臭い」から。 そもそも数が出る物件ではない上に、最近はebayでディスコン部品の調達が楽になっているので、物理的な制約はほとんど存在しないといえる。

どちらかというと、開発アプリ側の仕様変更がイロイロと悪さをするので、ソフトウエアの保守を行っておくのが順当だと思う。




posted by Yasuski at 05:56| VHDL

2014年11月05日

burningCPLD

久しぶりにCPLDの書き込みを行った。 

IMG_5093.JPG

旧版のアプリでインプリメンテーションを行っているため、現在使用中の日本語OS上に新たにアプリをインストールすることは避けたい。 従って、旧版がインストールされている英語版のOSを立ち上げてツールを接続することになった。 

WS000613.JPG

書き込みにはCPLD側にも電源が必要なので、専用電源コードの製作を行っていたら作業が一日遅れてしまった。



CPLDは基板直付なので、失敗すると全部がパアになってしまう可能性がある。

WS000612.JPG 

画像は書き込み失敗時に表示されるアラート。 不具合の原因は、JTAG通信ライン間の半田ヒゲによる短絡だった。 ショート箇所を取り除いた後は、無事にファームウエアを書き込めた。

この基板は、4✕4=16マトリックスのmidiスイッチを駆動するために製作したもので、

WS000050.JPG

H8基板のPort#8から入力される4bitの信号に因ってモードが切り替えられて横一列毎に4✕1の後着優先スイッチに変身する。 

WS000166.JPG

これはプログラムチェンジを送出する際のモードで、通常使用するコントロールチェンジ・モードでは、個別にLatch/Momentaryの切り替えが行える仕様となっている。

IMG_5094.JPG
posted by Yasuski at 13:36| VHDL

2013年11月25日

16chSignalSelectorのPin配列

怪談スイッチ製作用に購入したXilinx用の試作ボードを発掘して、電源を確保した後に書き込みを行った。

IMG_4479.JPG

このボードの電源プラグはRoland方式の外側が正極になるという、この手の機器としては珍しい仕様。しかも、安定化電源ICを搭載せずに素で直結というトンチキな造りなので、RolandのAD/DCをそのまま転用することは出来ない。 仕方がないので、新たに遊んでいるスイッチング電源をRoland方式専用に配線して作業を開始した。

IMG_4480.JPG

本来ペアで使っていたのはParallel接続のアダプターだったが、ebayでXlinxのJTAGユニットを購入済だったので、それを直結してBoundaryScanを行ったところ、問題なくチップを認識できた。

WS000459.JPG

初回はすんなりと書き込みが終了。 所要時間は1分以内とかなり速い。 その後、フリップフロップのSelect端子への追加を忘れていた事を思い出して、修正した内容に焼き直そうとしたところ、一度だけエラーが出た。 赤いアラートにビビりつつ、二度目は何事も無く書き込みが終了。

端子の配置は以下のようになった。


****************************** Device Pin Out *****************************


WS000460.JPG


WS000461.JPG


Legend : NC = Not Connected, unbonded pin
PGND = Unused I/O configured as additional Ground pin
TIE = Unused I/O floating -- must tie to VCC, GND or other signal
VCC = Dedicated Power Pin
GND = Dedicated Ground Pin
TDI = Test Data In, JTAG pin
TDO = Test Data Out, JTAG pin
TCK = Test Clock, JTAG pin
TMS = Test Mode Select, JTAG pin
PROHIBITED = User reserved pin
posted by Yasuski at 19:09| VHDL

怪談スイッチのVHDLコード

春のライヴで物凄く使い辛かったRocktron/Allaccessの中身を「怪談スイッチ」と同等のスイッチマトリックスに積み替える計画を実行する前に、スイッチマトリックスの回路構成をエディターからアウトプットして、自分の考えた仕組みのおさらいを行っている。

WS000387.JPG

構成した回路のうち、リセット回路やプリセット回路の理解は問題ないのだが、列ごとの機能の切り替え(4ch単位で完全独立と後着優先セレクタースイッチをセレクトする)等、作った本人が忘れている仕組みを今一度洗い出す為に、データを漁っているところ。

WS000154.JPG

来るべきカーボンファイバー製のRev.Bの製作に備えて、基板発注をOlimexからFusionに移行する過程で、Errorが発生した件についての備忘録を書いておく。

最初にFusionのEagle用DesignRuleをサイトからダウンロードしておく。 

FusionはGERBERファイルのみに対応していて、OlimexのようにEagleで生成される.brdファイルを直接扱ってくれない。 

EagleのCAMプロセッサーからGERBERファイルを出力し、それをZipしたものを注文時に送信する。

Olimexとの違いは、外形ファイル(Outlines)を設定なしでは注文を受け付けてもらえないこと。 基板にはWireにてDimensionレイヤーに外形を描いておく必要が有る。

とにかく安いので、PCBの試作が楽になるのが嬉しい。


以下、コードを備忘録としてアップ。 
VHDL code
posted by Yasuski at 19:00| VHDL