logo

Верилог Греи Цоунтер

Греј код је врста бинарног бројевног система у коме се само један бит мења у исто време. Данас се сиви код широко користи у дигиталном свету. Биће од помоћи за исправљање грешака и пренос сигнала. Граи бројач је такође користан у дизајну и верификацији у ВЛСИ домену.

Верилог Греи Цоунтер

Греј код кодира целе бројеве као низове битова са својством да се репрезентације суседних целих бројева разликују у тачно једној бинарној позицији.

Постоје различите врсте сивих кодова, као што су балансирани, бинарни рефлектовани, максимални размак и антиподни сиви код.

Бројачи имају примарну функцију производње одређене излазне секвенце и понекад се називају генераторима шаблона.

Дизајн

У сивом коду се у једном тренутку мења само један бит. Овај код дизајна има два улаза, сигнале такта и ресетовања и један 4-битни излаз који ће генерисати сиви код.

Прво, ако је рстн сигнал је висок, онда ће излаз бити нула, а чим рстн иде ниско, на узлазној ивици од цлк , дизајн ће генерисати четворобитни сиви код и наставити да генерише на свакој растућој ивици цлк сигнал.

Овај код дизајна се може надоградити и ставити бинарне бројеве као улаз, а овај дизајн ће радити као претварач бинарног у сиви код.

 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 

н-ари Греј код

Постоји много специјализованих типова Греј кодова који нису бинарно рефлектовани Греј код. Један такав тип Греј кода је н-арни Греј код, такође познат као а не-боолеан Греј код. Као што назив имплицира, овај тип Греј кода користи не-Боолеан вредности у својим кодовима.

На пример, троструки тернарни Греј код би користио вредности {0, 1 и 2}. (н, к)-Греј код је н-арни Греј код са к цифара. Низ елемената у (3, 2)-Граи коду је: {00, 01, 02, 12, 11, 10, 20, 21 и 22}.

(н, к)-Граи код може бити конструисан рекурзивно, као БРГЦ, или може бити конструисан итеративно.

Монотонски сиви кодови

Монотони кодови су корисни у теорији мрежа међусобног повезивања, посебно за минимизирање дилатације за линеарне низове процесора.

Ако дефинишемо тежину бинарног низа као број 1 у стрингу, онда, иако очигледно не можемо имати Греј код са стриктно растућом тежином, можда бисмо желели да ово апроксимирамо тако што ћемо код проћи кроз две суседне тежине пре него што дође до следећи.

Бецкетт-Граи код

Други тип Греј кода, Бекет-Греј код, назван је по ирском драмском писцу Самуел Бецкетт , који је био заинтересован за симетрија . Његова игра Куад има четири глумца и подељен је на шеснаест временских периода. Сваки период се завршава тако што један од четири глумца уђе или изађе са сцене.

Представа почиње празном позорницом, а Бекет је желео да се свака подскупина глумаца појави на сцени тачно једном. 4-битни бинарни Греј код може представљати скуп глумаца који су тренутно на сцени.

Међутим,

Бекет је поставио додатно ограничење сценарију: пожелео је да глумци уђу и изађу како би глумац који је најдуже био на сцени увек био тај који ће изаћи.

Актери би тада могли бити представљени редом „први ушао, први изашао“ (ФИФО) тако да је актер који се уклања из реда увек онај који је први стављен у ред.

Бекет није успео да пронађе Бекет-Грејев код за своју игру, и заиста, исцрпна листа свих могућих секвенци открива да такав код не постоји за н = 4. Данас је познато да такви кодови постоје за н = 2, 5 , 6, 7 и 8 и не постоје за н = 3 или 4.

Снаке-ин-тхе-бок Цодес

Кодови змија у кутији, или змије, су низови чворова индукованих путања у н-димензионалној хиперкоцка граф, и калем у кутији кодови, или калемови, су секвенце чворова индукованих циклуса у хиперкоцки.

Гледано као Греј кодови, ове секвенце имају својство откривања било које једнобитне грешке кодирања.

Једноструки Греј код

Друга врста Греј кода је једноструки Греј код (СТГЦ) који је развио Норман Б. Спеддинг и префињен од Хилтген, Патерсон и Брандестини у 'Сингле-трацк Греи цодес' (1996).

СТГЦ је циклична листа П јединствених бинарних кодирања дужине н тако да се две узастопне речи разликују на тачно једној позицији. Када се листа испита као П × н матрица, свака колона је циклични помак прве колоне.

јава замена карактера у низу

Назив потиче од њихове употребе са ротационим енкодерима, где контакти детектују многе траке, што резултира да сваки има излаз од 0 или 1. Да би се смањио шум због тога што се различити контакти не мењају у истом тренутку, пожељно је поставити прати тако да излаз података контаката буде у Греј коду.

Да бисте добили високу угаону тачност, потребно је много контаката; да би се постигла тачност од најмање 1 степена, потребно је најмање 360 различитих позиција по обртају, што захтева најмање 9 битова података и исти број контаката.

Ако су сви контакти постављени на исту угаону позицију, онда је потребно 9 стаза да би се добио стандардни БРГЦ са тачношћу од најмање 1 степена. Међутим, ако произвођач помери контакт у другу угаону позицију, али на истој удаљености од централне осовине, тада одговарајући 'шаблон прстена' треба да се ротира под истим углом да би се добио исти излаз.

Дводимензионални Греј код

Дводимензионални Грејеви кодови се користе у комуникацији да би се минимизирао број грешака бита у квадратурној амплитудној модулацији суседних тачака у сазвежђу.

У стандардном кодирању, хоризонталне и вертикалне суседне тачке констелације разликују се за један бит, а суседне дијагоналне тачке се разликују за 2 бита.