0

フラッシュメモリに8ビットの数値(より具体的には、0から254までの閉範囲の値)を格納するための16ビットフィールドがあります。エラーチェック(エラー訂正は不要)に余分な8ビット以上を使用したいのですが、最も明白なアプローチは、値を2回繰り返すことです。XMODEMパケット番号アプローチは、わずかにわかりにくいです。最初のオクテットに数値を格納し、255から2番目のオクテットに数値を引いたものを格納します。

利用可能なスペースでより堅牢なエラー検出を提供し、実装が簡単で実行が高速な、より優れたオプションはありますか?おそらく、フラッシュビットが0から1よりも1から0になる可能性が高いという事実を利用できますか?

4

2 に答える 2

1

私があなたのジレンマを正しく理解しているなら、あなたはフラッシュメモリを使用しているので、ビットが消えていくのを検出しようとしています。問題は、それらが1つのオクテットで消えると、他のオクテットでも消えてしまうことです。つまり、単に複製するだけではうまくいかないということです。

個人的には、番号を無効にして保存します。このように、たとえば値が1(ほとんどがゼロ)の場合、11111110(ほとんどが1)を使用するので、データがフェードアウトするのは明らかです。

データがすべてゼロに近づくほど劣化がひどい場合、問題はさらに深刻になります。したがって、すべてのデータがゼロである必要がある場合はないため、否定を使用すると非常に役立ちます。

于 2013-01-29T18:08:26.620 に答える
1

前もって注意してください:XMODEMアプローチは合理的だと思うので、それを採用して、より重要なことに取り組みます。とにかく、あなたはこの質問にアルゴリズムでタグを付けたので、これを証明する方法でこれにアプローチすることもできます...

エラー検出が必要なため、最も重要な部分は、1ビットの変更を検出できることです。したがって、数値の2つの表現は、1ビットだけ離れている必要はなく、可能な限り離れていることが望ましいです。さらに、ビットへのすべての変更が同じように発生する可能性が高いわけではありません。

これをグラフとしてモデル化すると、16ビットの数値で識別される頂点と、その遷移の確率を定義する2つの頂点間の有向エッジが得られます。これは完全なグラフになるので、どのように保存するかを考えてください(オンデマンドで計算するのではなく、保存する場合)。現在検索しているのは、最大の重みを持つ正確に255の頂点の円形パスです。

そのためには、エッジが重い傾向のあるDFSを使用して、頂点が255の円形パスを検索します。この円から、最も明るいエッジを取り、グラフから重い以外のすべてのエッジを削除します。次に、グラフが見つからなくなるまで、結果の(おそらく切断された!)グラフでグラフの検索を繰り返します。

最後に、入力値を残りの円(の1つ)の頂点IDにマップして、フラッシュメモリに保存します。

于 2013-01-30T07:21:55.190 に答える