tag 标签: jic

相关博文
  • 热度 6
    2024-6-8 11:45
    4305 次阅读|
    0 个评论
    总结几个有关FPGA配置在自动化设计方面的技巧
    概述 “自动化”设计altera的设计流程中其实就是使用Quartus集成的TCL脚本编译器,用户可以编写自己的脚本来完成一些需要多次重复的动作,或者利用脚本来保存一些可以多场合重复使用的配置等到。 本文总结有关FPGA配置方面应用“自动化”手段的小技巧,其中一个有关自动生成JIC配置文件,另一个就是如何批处理自动下载配置文件技巧。 JIC配置文件 Altera的FPGA有一种配置模式叫主动串行模式,即AS模式(最新有ASx4模式)。该模式可以通过EPCS这种Flash性质的配置芯片来对FPGA进行配置,需要注意的是Altera或Intel已经不生产这种基于Flash的配置芯片EPCS了,随着FPGA 规模越来越大,Flash配置芯片大多支持ASx4模式,Altera目前推荐使用的是EPCQL。而AS配置模式下,配置芯片的烧写有两种方式,一种是直接通过AS口直接独立地烧写POF文件,这样就需要给电路设计一个独立的10针插座;还有一种方式是可以借用JTAG的接口桥接方式来烧写,只是需要事先将配置文件*.sof文件转换成JIC文件。 JIC配置文件手动转换 Convert Programming Files...),该工具打开的界面如图1所示。 图1:配置文件转换工具及生成JIC的相关设置 JIC配置文件自动转换 通过脚本可以让Quartus II在全编译过程的同时自动生成JIC文件,这样只要首次进行配置后,后面项目任何更改后都会在全编译时自动生成JIC配置文件,而不需要如上述那样再手动将SOF文件转换为JIC文件。具体 方法是,设计者事先要确认一个正确的转换设置(不同的设计可能设置会有不同),再将这种设置保存到一个*.cof(这里命名为jicgen.cof)文件之中,如图2所示。 图2:将SOF文件转换到JIC文件的转换设置保存到COF文件 接着是编写一个简单的TCL脚本文件(这里将该文件命名为JicGen.tcl),该脚本文件中其实就一句话,即“exec quartus_cpf -c jicgen.cof”。 exec quartus_cpf -c jicgen.cof 最后一步是在工程的配置文件*.qsf文件中添加一句 “set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:JicGen.tcl"这样工程在编译结束后会为我们自动生成所需的JIC文件了。添加这条配置的目的,就是Quartus在编译过程中会适时地执行这条配置,并依据本条设置调用上述TCL脚本文件来产生JIC文件。 set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:JicGen.tcl FPGA配置文件自动下载 Altera的FPGA程序 在线 下载一般都是在打开Quartus II软件进行项目开发的过程中进行,当然也可以在调试过程中通过SignalTap II下载sof文件,同时,在后期也可以只打开Programmer来单独下载程序。上述方法都是需要打开GUI界面,本文介绍一种通过批处理在未打开GUI界面的情况下下载程序到FPGA。 1. 条件: 本条技巧涉及到的程序下载方法,都是需要经过下载电缆,所以条件之一就是必须要有一根USB-Blaster电缆,同时必须安装了Quartus II软件或单独安装Programmer亦可。这是FPGA在线配置的必要条件。 2.使用的命令及格式 下载使用的是集成在Quartus II软件中的“quartus_pgm”命令。为了自动化执行,需要手动生成一个Batch文件,将对应具体命令拷贝到这个BAT文件即可,这样在需要下载配置文件的时候,可以单击鼠标完成,而不需要打开GUI下载界面。BAT批处理具体格式如下: 1)、下载SOF文件 %QUARTUS_ROOTDIR%\\bin64\\quartus_pgm .exe -m jtag -c USB-Blaster -o " p ;output_file .sof " 2)、下载JIC文件 %QUARTUS_ROOTDIR%\\bin64\\quartus_pgm .exe -m jtag -c USB-Blaster -o pvbi;output_file .jic 注: 上述命令可能需要用户根据自己软件版本、硬件条件进行适当调整。比如32-bit版本就是将上述bin64修改成bin32,然后是usb-blaster下载线也要依据具体硬件来进行适当修改,因为现在usb-blaster升级到二代,而且有时可能电脑上连接有不止一根下载线。
  • 热度 19
    2016-2-16 11:56
    2512 次阅读|
    0 个评论
            大家知道Altera的FPGA可以通过EPCS这种Flash性质的配置芯片来进行配置,而EPCS芯片的烧写有两种方式,一种是直接通过AS口直接独立烧写POF文件,这样就需要给电路设计一个独立的10针插座;还有一种方式是可以借用JTAG的口来烧写,只是需要事先将配置文件*.sof文件转换成JIC文件。           JIC文件的转换方法,是在工程全编译后生成SOF文件,然后再通过QII文件菜单下的转换工具来进行转换,如图1所示。   图1:配置文件转换工具            今天给大家介绍一种通过脚本让Quartus II在编译过程的同时自动生成JIC文件。前提是设计者事先要确认一个正确的转换设置(不同的设计可能设置会有不同),再将这种设置保存到一个*.cof(这里命名为jicgen.cof)文件之中,如图2所示。   图2:准确设置配置文件转换选项并保存到COF文件            接着是编写一个简单的TCL脚本文件,该脚本文件中其实就一句话,即“exec quartus_cpf -c jicgen.cof”。            最后一步是在工程的配置文件*.qsf文件中添加一句 “set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:JicGen.tcl"” 这样工程在编译结束后会为我们自动生成所需的JIC文件了。
  • 热度 24
    2016-2-1 17:58
    3745 次阅读|
    4 个评论
        我们在学习和调试NIOS II工程的时候,一般都是先使用Quartus II软件中提供的Quartus Programmer来烧写FPGA配置文件(SOF),然后NIOS II EDS中提供的Flash Programmer工具来进行烧写NIOS II的。这对于开发者来说,并没有什么不便,反而因为这种方式的灵活,为开发带了了很大的便利。然而,当我们的产品已经设计完成并量产的时候,就需要将固件烧写到产品中。生产线上进行烧录时,总希望能够用最简单的方式实现。试想,如果生产线上在进行烧写时,还需要几个工具换来换去,等待很久,效率自然就下去了。因此这种Quartus Programmer+Flash Programmer的方式并不适合生产。       小梅哥在最近的工作中也遇到了这样的问题。我们新设计的一批开发板,在工厂生产完毕后,都要进行出厂测试。然而SMT厂家却并不熟悉我们的这种Quartus Programmer+Flash Programmer烧写方式。再说了,要使用这种方式还得安装Quartus Programmer和NIOS II EDS软件。厂家表示使用这种方式对他们来说有一定难度,而且效率也不高。所以我就根据Altera 官方网站上的一个帖子,进行了转换,将SOF文件和NIOS II的elf固件合并并生成了一个jic文件,这样,厂家就只需要使用Quartus Programmer来烧写这个jic文件就能实现同时烧写FPGA配置文件和NIOS II固件的功能了,简化步骤,节省时间。       从SOF文件和ELF文件得到JIC文件的原帖地址如下: https://www.altera.com.cn/support/support-resources/knowledge-base/solutions/rd10132010_126.html       因为有经验不足的朋友反映在看了这个教程后还是不知道怎么操作,总是不成功,因此这里小梅哥使用我们芯航线FPGA的开发板,一步一步演示这个实现过程,将整个过程具体化。      先说明下我这个设计工程的结构(温馨提示:点击图片可查看高清大图): EPCS16 : 用来存储FPGA配置文件和NIOS的固件,本例中最终转换得到的JIC文件也是烧写到该器件中。 512K 字节 SRAM : 作为NIOS II运存或者4.3寸TFT显存,这里作为TFT显存。(PS:使用SRAM作为运存,相较于使用SDRAM作为运存,NIOS II的性能会有较大的提升。) 128Mbit SDRAM : 作为NIOS II运存或者4.3寸TFT显存,这里作为NIOS II运存。以运行较为复杂的程序或者GUI。 4.3 寸 TFT : 用来显示文字/图片等内容。 XPT2046 触摸控制器: 使用SPI接口,用来得到触摸屏信息,实现人机交互 CH340 USB2TTL : 将UART协议与USB协议进行互相转换。以实现调试的功能。 4bit LED : 指示程序运行状态。 2X 轻触按键: 输入控制信息      介绍完了这个系统,接下来就可以介绍整个转换过程了: 1   sof2flash:    从一个.sof 文件生成一个flash文件: sof2flash --input= .sof --output=hwimage.flash --epcs –verbose     首先我们打开我们的NIOS II软件工程和对应板级支持包,这里名为tft_touch和tft_touch_bsp (温馨提示:点击图片可查看高清大图)    然后选中tft_touch,单击右键选择Nios II  -  Nios II Command Shell (温馨提示:点击图片可查看高清大图)      我们的Quartus II生产的sof文件名为” TFT_SRAM.sof”,这个时候,如果我们直接输入 sof2flash --input= TFT_SRAM.sof --output=hwimage.flash --epcs –verbose    会提示找不到input file也就是找不到TFT_SRAM.sof文件。 (温馨提示:点击图片可查看高清大图)    这是因为该命令是在当前目录下寻找TFT_SRAM.sof文件,而我们的TFT_SRAM.sof文件在E:\easy_sopc\TFT_SRAM\prj\output_files目录下,因此当然无法找到该文件了。解决这个问题的方法有两种。 第一种,推荐方案。    因为很多不熟悉命令行的朋友在操作时速度慢而且容易出错,因此这里提供一种比较熟悉的方式。首先在windows中,将TFT_SRAM.sof文件从output_files文件夹中拷贝到tft_touch文件夹中 (温馨提示:点击图片可查看高清大图) :    然后回到命令行窗口再次执行 sof2flash --input= TFT_SRAM.sof --output=hwimage.flash --epcs –verbose命令    (提示:使用键盘上的向上方向键,可以快速切换到之前使用过的命令,这里在切换目录后,连按两次方向上键就应该能找到之前输入的sof2flash命令。)生成过程大约花费10秒钟。生成完成后的截图如下所示 (温馨提示:点击图片可查看高清大图) :    然后我们输入ls命令就能看到,确实生成了这样一个名为hwimage.flash的文件 (温馨提示:点击图片可查看高清大图) :      第二种方案:首先在shell中使用cd命令直接将目录切换到sof文件所在目录,也就是E:\easy_sopc\TFT_SRAM\prj\output_files。相应命令为(注意斜线方向): cd e:/easy_sopc/TFT_SRAM/prj/output_files (温馨提示:点击图片可查看高清大图)      然后再次执行sof2flash命令即可实现。生成完成后的截图如下所示 (温馨提示:点击图片可查看高清大图) :    然后我们输入ls命令就能看到,确实生成了这样一个名为hwimage.flash的文件 (温馨提示:点击图片可查看高清大图) :      一般推荐大家使用第一种方式,当然命令行高手除外。   2   elf2flash:    从一个,elf 生成一个flash文件: elf2flash --input= .elf --output=swimage.flash --epcs --after=hwimage.flash --verbose    因为推荐大家使用第一种方式操作,因此这里就按照第一种方式接着讲,相信有能力用命令行方式切换目录的朋友,也不会对其他操作存在问题。 这里我们就只需要直接输入elf2flash命令即可了,命令详细如下: elf2flash --input=tft_touch.elf --output=swimage.flash --epcs --after=hwimage.flash –verbose    从命令中可以看到,第一步生成的hwimage.flash文件是作为了参数的一部分的,所以这里必须保证hwimage.flash在当前目录下。(第一步中使用推荐的方式,则能够自动保证这一点)。命令执行结果如下 (温馨提示:点击图片可查看高清大图) :    然后我们输入ls命令,可以看到,在当前文件夹下确实生成了一个名为swimage.flash的文件 (温馨提示:点击图片可查看高清大图) : 3   flash2hex:    转换.flash文件到.hex文件:直接输入以下命令(注意:altera官网中原帖这个地方命令有误,前后对应不上,原帖为nios2-e…… mysw.flash mysw.hex,应该讲mysw改为swimage): nios2-elf-objcopy --input-target srec --output-target ihex swimage.flash swimage.hex    这个命令瞬间执行完成,我们ls下,就能看到当前文件夹下已经生成了一个swimage.hex的文件 (温馨提示:点击图片可查看高清大图) : 4   Convert Programming Files    在Quartus® II软件中,open File Convert Programming Files  Set the programming file as JTAG Indirect Configuration File (.jic). (温馨提示:点击图片可查看高清大图)     5   选择EPCS    在配置下拉菜单中选择合适大小的EPCS器件(见10步图) 6   命名jic    命名你的输出.jic 文件(见10步图) 7   Add Device    点击Flash Loader的下面,在右边选择Add Device (见10步图) 8   选择FPGA器件    从列表中选择你的FPGA器件(见10步图) 9   Add SOF    点击SOF Data,选择Add File,选择加.sof 文件(见10步图) 10 Add Hex data    点击Add Hex data,选择Relative addressing,选择上面生成的.hex 文件 (温馨提示:点击图片可查看高清大图)   11 Generate    然后点击Generate生成。生成完成后检查生成的 .map 文件(使用记事本打开)有Page_0在起始地址0x0,.hex文件在Page_0结束地址后的起始地址1 (温馨提示:点击图片可查看高清大图)   12 烧写    现在在Quartus II Programmer中,选择Add File,选择加.jic 文件。检查Program框,下一步.jic 文件,接着按Start即可。   13 女神镇楼    最后上一张测试图,女神镇楼(话说放这样一张图给客户,客户是不是会觉得特别开心呢) (温馨提示:点击图片可查看高清大图) :      如有更多问题,欢迎加入芯航线FPGA技术支持群:472607506   小梅哥 芯航线电子工作室 2016年1月30日星期六      
  • 热度 11
    2015-8-9 16:56
    996 次阅读|
    0 个评论
    本文主要描述如何生成jic文件。
  • 热度 21
    2012-12-3 12:12
    9387 次阅读|
    7 个评论
          前面有博文介绍了单个JTAG链上挂多个FPGA结构中如何应用Virtual JTAG进行项目调试,那么调试完成后就要将配置文件固化到配置芯片里,这里的配置芯片指的EPCS系列,当然可以直接将pof文件(注:由于是一片EPCS芯片配置多个FPGA,所以这里的pof文件是经过转换的pof文件)通过AS模式下载到EPCS芯片里。还有一种间接的方式就是通过在FPGA中例化flash loader经JTAG将配置信息烧写到EPCS配置芯片里,如果成功,那么在实际量产的时候就可以省略一个AS接口。        关于单链单FPGA的结构的情况,这里不做介绍,网上搜索一大堆,这里在此基础上介绍一个jtag挂多个FPGA结构如何生成jic并进行下载。图1是jic文件转换时的设置,跟单片时区别不大,唯一不同就是在SOF Data区域要加入多个sof文件。   图1 多个sof文件转换成jic文件         这里还需要提及的是在图1的JIC文件转换设置界面里,有个Mode设置项,可以选择“Active Serial x4”,图2所示。我选择的是x1模式,x4没有试过,应该对应的是快速AS加载模式。   图2 Convert的时候Mode的选择       下面开始介绍如何下载jic文件到EPCS芯片中去,一开始我犯了一个错误,导致programmer给了我一个错误提示,并下载失败。我犯的错误如图3所示,即只单独在programmer里add了一个jic文件,如果这时候点击“start”就会报如下error: Error (209031): Device chain in Chain Description File does not match physical device chain -- expected 1 device(s) but found 2 device(s).   图3 单JTAG链多器件结构单独add jic文件          实际上,这种结构在通过jtag下载sof文件的时候也不能只加载一个器件的sof必须链上所有器件的sof文件都下载进去,那么程序才能下载成功,因为硬件上所有器件的config_done引脚都接到一起了,所以链上任何一个器件未加载都会导致整个链路加载失败(因为configure done无法拉高)。       所以在烧写jic文件的时候必须象这种结构直接烧写sof文件那样,除了flash loader以外,其他所有器件也必须加载程序。图4显示了给链上第一片FPGA分配为flash loader,并为其加入JIC文件。   图4 给flash loader加入jic文件   那么剩下的器件就加上任意可用的sof文件即可,反正也只是临时性的烧写进去,如图5所示。   图5 剩下的器件加入任意可用的sof即可        所有文件加入完毕后如图6所示,这个时候必须注意的是,就像前面所说的那样,必须所有器件同时加载,不然会导致下载失败,也即在“Program/Configure”这一列必须勾对所有选项,我做了个实验,就是只勾对jic对应的器件,下载后就会出现如图7所示的错误提示。   图6 JTAG链上所有器件加入配置文件完成   图7 单JTAG链多器件结构下只加下载flash loader的时候报错          最后,按照图6所示设置好以后,点击“start”下载所有FPGA,以及烧写配置文件到EPCS配置芯片中,整个配置流程的信息如图8所示。   图8 整个下载过程的message          从上图我们发现整个下载过程耗时1分40秒,这里有个问题可以留给大家思考下,就是本博文介绍的是将第一片FPGA做为flash loader,那么第二片可否作为flash loader呢?!