小梅哥FPGA学习笔记——开发流程及仿真示例

FPGA整体设计开发流程

FPGA学习入门小白,学习FPGA开始由正点原子入门,开始时候学习方法和刚开始学习单片机的方法类似,学习了简单的流水灯、数码管的简单功能,后来发现还是有些区别的,对自己未来规划的重点方向是FPGA。感觉自己对FPGA的开发流程,仿真工具掌握的不是很好,师兄推荐了小梅哥的学习视频,虽然手头的板子是正点原子的,但是型号一样,就直接再用小梅哥的视频给我回炉重造一遍吧~

1、 设计定义

设计定义的目的是先明确设计需要完成的目标及功能,然后提出合理的设计要求

2、 设计输入(Quartus II)

设计输入在Quartus ii软件上完成,使用verilog语言或调用IP核的方式,完成设计。也就是编写程序的过程。

3、 分析和综合(Quartus II)

主要用来检查语法和逻辑错误编译单个的verilog文件(类似于程序编译)

4、 功能仿真(modelsim-altera/modelsim)

前仿真,不考虑实际延迟,只考虑逻辑情况,逻辑之间零延迟。

5、 布局布线(Quartus II)

软件对设计代码布局到对应芯片并完成连线,生成带有逻辑延迟的仿真模型。(类似于全编译的过程,编译整个工程)

6、 时序仿真(modelsim-altera/modelsim)

后仿真,当芯片中进行布局布线后,芯片内部存在延迟。如果传输时间太长,会导致时序设计失败。
修改方式:
1、修改设计输入,减少组合逻辑
2、使用时序约束

7、 时序约束

通过添加时序约束的按时可以防止由于芯片内部的线延迟等原因导致时序设计失败。

8、 IO分配以及配置文件的生成

引脚分配,由FPGA连接到实际电路,具体引脚应该如何定义应该看板子内部是如何规定与外设之间的连线的。

9、 配置(烧写FPGA)

生成和执行的.qpf文件,类似于单片机中的hex文件

10、在线调试(SignalTap II、信号探针、内存查看等)

在线仿真,在工作的状态下观测输出结果是否正确。与单片机的在线仿真调试类似。

仿真示例

举个例子来实现上面的整个步骤,重点在于怎么实现功能仿真和时序仿真的过程。
设计定义:一共用三个输入、一个输出
当输入1时,a与led输出状态一致
当输入0时,b与led输出状态一致

Testbench文件编写及仿真

1、 编写testbench的verilog文件

`timescale 1ns/1ps //1ps:仿真精度 1ns:仿真步进
//#100.001  //延时100.001ns
module led_test_tb;
//激励信号定义,对应连接到待测试模块输入端口
	reg signal_a;
	reg signal_b;
	reg signal_c;
//检测信号定义,对应连接到待测试模块输出端口	
	wire led;
	
	//一个模块设计好后,可以多次使用
	//led_test led_test0、led_test led_test1
	//待测试模块例化
	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;
	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

2、 在EDA工具中添加仿真工具
首先将仿真工具的路径添加到Quartus中
在这里插入图片描述
添加对应仿真工具的仿真路径
在这里插入图片描述
这里因为课题室电脑和笔记本不太一样,笔记本装的是Modelsim,笔记本是modelsim-altera,所以报错了,注意选择对应的仿真工具。
无法找到modelsim-altera路径
在工程中加载自己编写的testbench文件
在这里插入图片描述
在这里插入图片描述

执行前仿真

点击
在这里插入图片描述在这里插入图片描述
遇到问题
之前在电脑上使用modelsim进行仿真,后来使用modelsim-altera进行仿真
在这里插入图片描述
解决方法
删除之前编译产生的simulation中的内容,重新编译

在这里插入图片描述
前仿真结果

在这里插入图片描述
在这里插入图片描述

执行后仿真

点击在这里插入图片描述在这里插入图片描述
仿真结果
在这里插入图片描述
发现有不希望产生的脉冲出现,和逻辑延迟产生

01 试看小梅哥fpga设计思想与验证方法视频:http://bbs.elecfans.com/jishu_484523_1_1.html 02 芯航线FPGA开发平台设计初衷:http://bbs.elecfans.com/jishu_514523_1_1.html 03 芯航线FPGA学习平台介绍:http://bbs.elecfans.com/jishu_514526_1_1.html 04 芯航线FPGA学习平台焊接记录:http://bbs.elecfans.com/jishu_514914_1_1.html 05 芯航线FPGA学习平台系统调试:http://bbs.elecfans.com/jishu_515169_1_1.html 06【连载视频教程(一)】科学的开发流程:http://bbs.elecfans.com/jishu_515340_1_1.html 07【连载视频教程(二)】3-8译码器设计验证:http://bbs.elecfans.com/jishu_515468_1_1.html 08【连载视频教程(三)】二进制计数器设计验证:http://bbs.elecfans.com/jishu_515476_1_1.html 09【连载视频教程(四)】高性能计数器IP核使用:http://bbs.elecfans.com/jishu_515714_1_1.html 10【连载视频教程(五)】BCD码计数器设计验证:http://bbs.elecfans.com/jishu_515893_1_1.html 11【连载视频教程(六)】例解阻塞赋值与非阻塞赋值:http://bbs.elecfans.com/jishu_516094_1_1.html 12【连载视频教程(七)】例说状态机:http://bbs.elecfans.com/jishu_516249_1_1.html 13【连载视频教程(八)】基于状态机的独立按键消抖:http://bbs.elecfans.com/jishu_516791_1_1.html 14【连载视频教程(九)】独立按键控制LED与亚稳态问题引入:http://bbs.elecfans.com/jishu_516795_1_1.html 15【连载视频教程(十)】数码管动态扫描设计与实现:http://bbs.elecfans.com/jishu_516979_1_1.html 16【连载视频教程(十一)】UART串口发送模块设计与验证:http://bbs.elecfans.com/jishu_516984_1_1.html 17【连载视频教程(十二)】UART串口接收模块设计与验证:http://bbs.elecfans.com/jishu_518308_1_1.html 18【芯航线FPGA学习平台众筹进度帖】芯航线FPGA开发板入手测试说明:http://bbs.elecfans.com/jishu_518301_1_1.html 19【芯航线FPGA学习平台众筹进度帖】芯航线FPGA学习套件配置文件固化教程 http://bbs.elecfans.com/jishu_518816_1_1.html 20【芯航线FPGA学习平台众筹进度帖】芯航线FPGA学习套件众筹回报已发放完毕,特公布运单号 http://bbs.elecfans.com/jishu_518819_1_1.html 21【芯航线FPGA学习平台众筹进度帖】芯航线FPGA学习套件众筹总结暨抽奖结果 http://bbs.elecfans.com/jishu_520454_1_1.html 22【芯航线FPGA学习平台众筹进度帖】【有奖活动】芯航线FPGA学习平台有奖活动第一季——看教程,秀笔记,赢好礼 http://bbs.elecfans.com/jishu_520463_1_1.html 23【连载视频教程(十三)】嵌入式块RAM应用之双口RAM:http://bbs.elecfans.com/jishu_520914_1_1.html 24【连载视频教程(十四)】搭建串口收发与存取双口RAM简易应用系统: http://bbs.elecfans.com/jishu_520915_1_1.html 25【连载视频教程(十五)】ROM的搭建与Signaltap II 工具使用:http://bbs.elecfans.com/jishu_522774_1_1.html 26【连载视频教程(十六)】FIFO介绍与时序验证:http://bbs.elecfans.com/jishu_522778_1_1.html 27【连载视频教程(十七)】使用PLL进行设计+Verilog参数化设计介绍: http://bbs.elecfans.com/jishu_524442_1_1.html 28【芯航线FPGA学习平台众筹进度帖】芯航线FPGA学习套件下载器驱动安装说明 http://bbs.elecfans.com/jishu_524793_1_1.html 29【芯航线FPGA学习平台众筹进度帖】Verilog语法基础讲解之参数化设计: http://bbs.elecfans.com/jishu_528770_1_1.html 30【连载视频教程(十八)】基于线性序列机设计思想的串行DAC(TLC5620)驱动: http://bbs.elecfans.com/jishu_533944_1_1.html 31【连载视频教程(十九)】基于线性序列机设计思想的串行ADC驱动: http://bbs.elecfans.com/jishu_537056_1_1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泡泡糖呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值