一、设计简单的计数器
1、计数器源代码
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2017/10/22 15:16:21
// Design Name:
// Module Name: counter
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module counter(
input reset,
input clk,
output [3:0] out
);
reg [3:0] out;
always @(posedge clk)begin
if(reset)
out <= 0;
else
out <= out + 1;
end
endmodule
RTL模型
RTL技术原理图
仿真源代码
`timescale 1ns / 1ps //1ns的仿真刻度,1ps的仿真精度
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2017/10/22 15:28:44
// Design Name:
// Module Name: simu
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module simu(
);
reg reset;
reg clk;
wire [3:0] out;
parameter DELAY = 100;
counter inst(
.reset(reset),
.clk(clk),
.out(out)
);
always #(DELAY / 2) clk = ~clk;
initial begin
clk = 0; //输入信号必须初始化
reset = 0;
#DELAY reset = 1;
#DELAY reset = 0;
#(DELAY*20) $finish;
end
initial $monitor($time,,,"clk = %d reset = %d out = %d",clk,reset,out);
endmodule
仿真波形输出
打印输出结果
文章评论(0条评论)
登录后参与讨论