FPGA、最初のステップ


11

さて、これはFPGAに関する私の質問の続きです

最後に、Spartan 6 FPGAを搭載したDigilent Atlysを選択しました。マイクロコントローラーである程度の作業を行ったものの、FPGAの経験はありません。

FPGAのデータシートを最後まで読んだので、Verilogから始めることをお勧めします。コード例は見つかりませんでしたが、データシートでさえ初心者にはわかりません。

今、プログラミング、シミュレーション、合成について少し手をやりたいのですが、これが私がやりたいことです

  1. 奇数の周波数、たとえばFPGAから54Mhz(100Mhzクロックで動作)を生成し、ピンの1つにルーティングします。これにはおそらくDCMまたはPLLを使用する必要がありますが、ここから開始する方法がわかりませんか?

  2. FPGAからある種のI2C読み取り書き込みを実装します。

私が探しているのはリファレンスです。DCM、スライス、clbなど、FPGA内で使用可能な各ハードウェアコンポーネントのコード例と説明が記載されたオンラインの書籍または本です。

これで、FPGAの世界を始めることができると思います。

回答:


13

コード例

オーバーホップOpenCoresの、あなたはオープンソースプロジェクトの数十があります。多くはVerilogで記述されており、I / Oデバイスからプロセッサまでの全範囲をカバーしています。

また、ザイリンクスから入手できる多くのアプリケーションノートを忘れないでください。彼らは自分のデバイスで非常に役立ちます。

設計フロー

FPGA設計に関連する手順の概要を理解できるように、設計フローに関する1〜2冊の本を入手してください。要約すると、それらには以下が含まれます。

  1. デザインエントリ-あなたの場合、Verilog。
  2. 機能シミュレーション-さまざまなツールの使用。
  3. 合成-あなたの場合、ザイリンクスISEツールを使用します。
  4. シミュレーション-Verilogの一部の側面は合成できないため、合成後のデザインを検証します。
  5. 配置配線-ザイリンクスISEツールを使用。
  6. インプリメンテーション-FPGAにデザインをダウンロードします。
  7. テスト。

FPGAコンポーネント

FPGAコンポーネントの使用に関しては、さまざまな使用方法があります。ただし、Verilogデザインエントリを使用している場合、さまざまなコンポーネントを推論またはインスタンス化できます。

推論では、一般に、必要な機能に基づいて、使用する最適なコンポーネントを合成ツールで選択する必要があります。これの最も良い例は、加算器を設計することです。

実行するq <= a + bq = a + b、加算器を推測できます。どちらも加算器を推論しますが、ブロッキング/非ブロッキング構文を使用する場合に違いがあります。

インスタンス化には、通常、コードで正確なライブラリコンポーネントを呼び出す必要があります。DCMなど、一部のコンポーネントはコードで簡単に推測できません。ISEツールと例を使用して、これについて詳しく知ることができます。

コンポーネント自体の実際のリストは、ザイリンクスがライブラリガイドで提供しています。

プロチップ

これを学ぶ最良の方法は、実際には短いコードを試し、それらをISE合成で実行して、何が出力されるかを確認することです。ISEツールセット自体にも多くの例があります。


5

絶対参照は、Spartan 6ユーザーガイドになります。たとえば、クロッキングリソースガイド(UG382)では、DCMの構成方法が説明されています。実際のコードがどのように見えるかの例として、ISEはそれらのデータベースを持っています。言語テンプレート(ツールバーの電球)を開き、言語(VHDLまたはVerilog)->デバイスプリミティブインスタンス化->チップファミリ(Spartan-6)->クロックコンポーネントを確認します。

ボード固有の詳細はDigilentから入手できます。特に、UCF(すべてのIOの名前)とリファレンスマニュアル(周辺回路について説明)が必要です。

コンポーネントの作成方法を含む、言語の一般的な構造は、本や例からおそらくより適切に取り上げられます。私はVerilogを使用していないので、具体的な提案はありません。それでも、テンプレートにはさまざまな一般的な構造のスニペットも含まれています。


あなたはVHDLを専門としていますか?UCFに関して、Digilentボードで作業することがなぜ重要なのですか?
Kevin Boyd、

1
私はそのようなものに特化していません-Verilogを勉強していないだけです。UCFは、ポートが接続するピンとクロッキング要求を記述するファイルです。それがなければ、ピンはランダムに割り当てられ、既存のボードとは一致しません。
Yann Vernier、2011年

ピン割り当ての部分で、クロッキングの要求はどうなっているのか理解しました。
Kevin Boyd

1
タイミング制約は、クロック周波数、セットアップ、ホールドタイムなどをカバーします。タイミング分析でも情報を取得できますが、制約ファイルで要件を指定すると、ツールがそれらが失敗したことを検出し、境界線のときにニーズを満たすためにさらに努力することができます。
Yann Vernier、2011年

1

クロックには、DLL / PLLメガコアを使用します。


Spartan 6にはDCMとPLLがあり、DLLはまだ見つかりません。フォーラムを検索したところ、ザイリンクスにはコアジェネレーターと呼ばれるツールがあり、クロックリソースを生成するように設定できます。
Kevin Boyd、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.