spartan3をCPUから「slave serial mode」でconfigしてみます.
前回の続報です.
まずは全体像の説明から.
2つの手順から成ります.
手順1:FLASHに焼く
PCのISEでlogic開発は済ませておきます.
xxx.binがFPGAのconfig dataです.
不揮発性のSerial FLASHにxxx.binを焼く.
FLASH→FPGAへserialでトロトロとconfig dataを流し込んでやります.
CPUにはArduino nanoを使います.
Serial FLASHはW25Q32というもので32Mbit品だったかな.つまり4MBです.
xxx.binは55kBぐらいですから4MBも要りませんが手持ちがこれなんで.
FPGAは中華通販で入手したXC3S50-4VQ100Cです.以上がやりたいことの全体像です.ーーーー
「手順1:FLASHに焼く」はこの投稿ではスルーします.
以下では「手順2:FPGAをconfigする」の動作確認を行います.
ーーーー
slave serial modeのconfigに使われるFPGAのpinについてdata sheetから抜き出します.
こんな結線になるんだそうです.
HSWAP in
あらゆるpinを内部pullupする役割
config中は0にすること
通常使用時はdon't careと書かれているのでハンダで0固定にする
M[2:0] in
slave serial modeにするには111にする
ハンダで111固定にする
CCLK in
slave serial modeではserial clock入力になる
DIN in
serial data入力
やってみたところでは.binのLSB 1stで入れるのが正解
PROG_B in (外部pullup)
config開始のゴング
0にしたらconfig開始.すぐ1に戻す必要がある
open drainで駆動するのがオススメだってさ
DOUT out
serial data出力
マルチFPGAの際のディジーチェイン用かな、ここでは使わない
INIT_B inout (外部pullup)
PROG_Bを受けてFPGAが内部初期化してる間0が出力される
内部初期化が終わると1になる
通常使用時は1か0に固定するべきと書かれている
DONE inout (外部pullup)
config中0が出力される
config終了したら1が出力される
pinは以上.CPUが制御するのはCCLK,DIN,PROG_B,INIT_B,DONEの5本です.
ーーーー
これらをどのように制御すればいいのか?
ポエム風に語ります.
①半田付けで固定してしまうpin
M[2:0]=0b111
HSWAP=0
②CPU起動時初期設定
PROG_B=1
CCLK=1
③開始のゴング
PROG_B=0 → 1mSec wait → PROG_B=1
④INIT_B=1になるまでpoling wait
⑤FLASHの先頭から順にbit serialで1byteずつLSB 1stで出す(DIN,CCLKへ)
ただし、FLASH上のconfig data(54kB)よりも256byte多めに出す
(この理由は、FPGAがconfig後に余分なCCLKを要するため)
⑥ ⑤のbyte送出毎にDONEをpolingする.DONE=0なら⑤へ
⑦ DONE=1につき終了
動きました.Lチカですけどね.
Xilinx ISEで.bin fileを生成するやり方とか回路とかfirmwareとか.
かしこ
ブロック図しかわかりませんでした
返信削除電源修理を秋葉原でかいました部品取り替えしてみます
千○は 顔面偏差値採用なのかと思う 販売なので 正解例
明日は秋葉原へいきます
削除アメ横→末広町→アキバ のいつもの巡回ルート
すてきなスパルタン3を見て ボーっとしていたら声をかけてください
削除簡単にみつかると思います
ベストアンサー
アルテラを見ていて はっときづいたら 家の玄関でした
手に荷物を持っていました
今日天気悪いですよね、行く気が徐々に失われつつあります
削除さじはなげられた
削除ベストアンサー
さいはなげられた
ルビコン川を渡る 川口浩探検隊
しぶや〜 これから晴れますかね
削除