FPGA工程正确的设计流程

1 正确的设计流程

  1. 分析项目的具体需求来设计系统的结构,划分系统的层次,确定各个子模块的结构关系和信号之间的相互关系,然后确定模块的端口信号等
  2. 根据每隔模块的功能和自己的理解,结合芯片手册接口的时序,使用visio画出该模块能正常工作的时序波形图
  3. 根据所画的波形图严格设计代码,严格设计代码就是设计代码的仿真结果和所画的波形保持一致
  4. 代码编写玩进行编译和仿真
  5. 绑定管脚后进行分析综合、布局布线

2 工程文件夹的管理

  1. 首先新建项目文件夹 如led
  2. 然后在led总文件夹下面建立两个子文件夹led_doc和led_pro,分别保存文件(数据手册、波形图等文档)和代码

3 实际操作

3.1 点亮LED灯工程

3.1.1 新建一个visio文件及其配置

接下来就是新建一个led的visio图,用于绘制我们在设计过程中的结构狂徒和时序波形图,如下图所示

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

3.1.2 波形绘制 ***

为了使绘制的波形图更加直观,我们先统一定义输入信号用绿色表示,输出信号用红色标识,中间变量信号用黄色标识
在这里插入图片描述

3.1.3 新建工程

  1. 这里新建工程选择器件编写代码(省略),如下图所示新建完毕
    在这里插入图片描述

  2. 重点编写testbench 养成好的习惯***
    在这里插入图片描述

3.1.4 引脚约束

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
引脚绑定完成之后,我们保存该约束文件XDC,我们将文件命名为led,点击ok完成约束。

3.1.5 生成bit流文件

最后我们需要生成bit流文件,双击Generate bitsream,点击yes
在这里插入图片描述

3.1.5 通过JTAG将网表下载到开发板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如图 8-80 所示,方框中是我们 bit 文件所在的位置,确认无误后点击“program”进行
下载。
在这里插入图片描述
注意:尽量不要带电插拔 JTAG 口,否则容易烧坏 FPGA 的 JTAG 口。如果用万用表
测到 JTAG 号 TDI TDO TMS TCK 任意一个与地短路了,那你的 FPGA 可能已经被烧坏
了。并不是每次热插拔 JTAG 口都一定会烧坏,但是至少会有一定烧坏的可能性。

3.1.6 程序固化

  1. 添加约束语句
    在这里插入图片描述
  2. MCS文件的生成
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3. BIN文件的生成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 下载固化文件
下载固化之前我们与下载 bit 文件一样,先连接后下载器,电源线,然后为开发板上
电。进入下载界面后如图 8-86 所示,点击“Add Configuration Memory Device…”
在这里插入图片描述
在这里插入图片描述
在接下来的提示中点击“OK”,如图 8-88 所示:
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

基于QGraphicsView的图像显示控件,支持放大、缩小、鼠标拖动

原链接 前言 这是一个Qt平台的基于QGraphicsView类的图像显示控件,支持输入QPixmap、QImage、opencv的从cv::Mat类。 实现平台:Windows 10 x64 Qt 6.2.3 MSVC 2019 opencv 4.5 先来看演示视频 控件类实现 ImageViewer.h文件 #ifndef IMAGEVIEWER…

error: C preprocessor fails sanity check

问题 ./configure --prefix/opt/mips_lib/libev --hostmipsel-openwrt-linux CCmipsel-openwrt-linux-gcc运行后提示 checking how to run the C preprocessor... mipsel-openwrt-linux-gcc --sysroot/opt/mt7628/toolchain-mipsel_24kc_gcc-8.4.0_musl -I/opt/mt7628/toolch…

Docker 笔记(八)--Dockerfile

目录 1. 背景2. 参考3. 原文3.1 Dockerfile 支持的指令3.2 Dockerfile格式3.3 Parser指令syntaxescape 3.4 环境变量替换3.5 docker构建忽略文件3.6 Shell 和 exec 格式Exec 格式Shell 格式使用不同的 shell 3.7 FROM指令了解ARG和FROM如何交互 3.8 RUN指令RUN指令缓存失效RUN …

4 CUDA 环境搭建

4.1 简介 本章面向从未接触过CUDA的初学者。我们将依次介绍如何在不同操作系统上安装CUDA、有哪些可用的CUDA 工具以及CUDA如何编译代码,最后介绍应用程序接口提供的错误处理手段,并帮助读者识别CUDA代码和开发过程中必然碰到的应用程序接口报错。Windo…

java框架 2 springboot 过滤器 拦截器 异常处理 事务管理 AOP

Filter 过滤器 对所有请求都可以过滤。 实现Filter接口,重写几个方法,加上WebFilter注解,表示拦截哪些路由,如上是所有请求都会拦截。 然后还需要在入口处加上SvlterComponentScan注解,因为Filter是javaweb三大组件之…

Leetcode刷题【每日n题】(8)

题目一 思路分析 1.循环遍历直到这个数小于102.获取每个位数之合3.将合赋值给目标数,直到小于10 代码实现 class MyTest{public int addDigits(int num) {//直到目标数小于10while(num>10){//定义各个位数合int sum0;//num不能为0while(num>0){//获取每个位上…

linux 获取cpu和硬盘id

直接代码&#xff0c;有的电脑cpuid可能没有&#xff0c;代码头文件没有理清但是满足编译需求 std::string getcpuid() 来获取cpu id信息 std::string get_harddisk_info()来获取硬盘id #include <unistd.h> #include <cstdio> #include <cstring> #include…

java-ssm-jsp基于javaweb的宠物猫狗商业系统

java-ssm-jsp基于javaweb的宠物猫狗商业系统 获取源码——》公主号&#xff1a;计算机专业毕设大全 获取源码——》公主号&#xff1a;计算机专业毕设大全

conda创建新的env报错CondaVerificationError

conda创建新的env报错CondaVerificationError 错误详情解决方案 错误详情 Downloading and Extracting PackagesPreparing transaction: done Verifying transaction: failedCondaVerificationError: The package for _openmp_mutex located at /home/work/miniconda3/pkgs/_o…

leetcode106从中序与后序遍历序列构造二叉树

目录 1.解题关键2.思路3.变量名缩写与英文单词对应关系4.算法思路图解5.代码 本文针对原链接题解的比较晦涩的地方重新进行说明解释 原题解链接&#xff1a;https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/solutions/50561/tu-jie-…

《牛客》-D小红统计区间(easy)

思路&#xff1a;顶级二分前缀和 不多解释&#xff0c;太帅了&#xff01;,看代码好吧&#xff08;一发ac太爽了&#xff0c;逃~&#xff09; Accode: #include <bits/stdc.h> using namespace std; #define int long long const int N1e510; int n,k,a[N],pre[N],ans;…

Java程序设计 3 选择

布尔数据类型和逻辑运算符 boolean类型的值为true和false&#xff0c;其字面值也只有true和false&#xff08;也就是不能等同视为0和非零&#xff0c;这一点和C/C有所不同&#xff09;&#xff0c;且不能和其他数据类型混合运算&#xff08;包括类型转换&#xff09;。 Java里面…

算法笔记p142快速排序

目录 快速排序划分快排 随机划分的快速排序 快速排序 快速排序是排序算法中平均时间复杂度为O(nlogn)的一种算法。 划分 快排的实现需要解决划分的问题&#xff1a;对于一个序列A[1]、A[2]、……、A[n]&#xff0c;从中选取一个枢轴&#xff08;或主元&#xff09;&#xff…

分布式事务协调器Seata

Seata 是什么&#xff1f; | Apache Seata 1、四种模式的选择 1.1 只有AT、 XA模式是代码无侵入的。首选这两个。 1.2 XA模式 XA 是一种基于两阶段提交协议&#xff08;2PC&#xff09;的分布式事务协议&#xff0c;它由 X/Open 组织提出。在这种模式下&#xff0c;事务管理…

UGUI界面性能优化1-UGUI开发界面时常见的优化方法和注意事项

UGUI是Unity引擎中的一套用户界面系统&#xff0c;用于开发游戏和应用程序的UI界面。在进行UGUI开发时&#xff0c;可以采取以下优化方法和注意事项&#xff1a; 使用UI对象池&#xff1a;在频繁创建和销毁UI对象时&#xff0c;可以使用对象池来重复利用已创建的UI对象&#xf…

MySQL数据库索引介绍

前言 在数据库中创建索引可以提高数据检索的速度和效率。索引是一种数据结构&#xff0c;类似于书籍的目录&#xff0c;它可以帮助数据库系统快速定位和访问表中的特定数据行。 目录 一、索引相关介绍 1. 概述 2. 作用 3. 副作用 4. 创建原则依据 二、索引的分类与管理…

ChatGPT:智能论文写作指南,让您成为写作高手

ChatGPT无限次数:点击直达 写作是学术研究中不可或缺的一环&#xff0c;然而&#xff0c;对于许多人来说&#xff0c;写作往往是一项艰巨而费时的任务。但是&#xff0c;现在有了ChatGPT&#xff0c;您将能够以前所未有的速度和准确性编写高质量的论文。本文将向您介绍如何利用…

Vue2(七):脚手架、render函数、ref属性、props配置项、mixin(混入)、插件、scoped样式

一、脚手架结构&#xff08;Vue CLI&#xff09; ├── node_modules ├── public │ ├── favicon.ico: 页签图标 │ └── index.html: 主页面 ├── src │ ├── assets: 存放静态资源 │ │ └── logo.png │ │── component: 存放组件 │ │ …

详解main函数参数argc、argv及如何传参

目录 1、main()函数参数 2、main函数如何传参 2.1 环境准备 2.2 通过 Powershell 窗口传参 2.3 通过vs界面传参 3、int main() 和 int main(int argc, char *argv[]) 特点 1、main()函数参数 在C语言中&#xff0c;main函数可以带参数。main函数的原型通常为以下两种形式…

基于Springboot+Vue的在线考试系统

项目介绍 这是一个在线考试系统&#xff0c;使用Maven进行项目管理&#xff0c;基于springbootmybatis框架开发的项目&#xff0c;mysql底层数据库&#xff0c;前端采用VueElementPlus&#xff0c;作为初学springbootvue前后端分离架构的同学是一个很不错的项目&#xff0c;如…