logo

Verilog pilkas skaitiklis

Pilkas kodas yra dvejetainė skaičių sistema, kurioje vienu metu keičiasi tik vienas bitas. Šiandien pilkasis kodas plačiai naudojamas skaitmeniniame pasaulyje. Tai bus naudinga taisant klaidas ir perduodant signalą. Pilkasis skaitiklis taip pat naudingas kuriant ir tikrinant VLSI domeną.

Verilog pilkas skaitiklis

Pilkas kodas koduoja sveikuosius skaičius kaip bitų sekas, turinčias savybę, kad gretimų sveikųjų skaičių vaizdiniai skiriasi tiksliai vienoje dvejetainėje padėtyje.

Yra įvairių tipų pilki kodai, tokie kaip subalansuotas, atspindėtas dvejetainis, didžiausias tarpas ir antipodalinis pilkas kodas.

Skaitiklių pagrindinė funkcija yra sukurti nurodytą išvesties seką ir kartais vadinamos šablonų generatoriais.

Dizainas

Pilkame kode vienu metu keičiasi tik vienas bitas. Šis dizaino kodas turi du įėjimus, laikrodžio ir atstatymo signalus bei vieną 4 bitų išvestį, kuri generuos pilką kodą.

Pirma, jei rstn signalas yra aukštas, tada išvestis bus lygi nuliui, ir kai tik rstn eina žemai, ant kylančio krašto clk , dizainas generuos keturių bitų pilką kodą ir toliau generuos kiekviename kylančiame krašte clk signalas.

Šį dizaino kodą galima atnaujinti ir įvesti dvejetainius skaičius, o šis dizainas veiks kaip dvejetainio į pilką kodo konverteris.

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

Subalansuotas pilkas kodas

Subalansuotuose Gray koduose skirtingų koordinačių padėčių pakeitimų skaičius yra kuo artimesnis.

Pilkas kodas yra uniforma arba vienodai subalansuotas, jei visi jo perėjimų skaičiai yra vienodi.

Gali būti ir pilki kodai eksponentiškai subalansuotas, jei visi jų perėjimų skaičiai yra gretimi dviejų laipsniai ir tokie kodai egzistuoja kiekvienam dviejų laipsniui.

Pavyzdžiui, subalansuotas 4 bitų pilkas kodas turi 16 perėjimų, kurie gali būti tolygiai paskirstyti tarp visų keturių pozicijų (keturi perėjimai vienoje pozicijoje), todėl jis tolygiai subalansuotas.

 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-arinis pilkasis kodas

Yra daug specializuotų pilkųjų kodų tipų, išskyrus dvejetainį pilką kodą. Vienas iš tokių pilkojo kodo tipų yra n-ary Gray kodas, dar žinomas kaip a ne Būlio Pilkas kodas. Kaip rodo pavadinimas, šio tipo pilkojo kodo koduotėse naudojamos ne Būlio reikšmės.

Pvz., 3 trijų dalių pilkasis kodas naudotų reikšmes {0, 1 ir 2}. (n, k)-Gray kodas yra n-arinis Gray kodas su k skaitmenų. (3, 2) pilkos spalvos kodo elementų seka yra: {00, 01, 02, 12, 11, 10, 20, 21 ir 22}.

(n, k)-Gray kodas gali būti sudarytas rekursyviai, kaip BRGC, arba gali būti sudarytas iteratyviai.

Monotoniški pilki kodai

Monotoniniai kodai yra naudingi sujungimo tinklų teorijoje, ypač siekiant sumažinti tiesinių procesorių matricų išsiplėtimą.

Jei dvejetainės eilutės svorį apibrėžiame kaip 1s skaičių eilutėje, tada, nors aiškiai negalime turėti pilko kodo su griežtai didėjančiu svoriu, galbūt norėsite tai apytiksliai apytiksliai paleisti per du gretimus svorius prieš pasiekiant. Kitas.

Beckett-Gray kodas

Kitas Grey kodo tipas, Beckett-Gray kodas, pavadintas airių dramaturgo vardu Samuelis Beketas , kuris domėjosi simetrija . Jo pjesė Keturkampis vaidina keturi aktoriai ir yra padalintas į šešiolika laikotarpių. Kiekvienas periodas baigiasi vienam iš keturių aktorių įžengus į sceną arba išėjus iš jos.

Spektaklis prasideda tuščia scena, o Beckettas norėjo, kad kiekvienas aktorių pogrupis scenoje pasirodytų lygiai vieną kartą. 4 bitų dvejetainis Gray kodas gali parodyti šiuo metu scenoje esančių aktorių rinkinį.

Tačiau

Beckettas įvedė papildomą scenarijaus apribojimą: jis linkėjo aktoriams įeiti ir išeiti taip, kad ilgiausiai scenoje buvęs aktorius visada išeitų.

Tada aktoriams būtų galima priskirti eilę „pirmas į, pirmas išeina“ (FIFO), kad iš eilės visada būtų tas, kuris buvo pirmas.

Beckett'ui nepavyko rasti savo pjesės Beckett-Gray kodo, ir iš tiesų, išsamus visų galimų sekų sąrašas atskleidžia, kad tokio kodo n = 4 nėra. Šiandien žinoma, kad tokie kodai egzistuoja n = 2, 5 , 6, 7 ir 8 ir neegzistuoja, kai n = 3 arba 4.

„Snake-in-the-box“ kodai

„Snake-in-the-box“ kodai arba gyvatės yra indukuotų takų mazgų sekos n-matėje hiperkubas grafas, o ritės dėžutėje kodai arba ritės yra hiperkubo indukuotų ciklų mazgų sekos.

Šios sekos, žiūrimos kaip pilkieji kodai, turi savybę aptikti bet kokią vieno bito kodavimo klaidą.

Vieno takelio pilkas kodas

Kita pilkojo kodo rūšis yra vieno takelio pilkasis kodas (STGC), kurį sukūrė Normanas B. Speddingas ir patobulinta Hiltgenas, Patersonas ir Brandestini „Single-track Grey Codes“ (1996).

STGC yra ciklinis P unikalių dvejetainių kodų, kurių ilgis n, sąrašas, kuriame du iš eilės einantys žodžiai skiriasi tiksliai vienoje pozicijoje. Kai sąrašas nagrinėjamas kaip P × n matrica, kiekvienas stulpelis yra ciklinis pirmojo stulpelio poslinkis.

pagrindinis raktas ir sudėtinis raktas sql

Pavadinimas kilęs dėl to, kad jie naudojami sukamuosiuose kodavimo įrenginiuose, kur daug takelių aptinkami kontaktais, todėl kiekvieno išvestis yra 0 arba 1. Norint sumažinti triukšmą, atsirandantį dėl skirtingų kontaktų nepersijungimo tuo pačiu momentu, pageidautina nustatyti seka taip, kad kontaktų duomenų išvestis būtų pilko kodo.

Norint gauti didelį kampinį tikslumą, reikia daug kontaktų; norint pasiekti bent 1 laipsnio tikslumą, vienam apsisukimui reikia bent 360 skirtingų pozicijų, o tam reikia mažiausiai 9 bitų duomenų ir tiek pat kontaktų.

Jei visi kontaktai yra toje pačioje kampinėje padėtyje, norint gauti standartinį BRGC bent 1 laipsnio tikslumu, reikia 9 takelių. Tačiau jei gamintojas perkelia kontaktą į kitą kampinę padėtį, bet tuo pačiu atstumu nuo centrinio veleno, atitinkamą „žiedo raštą“ reikia pasukti tuo pačiu kampu, kad būtų gauta tokia pati galia.

Dviejų dimensijų pilkas kodas

Dvimačiai Gray kodai naudojami ryšiui sumažinti bitų klaidų skaičių kvadratinės amplitudės moduliacijos gretimuose žvaigždyno taškuose.

Standartinėje koduotėje horizontalūs ir vertikalūs gretimi žvaigždyno taškai skiriasi vienu bitu, o gretimi įstrižainės taškai skiriasi 2 bitais.