zoukankan      html  css  js  c++  java
  • icape3 的使用

    在FPGA中,有时需要使用用户代码重配置FPGA,配置的内容可以是flash或者是其他的来源这样FPGA的启动模式有关,在本实验中配置文件是存放在flash中。实际的操作步骤如下:

    1:生成一个工程,工程的内容是led灯在闪烁。并且生成相应的mcs文件,通过jtag烧录到板卡上的 bpi flash中,等待FPGA重新加载flash的内容。如果加载成功led灯就是这个工程的闪烁状态。

    创建工程,Verilog写led灯,就不说,关键是如何生成mcs文件。通过如下的两条命令:

    cd E:/work/MT28QU01GAAA1E/mt28_prj/prj/flsh_cntrl/flsh_cntrl.runs/impl_1   (切换当前的工作目录,到生成工程bit的目录下)
    write_cfgmem -force -format mcs -interface bpix16 -size 128 -loadbit "up 0x0 flash_cntrlor.bit" -file flash_cntrlor.mcs

    关于write_cfgmem命令的参数可以百度,不同的flash是有不同的对应参数,比如这块板卡上用的是bpi * 16bit的128MB 镁光flash,起始地址对应到0x0,这也是FPGA加载flash的地址,bit的文件 名肯定是要改的,最后的是生成mcs文件的名字。

    在生成mcs文件后,烧录到flash中,这里也不写,在hardmanager有add configuration memory device 添加对应的flash,和mcs文件即可。

    2:在生成一个工程称工程2,工程2的内容包括led状态,但是led状态需要和工程1不一致,还包括icape3的操作。

    下面是icape3的例化,因为我的目标是使用它来启动FPGA的,输出端口并没有使用。在这些信息都xilinx的ug570有介绍,接口是一个使能,一个输入数据总线,时钟,读写选择。

     1 ICAPE3#(
     2     .DEVICE_ID                ( 32'h03628093        )    ,        //Specifiesthepre-programmedDeviceIDvaluetobeusedforsimulation
     3                                                                   //purposes.
     4     .ICAP_AUTO_SWITCH         ( "DISABLE"            )    ,        //EnableswitchICAPusingsyncword
     5     .SIM_CFG_FILE_NAME        ( "NONE"               )            //SpecifiestheRawBitstream(RBT)filetobeparsedbythesimulation
     6                                                                  //model
     7 )
     8 ICAPE3_inst(
     9     .AVAIL                    ( icap_vail            )    ,        //1-bit  output: Availability status of ICAP
    10     .O                        ( icap_dt_out        )    ,        //32-bit output: Configuration data output bus
    11     .PRDONE                    ( icap_prdone        )    ,        //1-bit     output: Indicates completion of Partial Reconfiguration
    12     .PRERROR                ( icap_prerror        )    ,        //1-bit  output: Indicates Error during Partial Reconfiguration
    13     .CLK                    ( clk_100            )    ,        //1-bit  input:  Clock input
    14     .CSIB                    ( icap_en_n2         )    ,        //1-bit  input:  Active-Low ICAP enable
    15     .I                        ( icap_dt             )    ,        //32-bit input:  Configuration data inputbus
    16     .RDWRB                    ( icap_rd_wr2         )            //1-bit  input:  Read/Write Select input 1:read  0:write
    17 );

    上图是ug570有的,可以知道发送的顺序,各个命令字的意思也清楚。notes是要注意的,这些命令字是需要改变顺序的,如提示page131,入下图,关系也是明确的。

     

    到此,几乎可以做好了,但是还有一个关键步骤,需要通过什么样的时序将这些命令字,写入。在xilinx的网站找了很久没有找到,但是在百度里找到了参考链接 http://www.elecfans.com/emb/fpga/20140124334884_2.html , 里面就提到

    一个周期拉低读或写,第二个时钟周期拉低使能,第三个时钟开始发送命令字和相应的参数。如果能够画一个波形可能更清晰了。

    3:如果已将mcs文件烧录到flash中,此时再将工程2的bit文件通过jtag下载到FPGA中,可以发现没用多长的时间,led的显示状态是flash中的配置文件。

    单独关于ICAPE3的使用到此结束。

  • 相关阅读:

    链表
    队列
    稀疏数组
    SQL——流程控制
    SQL——存储过程与函数
    SOA
    MVC模式
    《一线架构师实践指南》--阅读笔记三
    《一线架构师实践指南》-阅读笔记二
  • 原文地址:https://www.cnblogs.com/cornhill/p/5623648.html
Copyright © 2011-2022 走看看