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

news2024/12/23 4:37:44

介绍

最近要考试了,所以我赶紧补习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就成功了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度

目录 一、学习率调度二、权重衰减和正则化三、梯度累积和分布式训练1、梯度累积2、分布式训练 四、自适应梯度裁剪 大家好,我是哪吒。 上一篇介绍了YOLOv7如何提高目标检测的速度和精度,基于模型结构提高目标检测速度,本篇介绍一下基于优化算…

xcode历史版本下载

一、背景 较早之前做过一个项目,当时使用swift 3.x开发。 项目结束后就没再有新需求与更新。 但最近呢需要对项目的某些功能进行调整,项目又重新被拾了起来。 我们知道现在的swift 版本已经到了 5.x, 相应的语法上较 3.x版本也有了不小的变化…

从2-3-4树到红黑树原理分析以及C++实现红黑树建树

总结规律: 1、2-3-4树:新增元素2节点合并(节点中只有1个元素)3节点(节点中有2个元素) 红黑树:新增一个红色节点黑色父亲节点上黑下红(2节点---------------不要调整&#…

上班族如何安排时间提高工作效率?

对于上班族来说,合理安排时间可以兼顾生活和工作,不仅能够减少加班次数,还可以提高工作效率,减少工作中的负面情绪。但是有不少小伙伴表示,自己不知道如何安排时间从而提高工作效率,这应该怎么办呢&#xf…

张勇:阿里云是一家云计算产品公司,要坚定走向“产品被集成”

4月26日,在2023阿里云合作伙伴大会上,阿里巴巴董事会主席兼CEO、阿里云智能CEO张勇表示,阿里云的核心定位是一家云计算产品公司,生态是阿里云的根基。让被集成说到做到的核心,是要坚定走向“产品被集成”。 张勇表示&a…

小米13 Ultra:携光前行,追求每一束光的精确还原

“光,是影像的原点”,一切色彩、影调都在于光。我们目之所及的大千世界,皆被光与影一笔一划细细勾勒,为“视”界晕染上或鲜明、或复古、或反差、或梦幻的色调。我们用“光”去描绘、定义“影像”,让一切平凡的事物&…

Notion AI 胜于 ChatGPT ?

去年(2022年)12 月初,在社区中 OpenAI 的 ChatGPT 刚出来就火了一把,当时一度因为访问量太大导致崩溃宕机;最近(2023 年1 月底) ChatGPT 又火了,资本市场新增 ChatGPT 概念&#xff…

入局生成式AI,看好亚马逊(AMZN)中期表现

来源; 猛兽财经 作者:猛兽财经 猛兽财经获悉,由于近期亚马逊(AMZN)宣布发布多项生成式AI以及AIGC相关产品,入局全球大模型竞赛当中。中信证券发布研报看好入局生成式AI。中信证券在研报中称,亚马逊作为北美…

【Git】拉取代码/提交代码

1.从将本地代码放入远程仓库 (如果有分支的情况) [git checkout xx切换分支后 git add . 将本地所有改动文件新增 commit之后 git push(将代码全部提交)] 分支操作 #查看分支 git branch #创建分支 git branch test #切换分支 git checkout test #修改代码 #提交代码git ad…

DPDK和RDMA的区别

网络的发展好像在各方面都是滞后于计算和存储,时延方面也不例外,网络传输时延高,逐渐成为了数据中心高性能的瓶颈。因为传统两个节点间传输数据的网络路径上有大量的内存拷贝,导致网络传输效率低下,网络数据包的收发处…

MySQL——索引

目录 一、索引 1.1 索引的概念 1.2 索引的运用 1.2.1 索引的创建 1.2.2 查看表的索引 ​1.2.3 创建索引 1.2.4 删除索引 1.2.5 总结 二、索引底层的数据结构 B 树的特点 一、索引 1.1 索引的概念 当我们是使用查询语句对表中的数据进行条件查询的时候,M…

Python小姿势 - Python爬取数据的库——Scrapy

Python爬取数据的库——Scrapy 一、爬虫的基本原理 爬虫的基本原理就是模拟人的行为,使用指定的工具和方法访问网站,然后把网站上的内容抓取到本地来。 爬虫的基本步骤: 1、获取URL地址: 2、发送请求获取网页源码; 3、…

NAT网络地址转换

1.前言 随着网络设备的数量不断增长,对IPv4地址的需求也不断增加,导致可用IPv4地址空间逐渐耗尽。解决IPv4地址枯竭问题的权宜之计是分配可重复使用的各类私网地址段给企业内部或家庭使用。但是,私有地址不能在公网中路由,即私网…

数据结构,Map和Set的使用方法

在数据结构中我们经常会使用到 Map 和 Set ,Map 和 Set 到底是什么,它怎样去使用呢?因此博主整理出 Map 和 Set 这两个接口的介绍与使用方法。 目录 1. 啥是Map和Set? 1.1 Map和Set的模型 2. Map的使用 2.1Map的说明 2.2 Java中Map常用…

【C++】列表初始化声明范围forSTL容器新变化

文章目录 什么是C11列表初始化**C98中{}的初始化**内置类型的列表初始化 关于initializer_list使用场景: 声明auto-变量类型推导decltype类型推导nullptr 范围forSTL的新变化新容器:容器中的一些新方法 什么是C11 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C…

Java 输出机制 数据类型

目录 一、输出机制 1.print和println的差别 2.可接收不同类型参数 3.输出函数中 符号的使用 二、Java 数据类型 1.整型类型 2.浮点类型 3.字符类型 三、基本数据类型转换 1.自动类型转换 2.强制类型转换 3.练习题 四、基本数据类型和String类型的转换 1.基本类…

【LeetCode】 309.最佳买卖股票时机含冷冻期

309.最佳买卖股票时机含冷冻期(中等) 思路 状态定义 一、很容易想到四种状态: a.今天买入;b.今天卖出;c.昨天卖出,今天处于冷冻期,无法进行操作;d.今天不操作,处于持有…

SD卡变成RAW格式怎么办?SD卡RAW格式的解决办法

使用SD卡的小伙伴有没有遇到这种情况,SD卡无法访问提示格式化,查看SD卡的属性发现文件系统类型变成RAW格式,而非之前的NTFS或FAT32格式。那么当SD卡变成raw格式怎么办?如果里面有重要数据怎么办?SD卡RAW格式怎么恢复数…

【Java】什么是SOA架构?与微服务有什么关系?

文章目录 服务化架构微服务架构 我的一个微服务项目,有兴趣可以一起做 服务化架构 我们知道,早期的项目,我们都是把前后端的代码放在同一个项目中,然后直接打包运行这个项目,这种项目我们称之为单体项目,比…

m4a怎么转换成mp3的4种方法值得收藏

m4a怎么转换成mp3?首先我们得了解m4a是什么格式。m4a是MPEG-4音频标准的文件扩展名,它是一种音频格式,由苹果公司推出。该格式的音质没有损失,且不受版权保护,因此可以进行自由编辑和转发。该格式的兼容性相对较弱&…