1、准备

目前用到以下工具和硬件:

  • 开发工具 Quartus II 13.0
  • 仿真工具 Modelsim Altera
  • 开发板型号 Cyclone EP1C3

2、建立初始工程

2.1 建立简单LED示例

在Quartus开发工具中,新建项目,硬件型号选择 Cyclone EP1C3T144C8。

2.2 编写rtl代码

新建verilog文件mcu_top,并添加到工程rtl目录,代码内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

module mcu_top(
clk,
rst,
led
);

input clk;
input rst;

output led;

reg led;

reg [15:0] counter;

always@(posedge clk)
begin
if(rst)begin
led <= 0;
counter <= 0;
end else begin
counter <= counter +1;
if(counter >= 16'h8) begin
counter <= 0;
led <= ~led;
end
end
end

endmodule

编写好后,将该文件设置为set as top-level entity,然后点击Start compilation进行编译排除错误。

3、仿真验证

3.1 编写仿真文件

编写testbench文件放到工程tb目录,仿真文件中主要产生一个100MHz的时钟,即周期10ns,再产生一个复位信号,具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

`timescale 1ns/10ps

module testbench();

reg clk;
reg rst;

wire led;

initial begin
clk = 0;
rst = 0;

//reset signal
#500 rst = 1;
#500 rst = 0;

#1000000;
$finishe();
end

//generate 100M clock
always begin
#5 clk = ~clk;
end

mcu_top u_mcu(
.clk (clk),
.rst (rst),
.led (led)
);

endmodule

3.2 仿真

在Settings窗口中设置仿真工具和仿真文件,然后运行RTL simulation,结果如下: