Digilentの小型FPGAボードCMOD S7のチュートリアルも一通りやってみたので、FPGAの外に接続するデバイスを用意しようと思い立ちました。このボードは3.3VのIO電源で、LVCMOSでインタフェースをとるようになっています。一方DIP形状のピン側には5V電源端子のみ。3.3VはPMODコネクタのみ接続。
※かえらざるMOS回路 投稿順 INDEX
※Digilent CMOD S7のマニュアルは以下のページにあります。
なお、CMOD S7搭載のFPGAは「多分、お求めやすい」XC7S25-1CSGA225Cです(Spartan-7シリーズ。)
※実習には AMD社(Xilinx) Vivado 2023.2 を使用させていただいております。
CMOD S7ボードの端子と電源
CMOS S7搭載のSpartan-7は、ローエンドの「お求めやすい」FPGAとは言え現役機種なので、ボード上の電源はちょっと込み入ってます。ありがち?
-
- 5V
- 3.3V
- 1.8V
- 1.0V
1.0VはFPGAのコアとRAMに供給、1.8VはFPGAとUSBコントローラに供給ということで端子には出ていないようです。外部端子に出ているのは3.3Vと5Vです。このうち5Vは、USBホストから供給の5VあるいはボードのDIP足の24番VU端子に接続されています。USBホスト側からの電源線にはダイオードが挿入されているので、VU端子の外から5V電源を与えることも可能。逆にUSB電源のときにVU端子から5Vを取り出すこともできそうです。一方、3.3VのIO電圧の方はUSBと反対側に設けられているDigilent社規定の6端子x2列のインタフェースコネクタ、PMOD端子の方には接続されているのですが、ボード下面の「DIP足」側には出てません。
あまり電気を食わないデバイスくらいであればPMODコネクタから3.3Vを取り出しても良いのでないかい、ということで今回はCMOD S7の隣にSN74LVCH16T245を取り付けてみました。
SN74LVCH16T245
TI製のこのチップは『構成可能な電圧変換機能搭載、3 ステート出力、16 ビット・デュアル電源バス・トランシーバ』であります。御本家TI様の製品ページが以下に。
異なる2電源(もちろん同電圧でも構わないハズ)間に双方向に信号をやり取りすることができるトランシーバであります。これをCMOD S7の隣に置いておけば、CMOD S7の3.3V LVCMOS端子と5Vデバイスとのインタフェースなど自由自在。以下の別件シリーズの過去回でも実験しておりますぞ。
部品屋根性(69) レベル変換おさらい3、3.3Vと5V間双方向その1
ただし、このデバイス、表面実装品でブレッドボード上で扱うのが辛いです。例によって秋月電子殿のDIP化モジュールを使用です。その製品ページが以下に。
今回実験の回路図
秋月電子通商殿のDIP化ボード上には必要なパスコン、プルアップ抵抗など完備されています。今回CMOD S7に接続の簡易な回路図(訂正版)が以下に。
今回は、CMOD S7の端子番号9番を出力にして3.3VのLVCMOSの波形を出力し、SN74LVCH16T245にはA側電源3.3V、B側電源5.0Vを与えておいて5.0Vの信号を取り出してみるだけです。なお、アウトプットイネーブルは制御していないので、1OE#のみ強制的にロウ(プルアップは秋月ボード内蔵。)
Vivadoから実験用回路を書き込み、動作確認
1端子をペコペコ動かすだけなので、過去回でやったサンプルプロジェクトのチョイ変。クロックはCMOD S7搭載の12MHzクロックをそのまま使用、24ビットのカウンタで分周した結果をpio9番端子に出力です。制約ファイルの出力のところはこんな感じ。
流石に一発でビットストリームまでノーエラーで成功。ちょっとは練習のかいあった?
動作しているところを観察している波形が以下に。黄色がCMOD S7出力の3.3V LVCMOSの波形、青色がSN74LVCH16T245のB側出力波形(5V)です。
予定通りな波形。次回はもっとVerilog練習しろよ、自分。