ZYNQ AC7020C的“点LED”实验

一、创建 Vivado 工程
1、启动 Vivado
2、在 Vivado 开发环境里点击“Create New Project”,创建一个新的工程
在这里插入图片描述
3、弹出一个建立新工程的向导,点击“Next”
在这里插入图片描述
4、在弹出的对话框中输入工程名和工程存放的目录。需要注意工程路径“Project location”不能有中文、空格,路径名称也不能太长。此处工程名取为project_1led。
在这里插入图片描述
5、在工程类型中选择“RTL Project”
在这里插入图片描述
6、目标语言“Target language”选择“Verilog”,虽然选择 Verilog,但 VHDL 也可以使用,支持多语言混合编程。
在这里插入图片描述
7、点击“Next”,不添加任何文件
在这里插入图片描述
8、在“Default Part”选项中,器件家族“Family”选择“Zynq-7000”,封装类型“Package”选择“clg400”,减少我们选择范围。AC7010 在下拉列表中选择“xc7z010clg400-1”,AC7020在下拉列表中选择“xc7z020clg400-2”,“-2”表示速率等级,数字越大,性能越好,速率高的芯片向下兼容速率低的芯片。
在这里插入图片描述
9、点击“Finish”就可以完成以后名为“led”工程的创建。
在这里插入图片描述
二、创建Verilog HDL 文件点亮 LED
1、点击 Project Manager 下的 Add Sources 图标(快捷键 Alt+A)
在这里插入图片描述
2、选择添加或创建设计源文件“Add or create design sources”,点击“Next”
在这里插入图片描述
3、选择创建文件“Create File”
在这里插入图片描述
4、文件名“File name”设置为“led”,点击“OK”

5、点击“Finish”,完成“led.v”文件添加
在这里插入图片描述
6、在弹出的模块定义“Define Module”,中可以指定“led.v”文件的模块名称“Module name”,这里默认不变为“led”,还可以指定一些端口,此处暂时不指定,点击“OK”。
在这里插入图片描述
7、在弹出的对话框中选择“Yes”
在这里插入图片描述
8、双击“led.v”可以打开文件,然后编辑
在这里插入图片描述
9、编写“led.v”,这里定义了一个 32 位的寄存器 timer, 用于循环计数 0~49999999(1 秒钟), 计数到 49999999(1 秒)的时候, 寄存器 timer 变为 0,并翻转四个 LED。这样原来 LED 是灭的话,就会点亮,如果原来 LED 为亮的话,就会熄灭。代码如下:

`timescale 1ns / 1ps
module led(
input sys_clk, output reg led);reg[31:0] timer_cnt;always@(posedge sys_clk)beginif(timer_cnt >= 32'd49_999_999)beginled <= ~led;timer_cnt <= 32'd0;endelsebeginled <= led;timer_cnt <= timer_cnt + 32'd1;endend
endmodule

10、编写好代码后保存,点击菜单“File -> Save All Files”
在这里插入图片描述
三、添加约束管脚
Vivado 使用的约束文件格式为 xdc 文件,xdc 文件里主要是完成管脚的约束,时钟的约束, 以及组的约束。这里我们需要对 led.v 程序中的输入输出端口分配到 FPGA 的真实管脚上。
1、点击“Open Elaborated Design”
在这里插入图片描述
2、点击OK
在这里插入图片描述
3、在菜单中选择“Window -> I/O Ports”
在这里插入图片描述
在这里插入图片描述

4、给 LED 和时钟分配管脚、电平标准,完成后点击保存图标
在这里插入图片描述
5、弹出窗口,要求保存约束文件,文件名我们填写“led”,文件类型默认“XDC”,点击“OK”
在这里插入图片描述
6、打开刚才生成的“led.xdc”文件,我们可以看到是一个 TCL 脚本,如果我们了解这些语法,完全可以通过自己编写 led.xdc 文件的方式来约束管脚
最基本的 XDC 编写的语法,普通 IO 口只需约束引脚号和电压,管脚约束如下:
set_property PACKAGE_PIN “引脚编号” [get_ports “端口名称”]
电平信号的约束如下:
set_property IOSTANDARD “电平标准” [get_ports “端口名称”]
这里需要注意文字的大小写,端口名称是数组的话用{ }刮起来,端口名称必须和源代码中的名字一致,且端口名字不能和关键字一样。
电平标准中“LVCMOS33”后面的数字指 FPGA 的 BANK 电压,LED 所在 BANK 电压为 3.3 伏,所以电平标准为“LVCMOS33”。Vivado 默认要求为所有 IO 分配正确的电平标准和管脚编号。
四、添加时序约束
一个 FPGA 设计除了管脚分配以外,还有一个重要的约束,那就是时序约束,这里通过向导方式演示如果进行一个时序约束。
1、点击“Run Synthesis”开始综合

2、弹出对话框点击“OK”
在这里插入图片描述
3、综合完成以后点击“Cancel”
4、点击“Constraints Wizard”
在这里插入图片描述
5、在弹出的窗口中点击“Next”
在这里插入图片描述
6、时序约束向导分析出设计中的时钟,这里把“sys_clk”频率设置为 50Mhz,然后点击“Skipto Finish”结束时序约束向导。
在这里插入图片描述
7、弹出的窗口中点击“OK”
在这里插入图片描述
8、点击“Finish”,这个时候 led.xdc 文件已经更新,重新加载文件即可。

五、生成 BIT 文件
1、编译的过程可以细分为综合、布局布线、生成 bit 文件等,这里我们直接点击“Generate Bitstream”,直接生成 bit 文件。
在这里插入图片描述2、在弹出的对话框中可以选择任务数量,这里和 CPU 核心数有关,一般数字越大,编译越快,点击OK
在这里插入图片描述
3、这个时候开始编译,可以看到右上角有个状态信息,在编译过程中可能会被杀毒软件、电脑管家拦截运行,导致无法编译或很长时间没有编译成功。
在这里插入图片描述
4、编译中没有任何错误,编译完成,弹出一个对话框让我们选择后续操作,这里选项“Open Hardware Manger”,点击“OK”,当然,也可以选择“Cancel”,然后在左边导航栏选择“Open Hardware Manger”
在这里插入图片描述
六、下载调试
1、连接好开发板的 JTAG 接口,给开发板上电
在这里插入图片描述

2、在“HARDWARE MANAGER”界面点击“Auto Connect”,自动连接设备
3、可以看到 JTAG 扫描到 arm 和 FPGA 内核(图中为 xc7z015,AC7010 开发板实际为 xc7z010_1,AC7020 开发板实际为 xc7z020_1),还有一个 XADC,可以检测系统电压、温度
在这里插入图片描述
4、选择 xc7z010_1 或 xc7z020_1,右键“Program Device…”
在这里插入图片描述
5、点击program,等待下载
6、下载完成以后,我们可以看到 4 颗 LED 开始每秒变化一次。到此为止 Vivado 简单流程体验完成。后面的章节会介绍如果把程序烧录到 Flash,需要 PS 系统的配合才能完成,只有 PL的工程不能直接烧写 Flash。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IS-IS:07 ISIS缺省路由

IS-IS 有两种缺省路由&#xff0c;第一种缺省路由是由 level-1 路由器在特定条件下自动产生的&#xff0c;它的下一跳是离它最近的 &#xff08;cost 最小&#xff09;level-1-2路由器。第二种缺省路由是 IS-IS 路由器上使用 default-route-advertise 命令产生并发布的。 本次实…

智慧交通的“大脑”与“神经”:物联网与车联网双轮驱动,智慧交通加速驶入未来

目录 一、物联网&#xff1a;智慧交通的“大脑” 二、车联网&#xff1a;智慧交通的“神经” 三、物联网与车联网的协同发展 四、智慧交通的未来展望 五、物联网与车联网在智慧交通中的应用案例 六、智慧交通面临的挑战与解决方案 七、政策与法规在智慧交通发展中的作用…

Kafka-服务端-PartitionLeaderSelector、ReplicaStateMachine

PartitionLeaderSelector 通过对前面的分析可知&#xff0c;PartitionMachine将Leader副本选举、确定ISR集合的工作委托给了PartitionLeaderSelector接口实现&#xff0c;PartitionMachine可以专注于管理分区状态。这是策略模式的一种典型的应用场景。 图展示了PartitionLead…

程序员如何应对中年危机

中年危机是一个普遍存在的问题&#xff0c;不仅仅局限于程序员这个职业。不过&#xff0c;对于程序员来说&#xff0c;由于技术更新迅速&#xff0c;中年危机可能更加明显。以下是一些应对中年危机的建议&#xff1a; 持续学习新技术和工具&#xff1a;计算机技术发展迅速&…

【C语言刷题系列】交换两个变量的三种方式

文章目录 1.使用临时变量&#xff08;推荐&#xff09; 2.相加和相减的方式&#xff08;值较大时可能丢失数据&#xff09; 3.按位异或运算 本文所属专栏C语言刷题_倔强的石头106的博客-CSDN博客 两个变量值的交换是编程中最常见的问题之一&#xff0c;以下将介绍三种变量的…

HarmonyOS 鸿蒙应用开发 (七、HTTP网络组件 axios 介绍及封装使用)

在HarmonyOS应用开发中&#xff0c;通过HTTP访问网络&#xff0c;可以使用官方提供的ohos.net.http模块。但是官方提供的直接使用不太好使用&#xff0c;需要封装下才好。推荐使用前端开发中流行的axios网络客户端库&#xff0c;如果是前端开发者&#xff0c;用 axios也会更加顺…

C++是如何发展起来的?如何学习C++呢?

一、什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机界提出了OOP(object …

滴滴基于 Ray 的 XGBoost 大规模分布式训练实践

背景介绍 作为机器学习模型的核心代表&#xff0c;XGBoost 在滴滴众多策略算法业务场景中发挥着至关重要的作用。因此&#xff0c;保障并持续提升 XGBoost 模型的离线训练及在线推理稳定性一直是机器学习平台的重点工作。同时&#xff0c;面对多样化的业务场景定制需求和数据规…

sql 行转列 日周月 图表统计

目录 目录 需求 准备 月 分析 按月分组 行转列 错误版本 正确版本 日 分析 行转列 周 分析 按周分组 行转列 本年 需求 页面有三个按钮 日周月&#xff0c;统计一周中每天(日)&#xff0c;一月中每周(周)&#xff0c;一年中每月(月)&#xff0c;设备台数 点…

云计算中的弹性是什么?

云弹性是指当客户需求增加或减少时&#xff0c;自动从数据中心配置和取消配置资源。这使得云资源(包括计算、存储和内存资源)能够根据需求变化快速重新分配。CPU/处理、内存、输入/输出带宽和存储容量等计算资源可以根据需要增加或减少&#xff0c;而不会影响系统性能。 它旨在…

Qt MaintenanceTool解决“要继续此操作,至少需要一个有效且已启用的储存库”问题

QT的组件管理软件&#xff0c;需要通过QT安装目录下的MaintenanceTool 打开MaintenanceTool选择 “添加或移除组件” 或 “更新组件时” 会提示 “要继续此操作&#xff0c;至少需要一个有效且已启用的储存库” 这时需要配置 https://mirrors.ustc.edu.cn/qtproject/online/q…

【MIdjourney】五个特殊物体关键词

1.碳酸(Carbonate) 这一词语的本意是指包含碳&#xff08;C&#xff09;、氧&#xff08;O&#xff09;和氢&#xff08;H&#xff09;元素的化合物。而在MIdjourney中添加该词汇会使得生成的图片具有水滴效果且富有动态感。 2.灯丝(Filament) Filament效果可能包括更逼真的…