FPGAによるPICプログラミング


9

FPGAカードを介して初めてPICをプログラムする方法(フラッシュに書き込む)があるかどうかを知りたいです。

PICはすでにFPGAにはんだ付けされており、削除できません。PICにはブートローダーはありません。したがって、FPGAからデータを受信できるように、ブートローダーを使用してUSART / SPI / I2Cモードでプログラムする必要があります。

通常、はんだを外してPICKitなどのハードウェアプログラマーに接続し、MPLABなどのコンピューター上のソフトウェアでプログラムする必要があることはわかっていますが、それを買う余裕はありません。

.hexファイルであるMPLABを使用してブートローダーを生成できますが、FPGAに転送してから、FPGAピンを介してPICに転送するにはどうすればよいですか。

使用されるPICはMicrochip PIC12F1822です。


2
チェックだけ:FPGAを再プログラムできますか(つまり、これを行うために必要なすべてのツールがあります)?
pjc50 2014年

これはある種の開発ボードですか?
マットヤング

はい、FPGAを再プログラムするために必要なすべてのツールを持っています(標準のUSB経由でコンピューターに接続されています)。
ミスト2014年

1
いいえ、彼らはこの努力をしなかったので彼らは非難されました。実際、私はインターンシップに参加しており、それは専門家ではないことがわかりました。私はまだ問題を修正する必要があります。パッケージが既に完了しているため使用できない外部プログラマー以外の方法でこのPICを再プログラムする方法は本当にわかりません。
ミスト2014年

2
外部プログラマを介してプログラムするために、PICのトレースまたはピンにジャンパー線をはんだ付けする方法はありませんか?FPGAを通じてそれを行おうとすることは、卒業論文プロジェクトのように聞こえます。
horta 2014年

回答:


10

いいえ、実際には、PICをプログラムするためにSPI、UART、またはI 2 Cを使用する必要はありません。唯一、その目的のためにロードされた特別なコード(ブートローダ)を持っていないPICに新しいプログラムを取得する方法は、外部ハードウェアのプログラミング・インタフェースを使用することです。電気的には、これはVss、MCLR、PGC、およびPGDへの接続を意味します。プログラマーもVddに接続しておくと便利ですが、Vddレベルがわかっていてプログラマーがそれに応じて調整している限り、このチップには必要ありません。

低レベルのハードウェアインターフェイスは非常にシンプルです。PGD​​は、PGC(クロックライン)の立ち下がりエッジでPICによってサンプリングされるデータラインです。PICを最初にプログラミングモードにするには、MCLRの特定のエッジに関連して特別な32ビットキーを入力します(ただし、高電圧プログラミングについては下記の注を参照してください)。

より高いレベルのプロトコルはより複雑になります。ほとんどの処理は6ビットのコマンドで行われ、その一部には14ビットのデータワードが続きます。プログラミング仕様を注意深く読む必要があります。プログラミング仕様はデータシートとは別のドキュメントであることに注意してください。マイクロチップ社のWebサイトで特定のPICの製品ページにアクセスすると、ドキュメントセクションにプログラミング仕様へのリンクがあります。

高電圧プログラミングについて追加

これらの種類のPICには、プログラミングモードに入る方法が2つあります。高電圧(HVP)と低電圧(LVP)です。高電圧方式では、MCLRを8〜9ボルトに上げて、プログラミング中にそれを維持する必要があります。この方法は、PICにプログラムされた可能なデータに関係なく、常に機能します。

プログラミングモードに入る低電圧方法は、MCLRをハイに駆動してからローに駆動し、PGCとPGDを通常使用して、特別な32ビットのキーシーケンスでクロッキングします。デバイスは正しいキーシーケンスでプログラミングモードに入り、MCLRがローに保持されている限り、プログラミングモードを維持します。

低電圧方式は、構成ビットの1つで無効にできます。ただし、構成ビットの消去状態では低電圧プログラミングが可能であり、工場からその方法で出荷されます。この構成ビットは、プログラミングが高電圧方式で入力された場合にのみLVPを許可しないように設定できます。したがって、LVPを有効にしない場合は、以下のすべてが当てはまる必要があります。

  1. PICは最後にHVP対応のプログラマーでプログラムされ、HVPプログラム入力モードが使用されました。

  2. PICにプログラムされたHEXファイルは、構成ワード2のLVPビットを意図的に非消去状態に設定します。

LVPを無効にするには、慎重なアクションと適切なプログラマーがかなり必要になるため、おそらくまだ有効です。奇妙な理由で故意に無効にされた場合、PICを少なくとも一括消去を実行するのに十分な時間(LVPを再度有効にする)プログラミングモードにするには、MCLRに8〜9 Vを供給する必要があります。


3

PICのプログラミングには高電圧が必要です。はい、PICを「LVP」または低電圧プログラミングモードに切り替えることは可能ですが、これを行うには高電圧プログラマが必要です。

PICがすでにLVPモードになっている場合は、そうです。FPGAからPICを簡単にプログラムできます。すべてのデータシートには、チップのプログラミングに必要なプログラミング波形が含まれているため、FPGAで独自のPICプログラマーデバイスを構築する場合に該当します。

ただし、PICがLVPモードになっていない場合は、高電圧(通常は10V)を生成し、適切なタイミングで MCLRピンに印加してプログラミングモードに入る必要があります。この種類のハードウェアがボード上にない場合は、最終的にトリガーされるタイミングに関してFPGAによって制御される追加のハードウェアが必要になります。

ほとんどのPICプログラマーは、PICオンボードを使用して提供された5Vから最大10Vまで電圧調整を管理するための小さなブーストレギュレーター(電圧ダブラー)を備えています。彼らはしばしばPICからのPWMとPIC上のADC入力を単純なブーストレギュレータとして使用します。

公開されているPICkit2回路図を見てください。


1
いいえ、おそらく高電圧は必要ありません。12F1xxx / 16F1xxxシリーズのすべてを含む新しいパーツのほとんどは、キーシーケンスを使用してプログラミングモードに入ることができます。このシーケンスは高電圧を必要としません。これは構成で無効にすることができますが、部品は工場から出荷され、キー方式が有効になっています。誰かが意図的にキーシーケンスプログラムモードのエントリを無効にしない限り、それはまだ利用可能であるはずです。無効になっている場合は、はい。MCLRを8〜9 Vに上げてプログラミングモードにする必要があります。
Olin Lathrop、2014年

キープログラミングモードはLVPモードです。設定でLVP = 1に依存しています。そのチップはデフォルトでLVP = 1になっているようですが、その特定のチップでは= 1ですか、それともすでにLVP = 0でプログラムされていますか?知るか?私が言ったように-それがLVPモードの場合、HVは必要ありません。それ以外の場合は必要です。
Majenko

したがって、LVPモードでプログラミングするには、「デジタル」PICプログラマ(VHDL)をFPGAに実装する必要がありますか?そのやり方は思いつきません。それを構築するのを手伝ってくれませんか?
ミスト

いいえ、できません。pickit2の回路図が利用できるので、必要な信号がわかります。利用可能なpickit2ファームウェアのソースがあるので、通信方法を知っています。使用可能なプログラミングデータシートがあるため、送信する指示と送信方法がわかります。コンピュータからPICにファームウェアを通信する方法は完全にあなた次第です。FPGAにどれだけのインテリジェンスが必要で、PC側はどれくらい必要ですか。
Majenko、2014年

はい、ありがとうございます。そもそも、PICKIT 3を使用してPICを直接プログラムするつもりです。PICKIT(私の会社が目的のために購入したもの)については、PICのピンに直接接続することを恐れています。 FPGAにも接続されています。オフになっているFPGAに電圧がかかり、損傷する可能性があることを心配しています。それは正当な懸念ですか?
ミスト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.