2016年11月23日

RGBコンバータ(6)

  RGBコンバータの件

  動作しないモニタがありました。

 ・DELL E197FP
 ・SHARP AQUOS LC-22K5

  AQUOSの方は、映るんですが画面が小刻みに上下します。
  理由も大体分かっていて(VSYNCをたまに間引いているから)、直せるかもしれません。


  問題はDELLのモニタの方で、31KHz×60Hzと認識してくれません。
  原因は全くわかっていません。対処しないかも...


  上記の結果なので、他のモニタでも同様の症状が出る可能性があります。




posted by えすび at 23:38| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする

RGBコンバータ(5)(リリースc1)

  RGBコンバータの件

  DesignWare 2003年10月号付録Cycloneボード版をリリースします。

ver4_c1.zip

  多分、マルツで売られているボードでも動作すると思います。


  付録のボードの場合、コンフィグ用ROMが付いていないので、入手する必要があります。
  EPCS1 が必要なんですが、EPCS4以上でも代用が効きます。
  さらに、EPCSシリーズの代わりに、STマイクロのM25Pシリーズが使えます。

http://www.hdl.co.jp/altera/epcs_m25p/index.html

  EPCS4相当が、M25P40になります。


  アマゾンで売っていましたので購入しました。5個セットでしたが...

https://www.amazon.co.jp/MICRON-M25P40-VMN6TPB-5%E5%80%8B%E3%82%BB%E3%83%83%E3%83%88/dp/B01B1E1C1O/ref=sr_1_1?

ie=UTF8&qid=1479903193&sr=8-1&keywords=M25P40

  円高のせいか、一ヶ月前は972円だったのが、今日は1125円です。


posted by えすび at 21:25| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする

FPGAボードとUSB Blasterの話(3)

  怪しいボードの追記。

  CycloneIIボード
https://www.amazon.co.jp/gp/product/B016K4XE3E/ref=pd_sim_sbs_23_1?ie=UTF8&psc=1&refRID=7EAYPVFEJ0QA1E201SZA

  安い方が売り切れてるようです。


  会社が中国ですが、ほぼ同じボードがあります。

https://www.amazon.co.jp/LILLY%E3%82%A8%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AD%E3%83%8B%E3%82%AF%E3%82%B9-ALTERA-FPGA-Cyclone-II%E3%81%AEEP2C5T144%E6%9C%80%E5%B0%8F%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%96%8B%E7%99%BA%E3%83%9C%E3%83%BC%E3%83%89/dp/B01A8B0Q2W/ref=pd_sim_sbs_147_2?_encoding=UTF8&psc=1&refRID=BFSVHF7DH79TCTANP52M



  ほぼ、同じというのは、写真を見る限り、どうも73ピンの動作が違いそうです。

  PWRONRSTN(73ピン):パワーオンリセット。電源投入時に、L→H のようです。

  回路図と同じようですし、私が購入した売り切れている方が、コピー品じゃないかと思います。



posted by えすび at 20:48| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする

2016年11月22日

RGBコンバータ(4)(リリース)

  RGBコンバータの件

  やっと完成しましたので、リリースします。

  DE0版:ver4_DE0.zip

  怪しいCycloneIIボード版:ver4_c2.zip


  回路図も同梱していますので、そちらを参考にして下さい。

  DE0版では、2種類(74LCX245を使っているのと、使っていないの)あります。
  多分、両方動作すると思うんですが、74LCX245を使っていないバージョンは試してません(^^;)

  74LCX245ですが、5V→3.3Vへの変換用なので、トレランス機能を持っているものなら何でもいいかと思います(ex.74VHC245)


 ・使い方
  ボードに電源を供給して、mk2/66/mk2SR/66SRを起動すると、普通に表示されます。
  mk2SR/66SR使用時は、クロック出力を3.58MHzの方にして下さい(普通はこちらになっています)。


 ・怪しいCycloneIIボード版
  ボード上のプッシュスイッチを押すと、にじみが出せます。
  プッシュスイッチを押す毎に、にじみなし→赤青→青赤→桃緑→緑桃→にじみなし、となります。

  ボード上の3つのLEDは、以下を示しています。
  D2:にじみ処理時、点灯
  D4:mk2SR/66SR時、点灯
  D5:データ同期時、点灯


 ・DE0版
  ボード上のBUTTON2を押すと、にじみが出せます。
  BUTTON2を押す毎に、にじみなし→赤青→青赤→桃緑→緑桃→にじみなし、となります。
  BUTTON0を押すと、リセットします。

  ボード上のLEDは、以下を示しています。
  LED0:にじみ処理時、点灯
  LED1:mk2SR/66SR時、点灯
  LED2:PLLロック時、点灯(普通は常時点灯)
  LED3:P6からのクロック入力時、点灯
  LED4:P6からのデータ入力時、点灯
  LED5:データ同期時、点灯(320x200同期)
  LED6:データ同期時、点灯(256x192同期)

  ボード上の7SEGは、以下を示します。
  左2桁:クロックに対するデータの遅延値
  右2桁:クロックに対するHSYNCNの遅延値

  下位桁は、1〜7です。単位は10nsです。

posted by えすび at 01:06| Comment(8) | HW:その他 | このブログの読者になる | 更新情報をチェックする

2016年11月15日

RGBコンバータ(3)

  RGBコンバータの件

  P6からクロックを貰えれば簡単かと思いますが、mk2SR/66SRの方は一筋縄では行かなかった...

  RGB出力は特殊かも知れませんが、通常データとクロックを両方出力しているような場合は、その先の回路ではそのクロックでデータを叩けばちゃんと動く回路が出来ます。mk2/66の場合だと、ちゃんとそうなっています。


  問題のmk2SR/66SRですが...

 1)データ出力が14MHzで叩かれたデータなのに、クロック出力が3.58MHzである(14MHzの4分周)。
 2)3.58MHzクロック出力とデータの位相関係が、リセット押下するごとに変わる。
 3)3.58MHzクロック出力とデータの遅延値が、電源投入後から徐々に変化する。


  1)や2)はまだ回避方法があるのですが、最悪なのが3)です。

  具体的には、3.58MHzクロック出力を基準にしたHSYNC遅延値が、電源投入してからずるずると変わっていきます。実測値では、大体30nsほど減少します。14MHzが70ns程度なので結構ひどい数値です。


  画像信号のRGBHはほとんど変化しないので、HSYNCを生成している回路に問題がありそうです。
  回路図を見ると、変なLRCが途中に入っているので、この辺りが悪さをしているんじゃないかと思います。


  mk2SR/66SR は、カスタムLSIや基板設計が、結構お粗末やなー、と思っていたんですが、また一つ悪いものを見つけた感じです。

posted by えすび at 22:35| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする

2016年11月14日

RGBコンバータ(2)

  RGBコンバータの件

  HSYNCからクロックを再生していたんですが...

  よく考えたら、P6から直接クロックを入力して、それを100MHzでサンプリングするのが一番簡単な方法だという事に気付きました。


  とりあえずそのバージョンを適当に作って動かしていますが、安定して動作しています。


  ただ、今の回路だと、調整用のDIPSWが必要になる(7PIN程度)のが気に入らないんですねぇ...

  クロックからの遅延値が、P6の個体や、RGBコンバータ側の回路などで異なるため、それを吸収するために調整が必要なのは仕方ないんですが、何とか調整を自動化して、外部からは最小限にしたい所です。


  回路の実装は、DE0版と、怪しいCycloneII版で行っています。デザインウエーブ付録のCyclone版も作るつもりです。


posted by えすび at 22:52| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする

FPGAボードとUSB Blasterの話(2)

  怪しいボードと怪しいUSB Blasterの追記です。

  CycloneIIボード
https://www.amazon.co.jp/gp/product/B016K4XE3E/ref=pd_sim_sbs_23_1?ie=UTF8&psc=1&refRID=7EAYPVFEJ0QA1E201SZA

  USB Blaster
https://www.amazon.co.jp/%E6%82%9F%E7%A9%BA-ALTERA-USB-Blaster%E4%BA%92%E6%8F%9BJTag%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-%E4%B8%A6%E8%A1%8C%E8%BC%B8%E5%85%A5%E5%93%81/dp/B00VUWNN74/ref=sr_1_1?ie=UTF8&qid=1478411751&sr=8-1&keywords=USB+Blaster


  信号説明が一つ抜けていました。

  PWRONRST(73ピン):パワーオンリセット。電源投入時に、H→Lになります。

  前回掲載したテスト用回路では、PWRONRSTN となっていますが、PWRONRST が正解です。

https://www.openimpulse.com/blog/products-page/product-category/ep2c5t144-altera-cyclone-ii-fpga-development-board/

  ここの回路図を参考にしたのですが、この回路図が間違っています。

  73ピンに、抵抗を介して3.3V、コンデンサを介してGNDとなっていますが、実際の基板は抵抗を介してGND、コンデンサを介して3.3Vです。



  USB Blasterの方は、モノ自体は普通に動作するのですが、付属のUSBケーブルがイマイチでした。USB Blasterと繋がる方のUSBコネクタとの接触が悪く、認識しない事がありました。

  DE0-nanoに付属していた、USBケーブルでは全く問題が発生していません。


posted by えすび at 21:56| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする

2016年11月12日

RGBコンバータ(1)

  RGBコンバータの件

  ほとんど設計は完了して、実際に使っているのですがどうも不安定です。

  いろいろと作り方はあると思うのですが、今回は以下のように作っています。

1)P6からはクロックを貰わない
2)P6からのHSYNCパルスを元に、14.318MHzクロックを再生する。
 →基板クロックから内部100MHzを作り、デジタルPLLっぽい事をする。
3)出力は、VGAの640x480に対応する。出力クロックは、100MHzの1/4の25MHz。
4)横方向はそのまま出力。縦方向は、P6のデータ1ラインに対して、VGAのデータ2ラインを出力する。
5)4)の実現のため、4ライン分のDPRAMを設ける。
6)P6からの入力の方がVGA出力よりも速いので、VGAへのVSYNC出力を変化させる。通常は524ラインで、たまに523ラインで出力する(規格は525ライン)。


  上記の方式で設計すると、mk2では普通に動くのですが、mk2SRでは画像にノイズが乗りました。
 2)のクロック再生がうまく動作していなくて、データをたまに取りこぼしています。

  調べてみると、mk2SRの場合、内部14.318MHzに対して、HSYNCの出力の遅延値が一定ではなく、20ns以上もずれる事がある事が判明しました(VSYNC=Lを出力する時に大きくずれる)。

  結局、HSYNC×VSYNC の周期、つまり1画面分を元に、デジタルPLLっぽい事をすると、安定して動作するようになりました。


  これでリリースしようとしていたのですが...長時間使用していると、最初に合わせた位置からずれてきます。
  多分、熱などの影響で、遅延値が変わるためだと思われます。


  このままでも使用できなくはないのですが、やはり自動追従した方がよさそうなので、リリースはもうちょっと後になります。


  年内に終わればいいな...

posted by えすび at 18:14| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする

PALADIN(2)

  PALADIN for P6

  だいぶ前に完成したのですが、やっとリリースしました。

  640x200×4色の画面がメインなので、実機でテストする場合、綺麗に映る必要があったためです(そのため、RGBコンバータを作成中ですが)。


  PALADIN というゲーム自体がマイナーかも知れません。オークションなどで売っているのを見たことがほとんどありません(私はオークションで見つけてすぐに落としました)。

  ゲームの内容自体は、調べてもらうと分かると思います。エンディングまで実況している動画もあるようです。
  まあまあ面白く、2日ほど掛けてクリアしました。
  何箇所か、分からないと進まない部分があります。画面とか持ち物とか魔術とか、いろいろ注意すると分かるかも。



  P6への移植ですが、以下の修正・変更しています。

 ・キーアサインの変更。
  遊び易くしたり、同時キー入力が出来るキーにするなどです。

 ・魔法弾やドラゴンの炎、イリュージョニストなどの色と表示の変更。
  640x200では4色しか使えないため、無理やり色の調整と重ね合わせをプログラムで実施しています。そのため、動作が遅くなっています(手抜きです)。

 ・メッセージの平仮名化。
  文章が読みやすくなりました。

 ・エンディングのグラフィックの修正。
  これも4色に収めるために、配色などを変更しています。また、PC88版では一部のキャラがバグってよく分からないものが表示されています。一番最後に剣と盾が表示されるのが正解です。


  グラフィックは基本的にはPC88版と同じです。元々、黒/赤/青/白の4色だけで構成されているため、修正が不要なんですね。PC88では余った緑のプレーンを使って、魔法弾などを重ね合わせて表示させています。



PALADIN(1)(ver1リリース)

  PALADIN for P6


  88版→P6SRへの変換ツールをリリースします。

paladnp6.zip


  説明などは、同梱のドキュメントを参照して下さい。


  エミュレータでは、PC-6001VW ver309b、ver310f、PC-6001V ver124 で動作を確認しています。

2016年11月06日

FPGAボードとUSB Blasterの話

  前回紹介した、怪しいボードの話の続きです。


https://www.amazon.co.jp/gp/product/B016K4XE3E/ref=pd_sim_sbs_23_1?ie=UTF8&psc=1&refRID=7EAYPVFEJ0QA1E201SZA

  実際に使ってみました。

  ...その前に、Altera のFPGAに対して、コンフィグする手段がなかった事に気付きました(^^;)


=====================

  DE0などは、USB経由のコンフィグ手段が、ボード上に実装されているので何も要らないのですが、普通はコンフィグ用にByteBlasterや、USB Blaster などが必要になります。

  基本的にお金を掛けたくないので、自作しようとしていたのですが、Alteraの場合だと結構面倒なようです。


  Xilinxの場合だと、FT2232Dを使う手段があります。

  http://www.hmwr-lsi.co.jp/fpga/fpga_1.htm

  このページを参考に clbsrv を使用すると、iMPACTを使用してFPGAやコンフィグ用ROMに対してコンフィグが可能です。


  Alteraの場合だと、同じように出来そうなのですが、Quartusから書き込めるソフトは存在しないようです。
  そのため、新しいシリーズ(例えば、CycloneII)に対応していなかったり、コンフィグROMに書き込む事ができなかったりします。



  結局、アマゾンでこのUSBブラスターを買いました。パチもんですが。

https://www.amazon.co.jp/%E6%82%9F%E7%A9%BA-ALTERA-USB-Blaster%E4%BA%92%E6%8F%9BJTag%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-%E4%B8%A6%E8%A1%8C%E8%BC%B8%E5%85%A5%E5%93%81/dp/B00VUWNN74/ref=sr_1_1?ie=UTF8&qid=1478411751&sr=8-1&keywords=USB+Blaster

  実際に使ってみましたが、問題なく使えています。
  箱がちょっと歪んでいました。適当に組み立てた感じです。
  中を開けてみると、PIC18F14K50と、LVC244と、若干のCRのみです。

  多分、ここのページのを実装しているようです。

http://sa89a.net/mp.cgi/ele/ub.htm

  さすがに、5V/3.3V変換には、LVC244が行っています。

  初めから同人ハードだと思うと、全く問題ない範囲ですね(^^;)


=====================

  というわけで、怪しいCycloneIIボードに、怪しいUSB Blasterで書き込みテストを行いました。


  テスト用の回路です→test2.zip

  テスト用の記述と、I/Oポート、タイミングの設定などを行っていますので、展開後、quartusの下の TEST.qpf をダブルクリックして、QuartusIIを起動後、コンパイルして下さい。

  端子名に関しては、VHDL記述の最初の方にコメント文で記載しています(元のpin??では使いにくいので)。


  端子に関しては、注意点がいくつかあります。

 ・LEDGN(2:0) ボード上のLEDと、外部ピンに接続しています。"L"でLEDが点灯します。

 ・PUSHSWN ボード上のプッシュSWに接続しています。押した時に"L"ですが、離した時にオープンになるので、FPGA側でプルアップする必要があります。(TEST.qsf内の set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to PUSHSWN がプルアップ指定です)

 ・CLK50MIN ボード上の50Mの水晶発振器に接続されています。変更はできません。

 ・CLKIN(6:0) 外部ピンに接続されている、入力専用ピンです。FPGA内部のPLLへ入力したい時などに使いますが、通常の入力信号を繋いでも構いません。このピンは入力専用のため、FPGA側でプルアップなどの処理ができません。そのため、ボード外でプルアップなどをするか、常に入力信号が入るようにする必要があります。
  
 ・GPIO0_D(9:0) チップ左側の外部ピンに繋がれている、汎用の入出力ピンです。未使用時はオープンにならないように、プルアップするか、出力信号とするかをする必要があります。(TEST.qsf内の set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to GPIO0_D* がプルアップ指定です)

 ・GPIO1_D(23:0) チップ下側の外部ピンに繋がれている、汎用の入出力ピンです。GPIO0_D と同様です。

 ・GPIO2_D(17:0) チップ右側の外部ピンに繋がれている、汎用の入出力ピンです。GPIO0_D と同様です。

 ・GPIO3_D(21:0) チップ上側の外部ピンに繋がれている、汎用の入出力ピンです。GPIO0_D と同様です。


  入力専用ピンが7本もあり、これをプルアップなどの処理をする必要があるのが、ちょっと面倒ですね。
  テスト時などは、最悪オープンでもいいと思いますが、通常運用時などはちゃんと処理した方がいいと思います。


=====================

  分かっている人には必要ないかも知れませんが、コンフィグの仕方を、怪しいCycloneIIボードを例にして説明します。


  その1)FPGAのSRAMに書き込む

  コンパイル時に生成されている、test.sof を書き込みます。電源を切ると書き込んだ内容が消えます(コンフィグROMの内容が実行されます)。

  まずセットアップをします。

  1)USB-Blasterを、基板のJTAG端子に挿します。内側の方で、外側のASPの方ではありません。

  2)CycloneIIボードに、DCジャックまたは基板テストポートから、5Vを供給します。基板に逆電圧防止用のダイオードがないので、プラスマイナスを間違えないように注意して下さい。間違えると一発で壊れる可能性もあります。
  電源が供給されると、コンフィグROMの内容が実行されます。初期状態なら、LEDが点滅すると思います。

  3)USB-Blasterを、パソコンのUSB端子と接続します。最初に接続する場合は、何かメッセージが出るかも知れません。

一度もUSB-Blasterを使った事がない場合は、ドライバをインストールする必要があるかも知れません。

  4)QuartusIIのProgrammerを起動します。画面が小さいので広げておきます。USB-Blasterが正常に認識できている場合は、上部に「USB-Blaster [USB-0] 」などと表示されているはずです。表示されていない場合は、左上のHardware Setup を押して、USB-Blasterを選びます。

  5)上部のModeを、JTAG になっている事を確認します。Programmer起動時はJTAGになっていると思います。

  6)左側のSTARTを押します。右上の Progress が進んで、すぐに書き込みが終了します。電源を切ると初期化されるので、このモードは、全部接続したままになります。

161106_01_コンフィグ1.jpg



  その2)コンフィグROMに書き込む1

  1)USB-Blasterを、基板のASP端子に挿します。外側の方です。

  2)〜4)は上記と同様です。

  5)上部のModeを、Active Serial Programming にします。何かメッセージが出ますので、OKを押します。

  6)左側の Add File を押して、TEST.pof を選びます。

  7)Program/Configure、Verify、Blank-Check の下の四角を押して、チェックを付けます。

  8)左側のSTARTを押します。右上の Progress が進んで、書き込みが終了します。FPGAは書き込んだ内容で動作していて、電源を切った後でも、再度電源を入れるとコンフィグROMに書き込んだ内容で動作します。

161106_01_コンフィグ2.jpg



  その3)コンフィグROMに書き込む2

  0)QuartusIIのメニューのFile-ConvertFiles を選んで、ファイル変換プログラムを起動します。
  上から2段目のProgramming File Typeを、JTAG Indirect Configuration File (.jic) を選択します。
  その下のConfiguration decive を、ターゲットのコンフィグROM(今回は、EPCS4)を選びます。
  その下のファイル名は適当に名前を付けます。
  一番下の大きいウインド内の、一番上の行のFlash Loader を選び、その右のAdd Deviceを押して、FPGAを選びます(今回は、CycloneIIのEP2CS5)。
  その下の SOF Data を選び、Add File を選び、TEST.sofを選びます。

  この状態で、一番下の Generate を押すと、〜.jic が生成されます。


  1)USB-Blasterを、基板のJTAG端子に挿します。内側の方で、外側のASPの方ではありません。

  2)〜4)は上記と同様です。

  5)上部のModeを、JTAG になっている事を確認します。Programmer起動時はJTAGになっていると思います。

  6)最初に表示されている、TEST.sof を選び、左側の Delete を押して選択を外します。

  7)左側の Add File を押して、〜.jic を選びます。

  8)Program/Configure、Verify、Blank-Check の下の四角を押して、チェックを付けます。上側はチェック出来ないので、下側のみです。

  9)左側のSTARTを押します。右上の Progress が進んで、書き込みが終了します。書き込んだ直後は、FPGAは動作していないので、一度電源を切ります。再度電源を入れるとコンフィグROMに書き込んだ内容で動作します。

161106_01_JIC変換.jpg

161106_01_コンフィグ3.jpg



  結果は、コンフィグROMに書き込む1と同じなのですが、ASP端子が不要なので基板設計などがラクになります。


posted by えすび at 19:57| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする