在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. python 匹配指定后缀的文件名

    import glob x=glob.glob('*.py') print(x)

  2. session与cookie详解

    session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优 ...

  3. Android之Glide(非常好用的图片加载框架)

    谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech. Glide是一种快速.高效的开源媒体管理和Android的包裹mediadecoding图像加载框架,内 ...

  4. Hive之序列化与反序列化(SerDe)

    序列化与反序列化的作用 1,序列化是对象转化为字节序列的过程: 2,反序列化是字节码恢复为对象的过程: 序列化的作用主要有两个: (1),对象向的持久化:即把对象转换成字节码后保存文件: (2),对象 ...

  5. <p>1、查询端口号占用,根据端口查看进程信息</p>

    2017年6月份的时候,我就着手在公司推广git,首先我自己尝试搭建了GitLab来管理代码,并且通过以下博客记录了GitLab的搭建,以及GitLab备份,GitLab升级等事情. git学习——& ...

  6. 048——VUE中使用animate.css动画库控制vue.js过渡效果

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

  7. json.dumps与json.dump的区别 json.loads与json.load的区别(简洁易懂)

    json.dumps是将一个Python数据类型列表进行json格式的编码解析, 示例如下: >>> import json #导入python 中的json模块 >>& ...

  8. git 忽略不提交的文件3种情形

    1..gitignore文件 :从未提交过的文件,从来没有被 Git 记录过的文件 也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件.只能作用于未跟踪的文件( ...

  9. CS231n课程笔记翻译4:最优化笔记

    译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Optimization Note,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃和李艺颖进行校对修改.译文含公式 ...

  10. 【转】Linux下同时复制多个文件

    一.命令方法 1.使用cp命令 cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/ 需要注意的是这几个文件之间不要有空格 ...