mcupro 发表于 2011-6-24 14:25:44

对多种ALTERA FPGA下载器设计细节的详细分析 希望对DIY的朋友有帮助

1,并口的下载线BYTEBLASTERII,这是最原始,最慢的,在功能上是完整的,基本被淘汰的下载器,即便是你的电脑上有并口,但是不建议采用了,主要因为现在的USB BLASTER很便宜了。这个下载器可取之处是电源取自目标板子,这个思路能达到所谓的“电压自适应”。

2,除了并口的编程线之外,其他的都美其名曰:USB BLASTER。现在所见到的仿制版基本都是从一个德国站的开源代码演变过来:这个网站给出了两种方式,一种是FT245+CPLD,另外一种是使用单68013方式。我以此分析一下这两种方式:

   FT245+CPLD 这种方式和原厂的思路一样,FT245实现USB转换成类似ISA并口模式,CPLD负责主动从FT245取送数据并实现串行和并行的互变。那个德国站给了代码,和简单但是很完备。但是这还是有个BUG的,就是建立保持时间没有把握好。很多个人DIY都没有做好,有的压根JTAG没有通,有的AS模式下校验出错误。其实可以在CPLD逻辑的状态机种多加入一个状态,这个状态可以理解为等待状态或是空闲状态,本质问题就是让TCK早一点来到。当然也可以采用原来代码在硬件做点修改:将TCK以外的信号线都多经过一级缓冲能延迟30NS,虽为下策,但基本就可用,最好的方法还是改CPLD代码。

    单68013方式:我们知道应用程序(比如QUARTUS里面的JTAG SERVER)是通过驱动对USB硬件进行读写和控制,而驱动是通过PID VID以及设备描述找到USB硬件,因此可以再68013固件里面设置和USB BLASTER相应的PID VID 以及设备描述符,就可以把68013伪装成USB BLASTER里面的FT245,实现驱动程序的自动安装和设备的锁定。另外我们知道,USB虽有多种通讯模式,但是都是通过ENDPOINT来进行的,除了ENDPOINTO是双向通道之外,其他的都是单向的。在FT245+CPLD的方案中使用了两个ENDPOINT分别实现PC和USB BLASTER的通讯,我们在68013里面把这两个ENDPOINT设置成相同的,并编写和原FT245+CPLD一样的处理算法,只不过这种算法是串行的,因此速度低就实现了68013伪装成USB BLASTER和上位进行通讯对话。

    在那个德国站上公布的68013代码,只给出了JTAG模式下的实现代码,没有给出AS模式下的实现代码,但是根据FT245+CPLD里面的逻辑代码,可以轻松加入AS模式代码,在实现这个的时候,要注意一个问题,就是一定要加入FT245的厂家查询命令的支持,因为在调试NIOSII时候用到USB BLASTER,上位软件会查询一下EEPROM的内容从而知道你现在用的是什么版本的USB BLASTER。如果此时返回为0,就出现WARNING,虽不影响调试,但是比较烦人。所以这部分处理代码要加上。实现的方法就是将原厂配置芯片内容读出来,做在一个数组里面,当上位机发送读芯片命令的时候就返回这个数组。

   另外还有使用STM32 或C8051F单片机制作的USB BLASTER,和68013的实现思路基本一样。68013是我现在所知道的能达到速度最快的嵌入USB SLAVE芯片,支持HIGH SPEED,但是为什么有的使用C8051F(只能支持到FULL SPEED)做的USB BLASTER却比68013快,就是因为速度的瓶颈不是在USB接口部分,而是在IO口模拟JTAG时序上:C8051F有SPI接口,可以巧妙的使用SPI的SCK,MO,MI对应模拟TCK TDI TDO,这确实是一个不错的想法。

yuphone 发表于 2011-6-24 16:04:21

呵呵,不错。

xuzhengan123 发表于 2011-6-26 19:32:19

谢谢楼主了,受益匪浅

chenming1989 发表于 2011-7-10 16:58:09

想DIY一个那

wtwhappy 发表于 2012-5-24 13:29:30

受益匪浅{:smile:}{:smile:}

source.ant 发表于 2012-5-24 19:57:48

分析的灰常好

hunningtu 发表于 2012-5-24 20:13:28

受教了。

hamipeter 发表于 2012-5-25 00:43:58

顶一下!

fickle 发表于 2012-5-25 02:00:45

需要慢慢体会。

htjgdw 发表于 2012-5-25 09:57:30

本帖最后由 htjgdw 于 2012-5-25 10:09 编辑

期待有人能这样分析分析xilinx下载线

zhoujie9220 发表于 2012-5-26 15:11:49

顶一下!

mcuprogram 发表于 2012-5-26 15:48:47

mark                     

zhoujie9220 发表于 2012-6-1 09:27:41

楼主分析的很到位!
页: [1]
查看完整版本: 对多种ALTERA FPGA下载器设计细节的详细分析 希望对DIY的朋友有帮助