Vivado基础教程

article/2025/10/7 10:42:12

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、创建项目
  • 二、添加设计文件
    • 代码
  • 三、综合
  • 四、添加约束文件
  • 五、上板
    • 5.1、生产比特流文件
    • 5.2、硬件调试


前言

本文详细的讲述了vivado项目创建到上板的流程。


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建项目

创建项目
点击左上角的create project

在这里插入图片描述
直接点击next
在这里插入图片描述
项目名保证和module所命名的名字相同,多文件不需要。注意:路径不要有空格、汉字。
在这里插入图片描述
直接点击next。
在这里插入图片描述
若写好.v文件就可以在此处添加,还没有写可以等到后面来创建。没有就直接点击next。
在这里插入图片描述
同上,写好约束文件在此添加,没有就直接点击next。
在这里插入图片描述
此处,根据自己的开发板选择合适的型号,最后点击next。
在这里插入图片描述
最后,点击finish。

二、添加设计文件

在这里插入图片描述
右键点击Design Source,选择Add Source。
在这里插入图片描述
先选择设计文件,点击next。
在这里插入图片描述
根据以上步骤创建文件,文件名保证和项目的名相同,若是多文件的不需要。
在这里插入图片描述
创建完直接点击finish。
在这里插入图片描述
这个窗口直接点OK,若以后熟悉可以在这里直接添加输入与输出。
后面有个窗口直接点击yes即可。

在这里插入图片描述
此时,创建好了设计文件。

代码

示例代码如下:

module led_twinkle(input	clk,input	rst_n,output	[1:0]	led);reg [25:0] cnt;always @(posedge clk or negedge rst_n) beginif(!rst_n) begincnt <=26'd0;endelse if(cnt < 26'd5000_0000) begincnt <=cnt + 26'd1;endelsecnt <=26'd0;
endassign led = (cnt <26'd2500_0000) ? 2'b10 : 2'b01;endmodule

三、综合

在这里插入图片描述
点击Run Synthesis进行综合编译
在这里插入图片描述
点击Run Simulation
在这里插入图片描述
点击OK
在这里插入图片描述
在这里可以看到编译过程。

在这里插入图片描述
这里可以查看网格,需要就点OK。

在这里插入图片描述
编译完直接点OK。

四、添加约束文件

在这里插入图片描述
根据上述步骤打开约束文件设计。

在这里插入图片描述
在此处根据变量,填好相对应的管脚名和电压值,管教名需要看开发手册,电压值一般都是3.3V,如图所示。

在这里插入图片描述
保存后,填好文件名,点OK即可。

在这里插入图片描述
可以在Source中Constraint找到约束文件。

五、上板

5.1、生产比特流文件

在这里插入图片描述
点击左下角的生成General Bitsream。

后面的弹窗有yes点yes,有ok点ok。

5.2、硬件调试

在这里插入图片描述
点击左下此处,进行硬件调试。

在这里插入图片描述
通过上述操作来连接开发板。

在这里插入图片描述
点击Program Device。

在这里插入图片描述
若成功生产比特流文件,上面会自动填充,然后点击Progam即可上板。


http://chatgpt.dhexx.cn/article/lGIAHdYA.shtml

相关文章

vivado基本使用流程(详细版,一步步跟着来一定能成功)

创建工程 1、 2 3、项目名称不能有空格&#xff0c;目录不能含有中文路径 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 可以查看一下新建的文件 二、设置IP核 1、 2、 3、 4、 5、 6、 7、 可以查看到生成的ip核 8、 找到例化模板&#xff0c;日常…

虚拟基类

对于虚拟基类的个人理解&#xff0c;如有误恳请指正。 1.不用虚拟基类 class cBase_A{int x; public:cBase_A( ){x10;}int getx(){return x;}void setx(int a){xa;}};class cBase_B: public cBase_A{ };class cBase_C: public cBase_A{ };class cDerived_D: public cBase_B…

系统调用。

什么是系统调用&#xff0c;有何作用&#xff1f; 生活场景:你去学校打印店打印论文&#xff0c;当你按下“打印”之后&#xff0c;打印机开始工作。你的论文打印到一半时&#xff0c;另一位同学按下了“打印”按钮开始打印他自己的论文。最终&#xff0c;你的论文和该同学的论…

C++ 基础之虚函数和虚基类

C 基础之虚函数和虚基类 C 有别于 C ,比较重要的就是其抽象、封装、继承和多态等特性。多态又具体地体现在重载、虚函数和模板等等之上。 今天就和大家聊一聊虚函数和虚基类。 虚函数 我们来思考一个问题。假如子&#xff08;派生&#xff09;类 B 继承自父&#xff08;基&…

虚基类 的作用

虚基类 需要解决的问题 当派生类从多个基类派生&#xff0c;而这些基类又共同基类&#xff0c;则在访问此共同基类中的成员时&#xff0c;将产生冗余&#xff0c;并有可能因冗余带来不一致性虚基类声明 以virtual说明基类继承方式例&#xff1a;class B1:virtual public B作用…

虚基类的作用

1 概念 首先还是先给出虚继承和虚基类的定义。虚继承&#xff1a;在继承定义中包含了virtual关键字的继承关系&#xff1b; 虚基类&#xff1a;在虚继承体系中的通过virtual继承而来的基类&#xff0c;需要注意的是&#xff1a; CSubClass : public virtual CBase {}; 其中CB…

系统调用:系统调用的实现

7.3.3 系统调用的实现 1. 中断和陷入硬件机构 (1) 什么是中断和陷入。 中断是指CPU对系统发生某事件时的这样一种响应&#xff1a;CPU暂停正在执行的程序&#xff0c;在保留现场后自动地转去执行该事件的中断处理程序&#xff1b;执行完后&#xff0c;再返回到原程序的断点处继…

系统调用、函数调用

1、系统调用 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性&#xff0c;为了达到这个目的&#xff0c; 内核提供一系列具备预定功能的多内核函数&#xff0c;通过一组称为系统调用&#xff08;system call)的接口呈现给…

C++ 虚基类

C 虚基类 概述多重继承的问题虚基类初始化例子 总结 概述 虚基类 (virtual base class) 是用关键字 virtual 声明继承的父类. 多重继承的问题 N 类: class N { public:int a;void display(){cout << "A::a" << a <<endl;} };A 类: class A :…

虚基类

虚基类 意义:假设定义了一个公共基类A。类B和类C都由类A公有派生,类D由类B和类C公有派生。显然D包含类A的两个拷贝,不仅多占用内存,而且还造成多个拷贝的数据不一致。 不定义虚基类的效果如下: class A {public:int x;void SetX(int a) { x = a; }A(int a = 0) { x = a…

【操作系统】系统调用

文章目录 系统调用系统调用举例文件拷贝的系统调用过程应用程序接口系统调用接口C语言系统调用接口Windows和UNIX系统调用示例系统调用与的库函数区别补充说明系统调用 系统调用,System call,提供了操作系统的服务接口。这些系统调用通常以C或C++编写,对某些底层任务可能以…

C++之基类调用自己的虚函数

每个类中存在虚函数时&#xff0c;当构造一个对象时&#xff0c;系统会为对象分配相应的内存空间。但是虚函数表存放在程序的只读数据段中&#xff0c;在实例化对象时&#xff0c;编译器会自动在对象里安插一个指针vPtr指向虚函数表VTable&#xff1b; 下面看一个小例子&#x…

如何调用基类私有的虚函数

直接看代码 #include <iostream> #include <stdio.h> using namespace std;class person { public:virtual void name(){cout<<"A::name"<<endl;}private:virtual void sex(){cout<<"A::sex"<<endl;} };class studen…

详解虚函数的实现过程之虚基类(4)

博客虚函数实现过程3 时提到过虚基类&#xff0c;这里呢&#xff0c;我们来详细讲述一下&#xff1a; 当我们在虚函数的声明结尾处添加“0”&#xff0c;这种虚函数就被称为纯虚函数。 它好似一个没有实现只有声明的函数&#xff0c;它的存在就是为了让类具有抽象类的功能&…

虚基类的基本概念

1.虚基类的作用 类B与类C都为类D的基类&#xff0c;而类A为类B与类C的基类&#xff0c;因此类D会继承类B与类C的多份同名成员。如下图所示&#xff1a; 在引用这些同名成员时&#xff0c;必须在派生类对象后增加直接基类名&#xff0c;以避免产生二义性&#xff0c;如&#x…

【虚基类、虚函数及应用】

虚基类 1.虚基类存在的意义 当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处&#xff0c;这个公共的基类就会产生多个实例(或多个副本)&#xff0c;若只想保存这个基类的一个实例&#xff0c;可以将这个公共基类说明为虚基类。 在继承中产生歧义的原因有可能是…

虚函数的调用机理

C中&#xff0c;必然会接触到虚函数这个概念&#xff0c;那么&#xff0c;会不会对虚函数的内部机理产生疑问呢&#xff1f;而这里&#xff0c;就是对其的简单的研究&#xff08;本人水平有限(&#xff61;•́︿•̀&#xff61;) &#xff09; 首先&#xff0c;先来简单介绍…

系统调用

程序接口是 OS 专门为用户程序设置的&#xff0c;也是用户程序取得 OS 服务的唯一途径。程序接口通常是由各种类型的系统调用所组成的&#xff0c;因而&#xff0c;也可以说&#xff0c;系统调用提供了用户程序和操作系统之间的接口&#xff0c;应用程序通过系统调用实现其与 O…

舵机内部结及工作原理浅析

一、舵机实物图 就像上面这张照片&#xff0c;相信大家都不会陌生&#xff0c;我们常见到的舵机就是这个模样&#xff0c;一般是塑料外壳&#xff0c;当然很少见的也有金属外壳的舵机&#xff0c;因为涉及到控制信号&#xff0c;所以一般有三条引出线。 像上图所示的样子&#…