⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 counter16.v

📁 清华大学verilog hdl源码例子
💻 V
字号:
// 实验名称 : 16位涟波计数器
// 程序名称 : counter16.v 
// 日  期 : 2001/12/18

//*********************************************************
//                      定义模块(module)
//*********************************************************

module counter16( reset_n, clk_in, clk16_out );

input           reset_n;        // 重置讯号输入
input           clk_in;         // 系统时脉输入 
output [15:0]   clk16_out;      // 16位计数值输出

//*********************************************************

// 宣告制作一个16位涟波计数器所需要的缓存器和接线。

reg [15:0]      clk16_out;
wire            clk16_out0  = clk16_out[0];
wire            clk16_out1  = clk16_out[1];
wire            clk16_out2  = clk16_out[2];
wire            clk16_out3  = clk16_out[3];
wire            clk16_out4  = clk16_out[4];
wire            clk16_out5  = clk16_out[5];
wire            clk16_out6  = clk16_out[6];
wire            clk16_out7  = clk16_out[7];
wire            clk16_out8  = clk16_out[8];
wire            clk16_out9  = clk16_out[9];
wire            clk16_out10 = clk16_out[10];
wire            clk16_out11 = clk16_out[11];
wire            clk16_out12 = clk16_out[12];
wire            clk16_out13 = clk16_out[13];
wire            clk16_out14 = clk16_out[14];

// 使用标准的D-Type Filp-Flop描述语法。
// 以宣告的缓存器和接线顺序连结正反器,
// 实际制作一个16位的涟波计数器。

always @( negedge reset_n or negedge clk_in )
        if( !reset_n )  clk16_out[0] <=  0;
        else            clk16_out[0] <= !clk16_out[0];

always @( negedge reset_n or negedge clk16_out0 )
        if( !reset_n )  clk16_out[1] <=  0;
        else            clk16_out[1] <= !clk16_out[1];

always @( negedge reset_n or negedge clk16_out1 )
        if( !reset_n )  clk16_out[2] <=  0;
        else            clk16_out[2] <= !clk16_out[2];

always @( negedge reset_n or negedge clk16_out2 )
        if( !reset_n )  clk16_out[3] <=  0;
        else            clk16_out[3] <= !clk16_out[3];

always @( negedge reset_n or negedge clk16_out3 )
        if( !reset_n )  clk16_out[4] <=  0;
        else            clk16_out[4] <= !clk16_out[4];

always @( negedge reset_n or negedge clk16_out4 )
        if( !reset_n )  clk16_out[5] <=  0;
        else            clk16_out[5] <= !clk16_out[5];

always @( negedge reset_n or negedge clk16_out5 )
        if( !reset_n )  clk16_out[6] <=  0;
        else            clk16_out[6] <= !clk16_out[6];

always @( negedge reset_n or negedge clk16_out6 )
        if( !reset_n )  clk16_out[7] <=  0;
        else            clk16_out[7] <= !clk16_out[7];

always @( negedge reset_n or negedge clk16_out7 )
        if( !reset_n )  clk16_out[8] <=  0;
        else            clk16_out[8] <= !clk16_out[8];

always @( negedge reset_n or negedge clk16_out8 )
        if( !reset_n )  clk16_out[9] <=  0;
        else            clk16_out[9] <= !clk16_out[9];

always @( negedge reset_n or negedge clk16_out9 )
        if( !reset_n )  clk16_out[10] <=  0;
        else            clk16_out[10] <= !clk16_out[10];

always @( negedge reset_n or negedge clk16_out10 )
        if( !reset_n )  clk16_out[11] <=  0;
        else            clk16_out[11] <= !clk16_out[11];

always @( negedge reset_n or negedge clk16_out11 )
        if( !reset_n )  clk16_out[12] <=  0;
        else            clk16_out[12] <= !clk16_out[12];

always @( negedge reset_n or negedge clk16_out12 )
        if( !reset_n )  clk16_out[13] <=  0;
        else            clk16_out[13] <= !clk16_out[13];

always @( negedge reset_n or negedge clk16_out13 )
        if( !reset_n )  clk16_out[14] <=  0;
        else            clk16_out[14] <= !clk16_out[14];

always @( negedge reset_n or negedge clk16_out14 )
        if( !reset_n )  clk16_out[15] <=  0;
        else            clk16_out[15] <= !clk16_out[15];

//*********************************************************

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -