在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有介绍,接口是一个使能,一个输入数据总线,时钟,读写选择。

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

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

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

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

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

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

icape3 的使用的更多相关文章

随机推荐

  1. Mac 下安装Java

    下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 打开下载的文件,出现如下 ...

  2. [转]VS2015编译的程序在其他机器上缺少msvcp120.dll

    http://www.lai18.com/content/1159618.html 1. 今天分享一个自己在开发过程中遇到的困难. 用VS2015开发了一个windows客户端(win32项目),在自 ...

  3. Web开发中的显示与隐藏

    大多数编程语言,在平开发过程中,都是会遇到一些特殊的场景,需要实现显示或者隐藏来达到我们想要的效果:然而实现的方式有多种,今天就写一下,希望可以帮到各位. 小编我学习前端1年了,特意写写博客来回顾一下 ...

  4. Android之Fresco(facebook的强大Android图片加载的框架)

    Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络.本地存储和本地资源中加载图片.其中的Drawees可以显示占位符,直到图片加载完成.而当图片从屏幕 ...

  5. hdu2149巴什博弈输出

    一眼就能看出来的巴什博弈,只是要输出第一步取的值,如果m>n+1,输出m%(n+1),否则输出m到n,因为这是第一步 #include<map> #include<set> ...

  6. HDU-3853-期望/dp/坑

    LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Sub ...

  7. 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. $'\r': command not found in Cygwin

    这是因为windows下的回车符改为Unix下的回车符,用以下命令可以批量修改. dos2unix ./*

  9. .NET连接MongoDB数据库实例教程

    这则小窍门将讲述如何开发一个.NET应用来连接Mongo数据库并执行多种操作.同时还稍微涉及了Mongo数据库和多种命令. 使用代码 让我们从Mongo数据库的一些细节和基本命令开始,并最终介绍如何创 ...

  10. easyui api常用操作

    一.FORM表单类 一.textbox validatebox 验证 1.验证规则:validType : 验证规则,类型STRING|ARRAY:1个规则就直接一个字符串,多个规则写在数组里 例如: ...