?? clk_div.v
字號:
//-----------------------------------------------------------------------------// // Copyright (c) 2009 Xilinx Inc.//// Project : Programmable Wave Generator// Module : clk_div.v// Parent : wave_gen.v// Children : None//// Description: // This module is a programmable divider use for generating the sample// clock (clk_samp). It continuously counts down from pre_clk_tx-1 to// 0, asserting en_clk_samp during the 0 count.//// To ensure proper reset of the FFs running on the derived clock,// en_clk_samp is asserted during reset.//// Parameters://// Notes : // pre_clk_tx must be at least 2 for this module to work. Since// it is not allowed to be <32 (by the parser), this is not a problem.//// Multicycle and False Paths// None`timescale 1ns/1psmodule clk_div ( input clk_tx, // Clock input input rst_clk_tx, // Reset - synchronous to clk_tx input [15:0] pre_clk_tx, // Current divider output reg en_clk_samp // Clock enable for BUFG);//***************************************************************************// Function definitions//***************************************************************************//***************************************************************************// Parameter definitions//***************************************************************************//***************************************************************************// Reg declarations//*************************************************************************** reg [15:0] cnt; // Counter//***************************************************************************// Wire declarations//*************************************************************************** //***************************************************************************// Code//*************************************************************************** always @(posedge clk_tx) begin if (rst_clk_tx) begin en_clk_samp <= #5 1'b1; // Enable the clock during reset cnt <= 16'b0; end else // !rst begin // Since we want en_clk_samp to be 1 when cnt is 0 we compare // it to 1 on the clock before en_clk_samp <= #5 (cnt == 16'b1); if (cnt == 0) // The counter expired and we are still not equal begin cnt <= pre_clk_tx - 1'b1; end else // The counter is not 0 begin cnt <= cnt - 1'b1; // decrement it end end // if rst end // alwaysendmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -