前回のList1を見てもらうと分かるのだが、TerasicのSystem Builderを使うと無条件で50MHzのClock信号(MAX10_CLK1_50 / MAX10_CLK2_50 / MAX10_CLK3_50)と、それとは別にADC用に10MHzのクロック信号(ADC_CLK_10)が用意される。
MAX 10のADCは10/20/40/80MHzのクロック信号入力が想定されており、CPUの50MHz信号をそのまま入れることは不可能。そこで、このADC_CLK_10をそのまま利用しようと思ったのだが、これがうまくうかない。そもそもTerasicのサイトを見ても、このADC_CLK_10の使い方が良く分からないありさまである。そこで素直に50MHzの信号から10MHzのクロック信号を生成することにした。
Photo07:一覧が1画面で入りきらなかったので、抜き出して表示。一応ADCからCPUに割り込みを掛けられるようにIRQも接続している(これを接続しなくてもGenerate HDLはできるもが、Warningが出るので)このために利用できるのが、Alteraが提供するMegaFunctionの1つである「ALTPLL」である。
ということで、これを追加して利用できるようにする。
まずQuartus IIのIP Catalogから“Installed IP” → “Basic Functions” → “Clocks; PLL and Resets” → “PLL” → “ALTPLL”を選択する(Photo08)。するとファイル名の入力になるので、適当な名前を入れる(Photo09)。
Photo08:下のログに、ADC_CLK_10をADC Clockとして接続した場合のエラーが見えている。そもそもMAX 10の上に10MHzのClock Sourceがある訳ではなさそうで、ではこれは何のためにあるのか、が謎するとPlug-in Managerが立ち上がるので、まず入力クロックに50MHzを指定する(Photo10)。次の“Input/Lock”タブは、Lock Outputにチェックを入れておくだけでいい(Photo11)。その次の“Bandwidth/SS”タブでは、“Bandwidth Setting”を“High”にする(Photo12)。
その次の“Clock switchover”は無視して、上の“Output Clock”タブを選択、ここの“clk c0”で出力を10MHzに設定する(Photo13)。最後に“Summary”タブで確認してから「Finish」を押すと、qipファイルを生成したことが示されるので、これをプロジェクトに追加する。
Photo13:いきなり“Requested Settings”には入力できないので、clock parameterで“multiplication factor”を1、“division factor”に5を入れてから“ << Copy ”ボタンを押すと10MHzに設定される
オンボードされた温湿度センサーからFPGAで値を得る
「MAX 10 NEEK」でストップウォッチを開発し、内蔵メモリから起動する
「MAX 10 NEEK」に搭載されたDDR3メモリを使う
「MAX 10 NEEK」へソフトコアCPUを組み込む
周辺機器の充実した「MAX 10 NEEK」で本格的な開発を目指すCopyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク
よく読まれている編集記者コラム