Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Verilog

Modul Counter Gray Verilog: Generator Kode Gray 4-bit

Desain

Counter Gray menghasilkan urutan kode Gray, di mana hanya satu bit yang berubah pada setiap transisi. Ini berguna untuk mengurangi risiko kesalahan dalam sistem digital dan aplikasi enkoder. Modul berikut mendukung implementasi dengan loop atau operasi vektoral terpilih melalui kompiler kondisional.

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 <= q + 1; `ifdef FOR_LOOP for (int i = 0; i < N-1; i= i+1) begin out[i] <= q[i+1] ^ q[i]; end out[N-1] <= q[N-1]; `else out <= {q[N-1], q[N-1:1] ^ q[N-2:0]}; `endif end end endmodule

Testbench

Testbench berikut memverifikasi generator kode Gray dengan memantau output heksadesimal selama berbagai siklus clock setelah lepas dari reset.

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", $time, rstn, out); repeat(2) @ (posedge clk); rstn <= 1; repeat(20) @ (posedge clk); $finish; end endmodule

Log Simulasi

ncsim> 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

Verilog

  1. Menguasai Verilog: Tutorial Lengkap untuk Desain Sirkuit Digital
  2. Menguasai Konkatenasi Verilog: Panduan Praktis
  3. Memahami Penugasan Verilog: Jenis, Sintaks, dan Praktik Terbaik
  4. Perbedaan Kunci Penugasan Blokir dan Non-Blokir Verilog
  5. Menguasai Fungsi Verilog untuk Desain RTL yang Efisien
  6. Memahami Tugas Verilog: Fungsi vs Tugas, Sintaks, dan Penggunaan
  7. Generator Jam Verilog: Panduan Desain dan Implementasi
  8. Menguasai Fungsi Matematika Verilog untuk Desain Perangkat Keras yang Efisien
  9. Menguasai $timeformat Verilog: Kontrol Presisi dan Tampilan
  10. Membuat Flip-Flop T Verilog: Implementasi RTL dan Testbench