FPGA学习笔记-1、FPGA开发流程

1、FPGA开发流程

开发流程

1、设计定义(QuartusⅡ13.0.1)
2、设计输入
3、分析与综合
4、功能仿真(modelsim-altera)
5、布局布线
6、时序仿真(modelsim-altera)
7、IO口分配以及配置文件的生成(QuartusⅡ13.0.1)
8、配置(烧写FPGA)
9、在线调试(。。。)

例程:通过按键控制LED(低电平)————二选一多路器

1、设计定义:

两个IO口(a,b),可以是高电平,也可以是低电平
输入按键按下时,LED灯与a端口状态保持一致
输入按键释放时,LED灯与b端口状态保持一致

2、设计输入:

//Verilog语言中模块的开头以来表明设计模块的开始,后紧跟模块名,之后是端口列表,模块有哪些端口包括输入输出


module led_test(a, b, key_in, led_out);//此模块作为顶层模块,顾模块名与工程名一致

//定义端口类型input output
	input a;//输入端口A     以input开头,表明这是一个输入端口
	input b;//输入端口B     可以写成input a,b;但不方便查看和注释,所以建议写分开写
	
	input key_in;//按键输入,实现输入通道的选择
	
	output led_out ;//led 控制端口

	//按键按下,为低电平,当key_in == 0;led_ out == a;

//逻辑设计,assign连续赋值语句,设计出来一个组合逻辑,assign后接待赋值的信号。”?“表示条件,满足则选择a,否则就选对立面	
	assign led_out = (key_in == 0)? a : b;


endmodule//Verilog语言中,模块以endmodule结尾

写完后点击三角形旁边的按键(star analysis &synthesis)开始检查有无语法错误

3、分析与综合:

//testbench是为了验证模块功能而搭建的一个平台
//写代码是养成好的习惯,将其保存在testbnech文件夹下



`timescale 1ns/1ps//定义一个仿真精度,前面为仿真步进,后面为仿真进度   
//'`'为Esc下按键,并非Enter旁的', 错误会使得程序出错。  
 //1为数字1,并非i

module led_test_tb;//_tb为testbench文件,仿真模块为led_test,方便识别而已
//此时桌子搭建完毕

//激励信号定义,对应连接到待测试模块的输入端口
	reg signal_a;
	reg signal_b;
	reg signal_c;
	
//待测试信号定义,对应连接到待测试模块的输出端口
	wire led;//定义一个信号来观测输出,将这个信号记为led,并于led_out连接起来,后面只要观察led就知道led_out的情况
	

	
//例化待测试模块

	
//实验平台上用的是led_test0这个编号,一个设计可以进行多次例化
//把模块的每一个端口用回车隔开后前面加上.后面加上(),并在其中写上信号激励源,一一映射起来
	led_test led_test0(
		.a(signal_a),
		.b(signal_b),
		.key_in(signal_c),
		.led_out(led)
	);  
	
//产生激励信号
	initial begin
		signal_a = 0;signal_b = 0;signal_c = 0;//仿真一开始将三个信号源置零
		#100;//延时100*1ns  //1ns为第一句定义的仿真步进
		signal_a = 0;signal_b = 0;signal_c = 1;
		#100;
		signal_a = 0;signal_b = 1;signal_c = 0;
		#100;
		signal_a = 0;signal_b = 1;signal_c = 1;
		#100;
		signal_a = 1;signal_b = 0;signal_c = 0;
		#100;
		signal_a = 1;signal_b = 0;signal_c = 1;
		#100;
		signal_a = 1;signal_b = 1;signal_c = 0;
		#100;
		signal_a = 1;signal_b = 1;signal_c = 1;
		#200;
		$stop;//系统函数,将仿真停止下来,如果不写,会使得仿真一直运行
	end
	
endmodule

4、功能仿真

  • 设置脚本

    • 使用modelsim-altera进行仿真,需要将待测试模块和testbench测试平台告诉modelsim,所以要设置我们的脚本
      • Assignment —> Settings —> Simulation
  • 仿真:Tools —> Run Timulation Tool —> RTL Simulation

    • 可能报错:无法加载modelsim软件(指定路径无法找到软件)
    • 解决方案:设置路径
      • Tools —> Options —> General —> EDA Tool Option —> 设置路径
  • 设置成功后再次点击运行即可跳转的modelsim软件进行仿真,观察仿真波形。此时的波形为理想状态下的。

功能仿真完成没有问题可以进行布局布线操作。

5、布局布线

  • 布局布线为工具自动完成的,直接点击全编译按钮即可
    • 全编译按钮(三角形)(Start Compilation)
    • 或者Processing —> Start Compilation
  • 编译的时间会很长
  • 有警告暂时不用担心,后期会讲

编译完成后可以进行下一步操作,后仿真(门级仿真,时序仿真)

6、时序仿真

  • Tools —> Run Timulation Tool —> Gate Level Simulation
    • 弹出的对话框要求选择仿真环境,选择速度,电压,温度

部分地方可能与前仿真不一样,此时可以利用modelsim工具来进行分析

  • 点击左下角的锁,会固定当前黄线的位置,再点击加号,会新增一条黄线,利用这两条黄线可以进行测量

7、IO分配

  • 将端口和板子的管脚一一对应起来
    • Assignments —> Pin Planner(或快捷按键)
  • 参照板子的引脚图输入即可,分配完成关闭即可。
    • 分配完成后还需要一次全编译才可生效,点击全编译按钮(三角形)(Start Compilation)

8、配置(烧写FPGA)

  • 专用的下载按钮(Programmer)右上角
  • 配置文件 .sof
    • 自动添加,也可以手动
    • 位置:prj —> output_files —> xxx.sof
  • 板子连接后才可以下载
  • 下载界面没有端口。
  • 解决方法:DE2 USB-Blaster 驱动安装
    DE2 USB-Blaster 驱动安装

你可能感兴趣的:(FPGA学习笔记)