搜索
bottom↓
楼主: cznlpy

开源的Altera、Xilinx、Lattice三合一USB下载线★火爆、★炫耀、★讨论中!

  [复制链接]

出0入0汤圆

发表于 2009-11-24 14:47:11 | 显示全部楼层
mark~~~

出0入0汤圆

发表于 2009-11-29 17:00:37 | 显示全部楼层
mark2

出0入0汤圆

发表于 2009-11-29 22:56:32 | 显示全部楼层
mark3

出0入0汤圆

发表于 2009-11-30 09:35:19 | 显示全部楼层
强烈支持楼主这的伟大行动!密切关注中...

出0入0汤圆

发表于 2009-11-30 19:10:20 | 显示全部楼层

出0入0汤圆

发表于 2009-11-30 21:18:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-3 10:46:34 | 显示全部楼层
用LPC1766 USB 端点可以任意,并且支持双向端点

出0入0汤圆

发表于 2009-12-3 10:51:49 | 显示全部楼层
cool

出0入0汤圆

发表于 2009-12-3 17:13:06 | 显示全部楼层
【209楼】 SWJ-DP

lpc17xx不也是全速USB么。跟STM32相比没啥优势(除了缓存大,主频快点)。而且封装都很大,我们完全可以用100脚以下的
STM32芯片。主频不是问题,反正有DMA,也没有啥需要高速处理的数据。至于双向端点,我们需要模拟的设备都没有使用
(将来也不可能使用,因为都不支持)双向端点。

现在还是希望能找到一款比cy7c68013a更合适的高速USB的芯片(支持EP1/2/4/6/8即可,其中2/4/6/8要求必须支持512字节的bulk;
1只要支持64字节的bulk就够了[只有USB-Blaster用EP1])。

对了,dr2001,话说,我们认为cy7c68013a不能用是因为不能屏蔽0xa0的VR,但是我们干嘛要屏蔽他,直接替换那个hex文件,让他
下载我们自己的固件不就行了么?可以写个监控程序,发现我们的设备插入后,就替换下那个hex,同时改成XPCU的VID/PID重枚举;
我们的设备拔出后再把那个文件替换回去就行了。 我觉得这个解决方案是可以接受的。
如果用全速USB设备,那TCK的速度可就快不了……
如果做个性能远不如原装的,即使是三合一,我觉得吸引力也不会太大的。

出0入0汤圆

发表于 2009-12-3 17:36:03 | 显示全部楼层
to 【211楼】 minux 啊啊?
有没有办法检测cy7c68013a是否收到0xa0
如果有办法的话,干脆就让他覆盖固件,在固件更新后的瞬间劫持68013去执行我们的代码(用复位或者其他方法)

出0入0汤圆

发表于 2009-12-3 20:03:54 | 显示全部楼层
To 【211楼】minux && To 【212楼】 h2feo4
就我所知,0xA0在68013自身是不能屏蔽的,因为手册我看到的有这样的几个要点:
1、0xA0永远激活,可以从上位机调用;
2、0xA0使用的时候,首先要通过0xA0命令,把51内核设置为Reset状态,更新完Firmware数据后,Release 51内核,继续运行。

MCU上解决的方案我能想到的,就是Reset向量,短小精悍的代码,重新Load Firmware,回复原有功能。问题是:
1、如果上位机覆盖了Reset向量和相关的代码,那么Over。
2、上位机如果使用0xA0升级,说明原来的Firmware和上位机的某些认证,版本信息不对应,不更新自己的Firmware,估计会是个死循环的。
68013自身上解决的方案,我持相对悲观的态度。

对于上位机本身的解决方案,以Xilinx为例,问题在此:
1、XPCU的Firmware保存在SYS文件里,不是HEX。HEX文件里是Impact启动的时候,动态升级用的,原始的Firmware不是那个。
2、XPCU实际上用的一个VID,两个PID;PID-1是Boot的,.SYS会调用0xA0把自己保存的Firmware下载过去,重枚举成PID-2;PID-2是运行用的,这个Driver用的是WinDriver,不是本身带的.SYS。
3、Impact HEX文件的自升级问题好解决:
3-1、删除HEX和CPLD的Firmware文件就直接OK,因为Impact检测不到新的版本,就不会有更新操作;我测试过删除HEX的情况,CPLD的情况没条件测试。
3-2、协议返回一个非常NB的版本号,100年后才能到达的,也不一定会导致升级操作。但是降级操作会不会发生不清楚,没有HEX/FMWR,我估计不会。
对于Xilinx的情况,在68013下,其实好说:
A、直接用PID-2(0x8?)重枚举;
B、处理掉相关的HEX/CPLD文件;返回比较大的FW版本号。
制造0xA0不发生的条件,主动规避。但是,Impact或者ChipScope调用0xA0写,我们是一点办法都没有的。

最狠的方法是写一个USB协议栈的Filter,劫持掉0xA0。不过这个方法不和谐,毕竟不是谁都喜欢装一个Driver Filter。

办法还是需要想想看。
我只简单了解了Xilinx的情况,因为没有用过Altera, Lattice, Actel的开发工具,对他们没有任何结论。

出0入0汤圆

发表于 2009-12-3 20:51:23 | 显示全部楼层
to 【213楼】 dr2001  
如果在这种特殊情况下如何:
使用128脚的68013,EA=1
增加一块片外储存器
增加一个单片机作为副处理器

我们自己的68013固件中,在某个印脚输出一定频率的方波,让副处理器检测(或使用其他手段检测固件是否被覆盖)
如果副处理器检测到这个方波消失,则证明68013程序跑飞或者固件被修改
在恰当的时候,副处理器通过RESET脚复位68013,这样也许可以强迫68013重新从外部储存器中加载我们的代码
如果复位的时机恰当,应该可以实现无缝连接

举个例子:
CY7C68013A + 61LV256 + STM32F(或任意一款带有高速SPI的处理器)
STM32控制68013的复位端、EA脚,并可以屏蔽61LV256的WE脚
第一次上电时,使用我们自己的PID/VID枚举,通知STM32打开61LV256的写屏蔽,向61LV256内写入固件的备份,然后通知STM32屏蔽61LV256的写入
使用目标下载线的PID/VID重枚举,开始工作,68013只作为USB接口芯片,主要任务由STM32完成
如果发生固件被覆盖,只要STM32在恰当的时候对68013复位,并保证EA=1,我们的固件就回来了,而且可以保证无缝连接

出0入0汤圆

发表于 2009-12-3 21:53:28 | 显示全部楼层
搬张凳子漫漫看

出0入0汤圆

发表于 2009-12-3 23:10:45 | 显示全部楼层
To 【214楼】 h2feo4
您的这个方案应该是具有相当可行性的。

这里的问题在于,使用68013内部的寄存器Hold/Reset 51内核之后,是否会采集EA电平,决定程序从内部SRAM还是外部SRAM执行?
不知道哪位很熟悉这个问题,能直接回答一下?
这点我还需要核查手册。

由于68013 0xA0操作一定会伴随使用内部寄存器Reset Chip的操作,这是手册要求的,下载程序的时候必须Hold Core在Reset状态。即68013在上位机0xA0命令完成后,一定会断开一下USB,重枚举。
只要EA=1 + 片内Reset,能让程序不管内部下载的啥,都跑外部SRAM运行程序,问题其实就解决了。

加一个SPI/IIC之类的IO扩展器,Reset的时候让EA=0,自己的FW配置完毕,备份FW到外部SRAM,然后命令EA=1并保持。任上位机怎么修改,SRAM的FW就会岿然不动。问题完美解决,想怎么用,就怎么用了。

出0入0汤圆

发表于 2009-12-3 23:17:14 | 显示全部楼层
68013复位的时候,USB连接也断了吧……

而且,即使这个方案可行,我觉得也太复杂了。我原来也想过类似的措施,不过为了用68013,而再多加一个单片机做它的看门狗,实在是有点浪费……

所以,我觉得还是尽可能不让他们覆盖固件的办法吧。

有没有有条件试试dr2001说的,直接用第二个PID枚举,是不是会跳过下载固件的阶段?

要不,就不用68013,用68001,自己加个单片机(这样就可以选个稍微强大点的比如STM32了)控制。
不过,这个不可能实现USB-Blaster,因为UB要用EP1。

出0入0汤圆

发表于 2009-12-3 23:18:22 | 显示全部楼层
还有ISP1581,经典的芯片,对于EP的支持,只要是没人用EP8的话没问题。
不过这个你得自己处理很多USB Standard Request,68001会自动帮你搞定。

出0入0汤圆

发表于 2009-12-4 00:10:23 | 显示全部楼层
经过简单查阅EZ-USB的TRM,初步认为68013(128Pin) + SRAM(至少16KB) + FPGA(XC3S50A)的结构基本可行。视情况可能需要74xx简单逻辑辅助。

参考手册:EZ-USB Technical Reference Manual, Document # 001-13670 Rev. *B
参考章节:
7.7 Reset Summary,复位什么不复位什么。
5.3.2 128-Pin EZ-USB Chip:Note that the EA pin is ‘live’, meaning it is always active and not just sampled coming out of a chip reset.

全动态操作,参考基本流程:
- EA=0,默认Boot,IIC读VID/PID(特殊VID/PID),USB枚举,加载USB驱动,使用0xA0下载FW-DEF。
- FW-DEF运行,用户通过交互界面等选择目标下载线,如选择了XPCU。
- 用户界面基于FW-DEF:1、配置FPGA(BitBang,GPIF);2、下传FW-XPCU到片外SRAM。
- FW中共有的特殊程序段:设置FPGA/其它保持逻辑,切换EA=0 -> EA=1。此步需同地址有同程序。
!此后片内SRAM只是DataRAM;片外SRAM是Program。!
- 用户界面基于0xA0:Hold 68013;Release 68013。(制造CPU Reset)
- FW-XPCU运行,使用XPCU VID/PID重新枚举,上位机加载XPCU驱动运行。
由于EA=1不变,不管上位机怎么0xA0,都是操作内部SRAM;但是EA=1决定代码始终走外部SRAM,不受影响。
万事大吉。


当然,使用上还有一些细节需要考虑:
用户怎么选择不同的下载线?驱动怎么携带?EA=1,挂Flash有更好的效果?FPGA在线重配置?

比如,可以考虑,EEPROM挂一个内置的MassStorage的FW,加上SD卡,Boot起来就直接有的可以选择界面,完成后自动重枚举。
用户换下载线的话,按一下盒子上的复位键。。。

出0入0汤圆

发表于 2009-12-4 00:18:17 | 显示全部楼层
to 【219楼】 dr2001
XC3S系列的FPGA可以直接使用8位并行配置,速度会快很多
配置完成后可以直接作为总线使用

有一种方法可以检测插入的目标板类型
就是装三个插座,分别给三个公司的器件用,每个插座的VREF单独检测
看哪个VREF上电,就加载哪个固件
我用此法做过自动识别多功能并口下载线,在XC9536中实现了 Xilinx +Altera + AVR 并口下载线,全自动切换,插哪个用哪个,不用下电

出0入0汤圆

 楼主| 发表于 2009-12-4 00:20:43 | 显示全部楼层
【219楼】 dr2001

还没谁呢,兄弟。。。我30分钟后给您发邮件,把照片传给您,您再把您的板卡图拿出来秀秀。。。
此外,周六我去工厂那边焊接,焊接完毕后就当场调试。。。给您调试出3块。您什么时候有时间过来去。。。。

出0入0汤圆

 楼主| 发表于 2009-12-4 01:19:32 | 显示全部楼层
【209楼】 SWJ-DP

欢迎您的到来和加盟。。。对您的“ULINKPro”架构“Virtex-4 + CY7C68013A”非常感兴趣。。。您的是原装的板卡吧。有时间发邮件联系lpyczn@yahoo.com.cn。

出0入0汤圆

 楼主| 发表于 2009-12-4 01:27:28 | 显示全部楼层
感谢minux 啊啊?、h2feo4 无机酸、【219楼】 dr2001三位兄弟的讨论。。。

看来今晚是比较热闹地。。。

出0入0汤圆

发表于 2009-12-4 15:00:51 | 显示全部楼层
to 【222楼】 cznlpy SOPC创业联盟


我没有ULINKPro仿真器,据说要价10k

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3431050&bbs_page_no=2&bbs_id=1032   6楼的图片是来自www.keil.com


我对三合一的仿真器感兴趣, 对USB熟悉,如果有什么可以帮忙的联系我,shaoshunda@126.com

出0入0汤圆

发表于 2009-12-4 15:26:15 | 显示全部楼层
To 【220楼】 h2feo4
您这个建议赞。

实际上我的想法是这个东西不局限在下载线上,能够支持更多的JTAG或者类似调试协议。
尽管用Vref比较简单,但还是需要好的选择方案。

只用68013+FPGA也不是不可以,不过需要一些精巧的工作,这个还需评价一下。主要是功能还没最后定。

出0入0汤圆

发表于 2009-12-4 16:33:03 | 显示全部楼层
to 【225楼】 dr2001
可以将核心板、储存器板、IO板分开
用规模大一些的FPGA(例如XC3S400A、XC3S500E)+ 68013 + (61LV256 ?) + SD卡 做为主板
留出一些接插件,背面可以加一块SDRAM/总线扩展板,正面可以加一块IO/电平转换扩展板
这样就无敌了
通过选择不同的扩展板,可以兼容下载线、仿真器、运动控制卡、LED屏控制卡、逻辑分析仪……
不过貌似太花哨了

检测VREF的方法还是比较容易实现的,如果只考虑VREF在2.5V-5V范围的话,一片XC9536大概可以装下12-15种并口下载线,并实现自动切换

出0入0汤圆

发表于 2009-12-4 20:06:30 | 显示全部楼层
没必要那么花哨吧,我觉得把相关的几个功能做好就好了。
编程器,JTAG调试器,逻辑分析仪
足够了。

其他的功能再加上就成开发板了,成本也不好控制。

68013a用EA来绕过0xa0我还真是没想过,确实是个好办法。

我觉得除了FPGA之外不需要其他的数字芯片了,我们让16KB SRAM同时映射在0x0000-0x3fff和0x4000-0x7fff
使用68013a的OE#, CS#和WR#来控制SRAM,这样就齐备了。

让68013a的一个IO控制EA即可(得加下拉电阻保证初始化时候EA=0)。

可以考虑用铁电RAM,这样甚至可以上电就EA=1
为了考虑意外情况,可以在EEPORM中做一个恢复模式的程序,用于恢复RAM的内容
(EA平时为1,如果遇到RAM内容破坏,直接用跳线或者按钮将其强制拉低,就可以让EEPROM恢复RAM的内容了)
EA保持为一,可以避免我们动态切换EA可能导致的问题(数据手册并没说在执行中动态切换EA是没任何影响的)

出0入0汤圆

发表于 2009-12-4 20:42:23 | 显示全部楼层
to 【227楼】 minux 啊啊?
如果使用FRAM的话,68013内核就必须减速运行,因为最快的FRAM读取也要55ns,而68013 @ 48MHz需要43ns或者更短的读取时间

(原文件名:tmp-20091204A.PNG)

如果使用FPGA的内部RAM映射的话,速度倒是没有问题,但是如果还想始终让EA=1的话,就要保证FPGA配置先于68013启动(就要用带FLASH的FPGA或者另加配置芯片)

妥协一点的办法是在FPGA内留一个小电路,切换时让FPGA先复位68013,并在复位过程中修改EA

出0入0汤圆

发表于 2009-12-4 23:15:01 | 显示全部楼层
对,用F-RAM 8051只能跑在24MHz,成本也是个问题。

后来我又想了一个办法切换,就是先跳转到0x4000开始的区域去执行,然后直接用GPIO改变EA即可。
这样改变前后不涉及取指区域的改变,出问题的可能性可能会小点。

使用FPGA内部的BRAM的话,要么我们选大点的FPGA,要么我们缩减程序的大小……
或者可以这样,上位机把程序写入EEPROM的后面,然后用FPGA里的RAM映射,其代码只完成把EEPROM中的代码加载回去,
然后就切换回去EA=0执行了。

出0入0汤圆

发表于 2009-12-5 00:48:22 | 显示全部楼层
to 【229楼】 minux 啊啊?
FRAM暂时可以先不考虑

EA最好还是始终=1,如果有EA=0的时候必须保证不会有意外的0xA0下来

用较大容量FPGA的话,例如XC3S250E(估计40块钱左右吧)有24KB的BRAM,拿出16KB给68013也许还可以接受

可以考虑这样,保证全程EA=1
XC3S250E配AT45DB161D作为启动配置
用一些电路保证68013的启动晚于FPGA配置完成
配置完成后让68013直接从FPGA的BRAM中开始执行

出0入0汤圆

 楼主| 发表于 2009-12-5 01:48:58 | 显示全部楼层
飘过。。。

【227楼】 minux
可以把Jlink融进去。。。我看见您已经实现了xLink ARM-OB STM32。
咱们论坛板块要是有taoist大虾、jlinkpro大虾、nihke大虾、nihke2大虾参与就更好了。。。(排名不分先后)

【230楼】 h2feo4 无机酸
什么时候回来呀。。。回来通知一声。。。

出0入0汤圆

发表于 2009-12-5 10:47:03 | 显示全部楼层
to 【231楼】 cznlpy SOPC创业联盟
估计要1月下旬了……

出0入0汤圆

发表于 2009-12-5 17:10:39 | 显示全部楼层
把JLink融合进去比较难了,器件的限制比较大。
而且高速USB就彻底不可能了……除非我们用USB Hub这样的解决方案。

STM32-OB性能不怎么好,虽然便宜些。

出0入0汤圆

发表于 2009-12-5 19:37:54 | 显示全部楼层
在另一个帖子上看到楼主的发言,跑到这里来问楼主问题。
我看TI官方的XDS100原理图,他的电源是由USB供电,那JTAG的电源是起什么作用的呢?

出0入0汤圆

发表于 2009-12-5 20:28:12 | 显示全部楼层
jtag 可以供电 也可以做ref  好像是 等熟悉的再说说

出0入0汤圆

发表于 2009-12-7 23:52:16 | 显示全部楼层
这么多天没讨论了啊,我抛块砖吧。

我把我们目前讨论的电路花了个草图,部分细节还没完成,但是SRAM和EZUSB的接口已经好了。
大家看看有啥问题么?
点击此处下载 ourdev_511853.pdf(文件大小:18K) (原文件名:EZUSB_v0.6.pdf)

还得讨论下哪些信号需要接到FPGA上。

出0入0汤圆

发表于 2009-12-8 00:24:31 | 显示全部楼层
to 【237楼】 minux 啊啊?
大概看了一下
RAM映射那里处理的不错
FPGA选什么型号? XC3S50A么
推荐FD0-FD7接到FPGA的并行配置引脚上,这样加载固件的速度就很爽了
具体EA引脚怎么切换,还要讨论一下

不过刚上电的时候FPGA靠什么配置呢? 24LC128可装不下,但是如果从上位机传的话就做不到免驱动了
加块Flash(例如AT45DB161)倒是可以

出0入0汤圆

发表于 2009-12-8 00:58:26 | 显示全部楼层
从外部储存器运行的话,是用OE#读取还是PSEN#读取呢,看手册怎么感觉都行似的?
正在考虑RD#引脚有没有必要接到RAM上

出0入0汤圆

发表于 2009-12-8 01:07:07 | 显示全部楼层
加载FPGA配置我现在有这么两个方案:
1,24LC128装一个Mass storage的固件,上位机可以以文件形式放入新的EZUSB固件(我们有外部SRAM,不怕放不下)和
FPGA的位流(这个需要上位机连续写入),则不需要驱动。
当然这只是个设想,或许还有更好的办法。但是我确实见过这么做的。
2,加一片串行Flash。

考虑到以后还可以做脱机编程器,我建议是两个方案同时采用,同时以后脱机编程也可以简简单单地把要编程的位流
文件拷贝到其中(可能需要特定的文件名来做个标识)。当然要做脱机编程器,还有一部分电路要改改。

出0入0汤圆

发表于 2009-12-8 01:09:01 | 显示全部楼层
【239楼】 h2feo4 无机酸

看TRM的5.5节‘Von-Neumannizing’ Off-Chip Program and Data Memory
In some systems, it may be desirable to combine off-chip program and data memory, just as the EZ-USB combines its on-chip
program/data main RAM. These systems must logically OR the PSEN# and RD# strobes to qualify the off-chip memory’s chip
enable and output enable signals. To save the external logic which would normally be needed, EZ-USB provides two addi-
tional control signals, CS# and OE#. The equations for these active-low signals are:
CS# = RD# + WR# + PSEN#
OE# = RD# + PSEN#

出0入0汤圆

发表于 2009-12-8 10:18:39 | 显示全部楼层
支持如此配置SRAM。

整个启动流程的构思:
- USB上电,68013复位完毕,主控;FPGA保持未配置状态。
- 68013加载IIC简单Boot Loader;FPGA未配置。
- BSL用模拟GPIO从TF/SPI Flash拉出FPGA FW,配置FPGA。
- BSL从TF拉出自身的FW,写入SRAM。
- BSL设置FPGA,EA=1。
主要考虑:
1、所有相关驱动程序要下载线自带,不要去哪儿还要想着带驱动程序,这样不方便。
2、支持minux所说,如要支持脱机量产,多种下载模式,使用Flash是必然的,因此使用TF卡/SD卡比SPI Flash是一个更好的选择。


基于以上设想,和FPGA的连接需要:
- FPGA的nINIT,nProg,Done,M0-M2到68013 GPIO。前三个是负责配置用的,后边那个选择配置模式,如果固定使用一个,如Slave Serial,那就不用了。
- GPIF连接到FPGA,含Ctrl和Ready信号,好像还有个CLK?可以连接到并行配置,怀疑这样布线不一定方便。
- USART给FPGA。备用而已。
- FPGA串行配置的DIN/CCLK连接到GPIO,Slave Serial时候用这个配置。
- FPGA挂SPI模式的TF卡,信号同时连到68013,68013在Boot的时候使用。
FPGA预留什么额外接口,另外说了。

供讨论。

输出级回头我抛个结构的砖,选型还需要讨论。呵呵。

出0入0汤圆

发表于 2009-12-8 17:33:50 | 显示全部楼层
我发现了一个问题,68013的TRM里提到如果外接ROM启动,那么要么不接EEPROM,要么其起始字节不是0XC0或者0XC2,
而我们肯定是不满足这个的,谁有条件实验下,看看到底会怎么回事儿?
不行的话,我们还得让FPGA控制EEPROM的地址了。
还有,用68033行不?它不支持0xa0,是从NAND里面下载固件的。

出0入0汤圆

发表于 2009-12-8 19:33:22 | 显示全部楼层
大家的启动流程,实现什么样的交互界面,这点还不统一。

如果如240#-1,242#所阐述,实际上Firmware不需要从上位机下载下来,此时需要一个相对大的IIC,保存程序,用0xC2一类的方式启动。

出0入0汤圆

发表于 2009-12-8 21:38:30 | 显示全部楼层
接243楼:
根据这个appnote: http://www.cypress.com/?docID=17771  (Guide to Boot EZ-USB from External Parallel Memory - AN55037)

它上面说:
1, The  code  memory  for  this  mode  must  be  in the
external parallel memory.  If  the EA  input pin  is set  to
logic  high  on  power-on-reset,  the  memory  map  of  
EZ-USB  is  modified  such  that  the  entire  external  
64  KB  memory  is  mapped  as  code  space  and  the
complete  internal  memory  (main  RAM)  is  used  as
data space.  
Note:  Setting  EA=1  puts  EZ-USB  in  a  Harvard
Architecture  configuration  as  compared  to  the  other
Von Neumann Architecture configurations of EZ-USB.

2, EZ-USB tries to boot from the serial EEPROM on the
I2C  bus  first.  It  checks  for  0xC0  and  0xC2  as  first
bytes  to  see which  boot method  to  use.  To  avoid  a
serial EEPROM boot  load,  there  should be  no serial
EEPROM  on  the  I2C  bus.  If  an  external  serial
EEPROM  is  connected,  the  first  byte must  not  have
the values 0xC0 or 0xC2.

主要看2后面的字,他说无论如何也要先进行EEPROM boot load
同时TRM里面也说了如果EA=1的时候EEPROM要么没有,要么不能包含
0xc0/0xc2的首字节。

我们总不能改EEPROM的首字节吧?那样不failsafe,所以如果真是不能
克服的话,只能改EEPROM的地址了。

谁有装了外部程序存储器的128脚68013的板子,试试到底会怎么样?
我觉得最有可能是进行EEPROM boot load,加载内部RAM,然后释放CPU
后从外部RAM/ROM开始执行。如果这样除了费点时间外倒是没啥问题。
但是我怕它真就从内部RAM启动了……或者更诡异的行为,我上网查,
没有什么结果。

出0入0汤圆

发表于 2009-12-8 21:40:09 | 显示全部楼层
【244楼】 dr2001

我同意,不过倒是没必要非要用SD卡,内置的存储器也是可以的……
像我就没有富余的SD/microSD卡……

出0入0汤圆

发表于 2009-12-8 22:28:19 | 显示全部楼层
我觉得 245楼 讨论如此细致有些过早了。

如果我们要求,上电枚举成为Mass Storage的设备,自带所有其余的东西。不需要用户另行准备各种驱动,那么久没必要研究这个问题了。因为:
1、这样的Boot,必然要求从EEPROM加载一个Loader,这个Loader去处理Mass Storage的事物。【因为用SRAM作Firmware重配置,只有EEPROM可用】
2、0xA0不会导致硬件复位信号,这个在TRM上有。即不断电/硬件复位情况下,EEPROM不会使用两次。

考虑到可能支持的东西多,blabla,IIC可以多挂一个Flash之类的么,不过这个应该比不上TF的容量。毕竟一个FPAG的FW就那么老大。

出0入0汤圆

发表于 2009-12-8 23:18:44 | 显示全部楼层
不是啊,0xa0的VR我们还得绕过去啊,现在想到的绕过去的方案就是用EA=1的方式,
同时,为了不需要上位机的特殊驱动,必然要用EEPROM boot,但是这两个方式按照
数据手册上说是不能共用的,这是一个很现实的问题。

0xa0当然不会导致复位信号,但是你总得考虑下何时切换EA=1吧?
原来我们认为保险的办法是FPGA reset 68013a然后同时切换EA;
(虽然数据手册上说EA是"活的",可是执行代码的时候切换,它没有提各种时序要求
,有可能导致取指令出现意想不到的问题)
当然,另外一个方案就是在0x4000-0x7fff区域执行程序的时候切换,这样理论上应该
没啥问题,不过也没有实验依据。

总之,现在讨论这个是为了确定下来EA管脚的具体控制方案。

考虑这么细节是为了把尽可能多的可能性都考虑到,免得板子回来发现原来的方法不能
用,还得飞线甚至改版。

FPGA的配置位流最多也就4Mbits,随便上个32Mbits的SPI Flash足够放好几个了,还有
脱机编程器需要的数据;TF动辄1GB,没有任何必要要那么大…… 而且我们的接口又不是
不方便,我们是USB Mass Storage,要想更新非常方便,也没有必要需要用换TF卡之类的
办法。可以做一个TF卡座,这个我支持,不过我觉得得有内部的其他存储,不然TF卡如果
是必须的,那就没有使用TF卡的好处了。

出0入0汤圆

发表于 2009-12-8 23:27:58 | 显示全部楼层
那就再说下我理解的整体流程:

1) 68013a上电后,EA=0, 执行EEPROM boot, 其固件是一个USB mass storage的固件;
如果发现一段时间未接USB,或者是别的什么方式触发(长按一个键比如),则进入脱机模式,转3;
如果接了USB了,转2.
2) 上位机会把新的68013a固件和FPGA的位流传给68013a;
配置FPGA;同时把新固件写入68013a;
用某个方式,切换到EA=1,按照新固件的要求重枚举,成为比如XPCU/USB Blaster/ispDOWNLOAD/....
(这里,需要注意同时有外部ROM/RAM和boot EEPROM的问题)
3) 开始和用户交互,从非易失存储读取FPGA位流配置FPGA;从非易失存储读取新的68013a固件(可选)。
然后根据用户的要求执行操作。此时不需要切换EA=1的方式。但是需要WAKEUP信号一直有效,保证
68013a不睡眠。

出0入0汤圆

发表于 2009-12-8 23:33:13 | 显示全部楼层
to 【248楼】 minux 啊啊?
让FPGA先于68013启动,用FPGA给RAM中写入68013的固件
这样可以保证始终EA=1,而且连EEPROM都可以省了,但是硬件代价比较高

出0入0汤圆

发表于 2009-12-8 23:35:25 | 显示全部楼层
唉 越做越复杂了……
能不能简单点。

看来我们该推出好几个版本了。

其实我觉得68033是个挺好的解决方案,外部接片1Gb的NAND,固件/位流/待编程的文件全搞定了;
也没有0xa0的问题;同时EP1/2/4/6/8都支持(我们想模拟的芯片都支持)。

它的问题在于:类似68014/5,没有IFCLK/CLKOUT,只能接异步接口(我觉得这个有希望能解决);
IO少;只有15KB SRAM,没有外扩SRAM的可能;QFN封装,稍微有些不好焊接;
ReNumeration功能正常模式不能用(这个似乎也有办法搞定);

出0入0汤圆

发表于 2009-12-8 23:36:02 | 显示全部楼层
贴一个供讨论的输出级。

基本构思:
- 支持适当多的电压,参考前边讨论的官方使用的芯片,主要考虑支持:5V 3.3V 2.5V 1.8V, 1.5V和以下可选。
- 所有数据线都是独立双向可编程。目的是支持类似ARM的SWD之类的双向通信协议。因此,两根线控制一个最后的IO信号。

基本实现:
- 假设上级使用FPGA,Spartan3A。
- 使用LVC125/126实现双向缓冲,满足单独HiZ控制要求。

发现的可能问题和解决方案:
- 上电顺序:
TI LVC125手册说没有Ioff,但是系列选型手册说LVC系列都有Ioff。如果支持,那就没问题。
确认NXP LVC125/126支持Ioff,其余参数未详细对比,就电压支持而言,可以支持至1.2V。
- 工作电压: LVC系列,手册VCC要求3.3V,但容忍5V VCC,IO 5V没问题。
VCC 5V能否稳定支持,不能确认。
VCC可用稳压管方案解决。串联限流电阻可用PMOS+比较器旁路掉。
- FPGA配置时的上拉与否: 导致是否需要增加上拉/下拉电阻。


点击此处下载 ourdev_512161.pdf(文件大小:257K) (原文件名:OutStage.pdf)

出0入0汤圆

发表于 2009-12-8 23:36:39 | 显示全部楼层
让68013上电复位时间加大  cpld一开始先将RST*拉高?写完以后再68013复位  是这个意思么?

貌似cpld不够  必然价格上涨

出0入0汤圆

发表于 2009-12-8 23:39:16 | 显示全部楼层
to 【251楼】 minux 啊啊?
既然是讨论,多说几种可能性也无妨
68033听上去不错,正在下载数据手册,一会儿仔细看看

出0入0汤圆

发表于 2009-12-8 23:41:42 | 显示全部楼层
to 【253楼】 boboo
我的意思是68013复位端只接一个电阻到地,当FPGA加载完成后将68013的复位强制拉高
当然,这个方案比较复杂,不作为首选

出0入0汤圆

发表于 2009-12-9 00:05:12 | 显示全部楼层
输出级考虑不考虑自动转换方向的电平转换芯片?
比如TXB0108,这个8位,如果FPGA那边配置IO电压1.5/1.8V,另一侧可支持1.8-5.5V (VCCB >= VCCA这个要求比较麻烦)
自动切换转换方向。它的价格ms在双向电平转换芯片里面算是便宜的了。

而且它没有上电顺序的问题,而且直接让FPGA的三态IO口控制方向,同时B口还有比较好的ESD防护。

出0入0汤圆

发表于 2009-12-9 00:07:34 | 显示全部楼层
我看着看着68033的相关文档,突然开始怀疑它也是通过类似于0xa0的方式下载代码的,因为文档说了,即使是正常工作模式,
还是可以用Cypress的工具重新配置它,但愿不是0xa0呀……

出0入0汤圆

发表于 2009-12-9 00:10:42 | 显示全部楼层
to 【256楼】 minux 啊啊?
让FPGA的一个IO bank使用1.5V电压等级应该不成问题

不行的话
两块芯片背对背可以解决VCCB >= VCCA的要求
FPGA先通过一块降到1.5V,第二块再升到1.5-5.5V,速度上慢一些,但下载线估计也没必要跑那么高速度
这两块可以用不同的芯片

出0入0汤圆

发表于 2009-12-9 00:19:13 | 显示全部楼层
另外一个相关的用途,高压编程器…… 当然,估计不好实现。
当作以后增加功能的候选吧。

出0入0汤圆

发表于 2009-12-9 02:21:39 | 显示全部楼层
支持!

出0入0汤圆

发表于 2009-12-9 09:35:58 | 显示全部楼层
To 【256楼】 minux
TXB010其稳态输出是电阻上拉/下拉。芯片实现是一个4K的电阻。如果外部设备使用的5.1K上拉,正好线路电平在中位。因此不能用。

考虑到输出能力问题,我还是建议使用带有OE或者DIR的Push-Pull输出级。
LVC系列的问题在,如果是支持5V VCC的,那么Vih在5V的时候是VCC*0.7,3.3V的FPGA肯定够不到。

综合下来,目前看到的最优选择是:
芯片选择:NXP的74LVC125+74LVC126,5V到1.2V都能兼容,每个引脚IO方向独立可控,驱动能力比较强。
电源选择:稳压管3.6-5V,串联电阻,比较器LMV311/LM397(SOT-23)加PMOS(SOT-23)旁路串联电阻。
如果LVC能支持5V电源,那么稳压管等等不焊接即可。

出0入0汤圆

发表于 2009-12-9 13:51:01 | 显示全部楼层
嗯,没看后面,TXB系列是稳态输出内阻比较大…
可是125先给信号再给电源不安全啊,要么用1T245吧。
带有双电源的电平转换芯片同时还有每个输出的三态控制那是很难找的…

出0入0汤圆

发表于 2009-12-9 14:00:40 | 显示全部楼层
根据68033固件开发文档,我核实了它在正常应用状态更新固件不是用0XA0实现的,它确实不支持这个VR。
它的问题就剩下不能用同步口了,这个似乎没办法解决,不过跟FPGA用异步口倒是也没啥问题,
也就是影响传输速率,保守估计最快可能只有20MB/s了,用GPIF可以再快点但是手册上没给具体时序信息。

出0入0汤圆

发表于 2009-12-9 15:54:09 | 显示全部楼层
很好很强大! 佩服!

出0入0汤圆

发表于 2009-12-9 16:12:11 | 显示全部楼层
To 【262楼】 minux

可供参考的资料:
http://www.standardics.nxp.com/support/documents/logic/pdf/an252.pdf
http://www.nxp.com/documents/data_sheet/74LVC125A.pdf
http://www.nxp.com/documents/data_sheet/74LVC126A.pdf

AN252中,最重要的几句话:
This feature is shown in data sheets as an Ioff specification to support partial power-down modes.
Ioff circuitry eliminates current paths to VCC resulting from diodes and parasitic elements.

无论是TI还是NXP的LVC系列,在系列功能的描述手册中,都说LVC系列的结构具有以下功能:
- 输入级只有负电压钳位,正电压没有钳位。VCC==0时,不会由Vin向VCC灌电流。引脚能承受的正电压和VCC无关。
- 输出级在VCC==0时,只有负电压钳位,Vout!=0时不会向VCC灌电流,即输出高阻,此时Vout引脚能承受的正电压和VCC无关。
- 输出级在VCC!=0时,有对称钳位,外部电压受限。
- AN252也指出,在PowerUp/Down过程中,上拉/下拉电阻可被用于保持引脚高阻。

手册确认NXP LVC125/126存在Ioff参数,即其支持partial power-down modes。
因此我判定没有问题。

出0入0汤圆

发表于 2009-12-10 16:07:19 | 显示全部楼层
经过阅读CY3686中的提供的固件源代码,有理由相信68033是肯定可以重枚举的。
手册上说的只有生产模式才可以重枚举是有误的(或者可以理解成它认为用68033的产品都不需要重枚举)。

同时,根据源代码,固件下载不是用0xa0完成的,是固件自己实现的Mass storage class的VR。

使用68033我认为是完全可用了。

随便接个1Gbits的NAND,一切(0xa0/固件和位流存储)搞定。
不过mass storage协议太复杂了,Cypress的固件编译后用了8KB,别相信数据手册上的剩下7KB都可以自己用,
它用于存放zone table的RAM就得有2KB,还不算其他的数据结构。
直接看keil的输出吧,这个说明问题:
Program Size: data=95.1 xdata=6787 const=200 code=6714 (开启所有可能的优化,为大小优化)
也就是基本上把15KB的RAM用了90%,我们肯定得想个办法来减少占用,另外还有读取文件系统的代码。

出0入0汤圆

发表于 2009-12-10 16:17:33 | 显示全部楼层
那用125的话,是如何支持1.8V的输入的?(根据nxp的手册,VCC在2.7-3.6V时候,Vih是2.0V min的)

我觉得sn74lvc1t45不错
有DIR控制方向,所以输出三态没问题
有VCCA和VCCB,同时更重要的两个都可以在1.65-5.5V中随意取值(其他很多电压转换器都有限制比如VCCA<=VCCB之类,这个没有)
用它的话,FPGA的IO bank可以随意选择1.8/2.5/3.3V,同时target端支持1.8/2.5/3.3/5.0V,对于本应用来说非常足够了。

出0入0汤圆

发表于 2009-12-10 16:45:21 | 显示全部楼层
各位讨论电平兼容性讨论了这么久,但是关键不在这里啊
现在连基本的功能都还没有实现呢
目前能实现 USB-Blaster 的有68013的源代码,实现xilinx的有hex文件
Lattice的还没有公布制作资料呢
首要问题是把实现xilinx和lattice的源代码弄出来啊
然后再讨论怎么整合源代码,怎么切换模式
最后的最后,才是IO电平兼容性

出0入0汤圆

发表于 2009-12-10 18:30:15 | 显示全部楼层
不讨论电平的问题,如何设计、制作电路?
不做好电路,怎么实现、测试软件?

其实搞到各个固件的汇编代码很简单,但是那样既不利于整合,也不利于再开发;
所以肯定是参考反汇编和sniffer结果,反向通讯协议,然后直接重新正向实现之。

简简单单地整合代码,是不可能实现三合一的(三家的设计直接整合只能得到很烂的设计,没有实际意义,
而且成本估计要比你直接买三个直接仿制的编程器还高)。

出0入0汤圆

发表于 2009-12-10 20:41:02 | 显示全部楼层
To 【267楼】 minux
FT,一时大意,光想着对输出了,输入就忽视了。
那就用74LVC1T45好了。问题都能解决。双向,带Ioff Partial Power Down的。
如果用TI的,就是1.8V-5.0V;用NXP的,就是1.2V-5.0V。

To 【268楼】 xiaobenyi
N合一是需要反向协议,然后重新正向实现。拿到别人的固件直接整合的可能性,非常小。
因此需要一个良好的,具有充分优良兼容性的平台来干这个事情。
有了平台,才有软件测试,开发的基础么。

出0入0汤圆

发表于 2009-12-10 21:12:54 | 显示全部楼层
好,接口电平转换部分就没问题了。

再看看如何切换吧,还要考虑最大的兼容性。

我先提个设想,既然用FPGA,就不需要事先规定每个引脚的作用;类似的,Vref引脚也应该是灵活些,
我们可以用一片模拟开关切换Vref? 这样我们就可以兼容同样针脚数的各种插座了。以后功能扩展起来也很方便。

还有一个问题,插座上那些接GND的管脚我们需不需要真的和地相连?还是让1t45输出低来代替?
我觉得如果1t45的输出能力足够强,那就没问题,但是多强算足够,还得仔细考虑下。

呵呵,我们离硬件平台最终确定越来越近啦,加油加油~~

出0入0汤圆

发表于 2009-12-10 21:36:06 | 显示全部楼层
话说这个项目应该在armok这里注册一个开源项目啊……
进展我觉得挺不错的。

如果能做成网站开源项目,参与的人多了,项目的前途会更好,功能也会越来越多。

出0入0汤圆

发表于 2009-12-10 21:40:27 | 显示全部楼层
问一下,是否要使用目标板自动检测方案呢
重新介绍一下
做N个下载线接口,每个公司/每种接口都单独放一个插座(占用面积较大,可能做成单独一块扩展板的形式比较好)
每个公司的接口VREF单独检测,这样我们就可以知道哪个是公司的目标板连接在我们的下载线上
VREF通过一定的编码方式编码,我们需要检测多根VREF线
例如6线3 hot编码,即每个公司的插座的VREF连接到6根检测线中的三根上(要串肖特基二极管)
我们只要判断是哪三根线有电,就可以知道哪个插座连接了目标板,且不存在误判
6线3 hot编码的话,可以检测20种不同组合
8线4 hot编码的话,可以检测70种不同组合
可能需要在VREF上多做些手脚
我以前做并口下载线的时候用过此法,在XC9536上实现了 Xilinx + Altera + AVR 下载线,自动检测自动切换,不需要复位或者重新上电

优势:自动检测插入目标板类型,可以实现全自动切换
劣势:要做一块(或多块)接口板,面积比较大,需要较多的二极管隔离,电路略复杂

出0入0汤圆

发表于 2009-12-10 21:43:21 | 显示全部楼层
支持单独注册一个开源项目
叫什么名字?万能USB下载线??

出0入0汤圆

发表于 2009-12-10 22:34:21 | 显示全部楼层
恩,自动检测全自动切换是非常好的,对于最终用户来说,会很不错。
我现在在想,既然用了FPGA,每根线做什么,完全是我们决定,所以一个插座就够了吧?
还可以用类似的Vref自动检测方案的。

比如用模拟开关,由FPGA/CPU控制,分别切换到各个管脚看电压,这里需要下点功夫,因为
需要分辨某些上拉的管脚和真正的Vref,不过最简单的就是弄一个小点(~1k)的负载,然后
测电压…… 再加个ADC或者比较器都可以。

做到最强是上位机软件可以由用户任意指定、分配管脚,这样就是几乎无限的灵活性了。


至于项目的名字,这个确实比较难定哈,我们不一定只能做下载线的,调试线也可以啊。
比如AVR的JTAG,ARM的JTAG。还有,其实这个配置做简单的逻辑分析仪以及输出任意的
数字波形的发生器也可以的,名字还得仔细斟酌下。
反正就围绕着这几个关键词:
高速USB接口,ISP下载线,JTAG/SWD/BDM调试,简易逻辑分析仪
最好是突出可扩展性来,我还没想出啥好名字……


h2feo4,你觉得用68033如何?

出0入0汤圆

发表于 2009-12-11 00:17:10 | 显示全部楼层
to 【275楼】 minux 啊啊?
68033的话,我了解不深,只是粗粗看了下Datasheet
封装不是什么问题,IO虽少,但也基本够用,异步的也能用
倒是15KB的RAM够用么

问一下680xx和FPGA之间打算怎么分工呢,FPGA大概要装些什么东西

出0入0汤圆

发表于 2009-12-11 00:43:07 | 显示全部楼层
我的意见是:
680xx还是主要负责USB通信(顺便主控下UI和非易失存储,加载FPGA配置信息等零碎的),
所有其他通信逻辑放FPGA里面,可以考虑在FPGA里面放一个软核。

FPGA里面的架构是:不变的控制器软核 + 根据应用可变的外设

外设处理通信相关的内容,比如串行化,JTAG状态机的转换(这个参考下TI的'8990芯片,TI的XDS560等都是用它的)等等;
软核的程序也由上位机下载(当然脱机的时候是有680xx加载)。

这样的话,680xx的RAM基本不是问题。

这么做的好处是,我们不用为类似的应用都重写HDL,用软件解决可以软件做的,让硬件做它擅长的。

出0入0汤圆

发表于 2009-12-11 01:17:55 | 显示全部楼层
to 【277楼】 minux 啊啊?
主要工作放在FPGA中,680xx只当接口芯片的话,内部RAM的大小就不重要了,甚至没有都行
但FPGA就要用规模大些的(XC3S500E?),而且可能要考虑给软核配储存器(SRAM? SDRAM? ……)
既然主要工作在FPGA身上,不妨让FPGA先启动,单配块FLASH就是了,也没多少钱
成本估算 680xx + FPGA + NAND_FLASH + SPI_FLASH + SDRAM + 电平转换器 + PCB,可能要150元了

另外,用哪种软核比较好呢 MicroBlaze? Cortex-M0? 或者其他的?

出0入0汤圆

发表于 2009-12-11 01:50:38 | 显示全部楼层
恩,我说的软核肯定不会像microblaze那么大的,会非常小的(比如ZPU那样的,不过它并不是一个好的选择……)。
不会超过20%的3S500E的。所以FPGA还可以选择更小的。

不外挂NAND和RAM,就用内部的BRAM就够了,真正的业务代码不会那么复杂(当然这就意味着你不能用C语言去写它)。
(而且关键性的代码我原来是想只需要用的时候下载到FPGA里面执行的)。

原来我还考虑过直接用不带MCU的USB控制器,让FPGA控制所有的东西呢,后来发现USB这边不用C写估计太麻烦。

我这个想法主要是觉得cy7c680xx里面的8051效率太低了,而如果使用针对这个应用的软核,即使主频差不多,
性能也会大不一样。Cypress也是建议8051只是用来配置SlaveFifo或者GPIF,尽量不涉及数据传输,不然HS USB的优势
可能体现不出来了。

我的预期性能是JTAG达到50MHz的TCK速率,不然就没有用HS USB以及FPGA的必要。

当然,这只是一个设想,还没有开始实现,不知道这么做合适不合适,也想听听大家的意见。

还有,上面说的主要是除三合一之外那些,至于三合一,大可不必这么复杂,有个3S50A足够了(只需要做XC2C256完成的事情……)。

出0入0汤圆

发表于 2009-12-11 01:56:25 | 显示全部楼层
如果图方便,想用C语言写程序的话,用ZPU吧。
Cortex-M1的话,除非是Actel的M1器件,否则我觉得做开源项目并不合适(毕竟这个理论上是要交license费的)。
microblaze也有类似的问题,当然,用OpenFire也是可以的,资源占用也还可以,但是我就怕只用片上BRAM跑不了太好。

我是想自己按照需求定制一个软核,功能要比Picoblaze强得多,但是资源占用却不能大太多,这是有点矛盾啊。

出0入0汤圆

发表于 2009-12-11 02:07:47 | 显示全部楼层
其实这些软件相关的倒还次要,也就是定个FPGA的问题,做开发,就上个大点的呗,最后还可以改小了。

应该尽快把IO部分和680xx确定下,做出硬件平台后,就可以开始试验各种方案了。

外部IO部分:
(1) Vref切换方案,我上面说的方案是否可行? 还有没有其他的?
(2) 外部应该留多少根IO? 8根够不够? 还是根据FPGA选型的结果和最终富裕的IO数适当多一点?

680xx部分:
(1) 68033行不行? 它的劣势在于价格贵,IO少,RAM少;优势在于用它的解决方案不那么绕……
(2) 外部存储用什么?SPI Flash还是直接上NAND Flash。

misc部分:
(1) 人机接口怎么处理?LCD/LED?(这个主要是考虑脱机应用的时候)

这些问题确定了,基本上电路就确定了。

出0入0汤圆

发表于 2009-12-11 02:27:05 | 显示全部楼层
to 【281楼】 minux 啊啊?
外部IO部分:
(1)Vref切换,【275楼】的方案有些问题,如果遇到两个不同的厂家下载线,电气定义相同,协议不同,我们怎么区分呢
(2)IO数量,对于下载线/调试器,8根肯定够了,但对于逻辑分析仪,8通道惨了点,建议按16根设计,不用的话PCB上相应位置空着就是了

680xx部分:
(1)这个估计还要再讨论,如果工作主要由软核承担,那680xx只要速度够,IO和RAM都不是大问题,反正它只是个接口芯片
(2)如果不想附加其他储存器的话,最好还是NAND,因为就算用64Mbit的SPI Flash,估计也装不下N多固件、应用程序、以及要脱机下载的目标文件

misc部分:
(1)建议第一版本只保留若干IO,用插针引出。如果FPGA剩余资源较多,也许TFT比较合适

出0入0汤圆

发表于 2009-12-11 12:25:22 | 显示全部楼层
IO部分:
1、不太考虑成本,每个IO做成VCCout/VrefIn/GND/IO是没问题的,但是需要比较多的器件。是否合算,还需讨论。
2、由于目标电路可能是Buffer输出,具有比较强的驱动能力,因此很难用简单方法判定一根高电平线是电源,还是输出。
因此下载线类型自动识别,使用外部硬件电路实现应该比较好。比如Xilinx下载线那样的小转接卡,给信号直接反馈回FPGA?
3、每个引线支持完整功能的好处在于,用户可以在上位机随意配置引脚功能。

供讨论的复杂的方案:
- 每个信号引脚的能力
  支持VCC-Out:对外供电,输出5V/3.3V硬件跳线/拨码开关选一个,调试小板卡的时候很方便。这需要每路1个MOS。
  支持Vref-In:每个引脚都可以作为Vref的输入,每路需要比较器+MOS,做理想二极管。
  支持GND:每个引脚可以作为大电流的GND,需要一个NMOS。
  支持双向数据IO:每个引脚一个1T45。
- 具有20通道IO,加上额外的GND,一个硬件的Vref,凑成比如40Pin的排线。
- 转接板A,把信号线解成DIP20 。。。DIP10的插座。这样每根线完全可配置。
- 转接版B,按照不同的下载线解开,可以实现具体的识别等工作。
这样有点太复杂了。

之所以要在外部转一下,主要是因为2.54的针座不是兼容的,就是20Pin没办法直接插进10Pin。。而且用作逻辑分析仪,缺少地线减少干扰。

讨论一下?

出0入0汤圆

发表于 2009-12-11 13:03:43 | 显示全部楼层
to 【283楼】 dr2001
看看插座搞成这个样子行不行
同时兼容10pin,14pin,20pin插针,而且没有插反的危险
虽然看上去有点不伦不类,但应该能用,估计外壳上要开个异型孔配合它
仅仅是示意图,详细尺寸和位置有待确认

(原文件名:20091211A.PNG)

出0入0汤圆

发表于 2009-12-11 14:15:20 | 显示全部楼层
To 【284楼】 h2feo4
不错,好主意。
<=20 Pin的应该是10,14,16,20,一共四种。

可以考虑的引脚

New Pattern (原文件名:1.jpg)

简单测量,突出来的定位块在2.54排针上插进去略有阻碍,所以挨着的引脚正好能起到一定的定位作用。
排列出来难度不大,就是看壳子怎么加工,辅助铣出来定位槽。
两个合起来,更好一点。

出0入0汤圆

发表于 2009-12-11 16:44:41 | 显示全部楼层
【282楼】 h2feo4 无机酸

如果真是出现了电气特性一样,但是协议不一样的问题,还是得让用户指定了。
其实外部就留一个20pin排针,用户随便插,然后告诉是什么类型的接口,就已经挺方便了。

出0入0汤圆

发表于 2009-12-11 19:27:33 | 显示全部楼层
to 【285楼】 dr2001
还想到一个问题
例如Xilinx的某些下载线,接口并不是充满的,中间有一两个空脚
如果不巧正好碰到原装线,插头上对应位置根本没有孔,那就插不进去了……

出0入0汤圆

发表于 2009-12-11 19:34:57 | 显示全部楼层
牛,太牛了!!!!

出0入0汤圆

发表于 2009-12-11 20:12:00 | 显示全部楼层
定位的支持Pin就不要考虑了吧。这么考虑起来就该没完没了了。
主要考虑正常的通用的情况;过于特殊的情况,且容易解决的,就不管了。

出0入0汤圆

发表于 2009-12-11 20:36:54 | 显示全部楼层
IO口用什么接插件可以先放到一边,等布板时候再讨论也来得及
先看看USB接口芯片到底用哪个,FPGA用什么,储存器用什么

出0入0汤圆

发表于 2009-12-11 23:17:13 | 显示全部楼层
对的,第一期可以先不考虑这个,先把平台搭好,反正IO都是可配置的,以后再
仔细讨论接插件的设计,一次就把什么都做好是很难或者说几乎不可能的。

FPGA我建议先用个大点的,以后再换小也可以,时刻注意成本即可。
存储器用NAND,32MB的就非常足够了。可以接上SD卡插座。

USB接口芯片,我也在犹豫了……

出0入0汤圆

发表于 2009-12-11 23:33:23 | 显示全部楼层
to 【291楼】 minux 啊啊?
FPGA怎么选?XC3S250E,按上面的讨论来看,肯定足够了,TQ144封装如何,IO数应该够用了,以后压缩成本的话可以改用同封装的100E
价格估计40块左右吧
E系列比较讨厌的是要三组电源(除非IO都用2.5V电平),A系列虽然两组电源就行了,但粗看一下貌似没见到合适的封装,VQ100担心不够用,BGA基本不在考虑之列(一会儿仔细核对一下手册)

Altera家族的我完全不了解

出0入0汤圆

发表于 2009-12-11 23:49:51 | 显示全部楼层
嗯,单考虑Xilinx的器件,如果是优化逻辑的话,还是3E比较好。
如果想用Altera的器件,建议Cyclone 3,性能比S3E稍强些。
但是小声说,我不喜欢Cyclone,LE的用法不如Xilinx FPGA的灵活,然后设计register file的时候就会发现不得不用RAM资源,
S3(A/E)就能直接用2R1W的LUT-RAM。

S3A确实没办法用,封装太受限,而且逻辑性能似乎还不如S3呢。

用S3E,然后IO用2.5V我倒是没考虑过,得核实下,电平转换那边没问题,就看Cy7c680xx了。

S6出了,我估计能在1月搞到试试,单看ISE给的性能参数,是很强的(逼近Statix 2的性能了),但是也是封装受限,容量受限,
ALtera和Xilinx怎么不跟人家Actel学学,低端FPGA,不管多大的容量,都有PQ208的封装啊……

单看封装,144的可能最好,要是用208,布线上恐怕有些麻烦。

跟Cy7c680xx接口的IO估计最多需要32根(但我没细算),接口那边,每个IO至少2根,如果考虑
GND/VCC-out则需要多1-2根,所以光接口部分就得至少32根。
剩余的NAND接口几乎可以和680xx的复用,剩下就是给人机接口的IO,那个还得考虑下,
但是144估计是够了。

出0入0汤圆

发表于 2009-12-12 00:00:48 | 显示全部楼层
to 【293楼】 minux 啊啊?
如果用S6的话,有些担心供货,也不太清楚价格
目前来看 XC3S250E -4TQG144C 可以作为1号备选

出0入0汤圆

发表于 2009-12-12 00:15:07 | 显示全部楼层
看了下手册
680xx只能工作在3V-3.6V,但
VIH(min)=2V
VOH(min)=2.4V

XC3SxxE的
VOH(min)=2.3V (VCCIO=2.5V)
VIH(max)=4.4V

不过下面有几句话
Each of the User I/O and Dual-Purpose pins is associated with one of the four banks’ VCCO rails. Keeping VIN within 500 mV of the associated VCCO rails or ground rail ensures that the internal diode junctions do not turn on. Table 76 specifies the VCCO range used to evaluate the maximum VIN voltage.

Input voltages outside the -0.5V to VCCO + 0.5V voltage range are permissible provided that the IIK input diode clamp diode rating is met and no more than 100 pins exceed the range simultaneously.

为了安全,考虑680xx电压最高(3.6V),XC3SxxE电压最低(2.3V)时,每个引脚上的反灌电流不超过10mA,需要串个82R电阻

但问题又来了,如果用1117这种稳压器的话,估计扛不住反灌电流,会使2.5V电源电压升高,就要再考虑加箝位,或者吸收电流的措施等等,好麻烦
还是用三组电源好了……

出0入0汤圆

发表于 2009-12-12 22:57:49 | 显示全部楼层
剩下的关键问题还没有解决,680xx

出0入0汤圆

发表于 2009-12-14 00:42:17 | 显示全部楼层
关于680xx的问题,怎么说呢,我比较纠结:
1,68013-128的价格比68033低
2,68013-128需要外部32KB RAM,68033必须外接一片NAND Flash
3,68013-128 IO非常丰富,68033的IO就非常少了,尤其是他的Flash片选使用PORTD,也就是不能用16位接口
4,68033不支持IFCLK和CLKOUT,也就是不能支持同步接口……

其实,使用68013a-128的话,也用不着那么多IO。。。。所以又觉得有点浪费……

那还是用68013a吧,成本之类的考虑确实比较重要。

出0入0汤圆

发表于 2009-12-14 00:59:31 | 显示全部楼层
to 【297楼】 minux 啊啊?
那就先按68013考虑吧,不知dr2001有什么看法

数一下主要器件:
CY7C68013-128AXC
IS61LV256AL-20 (TSOP28)
XC3S250E-4TQG144C

剩下的问题,启动顺序
方案A:68013先启动,然后用68013配置FPGA(可能是首选)
方案B:FPGA先启动,在SRAM中加载固件后启动68013

出0入0汤圆

发表于 2009-12-14 01:33:00 | 显示全部楼层
如果FPGA也要访问SRAM,那么由于68013a至少其地址线是不能三态的(cypress网站上有人提问过这个,回答就是这么说的),
所以需要两套连接才行,这样FPGA的管脚数肯定不够。
当然,你如果给他加三态驱动器,倒是可行,不过电路复杂太多了,有些不值得似乎。

出0入0汤圆

发表于 2009-12-14 01:41:43 | 显示全部楼层
to 【299楼】 minux 啊啊?
这样的话还是68013先启动吧,FPGA控制EA

这样的话方案基本上可以初步敲定
简述一下启动流程,看看有没有问题
上电,68013从EEPROM中加载程序
68013读取SPI Flash(或者SD Card等),给FPGA加载固件
68013以Mass Storage枚举
与用户进行交互/检测目标板插入
重载固件,重枚举,切换EA=1

出0入0汤圆

发表于 2009-12-14 03:19:13 | 显示全部楼层
我觉得没问题了,不过切换EA=1的时候我们应该用哪种方案?

出0入0汤圆

发表于 2009-12-14 08:48:28 | 显示全部楼层
都是高手,学习了

出0入0汤圆

发表于 2009-12-14 09:15:05 | 显示全部楼层
我支持h2feo4在298和300楼提出的选型方案,启动流程。

切换EA使用特殊代码段,在片外的SRAM执行时完成切换。
由于CLKOUT是可以给出时钟的,在最低的工作频率下,完全可以对时序。完成。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表