用流水灯来演示一下如何新建 FPGA工程。
首先新建存放项目的文件夹led
在led文件夹中新建3个文件夹par、rtl、sim。
par文件夹用于存放工程文件,rtl存放源代码,sim存放仿真文件。然后打开Quartus II 软件。
打开Quartus II后,界面上有两个选项,一个新建项目向导,一个打开工程。
由于还没有工程文件,所以这里要选择新建工程向导。
下来直接点下一步。
这里设置工程路径,工程名。
点第一个选项后面的显示3个点的按钮,然后文件路径选择到刚才新建的led文件夹中的par文件夹。然后点选择文件夹按钮。
然后在第二项文件名下输入led,第三个选项下面会自动出现led。然后点next按钮。
这个界面是添加已经存在的文件,由于还未编写文件,所以这里直接点Next按钮,跳过选择。
左上角设备家族中选择 Cyclone IV E系列,右边的封装选 FPGA,引脚数选则256,速度等级选择8.底下的芯片型号选择EP4CE10F17C8。
这里要根据自己使用的芯片型号去选择,本示例中使用的是EP4CE10F17C8。设置好之后点Next按钮。
这个界面是设置仿真软件,如果不使用仿真软件的话,直接点Next按钮进行。本项目中需要使用仿真软件,仿真工具选择Modelsim,语言格式选择 Verilog HDL,然后点Next按钮。
这时候会跳转到软件主界面,说明工程已经新建完毕了。
这时候在led文件夹下par文件夹里面就会多出来几个文件,这个就是新建的工程文件。
rtl文件夹和sim文件夹里面此时依然是空的。
下来要给工程里面新建文件
选择 File ---- new,新建工程文件。
在打开的新建文件中选择Verilog HDL File文件,然后点OK按钮。
这时候会新建一个Verilog1.v的文件,在这个文件中输入代码。
module led(
input sys_clk, //系统时钟
input sys_rst_n, //系统复位,低电平有效
output reg [3:0] led //4个LED
);
// reg define
reg [23:0] counter;
//计数器对系统时钟计数 计时0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
counter <= 24'd0;
else if(counter < 24'd10)
counter <= counter + 1'b1;
else
counter <= 24'd0;
end
//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
always @(posedge sys_clk or negedge sys_rst_n) begin
if(!sys_rst_n)
led <= 4'b0001; //always中必须用寄存器类型,不能用wire类型
else if(counter == 24'd10)
led[3:0] <= {led[2:0],led[3]}; //计数器为0时,将最高位移动到最低位
else
led <= led;
end
endmodule
代码添加完成之后点保存按钮,将文件保存再led文件下的rtl文件夹中,保存的文件名为led。
保存成功后,软件界面中文件名就会自动变为led.v
然后点工具栏中的开始编译按钮,编译工程。
编译完成后,左上角task窗口中就会全部显示绿色对号,同时最下方的信息显示框也会显示代码的错误和警告数量。
代码编译没有错误后,就要对代码中的输入输出口分配引脚。
点击工具栏中的Pin Planner按钮。
打开引脚分配界面
在Location位置直接输入引脚号,led[3]对应的是F9口,就直接在Location位置输入f9,输入完后按回车键。
软件会自动选择PIN_F9选项,其余引脚按照此方法依次输入。
输入完成后,就可以直接关闭界面了。
这样一个完整的工程就建立完成了。
此时par和rtl文件夹里面都有相应的文件,sim文件夹下此时还是空的。因为还未编写仿真文件。