FPGA---Modesim的使用。
今天学习了modesim的仿真,感觉初次使用时还是比较麻烦的,不过熟能生巧,相信自己以后会很有用的。
废话少说,还是从头开始吧,我们用一个简单的计数器作为例子。
1、利用QuartusII建立工程,输入以下程序:
1 `define width 8
2 module counter(
3 clk,
4 up_down,
5 load,
6 reset,
7 din,
8 counter
9 );
10
11
12 input clk,reset;
13 input load,up_down;
14 input [`width-1:0]din;
15 output [`width-1:0]counter;
16 reg [`width-1:0]counter;
17 //reg [`width-1:0] din;
18 always@(posedge clk or negedge reset)begin
19 if(!reset)
20 counter <=0;
21 else if(load)
22 counter <= din;
23 else begin
24 if(up_down)
25 counter <= counter +1'b1;
26 else
27 counter <= counter -1'b1;
28 end
29 end
30 endmodule
该程序为简单的计数器,可进行加和减。
2、编译通过以后,我们进入Modesim 中,建立工程。在新的工程中添加testbench文件,在弹出的选择菜单时,选择创建新的文件。
在创建好的空白文件中输入以下程序,主要是给测试的程序产生激励信号,使之能够运行。
module counter1_test;
reg clk;
reg reset;
reg load;
reg up_down;
reg [7:0]din;
wire [7:0]counter;
counter U1(
.clk(clk),
.reset(reset),
.load(load),
.up_down(up_down),
.din(din),
.counter(counter)
);
initial begin
clk =0;
forever
#10 clk =~clk;
end
initial begin
reset =0;
#20;
reset =1;
#100;
$stop;
end
initial begin
din =8'd10;
load =1;up_down =1;
#100 load =0;
//#100;
#1000;
up_down =0;
#1000;
end
endmodule
该测试程序,主要是产生clk,reset ,load ,up_down信号,是该计数器能够在时钟控制下,进行自加减。
3、保存文件后,在library中点击右键->New Library 将Quartus的源程序和测试文件添加进来。
4、然后进行编译,编译通过以后点击Simulate->start simulate就可以进行仿真了,
在弹出的library中选择刚才的work ,点击自己编写的testbench文件,注意要要将最优化设置去掉。
5、系统将自动进入仿真波形界面,选择全部的信号,点击右键将添加到wave中,然后开始进行仿真。
最终仿真波形如下图所示。
posted on 2011-11-15 16:37 Scorpionss 阅读(399) 评论(0) 收藏 举报
浙公网安备 33010602011771号