一、建立工程

  1、打开quartus 18.0的新建工程向导

    

fpga深度学习项目 fpga 课程_fpga深度学习项目

   2、点击下一步

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_02

  3、选择工程位置,输入工程名

    

fpga深度学习项目 fpga 课程_引脚_03

   4、点击下一步

     

fpga深度学习项目 fpga 课程_Verilog_04

  5、点击下一步

     

fpga深度学习项目 fpga 课程_Verilog_05

   6、选择芯片(EP4CE6E22C8),他属于Cyclone IV E系列,封装QFP,引脚数量144

    

fpga深度学习项目 fpga 课程_进度条_06

   7、选择仿真工具ModelSim-Altera,和工程的HDL语言Verilog HDL

     

fpga深度学习项目 fpga 课程_引脚_07

   8、点击Finish完成

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_08

   9、现在工程里没有任何文件如下

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_09

  10、点击file的new

     

fpga深度学习项目 fpga 课程_引脚_10

   11、在弹出的对话框,选择verilog HDL

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_11

   12、刚创建的文件还没有保存,首先进行保存

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_12

   13、另存为and_gate2_1.v 并保存在rtl文件夹下面

     

fpga深度学习项目 fpga 课程_引脚_13

   14、编写一个2输入与门的verilog代码,如下

module and_gate2_1(
	input		wire 		a,
	input		wire		b,
	
	output	wire		y

);

	assign y = a && b;

endmodule

  15、点击左侧Complie Desing->Analysis&Synthesis的分析综合选项,对刚写的Verilog代码进行分析综合

    如果无误,会提示0 error,中间会提示该代码使用了1个逻辑单元、3个引脚、和FPGA型号EP4CE22E22C8

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_14

   16、点击左侧Complie Desing->Analysis&Synthesis->Netlist Viewers->RTL Viewer选项查看生成的寄存器传输级示意图(从图片可以看出是2输入与门)

    

fpga深度学习项目 fpga 课程_进度条_15

   17、点击左侧Complie Desing->Fitter(Place & Route)的布局布线选项,无误也会提示0 error

     

fpga深度学习项目 fpga 课程_引脚_16

   18、点击左侧Complie Desing->Fitter(Place & Route)->Chip Planner的芯片规划器选项

     可以按键有一块区域是蓝色的

    

fpga深度学习项目 fpga 课程_引脚_17

   19、双击蓝色区域里面的蓝色小区域

     

fpga深度学习项目 fpga 课程_进度条_18

   20、双击蓝色区域后,会显示FPGA内部使用的逻辑资源

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_19

   21、编写仿真文件,创建and_gate2_1_tb.v保存在msim文件夹下面,并编写代码

`timescale      1ns/1ps

module	and_gate2_1_tb();

	reg	a;
	reg	b;
	wire	y;

	and_gate2_1 and_gate2_1_inst(
	.a		(a),	
	.b		(b),
	
	.y		(y)
	);
	
	initial begin
		a = 0;
		b = 0;
		# 20;
		a = 0;
		b = 1;
		# 20;
		a = 1;
		b = 0;
		# 20;
		a = 1;
		b = 1;
		# 20;
	end

endmodule

  22、设置仿真文件

     

fpga深度学习项目 fpga 课程_fpga深度学习项目_20

   23、按照下图1-9的步骤设置使用的仿真脚本,仿真脚本就是我们写的and_gate2_1_tb.v文件

fpga深度学习项目 fpga 课程_Verilog_21

     24、按照步骤15再次进行分析综合

    25、进行仿真按照下图打开modsim仿真界面

       

fpga深度学习项目 fpga 课程_Verilog_22

     26、打开的仿真波形界面如下

       

fpga深度学习项目 fpga 课程_引脚_23

    27、单击全局缩放按钮,对波形缩小在当前屏幕范围内,观察波形

      输入 0 0 ->0    0 1 ->0   1 0->0   1 1->1,可以得出结论设计的2输入与门仿真正确

       

fpga深度学习项目 fpga 课程_引脚_24

 

     28、分配引脚,当我们设计的逻辑经过仿真没有问题,就可以分配引脚下板验证

     28.1、点击工程文件左侧Complie Desing->Analysis&Synthesis->I/O Assignment Analysis->Pin Planner的引脚分配界面

         

fpga深度学习项目 fpga 课程_引脚_25

     28.2  我们用2 个按键模拟与门的输入信号,用1个led模拟 与门的输出信号,查看原理图得知 key0(pin91)   key1(pin90)    led0(pin73)

      在location位置双击,输入90回车,依次类推

       

fpga深度学习项目 fpga 课程_Verilog_26

    29、分配完成后再次执行步骤15

    30、双击Assembler生成下载文件

      

fpga深度学习项目 fpga 课程_fpga深度学习项目_27

     31、打开程序烧写工具

       

fpga深度学习项目 fpga 课程_引脚_28

     31.1、打开烧写工具后,先检查烧写器能否正常识别,如果不能识别,需要检查硬件和驱动

       

fpga深度学习项目 fpga 课程_fpga深度学习项目_29

     31.2、添加烧写文件,单击Add file在弹出的对话框中找到qpri->output files->and_gate2_1.sof文件

       

fpga深度学习项目 fpga 课程_进度条_30

     31.3、单击start开始程序下载,当进度条显示100%表示下载成功

       

fpga深度学习项目 fpga 课程_进度条_31

     31.4、硬件验证,通过按键测试输入信号和led灯与设计一致

    32、程序固化、FPGA是基于SRAM设计的,所以程序掉电丢失,需要将程序烧写进flash里

    33、首先需要生成可烧写进flash的文件,quartus 是生成.jic文件

    34、打开菜单的转换文件

       

fpga深度学习项目 fpga 课程_进度条_32

 

     35、选择输出的类型为.jic,在configuration device选择EPCQ16(代表16Mbit的容量),file name是输出的文件名,改成与工程名一致

       

fpga深度学习项目 fpga 课程_引脚_33

 

     36、选择cpu,EP4CE6,按照下图所示

        

fpga深度学习项目 fpga 课程_引脚_34

 

     37、添加sof文件

       

fpga深度学习项目 fpga 课程_进度条_35

 

     38、生成and_gate2_1.jic文件

       

fpga深度学习项目 fpga 课程_进度条_36

 

       

fpga深度学习项目 fpga 课程_fpga深度学习项目_37

 

     39、添加and_gate2_1.jic到烧写工具

      

fpga深度学习项目 fpga 课程_进度条_38

 

   40、选中配置,再点击start,等到进度条100%即固化成功

      

fpga深度学习项目 fpga 课程_fpga深度学习项目_39