基于现场可编程芯片的动态下载应用研究
扫描二维码
随时随地手机看文章
摘要:通过对现有可编程芯片下载方案的研究,针对某些用户对“现场可编程”的要求,本文提出了一种基于FPGA的数据高速动态下载方案,并简要介绍了该方案的硬件设计与实现思想。
1 引言
随着可编程逻辑器件的快速发展,器件的成本不断降低,已有越来越多的应用领域用到 可编程逻辑器件。它本身具有的可编程能力,可以方便设计者轻松升级系统,并且使设计的 算法以硬件的方式执行,大大提高了系统的处理速度。FPGA 以其具有极大的灵活性和现场 可编程特性得到广泛的应用。按工艺划分,FPGA 可分为反熔丝型、FLASH 型和SRAM 型。 反熔丝型虽然具有极强的保密性、但由于仅能编程一次,在使用上受到极大限制;FLASH 型FPGA 克服了反熔丝型FPGA 的缺点,但受结构和工艺限制,在容量上有时很难满足实 际需求;目前SRAM 型FPGA 以其具有容量大、可反复编程特性得到广泛应用,目前市场 上大容量FPGA(10 万门以上)无一例外都是基于SRAM 结构。然而SRAM 型FPGA 最大 的缺点是需要外挂一片FLASH 配置芯片,该芯片对用户完全透明,可以通过下载电缆或专 用编程器进行编程。由于该芯片可以方便的进行复制和修改,因此配置文件极易被非法窃取, 设计师的知识产权无法得到充分保障。
本文分析研究了 ALTERA 公司的FPGA 下载方式、下载文件数据结构及被动串行下载 时序,提出了一种基于PCI 接口总线的现场配置电路设计方案。该电路模块与PCI9656 芯 片控制模块融合在一起,配合上层应用软件,借助于主机PCI 总线和PCI 设备驱动程序, 利用QUARTUS II 软件产生的二进制流文件直接对FPGA 芯片进行现场下载,下载采用 ALTERA 公司FPGA 的被动串行方式,具有很好的通用性。
2 适配卡电路结构
本设计方案的设计是基于PCI 总线适配卡,适配卡为一高速数据采集卡,主要包括PCI 总线接口芯片、局部总线控制模块、内部运算与通信控制模块。电路的整体结构框图如图1 所示。
通过分析 PCI 总线的传输与外围设备如FIFO、SRAM、Flash 的时序知道,SRAM 属于 同步设备,所有的读写操作均发生在时钟上升沿,SRAM 写时序与PCI 总线的时序一致, 可直接采用该时序进行控制,FIFO 也属于同步设备,FIFO 读写时序及Flash 属于异步设备 通过设计相应的简单时序控制逻辑就能满足与PCI 总线通信时序的要求。
3 下载电路硬件设计方案
3.1 PS 配置时序
FPGA 具有被动串行(PS)、主动串行(AS)和JTAG 三种下载方式,其中PS 模式为 ALTERA 公司FPGA 的通用下载方式,操作透明、配置简单。在该模式下,外部电路采用5 条信号线对FPGA 进行配置,分别为配置时钟DCLK,配置数据DATA0,配置启动nCONFIG, 配置状态nSTATUS,配置完成CONF_DONE 信号。配置时序如图2 所示。
3.2 下载模块电路设计
在 EPM7256A 内部设计下载电路,电路由D 锁存器、长度计数器、数据移位寄存器、 状态机、状态寄存器及局部总线控制模块构成。D 锁存器锁存主机送入的命令,输入连接局 部总线数据为LD[1:0],LD[1:0]=01 为启动配置、10 为等待数据命令、11 为结束配置命令, 该命令输出到配置控制状态机,作为控制输入。数据长度计数--器内部存放本次配置的数据 长度,位宽5bit,连接局部总线LD[7:3],计数器最大计数范围为24,每写入1bit,长度值 减1,当减至0 时,产生借位信号,作为本次配置完成信号,送入状态机。数据移位寄存器共计24bit 宽,内部装载本次配置的数据,在状态机的控制下,顺序移出,写入FPGA。局 部总线控制模块产生局部总线的写使能、读有效信号,当PCI9054 寻址到20004000H 时, 产生写使能信号,PCI9054 寻址到20000000H 时,产生状态寄存器读输出有效信号。状态寄 存器输出连接局部总线,输入连接FPGA 配置状态信号nSTATUS、CONF_DONE 和本次配 置完成信号。电路框图如图3 所示:
3.3 下载电路状态机设计
状态机是该下载模块的重要组成部分,负责协调各个模块的工作。其输入时钟信号 LCLK,复位信号LRESET#,下载电路写使能,DLC_WEN,本次配置完成指示:CONFIG_DATA_BO;输 出 为 配 置时钟DCLK , 配置启动nCONFIG , 配置数据: DATA0 , 移位使能 CONFIG_DATA_SHEN,计数使能CONFIG_LEN_EN。状态机包括“等待命令状态”SF0、 “启动配置状态”SF1、“等待数据状态”SF2、“配置数据状态1”SF31、“配置数据状态2” SF32,其状态转换过程如下:
状态SF0:“等待命令状态”,等待软件配置启动命令。
此时:CONFIG_EN = 1、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、DCLKQ = 0、nCONFIGQ = 1;
若DLC_WEN_SH=1 且命令为0x01H,则进入状态S1;
否则维持 S0 状态不变。
状态 SF1:“启动配置状态”。
此时:CONFIG_EN = 0、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、DCLKQ = 0、nCONFIGQ = 0;
若 DLC_WEN_SH=1 且命令为0x02H,则进入“等待数据状态”;否则维持 S1 状态不变。
状态 SF2:“等待数据状态”。
此时: CONFIG_EN = 0、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、DCLKQ = 0、nCONFIGQ = 1;
若 DLC_WEN_SH=1 且命令为0x03H,则进入“配置数据状态1”S31,若 DLC_WEN_SH=1 且命令为0x00H,则返回“等待命令状态”S0,否则维持 S2 状态不变。
状态 SF31:“配置数据状态1”。发DCLK 为高电平及第N-bit 有效数据此时:CONFIG_EN = 0、CONFIG_DATA_SHEN = 1 、CONFIG_LEN_EN =1 、
DCLKQ = 1、nCONFIGQ = 1;进入状态 S32。
状态 SF32:“配置数据状态2”。发DCLK 为低电平及第(N+1)-bit 有效的数据此时:CONFIG_EN = 0、CONFIG_DATA_SHEN = 0 、CONFIG_LEN_EN = 0 、
DCLKQ = 0、nCONFIGQ = 1;
若 CONFIG_DATA_BO = 1 则进入状态 S31;
否则返回“等待数据状态”S2。
4 下载电路软件设计方案
下载电路软件设计主要功能是读取待下载文件,初始化硬件设备,按照下载电路的时 序要求将数据和控制命令写入相应的PCI 存储空间。初始化、配置设置、下载的实质都是 通过数据总线将固定格式的命令和数据写入到命令寄存器,并在这个过程中不断读取状态寄 存器的值以监测是否有错误发生。
首先开机,启动操作系统,EPM7256A 内部电路已下载。其次进行初始化操作。通过 数据总线向地址S0+E000H(配置端口)写入初始化命令0x01H,延迟一段时间,读取地址 S0+0000H(状态寄存器)内的数据,直至检测到配置标志位CONF_DONE、nSTATUS 均为 0,初始化工作完成。再次进行配置启动。向地址S0+E000H(配置端口)写入配置命令0x02H, 延迟一段时间,读取地址S0+0000H 状态寄存器内的数据,直至检测到配置标志位 CONF_DONE 为0、nSTATUS 为1,配置FPGA2 工作完成。接着进行配置数据,向地址 S0+E000H(配置端口)写入数据。Bit[2..0]固定接为011,作为配置数据命令;Bit[7..3]为本 次下载的有效数据长度;Bit[31:8]为要下载数据,Bit[31]最先下载、Bit[8]最后下载。读取地 址S0+0000H(状态寄存器)内的数据,直至检测到配置标志位CONFIG_DATA_BO 为0。 若检测到CONFIG_DATA_BO=1,表明本次操作尚未完成,继续执行配置数据,否则执行下 一步。最后进行数据配置完成检验。读取地址S0+0000H(状态寄存器)内容,直至检测到 配置标志位CONF_DONE、nSTATUS 均为1,表明全部数据配置完成,向地址S0+E000H (配置端口)写入数据0x00H,完成本次下载软件操作。
5 结束语
方案严格按照 FPGA 的PS 模式进行配置,实现了专用芯片在DOS 系统下的动态配置。 经过试验验证,按照该方案设计的电路速度快,运行稳定,设计完全达到了预期的目的。
本文作者创新点: 该设计方案实现了FGPA 掉电后内部数据的自动清除,可以保障专用 芯片的保密性;另外本方案选用ALTERA 公司的EPM7256A 作为配置芯片,在其内部实现 下载电路,真正实现了“现场可编程”,根据本设计思想还可以轻松做到在线升级。
参考文献:
[1].PCI datasheethttp://www.dzsc.com/datasheet/PCI+_1201469.html.
[2].EPM7256A datasheethttp://www.dzsc.com/datasheet/EPM7256A+_301023.html.
[3].1bitdatasheethttp://www.dzsc.com/datasheet/1bit_2178090.html.
[4].PCI9054 datasheethttp://www.dzsc.com/datasheet/PCI9054+_1054563.html.
[5].SF2datasheethttp://www.dzsc.com/datasheet/SF2_1184527.html.
[6].SF31datasheethttp://www.dzsc.com/datasheet/SF31_604269.html.
[7].SF32datasheethttp://www.dzsc.com/datasheet/SF32_604270.html.
来源:xinxin0次