0

入力(無限入力)でn個の数値を受け入れ、これらの数値の平均を出力として計算する回路を設計する必要があります。入力の数値は、値<0,15>のみにすることができます。この回路をVHDLで実装する必要がありますが、論理スキーマを設計するために必要なため、適切なアルゴリズムを見つけることができません。値を格納するには、必ず4ビット加算器といくつかのレジスタが必要になることを理解しています。移動平均の原理で問題を理解しようとしましたが、まったくうまくいきませんでした。

4

2 に答える 2

1

見てみましょう、入力ポートとして必要です:リセット、入力[3:0]、クロック; 出力:average [3:0]および内部レジスタaccumulator [a:0]およびcount [c:0]。VHDLとVerilogの構文を今は思い出せませんが...

入力を取得するたびに、それをアキュムレータに追加する必要があります。カウントを1ずつインクリメントしてから、平均をアキュムレータをカウントで割った値に設定します。リセット時に、アキュムレータとカウントをゼロに設定します。インクリメントする値の最大数がcountmaxであることがわかっている場合、アキュムレータはcountmax * 15をホールするのに十分な大きさである必要があり、countはcountmaxを保持するのに十分なビットを持っている必要があります。これにより、仕切りのサイズもわかります。countmaxが不明な場合は、オーバーフロー出力を追加し、アキュムレータがオーバーフローしたときに設定し、リセット時に設定を解除する必要があります。

お役に立てば幸いです。

于 2012-11-17T19:48:37.697 に答える
1

入力n+1の場合、値を指定すると、平均は->...=xに等しくなります。この観察から、簡単なアルゴリズムを導き出すことができます。(average*n+x)/(n+1)average + (next - average)/(n+1)

  1. すべてのレジスタを0に初期化します
  2. 次の入力を取得し、一時レジスタに保存します
  3. カウントレジスタを1つ増やします
  4. 一時レジスタから前の平均を引く
  5. 一時レジスタをカウントで除算します
  6. 平均に温度を追加
  7. 手順2に進みます
于 2012-11-17T19:13:20.733 に答える