logo

عداد فيريلوج جراي

الكود الرمادي هو نوع من نظام الأرقام الثنائية حيث يتغير بت واحد فقط في كل مرة. يُستخدم الرمز الرمادي اليوم على نطاق واسع في العالم الرقمي. سيكون مفيدًا لتصحيح الأخطاء ونقل الإشارات. يعد العداد الرمادي مفيدًا أيضًا في التصميم والتحقق في مجال VLSI.

عداد فيريلوج جراي

يقوم الرمز الرمادي بتشفير الأعداد الصحيحة كتسلسلات من البتات مع خاصية أن تمثيلات الأعداد الصحيحة المتجاورة تختلف في موضع ثنائي واحد بالضبط.

هناك أنواع مختلفة من الرموز الرمادية، مثل الكود المتوازن والثنائي المنعكس والحد الأقصى للفجوة والرمز الرمادي المضاد.

تتمتع العدادات بوظيفة أساسية تتمثل في إنتاج تسلسل إخراج محدد ويشار إليها أحيانًا باسم مولدات الأنماط.

تصميم

في الكود الرمادي، يتغير بت واحد فقط في المرة الواحدة. يحتوي رمز التصميم هذا على مدخلين، وإشارات الساعة وإعادة الضبط، ومخرج واحد بطول 4 بتات والذي سيولد رمزًا رماديًا.

أولاً، إذا com.rstn الإشارة عالية، فإن الإخراج سيكون صفر، وبمجرد com.rstn ينخفض، على الحافة الصاعدة ل clk ، سيقوم التصميم بإنشاء كود رمادي مكون من أربعة بتات ويستمر في الإنشاء عند كل حافة صاعدة clk الإشارة.

يمكن ترقية رمز التصميم هذا ووضع أرقام ثنائية كمدخل، وسيعمل هذا التصميم كمحول ثنائي إلى رمز رمادي.

 module gray_ctr # (parameter N = 4) ( input clk, input rstn, output reg [N-1:0] out); reg [N-1:0] q; always @ (posedge clk) begin if (!rstn) begin q <= 0; out <="0;" end else begin q + 1; `ifdef for_loop for (int i="0;" n-1; out[i] ^ q[i]; out[n-1] `else q[n-1:1] q[n-2:0]}; `endif endmodule pre> <h3>Hardware Schematic</h3> <img src="//techcodeview.com/img/verilog-tutorial/27/verilog-gray-counter-2.webp" alt="Verilog Gray Counter"> <h3>Testbench</h3> <pre> module tb; parameter N = 4; reg clk; reg rstn; wire [N-1:0] out; gray_ctr u0 ( .clk(clk), .rstn(rstn), .out(out)); always #10 clk = ~clk; initial begin {clk, rstn} <= 0; $monitor ('t="%0t" rstn="%0b" out="0x%0h&apos;," $time, rstn, out); repeat(2) @ (posedge clk); <="1;" repeat(20) $finish; end endmodule pre> <p>And it produces the following output, such as:</p> <pre> ncsim&gt; run T=0 rstn=0 out=0xx T=10 rstn=0 out=0x0 T=30 rstn=1 out=0x0 T=50 rstn=1 out=0x1 T=70 rstn=1 out=0x3 T=90 rstn=1 out=0x2 T=110 rstn=1 out=0x6 T=130 rstn=1 out=0x7 T=150 rstn=1 out=0x5 T=170 rstn=1 out=0x4 T=190 rstn=1 out=0xc T=210 rstn=1 out=0xd T=230 rstn=1 out=0xf T=250 rstn=1 out=0xe T=270 rstn=1 out=0xa T=290 rstn=1 out=0xb T=310 rstn=1 out=0x9 T=330 rstn=1 out=0x8 T=350 rstn=1 out=0x0 T=370 rstn=1 out=0x1 T=390 rstn=1 out=0x3 T=410 rstn=1 out=0x2 Simulation complete via $finish(1) at time 430 NS + 0 </pre> <h3>Balanced Gray Code</h3> <p>In balanced Gray codes, the number of changes in different coordinate positions is as close as possible.</p> <p>A Gray code is <strong> <em>uniform</em> </strong> or <strong> <em>uniformly</em> </strong> balanced if its transition counts are all equal.</p> <p>Gray codes can also be <strong> <em>exponentially</em> </strong> balanced if all of their transition counts are adjacent powers of two, and such codes exist for every power of two.</p> <p>For example, a balanced 4-bit Gray code has 16 transitions, which can be evenly distributed among all four positions (four transitions per position), making it uniformly balanced.</p> <pre> 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 </pre> <h3>n-ary Gray Code</h3> <p>There are many specialized types of Gray codes other than the binary-reflected Gray code. One such type of Gray code is the n-ary Gray code, also known as a <strong> <em>non-Boolean</em> </strong> Gray code. As the name implies, this type of Gray code uses non-Boolean values in its encodings.</p> <p>For example, a 3-ary ternary Gray code would use the values {0, 1, and 2}. The (n, k)-Gray code is the n-ary Gray code with k digits. The sequence of elements in the (3, 2)-Gray code is: {00, 01, 02, 12, 11, 10, 20, 21, and 22}.</p> <p>The (n, k)-Gray code may be constructed recursively, as the BRGC, or may be constructed iteratively.</p> <h3>Monotonic Gray Codes</h3> <p>Monotonic codes are useful in interconnection networks theory, especially for minimizing dilation for linear arrays of processors.</p> <p>If we define the weight of a binary string to be the number of 1s in the string, then although we clearly cannot have a Gray code with strictly increasing weight, we may want to approximate this by having the code run through two adjacent weights before reaching the next one.</p> <h3>Beckett-Gray Code</h3> <p>Another type of Gray code, the Beckett-Gray code, is named for Irish playwright <strong> <em>Samuel Beckett</em> </strong> , who was interested in <strong> <em>symmetry</em> </strong> . His play <strong> <em>Quad</em> </strong> features four actors and is divided into sixteen time periods. Each period ends with one of the four actors entering or leaving the stage.</p> <p>The play begins with an empty stage, and Beckett wanted each subset of actors to appear on stage exactly once. A 4-bit binary Gray code can represent the set of actors currently on stage.</p> <p>However,</p> <p>Beckett placed an additional restriction on the script: he wished the actors to enter and exit so that the actor who had been on stage the longest would always be the one to exit.</p> <p>The actors could then be represented by a first-in, first-out (FIFO) queue so that the actor being dequeued is always the one who was enqueued first.</p> <p>Beckett was unable to find a Beckett-Gray code for his play, and indeed, an exhaustive listing of all possible sequences reveals that no such code exists for n = 4. It is known today that such codes do exist for n = 2, 5, 6, 7, and 8, and do not exist for n = 3 or 4.</p> <h3>Snake-in-the-box Codes</h3> <p>Snake-in-the-box codes, or snakes, are the sequences of nodes of induced paths in an n-dimensional <strong> <em>hypercube</em> </strong> graph, and coil-in-the-box codes, or coils, are the sequences of nodes of induced cycles in a hypercube.</p> <p>Viewed as Gray codes, these sequences have the property of detecting any single-bit coding error.</p> <h3>Single-track Gray Code</h3> <p>Another kind of Gray code is the single-track Gray code (STGC) developed by <strong> <em>Norman B. Spedding</em> </strong> and refined by <strong> <em>Hiltgen, Paterson</em> </strong> and <strong> <em>Brandestini</em> </strong> in &apos;Single-track Gray codes&apos; (1996).</p> <p>The STGC is a cyclical list of P unique binary encodings of length n such that two consecutive words differ in exactly one position. When the list is examined as a P &#xD7; n matrix, each column is a cyclic shift of the first column.</p> <p>The name comes from their use with rotary encoders, where many tracks are being sensed by contacts, resulting in each in an output of 0 or 1. To reduce noise due to different contacts not switching the same moment in time, one preferably sets up the tracks so that the contacts&apos; data output is in Gray code.</p> <p>To get high angular accuracy, one needs lots of contacts; to achieve at least 1-degree accuracy, one needs at least 360 distinct positions per revolution, which requires a minimum of 9 bits of data and the same number of contacts.</p> <p>If all contacts are placed at the same angular position, then 9 tracks are needed to get a standard BRGC with at least 1-degree accuracy. However, if the manufacturer moves a contact to a different angular position but at the same distance from the center shaft, then the corresponding &apos;ring pattern&apos; needs to be rotated the same angle to give the same output.</p> <h3>Two-dimensions Gray Code</h3> <p>Two-dimensional Gray codes are used in communication to minimize the number of bit errors in quadrature amplitude modulation adjacent points in the constellation.</p> <p>In a standard encoding, the horizontal and vertical adjacent constellation points differ by a single bit, and adjacent diagonal points differ by 2 bits.</p> <hr></=></pre></=>

كود رمادي متوازن

في الرموز الرمادية المتوازنة، يكون عدد التغييرات في مواضع الإحداثيات المختلفة أقرب ما يمكن.

رمز رمادي هو زي مُوحد أو بشكل موحد متوازن إذا كانت جميع الأعداد الانتقالية متساوية.

يمكن أن تكون الرموز الرمادية أيضًا أضعافا مضاعفة متوازنة إذا كانت جميع أعداد التحولات الخاصة بها هي قوى متجاورة للعدد اثنين، وتوجد مثل هذه الرموز لكل قوة للعدد اثنين.

على سبيل المثال، يحتوي الكود الرمادي المتوازن ذو 4 بتات على 16 انتقالًا، والتي يمكن توزيعها بالتساوي بين المواضع الأربعة (أربعة انتقالات لكل موضع)، مما يجعلها متوازنة بشكل موحد.

 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 

ن-آري كود رمادي

هناك العديد من الأنواع المتخصصة من الرموز الرمادية بخلاف الكود الرمادي المنعكس الثنائي. أحد هذه الأنواع من الكود الرمادي هو الكود n-ary Gray، المعروف أيضًا باسم a غير منطقية كود رمادي. كما يوحي الاسم، يستخدم هذا النوع من التعليمات البرمجية الرمادية قيمًا غير منطقية في ترميزاته.

على سبيل المثال، قد يستخدم الكود الرمادي الثلاثي الثلاثي القيم {0، 1، و2}. الرمز (n, k)-Gray هو الرمز الرمادي n-ary الذي يحتوي على أرقام k. تسلسل العناصر في (3، 2)-الرمز الرمادي هو: {00، 01، 02، 12، 11، 10، 20، 21، و 22}.

يمكن إنشاء الكود الرمادي (n, k) بشكل متكرر، مثل BRGC، أو يمكن إنشاؤه بشكل متكرر.

رموز رمادية رتيبة

تعتبر الرموز الرتيبة مفيدة في نظرية شبكات التوصيل البيني، خاصة لتقليل تمدد المصفوفات الخطية للمعالجات.

إذا قمنا بتعريف وزن سلسلة ثنائية ليكون عدد 1 في السلسلة، فبالرغم من أنه من الواضح أننا لا نستطيع الحصول على رمز رمادي ذو وزن متزايد بشكل صارم، فقد نرغب في تقريب ذلك من خلال تشغيل الكود من خلال وزنين متجاورين قبل الوصول إلى التالي.

كود بيكيت جراي

هناك نوع آخر من الكود الرمادي، وهو كود بيكيت جراي، سُمي على اسم الكاتب المسرحي الأيرلندي صامويل بيكيت ، الذي كان مهتما تناظر . مسرحيته رباعية يضم أربعة ممثلين وينقسم إلى ستة عشر فترة زمنية. تنتهي كل فترة بدخول أحد الممثلين الأربعة إلى المسرح أو مغادرته.

تبدأ المسرحية بمسرح فارغ، وأراد بيكيت أن تظهر كل مجموعة فرعية من الممثلين على المسرح مرة واحدة بالضبط. يمكن أن يمثل الكود الرمادي الثنائي المكون من 4 بتات مجموعة الممثلين الموجودين حاليًا على المسرح.

لكن،

وضع بيكيت قيدًا إضافيًا على السيناريو: تمنى أن يدخل الممثلون ويخرجوا حتى يكون الممثل الذي تواجد على المسرح لفترة أطول هو الذي يخرج دائمًا.

يمكن بعد ذلك تمثيل الممثلين من خلال قائمة انتظار 'الوارد أولاً يخرج أولاً' (FIFO) بحيث يكون الممثل الذي يتم وضعه في قائمة الانتظار هو دائمًا الشخص الذي تم وضعه أولاً في قائمة الانتظار.

لم يتمكن بيكيت من العثور على رمز بيكيت-جراي لمسرحيته، وبالفعل، تكشف القائمة الشاملة لجميع التسلسلات الممكنة أنه لا يوجد مثل هذا الرمز لـ n = 4. ومن المعروف اليوم أن مثل هذه الرموز موجودة بالفعل لـ n = 2، 5 و 6 و 7 و 8، ولا وجود لها لـ n = 3 أو 4.

رموز الثعبان في الصندوق

رموز الثعبان في الصندوق، أو الثعابين، هي تسلسلات العقد للمسارات المستحثة في أبعاد n المكعب الزائد الرسم البياني، وأكواد الملف داخل الصندوق، أو الملفات، هي تسلسلات لعقد الدورات المستحثة في المكعب الفائق.

نظرًا لأنها رموز رمادية، تتمتع هذه التسلسلات بخاصية اكتشاف أي خطأ في تشفير البت الواحد.

كود رمادي أحادي المسار

نوع آخر من الكود الرمادي هو الكود الرمادي أحادي المسار (STGC) الذي تم تطويره بواسطة نورمان ب. سبيدنج والمكررة من قبل هيلتجن، باترسون و براندستيني في 'الرموز الرمادية أحادية المسار' (1996).

STGC عبارة عن قائمة دورية من الترميزات الثنائية الفريدة P ذات الطول n بحيث تختلف كلمتان متتاليتان في موضع واحد بالضبط. عندما يتم فحص القائمة كمصفوفة P × n، فإن كل عمود عبارة عن تحول دوري للعمود الأول.

كيفية استرجاع التطبيقات المخفية

يأتي الاسم من استخدامها مع أجهزة التشفير الدوارة، حيث يتم استشعار العديد من المسارات بواسطة جهات الاتصال، مما يؤدي إلى إخراج كل منها 0 أو 1. لتقليل الضوضاء بسبب عدم تبديل جهات الاتصال المختلفة في نفس اللحظة في الوقت المناسب، يفضل إعداد المسارات بحيث يكون إخراج بيانات جهات الاتصال بالرمز الرمادي.

للحصول على دقة زاوية عالية، يحتاج المرء إلى الكثير من الاتصالات؛ ولتحقيق دقة لا تقل عن درجة واحدة، يحتاج المرء إلى 360 موضعًا متميزًا على الأقل لكل دورة، الأمر الذي يتطلب ما لا يقل عن 9 بتات من البيانات ونفس عدد جهات الاتصال.

إذا تم وضع جميع جهات الاتصال في نفس الموضع الزاوي، فستكون هناك حاجة إلى 9 مسارات للحصول على BRGC قياسي بدقة لا تقل عن درجة واحدة. ومع ذلك، إذا قامت الشركة المصنعة بنقل جهة الاتصال إلى موضع زاوي مختلف ولكن على نفس المسافة من العمود المركزي، فيجب تدوير 'نمط الحلقة' المقابل بنفس الزاوية لإعطاء نفس الإخراج.

رمز رمادي ثنائي الأبعاد

تُستخدم الرموز الرمادية ثنائية الأبعاد في الاتصالات لتقليل عدد أخطاء البت في تعديل السعة التربيعية في النقاط المجاورة في الكوكبة.

في التشفير القياسي، تختلف نقاط الكوكبة الأفقية والرأسية المتجاورة بمقدار بتة واحدة، وتختلف النقاط القطرية المجاورة بمقدار بتتين.