2020年1月4日 星期六

Clock divide by 4

Clock divide by 4




module clock_divide_4 (input clk,input rst_n,output reg o_clk);

 reg [1:0] cnt;

always@(posedge clk or negedge rst_n) begin
   if (!rst_n)
     cnt <= 0;
   else if (cnt == 3) // 0 ~ 3
     cnt <= 0;
   else
     cnt <= cnt + 1;
 end

always@(posedge clk or negedge rst_n) begin
   if (!rst_n)
     o_clk <= 0;
   else if (cnt < 2) // 0 ~ 1
     o_clk = 0;
   else              // 2 ~ 3
     o_clk = 1;   
 end

endmodule


`timescale 1ns/10ps
module Test_bench;
 reg clk;
 reg rst_n;
 wire o_clk;

clock_divide_4 UUT (
   .clk(clk),
   .rst_n(rst_n),
   .o_clk(o_clk)
 );

 initial begin
   clk   = 1'b1;
   rst_n = 1'b1;
 end

 // 50MHz clk
 always #10 clk = ~clk;
endmodule

沒有留言:

張貼留言

MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構

MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構 這張圖片展示了一個 結合 MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構 (主要透過 Node-RED 進行資料整合)。 系統包含三個核心部分,其運作功能說明如下: 1. ESP32 終端設備(硬體控制層...