logo

Verilog szürke számláló

A szürke kód egyfajta bináris számrendszer, ahol egyszerre csak egy bit változik. Ma a szürke kódot széles körben használják a digitális világban. Hasznos lesz a hibajavításban és a jelátvitelben. A szürke számláló a VLSI tartomány tervezésében és ellenőrzésében is hasznos.

Verilog szürke számláló

A szürke kód az egész számokat olyan bitsorozatként kódolja, amely azzal a tulajdonsággal rendelkezik, hogy a szomszédos egész számok ábrázolása pontosan egy bináris pozícióban különbözik.

Különböző típusú szürke kódok léteznek, például kiegyensúlyozott, binárisan tükrözött, maximális hézag és antipodális szürke kód.

A számlálók elsődleges funkciója egy meghatározott kimeneti sorozat létrehozása, és néha mintagenerátoroknak nevezik őket.

Tervezés

A szürke kódban egyszerre csak egy bit változik. Ennek a tervezési kódnak két bemenete van, órajel és alaphelyzetbe állítás, valamint egy 4 bites kimenet, amely szürke kódot generál.

Először is, ha a rstn jel magas, akkor a kimenet nulla lesz, és amint rstn alacsonyan megy, felfutó szélén clk , a terv négy bites szürke kódot generál, és továbbra is generál minden felfutó élén clk jel.

Ez a tervezési kód frissíthető, és bináris számokat adhat be bemenetként, és ez a kialakítás bináris-szürke kód konvertálóként fog működni.

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

Kiegyensúlyozott szürke kód

A kiegyensúlyozott Gray kódokban a különböző koordináta-pozíciók változásainak száma a lehető legközelebb van.

A szürke kód egyenruha vagy egységesen kiegyensúlyozott, ha az átmenetek száma egyenlő.

Szürke kódok is lehetnek exponenciálisan kiegyensúlyozott, ha minden átmenetszámuk kettő szomszédos hatványa, és ilyen kódok léteznek kettő minden hatványára.

Például egy kiegyensúlyozott 4 bites Gray kód 16 átmenettel rendelkezik, amelyek egyenletesen oszthatók el mind a négy pozíció között (pozíciónként négy átmenet), így egyenletesen kiegyensúlyozott.

 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 Code

A binárisan tükröződő Gray-kódon kívül számos speciális Grey-kód típus létezik. A Gray kód egyik ilyen típusa az n-ary Gray kód, más néven a nem logikai Szürke kód. Ahogy a neve is sugallja, ez a típusú Gray kód nem logikai értékeket használ a kódolásában.

Például egy háromtagú hármas Gray kód a {0, 1 és 2} értékeket használja. Az (n, k)-Gray kód az n-áris Gray kód k számjegyből áll. A (3, 2)-Gray kód elemeinek sorrendje: {00, 01, 02, 12, 11, 10, 20, 21 és 22}.

Az (n, k)-Gray kód rekurzív módon, mint a BRGC, vagy megszerkeszthető iteratív módon.

Monoton szürke kódok

A monoton kódok hasznosak az összekapcsolási hálózatok elméletében, különösen a lineáris processzortömbök dilatációjának minimalizálására.

Ha egy bináris karakterlánc súlyát úgy definiáljuk, hogy a karakterláncban lévő 1-ek száma legyen, akkor bár egyértelműen nem rendelkezhetünk szigorúan növekvő súllyal rendelkező Gray-kóddal, érdemes ezt úgy közelíteni, hogy a kódot két szomszédos súlyon futjuk át, mielőtt elérnénk. a következő.

Beckett-Gray kód

A Grey kód egy másik típusa, a Beckett-Gray kód az ír drámaíróról kapta a nevét Samuel Beckett , akit érdekelt szimmetria . Az ő játéka Quad négy szereplőt tartalmaz, és tizenhat időszakra oszlik. Minden időszak a négy szereplő egyikének színpadra lépésével vagy elhagyásával ér véget.

A darab üres színpaddal kezdődik, és Beckett azt akarta, hogy a színészek mindegyik alcsoportja pontosan egyszer jelenjen meg a színpadon. A 4 bites bináris Gray kód a jelenleg színpadon lévő színészek halmazát képviselheti.

Azonban,

Beckett további korlátozást támasztott a forgatókönyvvel kapcsolatban: azt kívánta, hogy a színészek be- és kilépjenek, hogy mindig az legyen az, aki a leghosszabb ideig volt színpadon.

A szereplőket ezután egy FIFO (first-in, first-out) sor képviselheti, így mindig a sorból kikerült színész lesz az, aki először került sorba.

Beckett nem tudott Beckett-Gray kódot találni a játékához, és az összes lehetséges sorozat kimerítő felsorolása felfedi, hogy n = 4 esetén nem létezik ilyen kód. Ma már ismert, hogy léteznek ilyen kódok n = 2, 5 esetén , 6, 7 és 8, és nem léteznek n = 3 vagy 4 esetén.

Snake-in-the-box kódok

A Snake-in-the-box kódok vagy a kígyók az indukált utak csomópontjainak sorozatai egy n-dimenzióban hiperkocka A gráf és a tekercs-in-the-box kódok vagy tekercsek indukált ciklusok csomópontjainak sorozatai egy hiperkockában.

Gray kódként tekintve ezek a szekvenciák képesek bármilyen egybites kódolási hibát észlelni.

Egysávos szürke kód

A Gray-kód egy másik fajtája az egysávos szürke kód (STGC), amelyet által fejlesztett ki Norman B. Spedding és által finomított Hiltgen, Paterson és Brandestini a „Single-track Gray codes” (1996) című könyvben.

Az STGC P egyedi, n hosszúságú bináris kódolás ciklikus listája úgy, hogy két egymást követő szó pontosan egy helyen tér el. Ha a listát P × n mátrixként vizsgáljuk, minden oszlop az első oszlop ciklikus eltolása.

szelet java

Az elnevezés a forgó jeladóknál való használatukból ered, ahol sok sávot érzékelnek az érintkezők, így mindegyik 0 vagy 1 kimenetet eredményez. Annak érdekében, hogy a különböző érintkezők nem ugyanabban a pillanatban kapcsolják át a zajt, célszerű beállítani a nyomon követi, hogy a kapcsolattartók adatkimenete szürke kódú legyen.

A nagy szögpontosság eléréséhez sok érintkezőre van szükség; legalább 1 fokos pontosság eléréséhez fordulatonként legalább 360 különböző pozícióra van szükség, amihez legalább 9 bit adat és ugyanennyi érintkező szükséges.

Ha minden érintkező ugyanabban a szöghelyzetben van, akkor 9 sávra van szükség egy szabványos BRGC-hez legalább 1 fokos pontossággal. Ha azonban a gyártó egy érintkezőt egy másik szöghelyzetbe, de a középső tengelytől azonos távolságra mozgat, akkor a megfelelő „gyűrűmintát” ugyanabban a szögben kell elforgatni, hogy ugyanazt a teljesítményt kapja.

Kétdimenziós szürke kód

Kétdimenziós Gray kódokat használnak a kommunikációban, hogy minimalizálják a bithibák számát a négyzetes amplitúdómoduláció szomszédos pontjaiban a konstellációban.

Egy szabványos kódolásban a vízszintes és függőleges szomszédos konstellációs pontok egyetlen bittel, a szomszédos átlós pontok pedig 2 bittel különböznek egymástól.