問題タブ [fpga]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - ソースコード内の変数の自動トレース使用
私は、MATLABのmexコマンドでコンパイルすることを目的とした一連の音声処理ルーチン(Cで記述)を使用しています。FPGAを使用して高速化することに興味があるこのC関数があります。
ハードウェアは、入力ポートを介して指定された入力パラメーターを受け取り、残りの入力はハードコーディングされる定数として受け取り、C関数内のどこかで特定の変数(たとえばfoo)を出力ポートに渡します。
fooの計算グラフ(これが正しい用語かどうかわからない)をトレースすることに興味があります。つまり、fooが中間計算変数にどのように関連するか。中間計算変数は、最終的には入力パラメーターとハードコードされた定数に依存します。これは、ロジックをフラット化して、ハードウェア記述言語を使用してコーディングできるようにするとともに、 fooの値に影響を与えない無関係なロジックを削除できるようにするためです。欠点は、一部の中間変数がグローバルであるため、トレースが頭痛の種になることです。
特定のCヘッダーとソースファイルのセットを分析し、使用されているすべての変数のある種の依存関係グラフを使用して、指定された変数がどのように変更されたかを追跡する手段を提供する自動化ツールはありますか?
fpga - 差動 I/O とは
Spartan 3E Fpga の世界では、ドキュメントには次のように書かれています
ほとんどのピンをペアにして、差動 I/O を形成できます。
問題は、差動入力/出力とは何ですか?
embedded - Verilog での双方向ラインの駆動
この質問はおそらくあまりうまく説明されないでしょう。それは、自分の設計で何が起こっているのかを本当に理解していないからです。
カメラ (Terasic D5M) と通信するには I2C 通信バスを使用する必要があるため、Verilog を使用して記述しようとしました。私はマスターだけが必要です。私のロジック アナライザーでは、カメラから NACK 信号を受信し続けていることを除けば、すべて問題ないように見えます。最初は何が悪いのかわからなかったので、そのままにしておきました。
今夜、D5M 用のモジュールを備えた Altera University IP コアを使用してみました。これを自動的に初期化するように設定した後、アナライザーで何が起こっているかを見ました。トレースは、これがデバイスによって ACK を登録していることを除いて、私の I2C モジュールからの出力と同じように見えます。
私の問題は、なぜ私が承認を受けていないのか、一生わからないことです。カメラが sda ラインを低くプルすることを許可していない可能性があります (scl は正常に動作します) が、これがなぜなのかわかりません。
誰かが似たような経験をしたり、どこを見たり、投稿したり、読んだりするべきか考えていますか? 私はいくつかのコードを投稿しますが、それが完全ではない場合、それがどれほど役立つかはわかりません. あいまいで申し訳ありませんが、私は本当に迷っており、何を尋ねるべきかさえわかりません。これも同様のエフェクトリクエストだと思います。ご協力ありがとうございます。i2c モジュールからの出力行のコードを少し示します。
pSCL は目的のレートで動作するクロックで、sda_bit は動作中の sda ラインの値です。これは、ACK を解放して待機するセクションです。これは私のシフト状態に組み込まれているため、else if の始まりです。
カメラがモジュールを駆動できるようにするには、ena_sda を解放するだけで十分だと思います。テストとして sda_bit = HIGH を前に置いたと思います(これは1か月間見ていません)。
より多くのコードを共有したり、ロジック トレースを表示したりできれば幸いですが、これ以上散らかしたくありません。読んでくれてありがとう。
embedded - ザイリンクス FPGA で EDK を使用せずに Microblaze をプログラムすることはできますか?
ザイリンクス FPGA デバイスで EDK を使用せずに Microblaze をプログラムすることはできますか?
Linuxで開発しています。
それについての推奨されるチュートリアル/本はありますか?安定したオープンソースのクローンはありますか?
vhdl - ザイリンクス XST ツールでの LUT とスライスの使用方法を明示的に定義する
XST ツールを使用して合成されたザイリンクス Virtex 5 FPGA 用に VHDL で記述された、LUT とスライスの非常に特殊な動作を実装しようとしています。ツールに自分の意図を推測させることで自分の行動を実現できるかどうかはわかりません。
Virtex5 での 6 入力 LUT の使用について話しているのですが、CLB にはそのうちの 4 つがあります。
明示的に述べたい: - 1 つの CLB スライス内の 4 つの LUT のそれぞれへの入力 - 4 つの XORCY からの「S」出力を配線する - 「最初の」MUXCY (C0) の入力を指定する - 「4 番目の」MUXCY の出力を配線する(Cn) - CLB の各 LUT の入力を特定の順序で指定できます。これらは明らかにカスケード接続されているためです。
理想的には、すべての入力と出力を含む VHDL で「CLB」をインスタンス化し、これらをマップできるようにしたい..
ドキュメントをかなり詳しく調査しましたが、実際には何も見つかりませんでした
fpga - ISE と EDK プロジェクト間のインターフェイス
fpga(Virtex4)で画像処理をしています。vhdl で uart プログラムを作成しましたが、fpga で動作しています...ハイパーターミナルを介してデータを取得しています...私の問題は、ピクセルをメモリ (ddrsdram) に保存することです。これには EDK を使用します。問題は、ISE と EDK プロジェクト間のインターフェイス方法がわからないことです。EDK を初めて使用します。EDK の使用方法がわかりません。 11.1
早急な回答を希望...
verilog - 単純なALUを実装できません
Verilogで説明されている基本的な8ビットALUがあります。デザインを実装しようとしていますが、エラーメッセージが表示されます。
エラー:NgdBuild:809-出力パッドネット「商<1>」に不正な負荷があります:タイプLUT6のブロックMmux_opcode[2]_GND_1_o_wide_mux_8_OUT81のピンI3
デザインは、次の演算、加算、減算、乗算、除算、AND、OR、XOR、およびXNORを実行します。興味深いのは、ザイリンクスXSTは、被除数を2倍(基本的に右にシフト)で除算しない限り、分周器を合成できないという事実です。そのため、これを処理するために、ザイリンクスコアジェネレーターによって生成されたCOREIPコンポーネントを使用しました。単一のクロックを受け取り(クロックイネーブルまたは同期クリアなしで、約20クロックサイクル後に正しい商と剰余を出力します。コア自体は、Core Generatorプログラムの数学関数の下にあります。とにかく、私のコードは次のとおりです。
明らかに私のコードはひどく、私のコメントはおそらく間違っていますが、私はVerilogの初心者にすぎません。ただし、このコードを大幅に改善し、練習用の操作を追加する予定です。モジュール自体は正常に合成およびシミュレーションできますが、FPGAに実装できません。コード、またはXilinx ISE(いつものようにバグでいっぱいです)、またはおそらくプロジェクト設定に問題があるかどうか誰かが知っていますか?
編集:回答によって提供されたアドバイスを反映するために、コードにいくつかの変更を加えました。
fpga - FPGAタイミングの質問
FPGAプログラミングは初めてですが、全体的な実行時間の観点からパフォーマンスについて質問があります。
レイテンシーはサイクルタイムで計算されることを読みました。したがって、全体的な実行時間=レイテンシー*サイクル時間。
データの処理に必要な時間を最適化したいので、全体の実行時間を測定します。
a = b * c*dの計算があるとしましょう。
2サイクル(result1 = b * c)&(a = result1 * d)で計算すると、全体の実行時間は2 *サイクル時間のレイテンシーになります(これは、乗算演算の遅延によって決定されます。 X)= 2X
1サイクルで計算すると(a = b * c * d)。全体的な実行時間は、1 *サイクル時間のレイテンシーになります(1つではなく2つの乗算のために2倍の遅延があるため、値2Xと言います)= 2X
したがって、実行時間の観点からパフォーマンスを最適化するために、レイテンシーの短縮のみに焦点を当てると、サイクル時間が増加し、その逆も同様であるように思われます。レイテンシーとサイクルタイムの両方が減少し、実行時間が減少する可能性はありますか?レイテンシーの最適化にいつ焦点を合わせる必要があり、サイクルタイムにいつ焦点を合わせる必要がありますか?
また、C ++でプログラミングしているとき、コードを最適化したいときは、レイテンシー(実行に必要なサイクル)を最適化したいようです。ただし、FPGAプログラミングの場合、サイクル時間が長くなるため、レイテンシの最適化は適切ではないようです。したがって、実行時間(レイテンシー*サイクル時間)の最適化に焦点を当てる必要があります。プログラムの速度を上げたい場合、これは正しいですか?
誰かがこれを手伝ってくれることを願っています。前もって感謝します。
fpga - WebへのFPGA接続
一部のFPGAボードにイーサネットポートがある可能性があることは知っています。ただし、FPGAボードをインターネットに接続してTCP / UDPパケットを受信およびデコードするにはどうすればよいですか?基本的には、TCPまたはUDPを介してサーバーからデータを受信し、ボード上で処理したいと思います。
algorithm - 冗長な数値形式と非冗長な数値形式とは何ですか?
このFPGA回路で使用されているアルゴリズムを理解するのに問題があります。冗長な数値形式と非冗長な数値形式を扱います。非冗長形式の数学的(正式な)定義を見たことがありますが、実際には理解できません。
アルゴリズムを説明するこのペーパーからの抜粋:
図3に、スケーラブルなMontgomery乗数のブロック図を示します。カーネルには、合計wpビットセルのpwビットPEが含まれています。Zは、桁上げ保存冗長形式で保存されます。PE1がZ ^(e-1)を終了する前にPEpがZ ^ 0を完了した場合、PE1が再び使用可能になるまで結果をキューに入れる必要があります。[5]の設計では、結果を冗長形式でキューに入れ、エントリごとに2wビットを必要とします。nが大きい場合、キューはかなりの領域を消費するため、図4に示すように、キュースペースの半分を節約するためにZを非冗長形式に変換することを提案します。最初のサイクルでは、 Zは0に初期化されます。キューイングが不要な場合、桁上げ保存加算器のレイテンシを回避するために、桁上げ保存冗長Z'は直接バイパスされます。非冗長Zの結果は、システムの出力でもあります。
そして図:
そして、これが「改善された」PEブロック図です。これは、「改善された」PEブロック図を示しています-「改善された」は、いくつかの無関係な側面と関係があります。
「改善されていない」FIFOの写真はありませんが、それは単なる通常のFIFOだと思います。私が理解していないのは、FIFOのCPAと3入力MUXが何らかの形でフォーマット間で変換されるのかということです。
(具体的な例では)冗長フォーマットと非冗長フォーマットを理解することが最初のステップであり、この回路がどのようにそれを実現するかを理解することはステップ2になります。