2020年1月4日 星期六

Verilog HDL Program for Johnson Counter

Verilog HDL Program for Johnson Counter (10bits)





//declare the Verilog module - The inputs and output port names.
module johnson_cnt_10(clock,reset,q);
   input clock;
   input reset;
   output [9:0] q;

   reg[9:0] a;

    always @(posedge clock)
      if (reset)
        a = 10'b0000000001;

      else
        begin
        a <=  a<<1; // Notice the blocking assignment
        a[0]<=a[9];
        end

    assign q = a;

  endmodule


// 時間單位 1ns, 時間精確度10ps
`timescale 1ns / 1ps
module Test_bench;
// Inputs
reg clock;
reg reset;
// Outputs
    wire[9:0] q;
// Instantiate the Unit Under Test (UUT)
johnson_cnt_10 UUT (
      .clock(clock), 
      .reset(reset), 
      .q(q)
);

  always #10 clock = ~clock;

initial begin
// Initialize Inputs
    clock = 0; 
reset = 0;

#5 reset = 1;
#20 reset = 0;
#300 $finish;
    end 

initial begin
          $monitor($time, " clock=%1b,reset=%1b,q=%4b",clock,reset,q);
end

endmodule



沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...