赞
踩
首先,我从新建verilog程序说起。本文实现的是一个非常简单的功能,从0到10分别计数,在每个时钟上升沿,计数器加1,加到10后归0,然后再加到10
下面开始说计数器的verilog实现过程。
1.点击file-》new project
2填写工程名字,点next,知道finish
3先选中下图红色部分,然后右键,点new source。选择verilog module,写入verilog程序名字,这里写为jishu。然后一直点next。
4编写用来计数的verilog程序。
module jishu(clk,rst,q
);
input clk,rst;
output[3:0] q;
reg[3:0] q;
always@(posedge clk or negedge rst )
begin
if(rst==0)
q<=4'b0;
else
begin
if(q==4'b1010)
q<=4'b0;
else
q<=q+1;
end
end
endmodule
5进行综合,双击下图红色部分进行综合。
6点击上图红色部分前面的小加号,然后就可以分别看RTL原理图和技术原理图。再双击右面的模块就可以看到更具体的底层设计。
7编写测试文件。
首先新建测试文件。1)选择simulation,2)点击jishu模块,3)右键点击new source。一定要注意的是选择verilog测试模块。然后next直到finish。
8下面是我编写的测试文件。主要是产生一个周期为20ns的周期脉冲。
// Add stimulus here
rst=1;
while(1)
clk=#10 !clk;//产生周期为20ns的周期脉冲
完整的测试文件为下面所示。
// Inputs
reg clk;
reg rst;
// Outputs
wire [3:0] q;
// Instantiate the Unit Under Test (UUT)
jishu uut (
.clk(clk),
.rst(rst),
.q(q)
);
initial begin
// Initialize Inputs
clk = 0;
rst = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
rst=1;
while(1)
clk=#10 !clk;//产生周期为20ns的周期脉冲
end
endmodule
9编写完测试文件后保存。点击下图 simulator前的加号,再双击运行simulate behavioral model。
10刚开始出来的仿真波形可能看不出规律。一直点下图中的缩小按钮,直到可以看出清楚的波形。从下面的波形可以看到,在rst为0时,q的输出一直为0.当rst为1且时钟一直在变化时,q的值从0000随着时钟上升沿每次加1直到1010。然后变为0000再继续加到1010
以上就是我所做的仿真过程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。