1056
当我们需要用这种重复配置的时候,可以选择这种方式。
我们重点看JTAG。
这是做被动配置。
被动配置的时候,仍然用USB-Blaster,就是我们现在的适配器来做。
但是我们现在开发板上没有做PS的口。
为什么我们看见很多类似做项目的?
1057
这个也说明了一个思维的惯性。
当初Altera给出中国的开发板上,就是友晶的DE2开发板上,它就有两个配置口,一个AS的配置口,一个JTAG的配置口。
友晶那个开发版之所以要这么做,是想向它的用户来说明,FPGA有这些配置的模式。
而后面的工程师呢,来做自己的开发板的时候,照葫芦画瓢,每一个配置都做,实际上只要选一个对自己有用的即可。
不必每个都做。
这都是PS的。
下面是JTAG,这是我们的重点。
AS是做什么呢?
非常快嘛。
它只要有一个主动串行配置的芯片配合FPGA,开机就能用。
1058
当然快,但是它不能调,它不支持调试。
什么是调试呢?
就像内置的逻辑分析仪,它并不支持这种调试。
PS也不支持调试。
PS可以用外围芯片来做,外围的单片机来做配置。
如果做AS的配置的话,通常只有一次。
就是FPGA主动,上电了以后FPGA主动地要一次网表。
但是你做PS的时候,你就可以用外部的单片机主动地来做多次不同网表的配置。
1059
第一次,我是做一个图像,第二次,我是做通信,等等都可以。
但是PS也不支持调试。
JTAG呢?
JTAG都支持。
JTAG就是慢一点。
它既支持这种配置,也支持调试。
它既支持SOF的配置,它也支持做闪存芯片的烧制。
它也支持边界扫描,它还支持内置逻辑分析仪。
JTAG是什么都支持,只是在不同的情况之下它可能慢一点。
如果我们要选择配置的话,当你的项目是处于研发阶段,你的网表还没有固定下来的时候,JTAG千万不要删掉。
因为有很多调试工作必须要它完成。
当JTAG一旦完成了之后,你可以把JTAG改成AS口。
1100
这时候不需要调了嘛。
一个AS口非常方便,装配的时候非常方便,只要贴一个片子上去就行了。
这是我们开发板上用的JTAG口的连接。
JTAG口的10脚的连接器。
一个在片的USB会配置一个芯片。
当然烧制的就是对应的sof文件。
烧到FPGA里面去了。
FPGA是基于挥发性的SRAM的结构。
可以运行,一掉电就没有了。
在这种情况之下,如果用一个JTAG口,来既支持配置,又支持调试,该怎么做呢?
它也可以支持外围的像PS那种应用,就是由外部的处理器来实行的方法。
所以说JTAG呢,是一种万能的使用的方法。
这个时候的网表在单片机的Memory里面。
1101
可以这么做。
非常重要的,就是这张图。
这张图上说的是什么呢?
就是JTAG配置的时候,这是配置一个器件,使用下载线。
JTAG配置的时候呢,既可以支持基于挥发性的SRAM的programming,也可以支持将网表下载到它的闪存芯片里面。
当把网表通过JTAG口下载到闪存芯片里的时候,这个时候FPGA上很有意思,它是称之为一个Serial Flash Loader,就是串行闪存的一个桥路,一个安装器。
这个里面就是把FPGA重新下载一个固定的IP核,免费的IP核,它做成一个桥路。
1102
通过这个桥,把USB装到闪存芯片里面去。
这个过程我给大家做一遍。
还用刚刚我们那个例子。
打开文件夹,双击qpf文件。
刚刚已经全编译了。
全编译了以后,打开编程器。
是sof文件。
1103
如果连上开发板,这个start是亮着的。
点击start以后,就会下载到开发板上去。
就是这个sof的顶层的网表。
它有个进度条。
进度条结束以后,看得到是通过JTAG的TDI和TDO这根线,装到芯片里面去的。
这个芯片呢,就是FPGA的芯片。这个芯片是挥发性的。
掉电就没有了。
所以说下次要运行的时候,你还得再装一次。
所以说sof文件直接烧制到它的RAM里面去,这一步呢,我们称之为编程,programming。
如果想要烧制到flash芯片里面,那么可以采用它的这个电路来做。
具体的操作是这样的。
首先你要将顶层的网表转变为一个特定的文件,称之为间接配置文件。
1104
在file菜单下面有一个convert programming files,转换编程文件,点击它。
在这个窗口上会有一些选项。
它的默认选项就是pof,就是AS的选项。
现在呢,我们做开发板的时候,不做AS口可不可以?
当然可以。
而且是最优的做法,是Altera推荐的做法。
选这个。
JTAG Indirect configuration file,JTAG间接配置文件。
然后选择配置芯片。
1105
我们这个芯片是什么型号?
Stratix II,用EPCS16可以。
我们用的是EP2S15的系列。
输出文件名,你可以自己敲一个,默认的是output_file。
然后选择它的loader,就是我们手册上所看见的这个loader。
Loader,你必须要指明用哪个loader。
Loader是要跟设备有关嘛,是用什么样的器件?
