6

RTL シミュレーションでハードウェアの一部を検証するための、単純で十分に正確なフィルターをコーディングしようとしています。デザイン内のすべてのフリップフロップを 0 または 1 にランダムに初期化することで、チップのフリップフロップに固有のランダム性をシミュレートしています。これは、電源投入時にチップのフリップフロップがランダムな値を取得することに対応しています。また、リセット ツリー (リセット ツリーにはフィードバック ループがない) のフロップをランダム化しています。これは、リセット ラインで誤ったグリッチが発生する可能性があることを意味します。

例えば

                              |||
                              VVV N 番目のリセット ツリー フロップ
          +----+ +----+ +----+ / / +----+
リセット_イン | | | 0 | | | 1 | | | 0 / / | | | リセットアウト
 -------->D Q>----->D Q>----->D Q>---- / ... / -->D Q>----
          | | | | | | | | | | | | \ \ | | |
          | | | | | | | | | | | | \ \ | | |
          +^---+ +^---+ +^---+ / / +^---+
           | | | | | | / / |
clk ------+------------+------------+---------/ / ---+

リセットのように見える 0->1->0 が表示されますが、実際にはグリッチです。

特定の数の連続する 1 の値を検索して、今見たリセットがリセット コントローラーからのリセットか偽のリセットかを判断するフィルターを作成したいと考えています。

これは統計であり、おそらくポアソン分布に関連していることはわかっていますが、N ビットのセット内の X 連続ビットが 1 である確率をどのように判断すればよいでしょうか?

PS はい。4-val RTL シミュレーションを認識しています。これも行っていますが、一部の Verilog コンストラクトは、X と Z を伝搬するときに十分な悲観論を持っていません。

4

5 に答える 5

3

編集:以下は質問に答えません、申し訳ありません...コメントは、本当の問題は、私が想定した単純なことだけでなく、 nビットからx個の連続した1の確率に関するものであることを明らかにしました。これをざっと見てみました:http://www.mathhelpforum.com/math-help/probability-statistics/64519-probability-consecutive-wins.htmlこれはあなたが探しているものかもしれません-それはうまくいくことを扱っているようですより多くのトインコッセからトインコッセが実行される確率は、同じように聞こえます。しかし、遅くて疲れているので、数学を解読していません:)

廃止:基本的に二項確率を扱っているようです。http://en.wikipedia.org/wiki/Binomial_probabilityを参照してください。

私は約20年間計算を行っていないことを認めなければならないので、やや錆びています...

基本的に、binominalを使用すると、イベントが複数回発生する確率を「合計」できます。この場合、毎回発生する可能性のある結果は2つだけです。あなたの場合、順序は重要なので、確率を掛けるのと同じくらい簡単でなければなりません。
1ビットの場合は50%です
。2ビットの場合は50%^ 2 = 25%
です。3ビットの場合は50%^ 3 = 12.5%です。

別の見方をしてください。
1ビットには2つの可能な組み合わせしかなく、そのうちの1つはすべて1 = 50%
2ビットには4つの可能な組み合わせ(10、01、11、00)があり、そのうちの1つだけがすべて1です-したがって、25%
3ビットには2^3があります= 8つの可能な組み合わせ、そのうちの1つだけがすべて1であるため、1/8 = 12.5%

つまり...nビットがすべて1=1 /(2 ^ n)になる確率。

于 2009-02-09T22:46:14.330 に答える
2

OK、これが私が見つけたものです:

P = 1 - Q(X)

どこ

Q(X) = [1 - 1/2(Z)]/[(X + 1 - XZ) x 1/2 x Z^(X+1)]

どこ

Z = 1 + (1/2)(1/2)^X + (X+1)[(1/2)(1/2)^X]^2 + ...

数学の一部とのリンクは次のとおりです。

数学フォーラム

于 2009-02-09T22:35:40.173 に答える
0

再帰プログラム(python)を実行できます。

prob(x、n)は希望する結果をもたらします


import math

def prob(x,n,i=0):
    if i == x: return 1
    if (x+i) > n: return 0
    t = .5 * prob(x,n-1,i+1) + .5 * prob(x,n-1,i)
    return t
于 2009-02-09T22:53:13.033 に答える