2019年01月19日

MachXO3LFでHDMI出力

今回はLattice製FPGA MachXO3LF Starter Kitを使用して
HDMI出力をしてみました。

FGPAからHDMI出力をする方法として、
電流モード差動ドライバを模擬してHDMIの信号を出力する方法
HDMIのトランスミッタICを使用する方法があります。


最初、MachXOシリーズで電流モード差動ドライバを模擬して
試してみましたがうまくいきませんでした。
MachXO3とHDMIで差動信号がアンマッチだったことが原因だと思われます。
また、エンコーダにギヤボックス等のMachXOシリーズ固有の機能を
活用しないと実現できないため、汎用性に少し欠けます。

このようなことから、HDMIはDVI規格の1つなので、
入手性のよいDVIトランスミッタTFP410を使用して実装することにしました。

まずはTFP410にHDMI出力端子を取り付けた
TFP410 Beakoutボードを設計しました。


img1.jpg

実装やコードを参考にしてみました。

TFP410Beakoutボードの実装を終えて
MachXO3LFを使用してHDMI出力をしてみましたが、
なかなかテストパターンが表示されず…
テストパターンが出るまで1週間ほどデバッグに要してしまいました。

結論から言えば、MachXO3LFのIO設定で
Slewrateの設定がデフォルトはSlowとなっており、
Fastにすることで意図した信号が出せるようになりました。


0031-01-19 午前10.06.09 IMG_6996.JPG

RGBの3bitで出力してみました。

電流モード差動ドライバの模擬回路作成から、
TFP410を使用したテストパターン出力まで
空き時間で1か月強、要してしまいました。
色々デバッグしてテストパターンが出たときは感動しました。

HDMIで色々画像を出力するためにはMachXO3LF内蔵のRAMでは足りません。
次は外部RAMとしてSDRAM等のテストをしてみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年12月29日

Kicad 5.0.2 等長配線の方法

今回はKicad 5.0.2で等長配線をする方法について、
覚書として紹介します。

等長配線をする際のポイントは「モダンツールセット」を使用することです。
「設定」→「モダンツールセット(アクセラレータ、もしくは代替)」を選択します。

■単線の場合

@「モダンツールセット(アクセラレータ、もしくは代替)」を選択

Kicad-setting.jpg


A普通に単線としていつも通りに配線する

Kicad-tool2.jpg


B「配線長の調整」をクリックする

Kicad-tool.jpg


B調整したい単線をクリックする
「現在の長さ/合わせたい長さ」が表示される

Kicad-tool4.jpg

C右クリックで合わせたい長さを設定する
合わせたい長さは配線で長い配線に合わせるため、
まず、長い単線の長さを確認して少し長めに設定する。

例 長い単線が25.65mmの場合→合わせたい長さ26mmなど

右クリックで「配線長の調整設定」をクリックする。

Kicad-tool3.jpg

Kicad-tool6.jpg


D等長配線のミアンダ配線を配置したい部分の開始点を左クリックして、
終了点までマウスを動かすと自動的にミアンダ配線される。
全く表示されない場合はミアンダ配線するスペースがない可能性がある。
スペースに余裕をもって配線しなおす。

Kicad-tool5.jpg

この状態のままで
間隔を広げる場合は1、間隔を狭める場合は2、
振幅を大きくする場合は3、振幅を小さくする場合は4のキーを押して調整する。
調整が完了した場合は再度、左クリックすると配線が完了する。

調整は現在の長さと目標の長さを見ながら値が目標に近づくように調整する。


■差動ペアの場合
差動ペアの場合はKicadが差動ペア線であると認識するために
netlist作成時に〇〇+、〇〇-という命名付けをします。
もしくは〇〇_P、〇〇_Nでもよいみたいです。

末尾に+と-をつけると自動的に〇〇が一致した線を
差動ペアとして認識します。

@配線「差動ペア」をクリックする

Kicad-tool.jpg

A差動ペアの+、-のどちらかの開始点を左クリックして
配線を開始する。終了点で再度、左クリックして配線を完了する。

Kicad-tool7.jpg

B差動ペアでビアを打つ場合は単線同様に右クリックで
「貫通ビアの配置」でビアを追加する。
差動ペアのビアは単線に比べてスペースを必要とするため、
周辺に空きスペースがない場合は
「貫通ビアの配置」をクリックしてもビアがなかなか配置できない。
十分にスペースがある場所でビアを配置する。


Kicad-tool8.jpg


C「差動ペアの配線長の調整」をクリックする

Kicad-tool.jpg

D単線同様に調整したい差動ペアの中心をクリックする
「現在の長さ/合わせたい長さ」が表示される
右クリックで合わせたい長さを設定する
合わせたい長さは配線で長い配線に合わせるため、
まず、長い差動ペア線の長さを確認して少し長めに設定する。
右クリックで「配線長の調整設定」をクリックする。


等長配線のミアンダ配線を配置したい部分の開始点を左クリックして、
終了点までマウスを動かすと自動的にミアンダ配線される。
全く表示されない場合はミアンダ配線するスペースがない可能性がある。
スペースに余裕をもって配線しなおす。

Kicad-tool9.jpg

この状態のままで
間隔を広げる場合は1、間隔を狭める場合は2、
振幅を大きくする場合は3、振幅を小さくする場合は4のキーを押して調整する。
調整が完了した場合は再度、左クリックすると配線が完了する。
調整は現在の長さと目標の長さを見ながら値が目標に近づくように調整する。



以上で単線と差動ペアの場合の等長配線ができます。
ポイントは
・「設定」→「モダンツールセット(アクセラレータ、もしくは代替)」を選択
・ミアンダ配線するために余裕のある配線スペースの確保
・差動の場合は配線名称を〇〇+、〇〇-といった名称にする
です。

これでKicad 5.0.2 等長配線ができました。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年12月15日

Kicad 両面フットプリント作成方法

今回はKicadのフットプリント作成時に
両面にパッドがある部品を作成するポイントを覚書として紹介します。

普段は片面、特に表面のパッドしか作成しないため、
両面にパッドがある部品を作成する情報がなかなか見当たりませんでした。

今回、作成する両面にパッドがある部品はHDMIのコネクタです。

hdmi-con.jpg

基板に挟み込んで実装するタイプです。


通常通り、表面のパッドを作成した後、
裏面については次のように設定して作成します。

kicad-back.jpg

表面では「F.Paste」「F.Mask」にチェックが入っています。
裏面の場合は「B.Paste」「B.Mask」にチェックを入れ、
合わせて、「導体」に「B.Cu」を選択します。

これにより、裏面のパッドが作成できます。

実際に作成したHDMIコネクタのフットプリントがこちら。

kicad-con.jpg

両面にパッドを作成することができました。


posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年11月17日

フォトダイオード増幅回路

光センサの1つにフォトダイオードがあります。

距離センサ、ガルバノメータのエンコーダ等では
フォトダイオードを使用しています。

フォトダイオードの信号は微弱な電流のため、
微弱な光の強弱を検出するために増幅回路が必要です。
今回はフォトダイオードの増幅回路を紹介します。

電圧電流変換の回路を応用して、
微弱なフォトダイオードの電流を増幅します。
回路は下記のような感じです。

photodiode.jpg

光を受けて発生した光起電力を増幅するため、
フォトトランジスタではこの回路は使用できません。
フォトダイオードの一種が太陽電池なので、
光起電力が発生するダイオードであれば、
この増幅回路が使用できます。
秋月ではPINフォトダイオード等が使用できます。

フォトダイオードの増幅回路は他にもありますが、
光の有無を検出するような回路ばかりで、
光の変化をレンジが広く、線形に得られる回路はなかなかありません。
色々検討して上記の回路にたどり着きました。

今後は上記の回路を応用してガルバノメータを取り込んで、
デジタル制御してみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2018年11月03日

MachXO3LFのSPI Flashからのロード方法

今回はLattice製FPGA MachXO3LF Starter Kitについて紹介します。
MachXO3LF Starter KitはLUT規模は小さいものの、
3千円程度とお手頃な価格で入手することができます。
また、開発環境Diamondもフリーライセンスで利用できるため、
気軽に始めることができます。

特に開発環境のDiamondがダウンロードサイズ1GB前後、
インストール後が5GB前後で他社の開発環境に比べて
コンパクトな点も気に入っています。

今回はMachXO3LFのSPI Flashからのロードする設定方法を紹介します。

Starter Kitのちょっとした注意点
MachXO3LFとMachXO3Lの2種類ある点です。

・MachXO3LFはFPGA内にFlashを内蔵しており、
何度も書き換えが可能なタイプ。

・MachXO3LはNVCM(Non-Volatile Configuration Memory、
ワンタイム・プログラマブル)という数回のみ書き換え可能な
メモリを内蔵しているタイプです。

製品実装等ので将来、書き換えることがない場合にMachXO3Lを使用しますが、
一般的なホビー用途や検討では何度も書き換え可能な
MachXO3LFが適切といえます。

最初に詳しく調べもせずに誤ってMachXO3Lを買ってしまいました…
後に改めてMachXO3LFを購入。


■MachXO3LF/MachXO3L Starter Kitについて
両タイプもSPI Flashが実装されています。
購入時にデモプログラムが書き込まれており、
MachXO3LはSPI Flashにデモコードが書き込まれており、
FPGAにはSPI Flashからプログラムをロードするコンフィグが
書き込まれています。
そのため、プログラムの書き換えはSPI Flashに
任意のbitデータを書き込んで使用します。

一方、MachXO3LFはデモプログラムは内蔵Flashに書き込まれています。
そのため、プログラムの書き換えは内蔵Flashを書き換えればよいのですが、
せっかくなので内蔵メモリでなく、外部のSPI Flashから読み込みます。

ただ、どのように外部のSPI Flashから読み込むのか、
情報が少なく、少し苦戦したため、
覚書として今回紹介することにしました。


@MachXO3LF内蔵Flashに外部SPIブートの設定書き込み

プロジェクトを生成する際のグローバル設定は下記のように設定します。


generalsetting.jpg

ポイントは
・MASTER_SPI_PORTをENABLEにする
・CONFIGURATIONをEXTERNALにする
です。

他の設定は任意です。

グローバル設定を保存しプロジェクトを合成します。
そのあと、SPI Flashに書き込むBitstream File
内蔵Flashに書き込むJEDEC Fileの2つを生成します。

続いて、外部SPI Flashから起動するための
設定ファイル(コンフィグレーション)を内蔵Flashも書き込みます。
その際にBitstream File全体でなく、
設定ファイル(コンフィグレーション)のみを書き込むことがポイントです。

書き込む際のOperationに「FLASH CFG〜」を選択します。
設定ファイル(コンフィグレーション)のみの「CFG」がポイントです。

flashcfg.jpg

これでMachXO3LFは外部SPIから起動するようになります。

A外部SPI Flashにプログラム書き込み

Starter Kitに搭載のSPI FlashはSpasion製
SPI-S25FL208Kを搭載しています。

SPI FlashオプションにSPI-S25FL208Kを選択して、
Bit Streamファイルを選択して書き込みます。

flashwrite.jpg

電源再投入でSPI Flashからプログラムを読み込みます。



今回は今回はMachXO3LFのSPI Flashから
ロードする設定方法を紹介しました。

FPGAを扱ったことが少ないため、
SPI Flashから読み込む設定をどのように書き込めばよいのか、
いろいろ探してしまいました。

書き込み時にプログラム全体を書き込むのでなく、
設定ファイル(コンフィグレーション)のみを書き込むことで、
SPI Flashから読み込むことができました。

SPI Flashから読み込めることが確認できたので、
Starter Kitを使っていろいろ実験してみたいと思います。

posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする