V5 FPGA配置回读

通过selectmap32接口配置和回读xilinx公司生产的v5系列sram型fpga,被配置的fpga以下简称dut,产生配置时序的fpga简称配置fpga。
上图描述了fpga主动配置和从配置多种模式下m[2:0]及时钟cclk的状态。
首先硬件上应将m[2:0]接成110,即slave selectmap模式,该模式下总线宽度分8,16,32bit三种,本文按照32bit模式配置和回读。
1.配置 配置的过程就是将mcs文件中的配置字序列通过selectmap接口写入fpga,配置字的写时序如下图:
如上图所示,selectmap接口包含program_b、 init_b、cclk、cs_b、data[7:0](8bit模式)、rdwr_b、busy以及done。其中data接口为双向,program_b、 init_b、cclk、cs_b、rdwr_b为dut的输入,由配置fpga产生,cclk频率为25mhz。busy和done为dut的输出,配置fpga根据busy和done信号判断dut是否配置完成。
mcs中配置字序列以及具体含义如下:
ffffffff dummy word
000000bb buswidthword
11220044 8/16/32buswidth
ffffffff dummy word
ffffffff dummy word
aa995566 sync word
以上为总线宽度检测和同步字序列。在slaveselectmap模式下,默认配置数据总线宽度为8bit,data[7:0]首先检测总线宽度序列,如果data[7:0]检测到0xbb后是0x11,则总线宽度为8bit,如果0xbb后是0x22,则总线宽度为16bit,如果0xbb后是0x44,则总线宽度为32bit,在总线宽度序列检测完毕后,接收同步字序列aa995566。
在发送完同步字后,按照以下顺序发送状态寄存器等写指令,对far、cmd等状态寄存器进行写操作,使fpga处于待接收配置字状态。
20000000 type 1noop
30020001 type 1 write1 words to wbstar
00000000 warm bootstart address
30008001 type 1 write1 words to cmd
00000000 null
20000000 type 1noop
30008001 type 1 write1 words to cmd
00000007 rcrc
20000000 type 1noop
20000000 type 1noop
30022001 type 1 write1 words to timer
00000000 timervalue
30026001
00000000
30012001 type 1 write1 words to cor0
02003f35 done@4 m@0l@0 gts@3 gwe@5
3001c001 type 1 write1 words to cor1
00000000 cor1value
30018001 type 1 write1 words to id
03300093 id code
30008001 type 1 write1 words to cmd
00000009 switch
20000000 type 1noop
3000c001 type 1 write1 words to mask
00400000 maskvalue
3000a001 type 1 write1 words to ctl0
00400000 ctl0value
3000c001 type 1 write1 words to maskr
00000000 maskvalue
30030001 type 1 write1 words to ctl1
00000000 ctl1value
20000000 type 1noop
20000000 type 1noop
20000000 type 1noop
20000000 type 1noop
20000000 type 1noop
20000000 type 1noop
20000000 type 1noop
20000000 type 1noop
30002001 type 1 write1 words to far
00000000 farvalue
30008001 type 1 write1 words to cmd
00000001 wcfg
20000000 type 1noop
30004000 type 1 write0 words to fdri
50177910 type 2 write1538320 words to fdri
这些指令的含义如下:
fpga配置bit流包含两种类型的配置字指令,第一种类型为读写操作指令,格式如下
r为保留位,没有实际意义。其中opcode的含义如下
第二种类型的配置字指令必须跟随在类型一之后,用于长字节的写操作
一些状态寄存器的地址如下所示
在对状态寄存器进行写操作之后,开始写入配置内容,v5系列sram型fpga共需要配置1538320个32bit的配置字:
00000000 data word 1
data word n
data word n + 1
00000000 data wordlast (1538320)
在配置内容写入fpga后,还需要对far、crc、cmd等寄存器进行写操作,完成配置过程。
30000001 type 1 write1 words to crc
33fe37ca crc value
30008001 type 1 write1 words to cmd
0000000a grestore
20000000 type 1 noop
30008001 type 1 write1 words to cmd
00000003 lfrm
3000c001 type 1 write1 words to mask
00000000 data word 1
00000000 ctl0register value
20000000 type 1 noop

20000000 type 1 noop
30008001 type 1 write1 words to cmd
00000005 start
20000000 type 1 noop
30002001 type 1 write1 words to far
003f8000 far value
3000c001 type 1 write1 words to mask
00400000 data word 1
3000a001 type 1 write1 words to control register 0
00400000 controlregister 0 value
30000001 type 1 write1 words to crc
0c90449e crc value
30008001 type 1 write1 words to cmd
0000000d desynch
20000000 type 1 noop

20000000 type 1 no op
发送完以上配置结束,如果配置成功,dut会将done信号拉高。
2.回读比较 回读的过程和配置过程类似,也是先对dut的状态寄存器进行写操作,然后通过rdwr_b信号拉高控制对dut进行bit流回读,回读时序如下:
write
写总线宽度和同步字
ffffffff dummy word
000000bb bus widthsync word
11220044 bus widthdetect
ffffffff dummy word
aa995566 sync word
写状态寄存器
20000000 type 1 noopword 0
30008001 type 1 write1 word to cmd
0000000b shutdowncommand
20000000 type 1 noopword 0
30008001 type 1 write1 word to cmd
00000007 rcrc command
20000000 type 1 noopword 0
20000000 type 1 noopword 0
20000000 type 1 noopword 0
20000000 type 1 noopword 0
20000000 type 1 noopword 0
20000000 type 1 noopword 0
30008001 type 1 write1 word to cmd
00000004 rcfg command
20000000 type 1 noopword 0
30002001 type 1 write1 word to far
00000000 far address= 00000000
28006000 type 1 read0 words from fdro
48177910 type 2 read 1,538,320words from fdro
20000000 type 1 noopword 0
20000000 .. type 1 31more noops word 0
读bit流
read
00000000 packet dataread fdro word 0
...
00000000 packet data read fdro word 1538319
写状态寄存器
write
20000000 type 1 noopword 0
30008001 type 1 write1 word to cmd
00000005 startcommand
20000000 type 1 noopword 0
30008001 type 1 write1 word to cmd
00000007 rcrc command
20000000 type 1 noopword 0
30008001 type 1 write1 word to cmd
0000000d desynchcommand
20000000 type 1 noopword 0
20000000 type 1 noop word 0
通过以上读写指令操作,可以完成对fpgabit流的回读。
在ise中bit流生成时勾选以下三个选项,将会生成rbd(回读)文件和msd(掩码)文件,
在ucf文件中添加如下约束,确保selectmap32接口在配置完后仍然保持:
configconfig_mode=s_selectmap32+readback ;
回读过程中,将回读的32bit内容依次与存储在片外prom中的rbd文件比较,注意其中msd文件中为1对应的rbd中的bit位不需要比较。如果比较结果除不需要比较的bit位以外其他都一致,则比较结果正确,否则判断发生故障。回读比较可以用来检测fpga的配置区域逻辑是否发生单粒子翻转。

澎湃微PT32x033系列|血糖仪专题技术文章连载_06
汇编语言结构与8086概述
SKYLAB:如何挑选优质的11ac双频WiFi模块?
人工智能+物联网在智能安防领域如何助力的
易事达首推miniLED商业化应用方案 全方位吊打目前市面上的LED电视
V5 FPGA配置回读
Pioneer推出一款USB Type-C口拓展坞,再也不用担心设备没地方充电了
HSA 基金会官网崩溃至今,疑似已被创始成员遗忘
E5061B矢量网络分析仪主要特性及功能介绍
基于Qt5.15.2的windows蓝牙开发与应用
打通互联互通的最后一公里  Matter加速智能家居创新
锂电池怎么组装_锂电池饿死了怎么激活
中国电力系统发展方向趋势解析
有机硅新材料行业的龙头硅宝科技坚守科技创新
现有AGV/AMR及零部件法规标准一览
无刷电机常见故障 无刷电机控制器坏了怎样维修
QORVO真金不怕火炼的太空级产品
3D立体在线数字展览空间,感受“云看展”的曼妙
兆易创新发布多款GD32F3系列主流型Cortex®-M4 MCU,全面助力产业升级
三极管2N3055组成的简易DCDC降压电路图(电感降压式/线性稳压电源)