「Verilog学习笔记」格雷码计数器

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

「Verilog学习笔记」格雷码计数器_第1张图片「Verilog学习笔记」格雷码计数器_第2张图片

「Verilog学习笔记」格雷码计数器_第3张图片

`timescale 1ns/1ns

module gray_counter(
   input   clk,
   input   rst_n,

   output  reg [3:0] gray_out
);
    reg [3:0] binary_cnt ; 
    reg flag ; 

    always @ (posedge clk or negedge rst_n) begin 
        if (~rst_n) flag <= 0 ; 
        else flag <= ~flag ;
    end

    always @ (posedge clk or negedge rst_n) begin 
        if (~rst_n) binary_cnt <= 0 ; 
        else binary_cnt <= flag ? binary_cnt + 1 : binary_cnt ; 
    end

    always @ (*) begin 
        gray_out = binary_cnt ^ (binary_cnt >> 1) ; 
    end  

endmodule

你可能感兴趣的:(Verilog学习笔记,学习,笔记,Verilog)