C2--Vivado开发环境之bit生成,文件组成,代码固化2022-12-08

news2024/12/22 21:00:18

1.FPGA的开发流程

Fpga代码的开发分为以下流程:

  • 设计定义(处于架构阶段,对需求进行定义,分析,模块划分)
  • 设计输入(verilog RTL代码输入、原理图)
  • 功能仿真
  • 分析和综合(由源文件综合编译run synthesis与生成特定设计的网表,逻辑综合实质上是设计流程的一个阶段,在这个阶段中将较高级的抽象层次的描述自动的转换成较低层次的描述)
  • 布局布线(run implementation实现编译)
  • 时序仿真(一般不需要)
  • 约束输入(这个是xdc约束文件,时序、引脚约束)
  • 配置(bitstream generator烧写FPGA,可以在线bit流,可以bin、mcs固化)
  • 板级调试(使用ila等工具进行调试)
  • 系统验证与产品发布

上述过程中包含了编译的三个流程,分别是综合编译run synthesis---run implementation实现编译---生成bit位文件

2.以流水灯为例熟悉vivado开发流程

(1)打开vivado创建新工程,路径不要有中文和特殊符号。

 (2)选择RTL project点击下一步

 (3)可以在此处添加源文件,此处选择不添加

 (4)选择不在此处添加约束,直接next.

 (5)选择所用芯片型号

 

 (6)选择finish完成工程创建

 (7)Project summary是工程信息的简要,单击“+”,选择设计文件,next。

 

(8) 选择新建并命名单击OK,选择finish.

(9) 输入RTL,保存.v文件

module Flowled(
    input clk_i, //输入系统时钟 50MHz
    output reg [2:0]led
    );
reg [27:0]clk_cnt=0;
reg [1:0]led_cnt=0;
wire switch;
assign switch = clk_cnt==27'd50_000_000;
always @(posedge clk_i) begin
    if(clk_cnt==27'd50_000_000)begin //1s
        clk_cnt <= 0;
        led_cnt <= led_cnt +1;
end else 
clk_cnt <= clk_cnt + 1;
end
always @(*) begin
case (led_cnt)
        	0:led = 3'b000;
        	1:led = 3'b001;
        	2:led = 3'b010;
        	3:led = 3'b100; 
        	default: ;
endcase
end
endmodule

(10)依次点击综合和布线

 (11)布线成功后,打开“Open Implemented Design”,打开window中的I/O ports,此处添加所有的约束,并另存为xdc文件,点击generate bitstream

 (12)连接下载器与电源,打开电源,单击open hardware manager ,随后点击open target—>Auto connect

 (13)点击program device下载程序,在板卡上看到对应的LED在闪烁

  3.FPGA文件目录

  •          .cache:vivado软件运行缓存
  •         .hw:波形文件
  •         .ip_user_files:用户关于IP的文件
  •         .runs: 编译与综合的结果,其中\impl-1文件夹中存放的是编译生成的可执行文件,.bin         是可以固化的文件,.bit是烧写的bit流文件。
  •         .sclk:SDK环境代码,一般是ZYNQ设计中关于PS端的代码
  •         .sim:仿真结果文件
  •         .srcs:源码,仿真文件,约束文件
  •         .tmp:自制IP核时的临时设计工程文件夹
  •         .xpr: ivado的工程文件

 4.代码固化

代码固化的原理是将fpga的程序烧录到flash中,flash兼具了rom和ram的有点,即速度快并且掉电不失数据。Vivado的固化文件有两种,一种是mcs文件,一种是bin文件。Bin文件是选择tools-->setting-->bitsream-->勾选 -file_bin,然后正常的生成比特流文件,会在bit文件相同的位置生成bin文件,然后与bit文件的烧写方式一样,只不过选择bin文件即可实现代码的固化。对于mcs有两种方式生成,一种是使用命令窗口tcl输入相应的指令生成mcs,另外一种是tools中选则相应按钮配置生成mcs文件,其中具体的操作过程参看正点原子开发指南。过程较为繁琐,推荐使用bin文件进行固化。现有板卡上的Flash芯片型号MT25QL128ABA1ESE-0SIT,存储容量128  4bitSPIx4

①添加原语(约束文件中)

set_property CFGBVS VCCO [current_design]

set_property CONFIG_VOLTAGE 3.3 [current_design]

set_property BITSTREAM.GENERAL.COMPRESS true [current_design]

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]

②生成MCS和prm文件

 

 

从图中我们可以看到一些配置选项,在此仅对我们需要用到的一些配置做简要介绍:

  • Format:指的生成文件的格式,这里我们选择生成 MCS 文件。
  • Custom Memory Size(MB):指的是所用flash的容量大小,这里选128(根据flash手册决定)。
  • Filename:这里编辑生成的mcs文件名称,右边的三个点按钮是选择mcs文件保存路径。
  • Interface:指的是所用flash的通信方式,这里我们选SPIx4(4bit通信flash,根据flash 手册决定)。
  • Load bitstream files:这个选项勾上,然后添加你要生成mcs文件的原文件(bit 流文件)。
  • Write checksum:写校验。
  • Disable bit swapping:禁止位交换。
  • Overwrite:覆盖原文件。

③烧写操作

        

 

 右击选择program flash器件,按照如下图操作(图中mcs文件不对应)

 

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

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

相关文章

真人踩过的坑,告诉你避免自动化测试入门常犯的10个错误

虽然从自己的错误中学习也不错&#xff0c;但从别人的错误中学习总是更好的。 作为一个自动化测试人员&#xff0c;分享常见的容易犯的10个错误&#xff0c;可以从中吸取教训&#xff0c;引以为鉴。 一、必要时才自动化 新人小王接到为Web应用程序自动化测试脚本的任务时&…

python服务调用-基于http的通信写协议(flask)-linux

服务器要部署一套算法, 我们的部署在该服务器上的数据平台需要调用 该算法进行一些操作, 要点主要两方面: 1.客户端发请求(同时传数据给服务). 2. 服务端的算法响应给请求,处理结束后,返回数据给客户端.这里一般第一次使用http协议的时候有点懵,其实是非常简单,我这里给了一个…

基于HTML+CSS+JavaScript “小味鲜“餐厅网页设计

基于HTMLCSSJavaScript "小味鲜"餐厅网页设计 每博一文案 师父说“生活中的负能大多来于圈子里的抱怨“&#xff0c;有时候&#xff0c;你不想做别人情绪的垃圾桶。 却不得不接受他们的吐槽&#xff0c;你嫌弃身边人无休止的抱怨&#xff0c;但又不知不觉被他们影响 …

12.感知机以及多层感知机(MLP),激活函数

x和w都是向量&#xff0c;b是标量&#xff0c;感知机的输出是&#xff1a;w和x做内积之后偏移b&#xff0c;最后加上一个函数&#xff08;这个函数很多种选择&#xff09;。 1. 训练感知机 如果当前是第i个样本&#xff0c;yi是真实标签值&#xff0c;<w,xi>b得到的是预测…

浅浅的分析Spring底层事务原理

Spring事务底层原理一、EnableTransactionManagement工作原理二、Spring事务基本执行原理三、Spring事务的过程四、Spring事务传播机制五、Spring事务传播机制分类&#xff08;1&#xff09;案例分析、情况1&#xff08;2&#xff09;案例分析、情况2&#xff08;3&#xff09;…

【正点原子FPGA连载】第三十二章OV5640摄像头RGB-LCD显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第三十二章OV564…

深度学习——批量归一化(笔记)

主流的卷积网络基本都设计批量归一化这个层 1.为什么要批量归一化&#xff1f; ①网络层很深&#xff0c;数据在底层&#xff0c;损失函数在最顶层。反向传播后&#xff0c;顶层的梯度大&#xff0c;所以顶层训练的较快。数据在底层&#xff0c;底层的梯度小&#xff0c;底层训…

【开源项目】震惊JDBC查询比MyBatis查询慢

震惊JDBC查询比MyBatis查询快&#xff1f; 文章编写起始原因&#xff0c;在编写项目的时候碰到一个深坑&#xff0c;JDBC获取5000条数据&#xff0c;居然耗时261s&#xff0c;MyBatis同样的操作&#xff0c;耗时12s左右&#xff0c;震惊。看到这里下巴都快掉下来了。不是网上都…

Pyqt5 Key value动态创建 QTreeWidget

在自己的应用上&#xff0c;需要根据读取的 值来创建 目录与子页&#xff0c;并打开对应的界面 实现思路 1、定义数组 存放 &#xff5b;&#xff08;Key value index &#xff09;.....&#xff08;Key_n value_n index_n &#xff09;&#xff5d; 2、获取相关数据&#x…

【Java开发】 Spring 09 :Spring Data REST 实现并访问简单的超媒体服务

Spring Data REST 是提供一个灵活和可配置的机制来编写可以通过HTTP公开的简单服务&#xff0c;简单来说&#xff0c;而且可以省去大部分controller和services的逻辑&#xff0c;因为Spring Data REST 已经为你都做好了&#xff0c;目前支持JPA、MongoDB、Neo4j、Solr、Cassand…

Ribbon负载均衡

Ribbon负载均衡 Ribbon是微服务架构中&#xff0c;可以作为负载均衡的技术实现&#xff0c;如下图所示 Ribbon负载均衡 1、消费者发起请求2、被负载均衡拦截器拦截3、将请求信息交给RibbonLoadBanlancerClient4、获取url的服务id5、DynamicServerListLoadBalancer拿到id去eur…

java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(二:网关balabala)~整起

上集&#xff0c;在架构知识分布式微服务高并发高可用高性能知识序幕就此拉开&#xff08;一&#xff1a;总览篇&#xff09;中&#xff0c;说到了 当用户请求过来时&#xff0c;这个请求或者说URL先到服务调用端【咱们之前的项目中的Controller其实就算是一个服务调用方&#…

VMware ESXi 8.0 SLIC Unlocker 集成网卡驱动和 NVMe 驱动 (集成驱动版)

发布 ESXi 8.0 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链接&#xff1a;VMware ESXi 8.0 SLIC & Unlocker 集成网卡驱动和 NVMe 驱动 (集成驱动版)&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysi…

【Pytorch】第 3 章 :进行数值估计的蒙特卡洛方法

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Java ssh框架 mysql实现的进销存管理系统源码+运行教程+文档

今天给大家演示一下一款由sshmysql实现的进销存管理系统&#xff0c;其中struts版本是struts2&#xff0c;这个系统的功能非常完善&#xff0c;简直可以说是牛逼&#xff0c;到了可以用于企业直接商用的地步&#xff0c;此外该项目还带有完整的论文&#xff0c;是Java学习者及广…

Spark 初识

文章目录Spark 初识Spark是什么Apache Spark演变为什么使用Spark全快Spark组件Spark CoreSpark SQLSpark StreamingSpark MLlibSpark GraphXSparkRpySparkspark 在数仓的应用总结Spark 初识 从今天开始我们进入数据仓库的查询引擎篇了&#xff0c;前面我们已经写了大量的文章介…

三分钟了解LAP编程框架

针对Java开发者的灵魂拷问&#xff1a; 1、梳理的流程&#xff0c;关键逻辑是否有遗漏&#xff0c;理解一致吗&#xff1f; 2、设计时&#xff0c;如何更方便的与产品沟通&#xff1f;原有的设计是否有不合理的&#xff1f;绘制的流程图大家都能理解吗&#xff1f; 3、测试时&a…

316页11万字AI赋能智慧水利大数据信息化平台建设和运营解决方案

第一章 系统综述 1.1 项目背景 1.2 系统概述 1.3 需求分析 1.3.1 中心管控需求 1.3.2 前端监测需求 1.4 建设目标 1.5 设计原则 1.6 设计依据 第二章 系统总体设计 2.1 总体设计思路 2.2 架构设计 2.2.1 逻辑架构 2.2.2 系统架构 2.3 关键技术应用 2.4 系统特色…

代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列

647. 回文子串 题目链接&#xff1a;https://leetcode.cn/problems/palindromic-substrings/ 思路 动态规划思路 1、确定dp数组 布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0c;如果是dp[i][j]为tr…

【真的?】用 ChatGPT 写一篇 Python 翻译库博客,可以打 9 分

今天来个大的实践项目&#xff0c;用 ChatGPT 写一篇博客&#xff0c;冲击一下热榜&#xff01; 从零开始玩 ChatGPT⛳️ ChatGPT 亮点⛳️ 账号篇⛳️ 第一次使用⛳️ 用 Python 实现一个英汉互译的小程序⛳️ googletrans 库核心用法⛳️ 再补充一些知识点⛳️ googletrans 和…