アルテラFPGAの開発を続けています。 最初の部分では、CentOS7でのアルテラQuartusソフトウェアのインストールプロセスについて説明しました。 さて、最後に、何か「鉄」を試してみましょう。たとえば、LEDを点灯します。 しかし、最初に、小さな紹介。
私の活動分野の1つは、ベラルーシの小さな町にあるロボットクラブで教えることです。 このキッチン全体に飛び込んで、チームのコーチとしてだけでなく、裁判官としてもさまざまな競技会に参加した後、特にarduinoと一般的なマイクロコントローラーは、競争ロボットの最高の基盤ではないという結論に達しました(私はそれについて沈黙しています)。 多くのタスクは、ベアエレクトロニクスレベルでより効率的に解決されます。 さらに、ロボット工学のサークルと「学校」の90%は、エレクトロニクスの基本的な知識すら与えず、純粋に完成したデザインのプログラミングを「学習」することに焦点を当てています。 しかし、純粋に電子的なロボット(たとえば、不適切に忘れられたBEAM)は特定のタスクに合わせて調整されており、競技の条件を変更すると、ロボットの大幅な再構築が必要になりますが、これは常に可能とは限りません。 ここで、プログラマブルロジックについて思い出しました。 トレーニングでのFPGAの使用に関する情報を検索した結果、Yuri Panchul YuriPanchulのブログに出会いました 。 私はこの機会に彼に感謝を公に表明します。 彼のおかげで、私たちのクラブはTerasIC DE0-CVボードを入手しました。アルテラサイクロンVは完全に無料です。
実際、この出版物とその後の出版物は実際の教材を構成し、サークルで実施します。 学童用マグカップにFPGAを使用することはまだ一般的ではないため、建設的な批判とコメントに感謝します。
さあ、行きます。 この出版物は、Quartusの最初のステップ、Verilogの基本デジタルロジックの説明、およびアルテラCyclone V FPGAへの構成のロードについて説明します。USB-Blasterが統合されたTerasIC DE0-CVボードを使用します。 LinuxでのUSB-Blasterの「起動」の問題にも触れます。
Quartusを起動します。

「新規プロジェクトの作成」を選択します。 プロジェクト作成ウィザードのダイアログボックスが起動します。 次に、[次へ]をクリックします。

そして、プロジェクトの作業ディレクトリを選択する必要があります(アクセス権を忘れないでください!)。 プロジェクトの名前を思い付きます:

次のステップで、プロジェクトにファイルを追加するよう提案されます。 この段階では、これは必要ありませんが、将来的には、作業を容易にするために、少なくともピン宛先ファイルを追加する価値があります。

今こそ重要な設定の時です。 このステップでは、プロジェクトを作成するクリスタルを選択する必要があります。 原則として、間違えたり、別のデバイス用にプロジェクトを再コンパイルしたい場合は、後で修正できます。

ここでは、追加のツールを選択できます。 すべてをそのままにして、「次へ」をクリックします。

さて、初期設定を完了してプロジェクトを作成しました。 完了をクリックします。

次に、プロジェクトのロジックを記述するファイルを作成する必要があります。 「 ファイル/新規」メニューに移動すると、ファイルの種類を選択するダイアログが表示されます。 原則として、ロジックは特別なグラフィックエディターで描画できますが、ここではVerilog HDLファイルを選択します。

ファイルが作成されたら、要素NO、AND、OR、XORを説明するプログラムのテキストを書き込みます。 入力として、ボード上のスイッチ(キー*)を使用し、出力ステータスはLED(LED *)によって示されます。 小さなコメント:ボードの製造元は、Windowsでのみ動作する特別なプログラムで入力および出力用の構成ファイルを作成することを提案しています。 この方法を使用する場合は、プログラム内の「ワイヤ」と「レジスタ」の名前が構成ファイル内の名前と一致することを確認する必要があります。 しかし、今はすべてを手動で行うため、任意の名前を選択できます。

ファイルを保存します。 重要なポイント-正しい操作のためには、ファイル名がプログラムに記述されているモジュールの名前と一致する必要があります(この例ではbasic_logic )。

ここで、プロジェクトを正常にコンパイルするためにいくつかの設定を行う必要があります。 まず、メインにあるモジュールを明示的に示します。 特に、このプロジェクトは関係ありませんが、多くのモジュールを持つ複雑なプロジェクトの場合、この手順が必要です。 [ プロジェクト/トップレベルエンティティとして設定 ]メニューに移動します。 できた 次に、特定のクリスタルに対していくつかの設定を行う必要があります。 メニュー項目[ 割り当て/デバイス ]を選択します。 ダイアログが開き、クリスタルのタイプを変更する機会があります(または、以前に正しく指定したことを確認します)。

ここで、[ デバイスとピンオプション ]ボタンをクリックし、開いたダイアログで、まず、未使用のピンの状態を設定します。 デフォルトでは、チップのすべての未使用の接点はゼロ電力に接続されています。 しかし、これらの結論がボード上でどのように物理的に分離されているのかはわかりません。そのような構成は、チップの短絡と故障につながる可能性があります。 したがって、未使用のピンを高抵抗の入力として使用する方が安全です- 入力としてトライステート

次の必要なステップは、マイクロサーキットのどの物理的なレッグが、私たちが説明したモジュールの入力と出力に対応するかを示すことです。 これを行うには、 Assignments / Assignment Editorメニューに移動します。 開いたウィンドウで、取締役会のスキームに従って必要な予約を行います。 列に入力または出力の名前を入力します。 [ 割り当て名]列で、リストから必要な[ 場所]設定を選択します。 [ 値 ]列に、マイクロサーキットの連絡先の名前を入力します。

自然な質問:連絡先の名前はどこから来たのですか? 通常、ボードまたは特定のチップのデータシートには、PIN OUTのサインがあります。 先ほど書いたように、構成ファイルを作成する特別なプログラムがボードに付属しています。 そして今、あなたはこのデータを使用することができます:

最後に、Start Compilationボタンをクリックできます!


16個の警告が表示されます。 深刻なことは何もありません。

レポートを見ることができます:

次に、ボードを接続し、プログラマープログラム( ツール/プログラマー)を実行します。 Linuxは自動的にUSB-Blasterを取得しますが、ファームウェアは動作しません...さて、お気に入りのコンソールを開き、タンバリンで武装してQuartusのドキュメントに飛び込みます...
まず、システムがプログラマを認識していることを確認します。
dmesg | tail

custom.shファイルを作成する/etc/profile.d/フォルダーに移動します

そして、 / etc / udev / rules.d /フォルダーに51-usbblaster.rulesという名前のファイルを作成し 、それを入力します
意味:

これですべてが機能し、ファームウェアがチップに完全にロードされます。

結果に感心し、スイッチで遊んで、LEDを点滅させます。