Virtex-II 系列FPGA 的配置数据处理流程

Virtex-II 系列FPGA 的配置数据处理流程(包括初始化配置和刷新技术)大体上可以分为三个阶段,如下图所示。

阶段一让内部配置逻辑开始准备加载配置数据。

对于初始化配置而言,在此步骤中,FPGA 首先清空内部逻辑,等待接收同步字(0xAA995566)进行系统同步。而对于刷新(Scrubbing)而言,无需清空内部逻辑,而是一直等待进行系统同步。需不需要清空内部逻辑是初始化配置和刷新的一个重要的区别点。复位完CRC 寄存器后,开始设置决定配置属性的相关寄存器,比如帧长寄存器(FLR)、配置选项寄存器(COR)、控制寄存器(CTL)。

阶段二是对FPGA 内部逻辑资源的配置。

对于初始化配置而言,包含内部的三类逻辑资源,设置三类资源的起始帧地址(FAR)后,通过写指令,将后续的配置帧加载到帧数据输入寄存器(FDRI)中。当最后一帧无效帧之前的所有帧数据配置完后,CRC 校验指令就会被写入指令寄存器(CMD)中。在LFRM 指令写入CMD 寄存器后,FPGA 的三类逻辑资源就完成了其初始化配置。与初始化配置不同的是,刷新过程在配置完第一类逻辑资源后,跳过第二类逻辑资源(即所有的BRAM 列),指定第三类资源的起始帧地址开始对其进行重配置。

阶段三是进入启动序列以及数据通道的关闭。

在所有配置帧数据加载完成之后,FPGA 通过将START 指令写入CMD 寄存器中进入启动序列状态。设置完控制寄存器(CTL)和成功完成CRC 校验后,进行去同步操作,关闭数据通道,忽

略数据通道上的所有数据。在完成启动序列后,FPGA 就开始进入工作状态。

下表以Xlinx XC2V3000 FPGA 为例,说明用于初始化配置的数据处理流程。其中,配置数据均以32bit 字为基本单位。

步骤1~7 属于初始化配置的第一阶段,包括数据通道的打开、配置属性的设置,为后续的数据配置做准备。

步骤8~12 属于初始化配置的第二阶段,完成对FPGA 三类资源的初始化配置,对于Virtex-II 系列的FPGA 而言,三类资源的初始化配置顺序为:类一资源(GCLK列、IOB 列、IOI 列和CLB 列)到类二资源(BRAM 列)再到类三资源(BRAMInterconnect 列)。而对于其他系列FPGA,比如Virtex-4 系列,则以类一资源、类三资源、类二资源为顺序进行进行初始化配置。

步骤13~16 也是属于初始化配置的第二阶段, 在默认的情况下( -gFreezeDCI:Yes),全比特流文件中会有此步骤,主要是完成I/O 口的阻抗匹配。用户也可以通过指令(-g FreezeDCI:No)关闭此功能,该步骤就不会出现在全比特流文件中。

步骤17~22 属于初始化配置的第三阶段,主要完成进入启动序列、显性CRC校验和数据通道的关闭,从而启动系统功能。在步骤22 中,由于FPGA 结束配置后进入正常的工作状态需要经历一个启动序列的过程,而启动序列是通过一个内部状态机在8 个周期内完成的,如下图所示。所以,在配置完成后,需要继续送8 个配置时钟,以完成该启动序列。

在启动过程中,内部状态机主要实现:

1、拉低全局三态信号(Global 3-state,GTS),激活I/O;

2、拉高全局写使能信号(Global Write Enable,GWE),激活RAM和触发器;

3、释放DONE 信号;

4、在最后一个周期,拉高FPGA 的内部启动结束信号(End Of Startup,EOS),表示启动过程结束,FPGA 可以进入工作状态。



我给小白们准备了一份礼物,下面是我精心整理的n多verilog代码。帮助小白们由浅至深的"模仿"。在模仿的过程中能够进一步的巩固之前了解的语法知识。

这些Verilog例程基本涵盖了以后可能遇到的所有用法,参考这些代码,可以做出你想要的任何设计。
当你想要用Verilog编写一段代码实现某个功能时,如果你能够想到参考哪段代码能够实现你的设计,那么恭喜你,你已经入门了!!!

所有示例代码,点击链接获取。

01-锁存器、触发器、寄存器、移位寄存器等

【免费】VerilogHDL示例代码之01-锁存器、触发器、寄存器、移位寄存器等资源-CSDN文库

02-逻辑门、三态门、mux等

【免费】VerilogHDL示例代码之02-逻辑门、三态门、mux等资源-CSDN文库

03-各种计数器

【免费】VerilogHDL示例代码之03-各种计数器资源-CSDN文库

04-各类加法器

【免费】VerilogHDL示例代码之04-各类加法器资源-CSDN文库

05-乘法器

【免费】VerilogHDL示例代码之05-乘法器资源-CSDN文库

06-异步复位同步释放

【免费】VerilogHDL示例代码之06-异步复位同步释放资源-CSDN文库

07-分频

【免费】VerilogHDL示例代码之07-分频资源-CSDN文库

08-语法语句

【免费】VerilogHDL示例代码之08-语法语句资源-CSDN文库

09-串并转换

【免费】VerilogHDL示例代码之09-串并转换资源-CSDN文库

10-状态机设计

【免费】VerilogHDL示例代码之10-状态机设计资源-CSDN文库

11-编解码应用

【免费】VerilogHDL示例代码之11-编解码应用资源-CSDN文库

12-仿真语法举例

【免费】VerilogHDL示例代码之12-仿真语法举例资源-CSDN文库

13-进阶设计

【免费】VerilogHDL示例代码之13-进阶设计资源-CSDN文库


我将Verilog的语法 进行了总结,写了13篇文章,让小白 "快速见识猪如何跑",每一篇讲解一类语法,结合正确的示例代码和错误的示例代码,有的章节对个别语法进行了归纳总结,帮助初学者加深理解。详情点击

小白如何快速入门Verilog?-CSDN博客

Verilog语法之〇:Verilog HDL简介/Verilog语法介绍-CSDN博客

Verilog语法之一:简单的Verilog HDL模块-CSDN博客

Verilog语法之二:常量-CSDN博客

Verilog语法之三:变量-CSDN博客

Verilog语法之四:运算符-CSDN博客

。。。。。。

更多课程,敬请期待

相关推荐
baowxz12 分钟前
FPGA管脚类型,及选择
fpga开发
辣个蓝人QEX20 小时前
【ZYNQ Linux开发】使用 boot.scr 启动 Linux 报错 Bad Linux ARM64 Image magic! 调试过程记录
linux·运维·fpga开发·zynq·petalinux·zynq mpsoc
一条九漏鱼1 天前
uart verilog 三段式状态机
fpga开发
FPGA_ADDA1 天前
基于VU37P的高性能采集板卡
fpga开发·vu37p·20通道采集卡
hahaha60162 天前
crc32代码设计
fpga开发
XINVRY-FPGA2 天前
XCVP1902-2MSEVSVA6865 Xilinx FPGA Versal Premium SoC/ASIC
嵌入式硬件·安全·阿里云·ai·fpga开发·云计算·fpga
霖002 天前
详解GPU
人工智能·vscode·python·fpga开发·mvc·gpu算力
FakeOccupational2 天前
【电路笔记 TMS320F28335DSP】McBSP 从源时钟得到 生成时钟 CLKG & 帧同步信号 FSG
笔记·单片机·fpga开发
Water_Sounds2 天前
【FPGA开发】Ubuntu16.04环境下配置Vivado2018.3—附软件包
fpga开发
幻智星科技3 天前
UDP协议FPGA IP Core 数据传输稳定性测试
tcp/ip·fpga开发·udp