当前位置: 首页 > news >正文

F-003 FPGA基础配置

在这里插入图片描述

1 常见配置引脚

序号配置引脚功能描述
1TCK/TMS/TDI/TDOJTAG配置模式,其中TCK/TMS采用10K上拉电阻,使用JTAG菊花链时TDO连接到下一级TDI,TCK不同型号需求频率不同。
2M[2:0]配置模式选择位。M2,M1,M0均接上拉电阻,即M[2:0]=111时为从串模式。
3CCLK配置时钟位,上升沿有效,主模式为输出,从模式为输入,JTAG模式输出高阻。
4DIN串行数据输入位
5DOUT行数据输出位
6PROG_B低电平异步复位FPGA内部逻辑位。内部配置空间完全复位后,该引脚输出高电平。
7INIT_B由低电平到高电平跳变时,采样配置模式选择位M[2:0],确定配置方式。
8DONE复位时为低电平,若配置成功则为高电平。
9PUDC_B低电平是时内部上拉电阻使能,所有BANK IO管脚默认输出高电平。
10EMCCLK外部主模式配置时钟。
11CSB_I片选信号输入。
12CSO_B片选信号输出。
13RDWR_B决定了SelectMAP数据总线方向。
14D00_MOSI主机输出、从机输入,不同模式下功能有差距,具体见手册。
15D01_DIN数据输入,不同模式下功能有差距,具体见手册。

2 配置顺序

在这里插入图片描述
配置顺序概述:
①系统上电后,首先将PROG_B置为高电平(通过外接上拉电阻),之后FPGA将PROG_B置为低电平,此时配置存储、BRAM、FF等复位为初始状态,INIT_B被拉低电平,IO倍配置为高阻态,如果PUDC_B为低电平,IO配置内部上拉电阻使能,PROG_B延时100 μs充分复位内部逻辑后,将PROG_B置为高电平。
②INIT_B保持低电平直到PROG_B置高电平大于50us后,FPGA将INIT_B置为高电平,在INIT_B由低向高跳变的瞬间,采样配置模式选择位M[2:0],选择配置模式。
③FPGA采样配置模式后,微处理器开始配置FPGA时钟CCLK和数据,在CCLK的每个上升沿,每bit数据被传入到DIN,数据字节先发低位,再发高位,配置过程中若发生错误,则INIT_B呈现低电平。
④配置数据传送过程中,首先传输32位同步码序列,用于对齐FPGA逻辑和配置数据,然后传输设备ID,若配置过程发生错误,DONE和INIT_B将被FPGA拉低,若正确传输,FPGA将进行下一步,加载配置数据并进行CRC校验,无误后配置完成,且DONE、INIT_B呈现高电平。
⑤DONE为高后,FPGA释放全局三态(GTS),激活IO管脚,释放全部置位复位(GSR)和全局写使能(GWE)有效,开始执行配置区里的逻辑,模式配置完成。
在这里插入图片描述

3 配置模式

配置模式主要分两种:主模式从模式
在这里插入图片描述

3.1 主配置模式

FPGA提供时钟主动加载配置数据的方式称为主模式,在主模式下,FPGA上电且初始化完成之后,通过读取模式管脚得到主启动模式,从而启动FPGA内置的主动配置电路,通过从内部产生配置时钟,将外存储器程序加载到FPGA内部,实现内部结构映射。主配置模式根据数据位宽又分为主串和主并两种模式。PS:外存储器的配置文件大小和FPGA芯片有关,与本身设计复杂度无关,因为同一个型号内部SRAM大小是一定的,配置文件就是内部SRAM的总和,且存储器容量一定要大于配置文件大小。

1 主串配置模式

时钟有FPGA输出,且此时常使用PROM存储待加载程序文件。
在这里插入图片描述

2 主SelectMAP配置模式

主SelectMAP配置模式和从SelectMAP模式结构类似,只是FPGA时钟方向此时为输出。
在这里插入图片描述

3 主SPI FLASH配置模式

主SPI FLASH配置模式根据数据线的位宽也分为两种,此时FPGA时钟为输出。
Series FPGA SPI x1/x2:
在这里插入图片描述
Series FPGA SPIx4:
在这里插入图片描述

4 主BPI FLASH配置模式

主BPI FLASH控制、地址、数据总线如下所示,时钟方向为输出。
在这里插入图片描述

3.2 从配置模式

1 从串配置模式

从串配置方式、和主串配置类似,此时时钟方向为输入。
在这里插入图片描述

2 从SelectMAP配置模式

从SelectMAP配置方式、和主 SelectMAP配置类似,此时时钟方向为输入。
在这里插入图片描述

3 JTAG配置模式

JTAG配置模式,连接方式如下
在这里插入图片描述

相关文章:

  • java-php-python-ssm百分百教育集团教务管理系统设计计算机毕业设计
  • Apple M1 Macos 安装虚拟机软件UTM
  • 167.两数之和II-输入有序数组 || 双指针
  • aspnetcore6.0源代码编译调试
  • 【力扣刷题】Day04——链表专题
  • 云计算以及云计算安全相关的中文概述
  • 【 C++ 】哈希表底层结构剖析
  • Swift 基础语法 - 数据类型
  • js单行代码------对象
  • T1061 求整数的和与均值(信息学一本通C++)
  • Java注解-最通俗易懂的讲解
  • 特殊类设计
  • 【STL***deque容器二】
  • 多测师肖sir_高级讲师_第2个月第8讲解类
  • 各编程语言 + aardio 相互调用示例
  • 「面试题」如何实现一个圣杯布局?
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Docker入门(二) - Dockerfile
  • idea + plantuml 画流程图
  • IDEA常用插件整理
  • iOS 颜色设置看我就够了
  • Quartz初级教程
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​iOS实时查看App运行日志
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #1015 : KMP算法
  • #前后端分离# 头条发布系统
  • ${factoryList }后面有空格不影响
  • $jQuery 重写Alert样式方法
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (bean配置类的注解开发)学习Spring的第十三天
  • (libusb) usb口自动刷新
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • ***详解账号泄露:全球约1亿用户已泄露
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET 解决重复提交问题
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • @GlobalLock注解作用与原理解析
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [ 转载 ] SharePoint 资料
  • []Telit UC864E 拨号上网
  • [100天算法】-x 的平方根(day 61)
  • [2]十道算法题【Java实现】
  • [2021 蓝帽杯] One Pointer PHP
  • [2544]最短路 (两种算法)(HDU)
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [BSGS算法]纯水斐波那契数列