logo

Verilog Gri Sayacı

Gri kod, bir seferde yalnızca bir bitin değişeceği bir tür ikili sayı sistemidir. Günümüzde gri kod dijital dünyada yaygın olarak kullanılmaktadır. Hata düzeltme ve sinyal iletimi açısından faydalı olacaktır. Gri sayaç aynı zamanda VLSI alanında tasarım ve doğrulamada da faydalıdır.

Verilog Gri Sayacı

Gri Kod, bitişik tam sayıların temsillerinin tam olarak bir ikili konumda farklılık göstermesi özelliğine sahip, tam sayıları bit dizileri olarak kodlar.

Dengeli, İkili yansımalı, Maksimum Boşluk ve Antipodal Gri kod gibi farklı gri kod türleri vardır.

Sayaçların birincil işlevi belirli bir çıktı dizisi üretmektir ve bazen model oluşturucular olarak da adlandırılırlar.

Tasarım

Gri kodda aynı anda yalnızca bir bit değişir. Bu tasarım kodunun saat ve sıfırlama sinyalleri olmak üzere iki girişi ve gri kod üretecek 4 bitlik bir çıkışı vardır.

İlk olarak, eğer ilk sinyal yüksekse çıkış sıfır olacaktır ve en kısa sürede ilk alçakta, yükselen kenarında clk tasarım dört bitlik bir gri kod üretecek ve her yükselen kenarda üretmeye devam edecektir. clk sinyal.

Bu tasarım kodu yükseltilebilir ve ikili sayılar giriş olarak yerleştirilebilir ve bu tasarım, ikiliden gri koda dönüştürücü olarak çalışacaktır.

 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></=>

Dengeli Gri Kod

Dengeli Gray kodlarında farklı koordinat konumlarındaki değişiklik sayısı mümkün olduğunca birbirine yakındır.

Bir Gray kodu üniforma veya eşit olarak geçiş sayılarının tümü eşitse dengelidir.

Gri kodlar da olabilir üstel olarak tüm geçiş sayılarının ikinin bitişik kuvvetleri olması ve bu tür kodların ikinin her kuvveti için mevcut olması durumunda dengelidir.

Örneğin, dengeli bir 4 bitlik Gray kodun 16 geçişi vardır ve bu geçişler, dört konumun tümü arasında eşit olarak dağıtılabilir (konum başına dört geçiş), bu da onu eşit şekilde dengelenmiş hale getirir.

 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 Gri Kod

İkili yansımalı Gray kodunun dışında birçok özel Gray kodu türü vardır. Gray kodunun bu türlerinden biri de n-ary Gray kodudur. Boole olmayan Gri kod. Adından da anlaşılacağı gibi, bu Gray kodu türü, kodlamalarında Boolean olmayan değerleri kullanır.

Örneğin, 3'lü üçlü bir Gray kodu, {0, 1 ve 2} değerlerini kullanır. (n, k)-Gray kodu, k basamaklı n-ary Gray kodudur. (3, 2)-Gray kodundaki öğelerin sırası şöyledir: {00, 01, 02, 12, 11, 10, 20, 21 ve 22}.

(n, k)-Gray kodu, BRGC gibi yinelemeli olarak oluşturulabilir veya yinelemeli olarak oluşturulabilir.

Monotonik Gri Kodlar

Monotonik kodlar, ara bağlantı ağları teorisinde, özellikle doğrusal işlemci dizileri için genişlemeyi en aza indirmek için faydalıdır.

İkili bir dizgenin ağırlığını dizgedeki 1'lerin sayısı olarak tanımlarsak, o zaman kesin olarak artan ağırlığa sahip bir Gray koduna sahip olamasak da, kodun iki bitişik ağırlıktan geçerek bu değere yaklaşmasını isteyebiliriz. sıradaki.

Beckett-Gray Kodu

Gray kodunun başka bir türü olan Beckett-Gray kodu, İrlandalı oyun yazarının adını almıştır. Samuel Beckett , kiminle ilgilendi simetri . Onun oyunu Dörtlü dört oyuncudan oluşur ve on altı zaman dilimine bölünmüştür. Her dönem, dört oyuncudan birinin sahneye girmesi veya sahneden çıkmasıyla sona erer.

Oyun boş bir sahneyle başlıyor ve Beckett her oyuncu alt grubunun sahneye tam olarak bir kez çıkmasını istiyordu. 4 bitlik ikili bir Gray kodu, o anda sahnede olan aktörleri temsil edebilir.

Fakat,

Beckett senaryoya ek bir kısıtlama daha getirdi: Oyuncuların girip çıkmasını istiyordu, böylece sahnede en uzun süre kalan oyuncu her zaman sahneden çıkacaktı.

Aktörler daha sonra ilk giren ilk çıkar (FIFO) kuyruğuyla temsil edilebilir, böylece kuyruktan çıkarılan aktör her zaman ilk sıraya giren oyuncu olur.

Beckett oyunu için bir Beckett-Gray kodu bulamadı ve aslında tüm olası dizilerin ayrıntılı bir listesi, n = 4 için böyle bir kodun mevcut olmadığını ortaya koyuyor. Bugün bu tür kodların n = 2, 5 için var olduğu biliniyor. , 6, 7 ve 8 ve n = 3 veya 4 için mevcut değil.

Kutudaki Yılan Kodları

Kutudaki yılan kodları veya yılanlar, n boyutlu bir ortamda indüklenen yolların düğüm dizileridir. hiperküp grafik ve kutudaki bobin kodları veya bobinler, bir hiperküpte indüklenen döngülerin düğüm dizileridir.

Gray kodları olarak bakıldığında bu diziler herhangi bir tek bitlik kodlama hatasını tespit etme özelliğine sahiptir.

Tek kanallı Gri Kod

Diğer bir Gray kodu türü ise, tarafından geliştirilen tek izli Gray kodudur (STGC). Norman B. Spedding ve tarafından rafine edildi Hiltgen, Paterson Ve Brandestini 'Tek-izli Gri kodlar'da (1996).

STGC, n uzunluğundaki P benzersiz ikili kodlamanın döngüsel bir listesidir, öyle ki ardışık iki kelime tam olarak bir konumda farklılık gösterir. Liste P×n matrisi olarak incelendiğinde her sütun ilk sütunun döngüsel kaymasıdır.

uzantı dosyası java

Bu ad, birçok izin kontaklar tarafından algılandığı ve her birinin çıkışının 0 veya 1 olduğu döner kodlayıcılarla kullanımlarından gelmektedir. Farklı kontakların zaman içinde aynı anda geçiş yapmaması nedeniyle gürültüyü azaltmak için tercihen kişilerin veri çıkışının Gray kodunda olmasını sağlayacak şekilde izler.

Yüksek açısal doğruluk elde etmek için çok sayıda temasa ihtiyaç vardır; En az 1 derecelik doğruluk elde etmek için devir başına en az 360 farklı konuma ihtiyaç vardır; bu da minimum 9 bit veri ve aynı sayıda bağlantı gerektirir.

Tüm kontaklar aynı açısal konuma yerleştirilirse, en az 1 derecelik doğrulukla standart bir BRGC elde etmek için 9 iz gerekir. Bununla birlikte, üretici bir kontağı farklı bir açısal konuma ancak merkez şafttan aynı mesafeye hareket ettirirse, o zaman karşılık gelen 'halka modelinin' aynı çıkışı sağlamak için aynı açıda döndürülmesi gerekir.

İki Boyutlu Gri Kod

İki boyutlu Gray kodları, takımyıldızındaki bitişik noktalardaki karesel genlik modülasyonundaki bit hatalarının sayısını en aza indirmek için iletişimde kullanılır.

Standart bir kodlamada, yatay ve dikey bitişik takımyıldız noktaları tek bir bit farklılık gösterir ve bitişik diyagonal noktalar 2 bit farklılık gösterir.