ビッグへの変換リトルエンディアン、シミュレーションの結果は明確ではありません..?

J

Jansi Meena

Guest
私を助けてください、私は、彼らはそれがビッグエンディアンにほとんど変換されますと言う、このファイルを、持っている。私が持っている1つのモジュールは(0から33)でデータを提供し、別のモジュール(0 '1 33)データ型を持っています。 array_outを:STD_LOGIC_VECTOR(0 '1 33))を;エンドle_2_be。le_2_beのアーキテクチャle_2_be_arch:私はコードの下convesionを行います[コード]エンティティle_2_beポート(STD_LOGIC_VECTOR(0〜33)ARRAY_IN)であることを言われてきたLE_2_BE_PROCを開始されています。プロセス(ARRAY_IN)(i)を0から33までループarray_outをにiの開始
 
それが変更されました。あなたは実際の数を見れば、array_outを(0)ARRAY_IN(33)と等しくなります。 0 array_inのMSBであるのでそれが表示されている方法は、正しいこと、および33は、アレイの出力のMSBです。 MSBインデックスの変更そう。あなたが持っているコードは、overkilの少しです。あなたは、単に書面でそれを行う可能性:array_outを
 
OMGは、コードは無用ですか。私はそのように思ったことはありません。それは多くの場所で使用されている理由、私は不思議....私は "へ"に "'1"から値を渡した場合も、整数または番号は変更文句を言わない?私は非常に混乱していますので、私を明確にしてください....例では、これは私の明確化のためにだけで、コードには意味はありません。 [コード]のプロセス(a、b)の変数:STD_LOGIC_VECTOR(0〜3)変数b:STD_LOGIC_VECTOR(3〜0)(0〜3)を開始
 
構文エラー、まず第一に。あなたは、0ではなく、3 '1 0〜3を意味します。配列に適用されるまで、1)Cは、独自に "0010" "0010"なのは、意味がありません。 (0 '1 3)配列のために。ビット(1 '1 3)は'0 'とのビット0が'1'です。 (0〜3)のビット(0〜2)が'0 'とビット3が'1'である。 B)が "0010"です。ビッグエンディアンまたはリトルエンディアンは関係ありませんが、数は同じです。それだけでは変化することMSBインデックスです。 c)いいえ、aとbは外部からの信号である場合を除き、ありません。あなただけのセンシティビティリストの信号を入れることができます。次に、外部信号名をオーバーライドして、Bのローカル変数を持っている。したがって、内部リファレンスは、変数(:=、あなたが変数のためにそれは、間違った代入演算子を使用している)です。この内
 
Cは0010になります。トリッキーが言ったようにエンディアンのみが​​インデックスのためのものであり、それはあなたの数字の値を変更する文句を言わ参照してください。データが大きいから来ているようにどこにリトルエンディアンの読み込みモジュールは、単にreveresedビット順序を持っているデータは、単にスロットに収まる。あなたは32ビットのデータを書き込む、などのビット単位の読み込みとあなたが(0 '1 15)読んだとき、これは(0〜15)に等しくなりませんが、全体の32ビットのDWORDとして、数字の値がなるときは、常に同じままです。このような.... 0 1 2 3 0 0 1 0()3 2 1 0 0 0 1 0(b)ここで(0〜2)(0 '1 2)と同じではありませんが、それでも= bがクリアされます?... 。
 
[QUOTE = TrickyDicky。1073121]まず第一に、構文エラーが発生しました。あなたは、0ではなく、3 '1 0〜3を意味します。配列に適用されるまで、1)Cは、独自に "0010" "0010"なのは、意味がありません。 (0 '1 3)配列のために。ビット(1 '1 3)は'0 'とのビット0が'1'です。 (0〜3)のビット(0〜2)が'0 'とビット3が'1'である。 B)が "0010"です。ビッグエンディアンまたはリトルエンディアンは関係ありませんが、数は同じです。それだけでは変化することMSBインデックスです。 c)いいえ、aとbは外部からの信号である場合を除き、ありません。あなただけのセンシティビティリストの信号を入れることができます。次に、外部信号名をオーバーライドして、Bのローカル変数を持っている。したがって、内部リファレンスは、変数(:=、あなたが変数のためにそれは、間違った代入演算子を使用している)です。この[/QUOTE]で、[はい、それは "'1"することになっています。おかげで友人。もう一つの疑問は、ビット単位のエンディアン適用されないですか。
 
エンディアンはビット単位に適用されません。 0 '1 31(IIRC)ビッグエンディアン、0から31はリトルエンディアンです。それはバイトオーダになるとバイトがリトルエンディアン、それがビットになると、ビッグエンディアンである、とできるので、コンピュータと少し複雑にすることができます。ビットマップファイルを読み込むことは痛みのビットです。
 
一般的に、私は言うだろう、これまでそれは、ビット\バイト\単語\ DWORD \ QWORDなどがあるかMSBから順に、それはビッグエンディアンです。それは、儀式覚えやすいですか?...トリッキー:[引用]それはバイトオーダになるとバイトがリトルエンディアン、それがビットになると、ビッグエンディアンとし、できないからです。ビットマップファイルを読み込むことは痛みのビットです。 [/引用]私はあなたがここで意味するようにしようとしているか理解しない?....
 
[QUOTE = xtcx。1073653]?私はあなたがここで意味するようにしようとしているかを理解しない... [/QUOTE]の各バイトは(0 '1 7)注文したが、その後バイトのゼロは最初のDWORD以上のSIGのバイトです。ので、ビットの順序は7 ... 0 15 .. 8 23 .. 16 31 .. 24迷惑etcです。
 
[QUOTE = TrickyDicky。1073690]の各バイトは(0 '1 7)注文したが、その後バイトのゼロは最初のDWORD以上のSIGのバイトです。 7 ... 0 15 .. 8 23 .. 16月31日です.. 24等の迷惑[/QUOTE]両方のビットとバイトのリトルエンディアンであり、私はそれを好むのビットの順序は、そう。それは "左"が最初であることを我々の文化の中で自然のかもしれませんが、ハードウェアには "左"と "権利"はありません。私は、ビット0が最下位ビットです。好む、そのバイト0は最下位バイトです。 Intelプロセッサは、このようなものです。 68000のような古いモトローラのプロセッサは、バイト(31 .. 24 23 .. 16 15 .. 8 7 ... 0)のビットのリトルエンディアンがビッグエンディアンです。それは人間のための "右"に見えるかもしれませんが、ハードウェアやソフトウェアのメリットはありません。パワーPCは、ビットのビッグエンディアンとバイトの切り替えが可能です。完全にビッグエンディアンモードでのビットは、このようなものです:(0 .. 7 8 .. 15 16 .. 24 25 .. 31)のビット0は最も重要です。メモリの数が偶数か奇数かどうかをチェックしたいとします。リトルエンディアン(バイト順序)のシステムでは、あなただけの単語の先頭アドレスを知る必要があります。ビッグエンディアン(バイト順序)のシステムでは、開始アドレスとワード·サイズを知る必要があります。
 
​​[SIZE = 1] ----------ポストは12:14追加----------前の投稿は12:10であった------ ---- [/SIZE] [/COLOR] [QUOTE = TrickyDicky。1073690]の各バイト(0 '1 7)注文したが、そのバイトがゼロでは、最初のDWORD以上のSIGのバイトです。ので、ビットの順序は7 ... 0 15 .. 8 23 .. 16 31 .. 24等である迷惑な
(7 .. 0 \ 15 ... 8)本当にあなたがそのような場合にどのように処理すれば頭痛の種ですか? 。我々は再びバイト順序をフォーマットしてから、処理しなければならないでしょうか?..... ORこれが現代のアーキテクチャでケアをどのように取られ...?
 
[QUOTE = xtcx。1074950]なぜあなたはそれを意味していますか、あなたが例を言うことができます[/QUOTE]最上位バイト(1バイト目)に、ビッグ·エンディアン·システムポインタのポイントでは??最下位バイトを検索するには、ワード·サイズを知る必要があります。あなたがmulti-word/byte加算またはシリアル加算を行いたい場合には、同様の問題を取得します。あなたは最低のワード/バイト/ビットで開始する必要があります。
(7 .. 0 \ 15 ... 8)は、本当に頭痛
はSTD_LOGIC_VECTOR(0 '1 7)は、そのビット7は最初のビットであることを意味しません。それは "左"ビットです。ビット7が最初であると言う理由のハードウェアは、 "左"または "右"に関するケアは、そうではないでしょうか?私が "最初"のように最小のインデックスを持つ要素を考慮すれば、すべてが簡単だと思う。その後7 ... 0 15 ... 8等は、私はビット0が最下位ビットになりたいので、最も論理的なビット/バイト順序です。これは、インテルプロセッサがそれを行う方法です。
 
...これが唯一の代わりに、これは簡単かもしれない(0 .. 7)バイトオーダでエンディアンの変更です(8〜15)等しかし、これはビット順序の変更
 
おかげで、デバイスのほとんどは、いくつかのTIのDSPと同様に私が働いてきたが、ビッグエンディアンのみである。これは、SPI、他の通信に使用されるものである...それは読み取り専用の注文に関する問題を持っている何ですか。 VHDL私が見つけるにビッグ\リトルエンディアンの切り替えに支障はありません....
 
私が思うに、それが独立しています。いくつかのメーカーが標準としてそれを作り、いくつかのプログラム可能です。 FPGAに問題はありません。我々は常にビットベクトルを扱うため、実際にそれは非常に簡単です。しかし、32ビットのようなプロセッサでは、それは大変な仕事ですが、それは、DWORDのビットレベルの情報を得るために多くのマシンサイクルがかかる場合があります。それゆえ、この規則頭痛するかもしれない....
 

Welcome to EDABoard.com

Sponsor

Back
Top