問題タブ [alu]

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.

0 投票する
2 に答える
285 参照

module - Verilog で関数が認識されない

caseステートメントで関数を呼び出すことができないためだと思います。私はこれにまったく慣れておらず、何をすべきかわかりません。私は基本的に alu を作成しており、最初の 2 つのケースは add と sub を行うことになっています。

コンパイルすると、次のようになります。

理由がわかりません。誰かが私を助けてくれますか?

0 投票する
1 に答える
192 参照

vhdl - VHDL を分解するのはいつですか?

私は文章を書くVHDLのはある程度上手ですが、答える必要がある比較的基本的な質問がありVHDLます。

基本的な例: で 8 ビットを設計してALUいたとします。その実装VHDLにはいくつかのオプションがあります。VHDL

ALU 全体を 1 つのエンティティとして設計するだけです。エンティティで必要なすべての I/O を使用します (IEEE_STD_ARITHMETIC ライブラリにより実行できます)。

- また -

そのALUを後続のブロックに分割します。たとえば、キャリー先読み加算器といくつかのマルチプレクサです。

- また -

それを、キャリー先読みを行うブロックにさらに分割します。多数の部分全加算器、キャリー パス、およびマルチプレクサを構成し、構造要素を使用してそれらをすべて接続します。

次に、(必要に応じて) そのすべてをゲート レベルまで分解し、それぞれのエンティティ、動作、および構造を作成することができます。

もちろん、分割すればALUするほど、VHDL必要なファイルが増えます。

これは合成後のフィジカル インプリメンテーションに影響しますか?

0 投票する
1 に答える
881 参照

opencl - AMD GPU (VLIW) で ALU が命令を実行する方法は?

OpenCL プログラミングについて質問したいことがあります。ウェーブフロントの 4 分の 1 が各サイクル クロックに対して命令を発行でき、ウェーブフロントを呼び出すには 4 サイクル クロックが必要であることを理解しています。VLIW アーキテクチャで命令を完了するには、8 サイクル クロックが必要です。したがって、別の波面を呼び出すことが解決策です。2 つの波面を呼び出すと、8 サイクル クロックになります。したがって、ウェーブフロント A が実行された後 (4 サイクル クロック)、ウェーブフロント B が実行されます (別の 4 サイクル クロック)。ウェーブフロント B が実行された後 (合計サイクル クロックは 8)、ウェーブフロント A は別の命令で再度実行されます。

質問は:

処理要素ごとに 4 つの ALU が別の命令を実行するために既に使用されている場合、どのように ALU は別の命令を実行しますか??

例: サイクル 1 で、作業項目 0 ~ 15 が命令「ADD」の実行を開始します。各プロセッシング エレメントの最初の ALU (SIMD/計算ユニットの合計 16 PE) は、「ADD」命令を計算します。
これは、ウェーブフロントのサイクル 2、3、および 4 で発生します (各 PE には、「ADD」命令を実行するためにビジー状態を維持する 4 つの ALU があります)。サイクル 5 では、ウェーブフロント 2 の 4 分の 1 が命令「SUBTRACT」の実行を開始します。最初のウェーブフロントから「ADD」命令を計算するためにビジーであるため、処理要素の ALU はどのように命令を計算するか (8 サイクル クロックかかるため、最初のサイクルのウェーブフロントの 4 分の 1 に対する命令「ADD」の実行は未完了であることを思い出してください)??

更新: 8 サイクル クロックは、書き込み後の読み取りのレイテンシを意味します。

0 投票する
1 に答える
742 参照

vhdl - VHDLで4ビットALUを作成するために1ビットALUを使用してキャリーアウトを処理する方法

1 ビット ALU を作成し、それを使用して 4 ビット ALU を作成する必要があります。しかし、キャリーアウトを処理するときに多くの問題を抱えています。

4 ビット ALU は 2 つの選択ラインのみを持つことができ、8 つの異なるケースを生成するためにキャリーを使用します。

4 ビット ALU は 2 つの選択ラインとキャリーインのみを持つことができます。私の問題は、他の ALU に入力するためにキャリーアウトを正しく処理する方法です。

たとえば、「0011」に「0011」を追加する必要がある場合、両方の 4 ビット WORD から最初のビットを追加するために割り当てられた最初の ALU がキャリー 1 を生成することに気付くでしょう。関数テーブルが足し算から引き算に切り替わります。Cin = 1 は減算を生成するためです。

機能表

0 投票する
1 に答える
244 参照

vhdl - 6演算ALUの組み合わせ回路設計はありますか?

VHDL で ALU を作成しようとしていますが、いくつかの操作を実装するのに苦労しています。加算、減算、または演算を実装しましたが、論理シフト演算をどのように実装するのだろうか? ALU は 32 ビットですが、どんなデザインでも構いません。

0 投票する
1 に答える
307 参照

boolean-logic - 2 の補数と乗算での左シフト

シンプルな(仮想)ALUと他のチップ(加算器、乗算器など)を実装しています。

数値には 2 の補数表現を使用しています。

x と y の 2 つの 16 ビット数の乗算では、これらの行に沿って左シフトを使用すると考えました (もちろん、これは実際のループなしで実行されます)。

  • 合計[0..15]=0を設定

  • x'=x を設定

  • for i=0...15 //(y[0] は LSB、y[15] は MSB)

    • y[i]=1 の場合は合計に x' を追加し、x' を左にシフトします。

(これが標準的な方法ですか?)

私の問題は左シフトにあります:

i st x[i]=1 がある場合、ある時点で x' の MSB が 1 になり、それが無効になります。

たとえば、上記の方法を使用した 2*2 は "-4" を返すため、これは問題です。

だから、私の実際の質問は、左にシフトするとき、符号ビットも考慮する必要がありますか?