Xilinx FPGA——在线升级

本文介绍了如何在FPGA中实现通信驱动,包括使用UDP进行有线传输,以及对M25P80Flash芯片的分区和操作,如扇区擦除和页编程。还涉及了ICAP原语在跳转中的应用,以及MCS和BIT文件在FPGA编程中的区别。
摘要由CSDN通过智能技术生成

        同以前单片机在线升级的做法一样,本质就是通信+Flash操作+跳转。只是FPGA对应的操作与单片机相比稍微复杂一点。

一、通信驱动

        我使用的是UDP有线传输,

二、Flash芯片驱动

        规划Flash芯片的区域,一般bootloader放在起始位置,APP放在bootloader之后的空白区域。

        以M25P80芯片为例:

2.1 芯片参数

        使用一个芯片,要仔细拜读官方提供的芯片手册。

基本参数如下:

  • 型号:M25P80
  • 容量: 8Mbit * 1024=8192Kbit,,
  • 扇区:一个扇区512Kbit,8192/512=16总共16个扇区
  • 页:   一个扇区可存储512*1024/8=65536Byte(64KByte),一页可存储256Byte, 一个扇区有65536/256=256页

以下两种SPI模式之一运行:

  • CPOL=0,CPHA=0
  • CPOL=1,CPHA=1

        本驱动采用的方式是CPOL=1,CPHA=1(CPOL=1时钟空闲是高电平,CPHA=1偶数边沿数据采样,奇数边沿数据更新)

        使用时要关注各个操作需要的时间:

        各操作命令号:

2.2 Flash扇区擦除

各个扇区的地址如下:

        单个扇区擦除流程:

  1.  发送写使能指令(1Byte)
  2. 等待5ns以上
  3. 发生扇区擦除指令+要擦除的扇区地址(4Byte)
  4. tse

        注:扇区擦除指令+扇区内的任意一个地址即可擦除全部扇区内容        

2.3 Flash页编程

        我使用的是页编程。

        一次写一页(256字节),手册上:超出本页的数据会从本页的起始地址开始写入,先写的数据会被覆盖(例如:本页地址0~255,如果从200地址写入57个字节的数据,那个第56、57个字节的数据会分别被写到地址0、1)

        页编程流程:

  1.  发送写使能指令(1Byte)
  2. 页写指令(1Byte:0x02)+页地址(3Byte)+数据(256byte)
  3. tpp

三、ICAP原语跳转

  3.1、ICAP简介   

        在ISE14.7的这里,可以找到ICAP原语的代码,原语是赛灵思内置的操作,类似Flash芯片的操作指令一般,使用时直接实例化即可。

3.2、ICAP模块信号介绍

  • .BUSY     :1-bit      输出       忙信号               
  • .O            :16-bit    输出       模块输出            
  • .CE          :1-bit      输入       时钟使能段,低有效          
  • .CLK        :1-bit      输入       时钟    ICAP最小周期限制:50.000ns(20.000MHz)  
  • .I              :16-bit    输入       数据输入                    
  • .WRITE   : 1-bit     输入       读写控制线,低写、高读   

3.3、ICAP操作bit流

        起始地址要保证和Flash驱动以及Multboot文件一致:

        要注意手册上说了数据需要以下处理:

3.4、生成MultBoot烧录文件

        

四、 mcs、bit文件的区别

        BIN是纯二进制文件,MCS是ASCII格式的文本文件。

4.1 MCS文件

        MCS是Intel早期为MCS系列 II ISIS-II 系统 代码固化存储指定的文件格式,成为了普遍遵循的标准,Xilinx 的MCS文件也一样,格式大体如下,文件由行组成,每一行由6部分组成:

  • Start code 起始码
  • Byte count 字节长度
  • Address 起始地址
  • Record type 当前记录数据类型
  • Data 数据
  • Checksum 校验码

        MCS文件本质就是hex文件,将后缀名改成hex后用nootpad打开,黑色的数据部分即是要发送给FPGA的程序。

4.2 BIT文件 

        Bit文件相对多一个文件头。可以通过16进制打开的方式,将文件头去除,然后两个文件就会一致。

        bit文件去掉开头的109个字节后,与MCS文件一致。

  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值