ZYNQ:点亮LED灯

FPGA 开发流程

1、需求分析:分析需要实现什么功能
2、系统设计:对系统进行设计,需要哪些模块,实现什么功能,数据流怎么走,带宽、工作频率怎么样
3、硬件选项:根据功能、性能需求选择合适的FPGA芯片
4、绘制系统框图:确定系统内各个子模块的结构层次,梳理对外的输入输出信号和字模块之间的交互信号
5、绘制波形图:工具模块功能结合芯片数据手册,确定模块信号的时序关系,使用绘图软件绘制各个模块的波形图
6、编写RTL代码:严格按照编写各个模块的代码
7、软件仿真:调试RTL代码,出现和绘制相同的仿真波形
8、新建工程:新建FPGA工程,并且添加RTL代码
9、分析和综合:查看报告,进行修改
10、约束输入:在FPAG开发平台对工程引脚进行约束实现
11、设计实现:工程布局和布线,下载文件,上板验证
12、上板验证:上板实际验证调试
在这里插入图片描述

FPGA 工程管理

FPGA 工程内部文件主要分为以下四类:
1、辅助文件目录doc:波形图文件等
2、工程及产生的文件目录prj:
3、代码文件目录rtl:RTL代码文件
4、sim目录:仿真文件
在这里插入图片描述

点亮 LED 灯

功能分析

使用启明星开发板底板上的 PL_KEY0 按键来控制底板上的 PL_LED0 灯亮灭。
按键没有被按下时,PL_LED0灯保持常灭;
当按键 PL_KEY0被按下时,PL_LED0灯被点亮;
当按键PL_KEY0被松开时,PL_LED0 灯被被熄灭。

硬件介绍

实物连接

在这里插入图片描述

电路原理图

在这里插入图片描述
当 ZYNQ PL 端的 IO 输出高电平 1 时,点亮 LED 灯;
当 ZYNQ PL 端的 IO 输出低电平 0 时,LED 灯熄灭。

在这里插入图片描述
PL_KEY0 按键未被按下时为高电平,被按下时为低电平。

系统设计

需要一个按键输入和一个 LED 灯输出,所以一个模块就可以实现“点亮 LED”的功能

模块设计

模块设计主要是想通过图形更加直观的展示出输入与输出之间的关系。

使用 Visio 工具新建一个“点亮 LED 灯.vsdx”文件保存下led/doc目录下
“点亮 LED”实验的模块框图:

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

绘制波形图

使用按键控制 LED 灯的亮灭
按键默认是高电平,
按键被按下是低电平;LED 灯是高电平点亮,低电平熄灭

在这里插入图片描述
真值表:在这里插入图片描述

波形图的信号大致分为三大类,即输入信号,输出信号与中间变量信号。在波形图中我们将输入信号的颜色定义为绿色,输出的信号定义为红色,中间变量信号定义为蓝色。
在这里插入图片描述

编写 RTL 代码

led\rtl目录下,Notepad++工具新建文件
在这里插入图片描述
在这里插入图片描述

module led( input key , //定义了一个一位按键输入信号 keyoutput led //定义了一个一位的输出信号 led
);assign led = ~key; //通过 assign 赋值语句将输入信号 key 的值取反后赋值给输出信号 ledendmodule

Modelsim 手动仿真

编写实验对应的仿真文件(TestBench)

1、 向被测功能模块的输入接口添加激励;
2、 对被测功能模块的顶层接口进行信号例化;
3、 判断被测功能模块的输出是否满足设计预期。

在 led\sim 中新建一个 tb 文件夹,使用Notepad++在 tb 文件夹下面新建一个“tb_led.v”文件
在这里插入图片描述

在 modelsim 中建立 project,选择 File->New->Project

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编译出现错误
在这里插入图片描述查看文件后,发现文件内容有错误,修改后,重新编译,没有错误
在这里插入图片描述
编译完成后,在 ModelSim 菜单栏中找到【Simulate】→【Start Simulation…】菜单并点击
在这里插入图片描述
在这里插入图片描述
用的最多的是 Design、Libraries 和 SDF 这三个标签
Design 标签: 可以选择仿真需要的库,被选中的全部文件名都会出现在 Design Unit(s)区域,Resolution 选项可以选择仿真的时间精度,一般都是设置在默认状态,这时 Modelsim 依照仿真设计文件中指定的最小时间刻度来进行仿真,如果设计文件中没有指定,则按 1ns 来进行仿真。
Libraries 标签:可以设置搜索库。Search Libraries 和 Search Libraries First 的功能基本一致,唯一不
同的是 Search Libraries First 中指定的库会在指定的用户库之前被搜索

在这里插入图片描述
SDF 标签:是 Standard Delay Format(标准延迟格式)的缩写,内部包含了各种延迟信息,也是用于时序仿真
的重要文件。SDF Files 区域用来添加 SDF 文件,可以选择 Add 按钮进行添加,选择 Modify 按钮进行修改,
选择 Delete 按钮删除添加的文件。
Options 区域设置 SDF 文件的 warning 和 error 信息。第一个“Disable SDF warning”是禁用 SDF 警
告,第二个“Reduce SDF errors to warnings”是把所有的 SDF 错误信息变成警告信息。区域 Multi-Source
delay 中可以控制多个目标对同一端口的驱动,如果有多个控制信号同时控制同一个端口或互连,且每个信
号的延迟值不同,可以使用此选项统一延迟。下拉列表中可供选择的有三个选项:latest、min 和 max。latest
选项选择最后的延迟作为统一值

在这里插入图片描述
在 Design 标签页面中选择 work 库中的 tb_led 模块,在
Optimization 一栏中勾选“Enable optimization”

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
鼠标右键单击“u_led”,选择“Add Wave”选项
在这里插入图片描述
在这里插入图片描述

Restart:复位仿真
Run Length:设置仿真时间
Run:运行仿真
ContinueRun:继续仿真
Run -All:一直仿真
Break:中断当前编译或者仿真
Stop:在下一步或者下一时间之前停止仿真。

点击Run -All得到下面波形

在这里插入图片描述

新建工程

打开 Vivado 软件,新建一个工程,通过新建工程向导的方式来创建工程,再新建一个 Verilog 顶层文件,将设计的代码输入到新建的Verilog 顶层文件中,HDL 源代码输入完毕之后,就是对设计文件进行分析与综合了。
在 FPGA 设计中,综合(Synthesis)就是将 RTL 设计转变为由 FPGA 器件中的查找表(LUT)、触发器(FF)等各种底层电路单元所组成的网表,在这个过程中综合器也会对设计进行优化,例如删除多余的逻辑等等。

开始使用 Vivado 软件新建点亮 LED 实验的 FPGA 工程
在这里插入图片描述
点击“Create Project 来创建一个新的工程”。
项目名称命名为“led”,工程路径是led/prj 文件夹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设计输入

每次保存后,Vivado 都会对源文件进行部分语法的检查,如果有语法的错误,Vivado 会给出提示。
在这里插入图片描述

分析与综合

点击“Flow Navigator”窗口中的
“Open Elaborated Design”按钮
在这里插入图片描述

点击“Open Elaborated Design”按钮弹出的提示框直接点击“OK”
在这里插入图片描述

在这里插入图片描述

进行 I/O 引脚分配,在右上角的窗口布局(Layout)选择器中选择“I/O Planing”,

在这里插入图片描述
在这里插入图片描述
IO 分配的配置选项
启明星开发板的底板的原理图“PL_KEY0”与“PL_LED0”
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用快捷键“Ctrl+S”进行保存设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建一个新的约束文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开发板连接完成并打开电源开关后,点击“Hardware”子窗口中的“Auto Connect”按钮
在这里插入图片描述
Vivado 就已经和下载器连接成功
在这里插入图片描述

点击Program Device,点击“Program”按钮下载程序
在这里插入图片描述
程序下载完成后,看到位于底板上的 PL_LED0 灯是常灭状态,此时按下 PL_KEY0 按键,PL_LED0 灯会被点亮,松开按键,LED 灯被熄灭。

下载完比特流后,如果开发板断电,程序会丢失。如果想要程序断电不丢失的话,需
要将程序固化至开发板中,这个需要在嵌入式 Vitis 软件中完成,ZYNQ 芯片无法单独固化比特流文件
(PL 的配置文件)

学习记录,侵权联系删除
来源:正点原子

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

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

相关文章

安防区域保护:无线电干扰设备技术详解

在安防区域保护中,无线电干扰设备技术扮演着重要角色,它主要用于通过发射特定频率的无线电波来干扰无人机或其他无线电设备的通信链路、导航信号或控制信号,以达到削弱、阻断甚至控制这些设备运行的目的。以下是对无线电干扰设备技术的详细解…

宝塔环境下MinDoc的安装教程

安装 本教程只适用于CentOS 7,其它系统教程参考:Github地址。 1、下载MinDoc并解压 访问https://github.com/mindoc-org/mindoc/releases下载最新版本并解压 #创建一个目录 mkdir mindoc && cd mindoc#一般宝塔带wget和unzip,如果…

大数据新视界 --大数据大厂之Cassandra 分布式数据库在大数据中的应用与调优

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Open WebUI部署自己的大模型

相关代码地址见文末 1. 概述 Text Generation WebUI 是一个基于网页的界面,提供使用不同语言模型(如Transformers、Llama、ExLlamav2等)进行文本生成的功能。该软件支持以下主要功能: 模型加载:支持从多种框架加载单个或多个LoRA。LoRA微调:在支持的加载器上进行低秩适…

ArcgisEngine开发中,Ifeatureclass.Addfield 报错0x80040655处理方法

1、ArcgisEngine开发中,Ifeatureclass.Addfield 报错0x80040655。如下图所示。 2、经分析,这是由于字段类型错误,经检查,是由于字段名为中文名,超出shp格式的最大字段长度量,看资料说是5个中文字符&#xf…

关于BSV区块链覆盖网络的常见问题解答(上篇)

​​发表时间:2024年9月20日 在BSV区块链上的覆盖网络服务为寻求可扩展、安全、高效交易处理解决方案的开发者和企业家开辟了新的视野。 作为开创性的曼达拉升级的一部分,覆盖网络服务提供了一个强大的框架,用于管理特定类型的交易和数据访问…

城市应急演习演练三维电子沙盘推演系统

深圳易图讯科技(www.3dgis.top)城市应急演习演练三维电子沙盘推演系统,依托大数据、云计算、虚拟现实等先进技术,集成了高清卫星影像、地形数据、实景三维模型等多元信息,真实模拟城市应急场景。该系统通过三维可视化展示和交互操作&#xff…

Pytorch 学习手册

零 相关资料 官方网址 官方网址下的API搜索网站 一 定义 深度学习框架是用于设计、训练和部署深度学习模型的软件工具包。这些框架提供了一系列预定义的组件,如神经网络层(卷积层、全连接层等)、损失函数、优化器以及数据处理工具&#xf…

Mybatis-Mapper接口方式

目录 配置方式和接口方式的区别 示例:Mapper接口方式实现数据库的CRUD 配置方式和接口方式的区别 Mybatis框架在配置方式的情况下,对数据库的CRUD操作直接通过SqlSession对象来操作,常用的方法有select、insert、update、delete等方法&…

免费送源码:Java+B/S+ssm+MySQL 公众养老服务网上预订系统 计算机毕业设计原创定制

摘 要 本论文主要论述了如何使用JAVA语言开发一个公众养老服务网上预订系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,SSM框架进行开发。在引言中,作者将论述公众养老服务网上预订系统的当前背景以及系统开发…

基于STM32的无人驾驶汽车路径规划与视觉识别系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 摄像头图像采集与处理路径规划算法实现实时视觉障碍物检测电机控制与执行应用场景结论 1. 引言 无人驾驶技术是当前自动化和人工智能领域的热门课题之一,涉及到复杂的感知、…

TLS详解

什么是TLS TLS(Transport Layer Security)传输层安全性协议 ,它的前身是SSL(Secure Sockets Layer)安全套接层,是一个被应用程序用来在网络中安全的通讯协议, 防止电子邮件、网页、消息以及其他协议被篡改或是窃听。是用来替代SSL的&#xf…

基于C#开发的(CS界面)图书管理系统

图书管理系统项目开发说明书 项目简介 项目背景(选择这个项目的原因、前景,面向的用户,优势); 根据温州理工学院需要希望能够充分利用现代科技来提高图书管理的效率,在原有的办公系统基础上进行扩展&…

护眼落地灯到底有没有用?五款好用护眼落地灯分享

护眼落地灯到底有没有用?护眼落地灯既适合日常照明使用,又适合学生以及办公人群使用的一种护眼神器,因此热度一直都很高。但是该行业内的产品也很复杂,其中还有一些劣质不专业的产品掺杂在其中,不但照明效果不佳&#…

UE4_Niagara基础实例—5、骨架网格体表面生成粒子及过滤骨骼位置生成粒子

效果图: 步骤: 1、学习了静态网格体位置生成粒子之后这个就比较简单了,把粒子生成位置更改为SkeletalMeshLocation。 2、小白人的骨骼网格体为: 你会发现骨骼的每一个节点处都有粒子产生。 3、我们还可以修改骨骼采样类型 4、我们…

win自带录屏怎么用?让视频制作更简单!

win自带录屏怎么用?Windows系统内置的录屏功能,以其便捷高效著称,轻松满足多样化需求。无论是快速捕捉会议要点、制作教学视频,还是直播精彩游戏瞬间,都能一键启动,无缝录制。无需额外安装软件,…

【tower-boot 系列】开源RocketMQ和阿里云rockerMq 4.x和5.x集成 (一)

RocketMQ 简单介绍 阿里云rockerMq 4.x和5.x集成 一、云平台创建实例 参考文档: 阿里云api 阿里云 创建实例 二、skd集成思路 公司用的RocketMQ一般是自建开源apache的RocketMQ和上阿里云的RocketMQ,目前阿里云支持4.x和5.x版本 项目集成思路&…

LLM - 使用 RAG (检索增强生成) 多路召回 实现 精准知识问答 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142629289 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 RAG (R…

想要编辑 PDF 文件?使用这 10 种最佳 PDF 编辑工具

您是否遇到过利益干系人要求您对 PDF 文件进行细微更改的情况? 通常我们会这样做! 但是,对你来说,做出要求的改变有多难呢? 好吧,当您没有用于创建 PDF 文件的源文件时,问题就来了。是的&…

求5X5的次小值/次大值

我们知道,求最大值和最小值是比较容易的,就是通过分组判断,然后再次比较即可求出,那么求出次小值/次大值怎么实现呢,本文提供一个设计的思路。 以5x5为例,求出次小值, 第一步,先分…