FPGA/Verilog HDL/AC620零基础入门学习——第一个项目按键控制LED

介绍

最近要考试了,所以我赶紧补习FPGA,我们用的是小梅哥的AC620开发板,软件是Quartus。推荐看这个视频教程:零基础轻松学习FPGA,小梅哥FPGA设计思想与验证方法视频教程

设计步骤

设计定义

用按键控制LED灯的亮灭就是一个二选一多路器,两个IO,a、b,可以是高电平,也可以是低电平。
输入按键按下时,
LED与a端口状态保持一致,
输入按键释放时,
LED与b端口状态保持一致。

创建工程

1.创建工程
在这里插入图片描述
2.添加文件
没有文件就不用添加了
在这里插入图片描述
3.选择器件型号
AC620的型号如下
在这里插入图片描述
4.设置仿真软件
在这里插入图片描述
5.新建Verilog文件
在这里插入图片描述
6.点此处新建
在这里插入图片描述

设计输入

module led_TEST(a,b,key_in,led_out);

module要和工程名称一致
a,b两个端口
key_in按键输入
led_out是led的输出

项目完整代码

module led_TEST(a,b,key_in,led_out);

		input a;//输入端口a
		input b;//输入端口b
		
		input key_in;//按键输入,实现输入通道的选择
		
		output led_out;//led控制端口
		
		
		//当key_in == 0: led_out=a;按键按下是a端口
		
		assign led_out = (key_in==0)? a:b;//假如key_in==0满足,led_out 就等于a,假如key_in==0不满足,led_out 就等于b
		
endmodule


开始验证
在这里插入图片描述
验证完成
在这里插入图片描述

进行testbench验证

在这里插入图片描述
再创建一个Verilog HDL文件作为testbench

`timescale 1ns/1ps

这里是仿真的量度和精度,1ns指以1ns为单位,1ps指可以精确到ps

testbench完整代码

`timescale 1ns/1ps

module led_test_tb;

//激励信号定义,对应连接到待测试模块的输入端口
	reg signal_a;
	reg signal_b;
	reg signal_c;

//	待检测信号的定义,对应到待测试模块的输出端口
	wire led;
	
	
//把他实例化进行连接,括号里面就是要连接的signal
	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;//延时100ns
			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

写完之后再进行验证

设置脚本

Assignments->Setting->Simulation
在这里插入图片描述
点最底下的Compile test bench

在这里插入图片描述
添加你的testbench
在这里插入图片描述
添加完成之后,就可以开始仿真了。

开始仿真

在这里插入图片描述
如果报错的话,要去设置一下仿真软件的路径:
Tools->Options
这里是你的Modelsim的路径,Modelsim-Altera也可以,选择你们安装的
在这里插入图片描述
再点击仿真
在这里插入图片描述
就出现了仿真波形
signal_c在低电平和a保持一致,signal_c高电平和b一致

在这里插入图片描述

布局布线

在功能仿真完成后,说明功能没有问题,那我们就可以全编译了
在这里插入图片描述
编译没问题后,可以开始门级仿真

后仿真

在这里插入图片描述
选择其在极限情况下的仿真
在这里插入图片描述
他有个很小的0.45ns的脉冲
在这里插入图片描述

引脚分配

Assignments->Pin Planner
根据板子的引脚表,我们给a和b分配的是GPIO
key_in用的M1
led_out用的L10
这个去查AC620的表就可以得到
在这里插入图片描述

下载程序

点击Programmer
在这里插入图片描述
右上角是Successful就成功了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sol-itude

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

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

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

打赏作者

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

抵扣说明:

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

余额充值