multijtager(基于FPGA的多功能JTAG调试/下载接口)开源项目倡议与讨论
现在很多JTAG口下载线的电路结构类似,但是又有些差异,所以不能通用,但是毕竟我们每块板子一般不会全用,所以每款都买一个并不是一个合算的做法,采用时分复用是个很好的做法,因此我在此倡议下我们做个基于FPGA的多功能JTAG调试下载线,同时申请网站开源项目。
目前我的设想是不单单支持单片机、ARM,还要支持其他的使用JTAG或者类似的串行调试口的器件;同时,由于用FPGA而不是单片机实现,可以达到以往都不
能实现的下载/调试速度。
这暂时只是个计划,具体怎么实施还得靠大家共同参与.
不知道大家意见如何? mark 同时支持! 啊 终于有人想做这个了,支持,一起讨论吧。
目前的想法是用一片高速USB接口芯片配合一片FPGA来做。
同时我建议扩展功能,增加逻辑分析仪还有脱机编程器的功能,高压编程器也可以考虑啊。 不急不急,慢慢讨论。。。时间有的是。哈哈。
不过这名字不够好,需要再想想。好像已经有人用MultiJTAG了。 欢迎阿,感兴趣的人越来越多了
今天又有一位朋友(shixm.zh)表示有兴趣
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3775910 对,JTAG仅仅是典型的串行接口之一。SPI/I2C/UART/JTAG,无限可能。。。 很好,人越多越好~~
对于高端的调试器,确实很有用,但是考虑到开源的问题,我觉得低端的也不能放弃;
因为,我总结的对于开源项目至关重要的几点如下:
(1) 用户决定生命力;开发者决定用户;没有用户的项目不会有人做,没有足够的活跃开发者的
项目也不会吸引得到用户;
(2) 简化硬件,增加软件的比重;可以吸引更多的潜在开发者;毕竟搞软件不像搞硬件需要那么
多的知识和经验;而且,一些有经验的用户一般也可以帮忙开发软件;但是不一定谁都有心思来
改进硬件(不说别的,首先做板一次的周期就有很大影响,而且硬件最不容易送出去测试;开源
的根本是release early, release often)
(3) 同样,硬件要低成本(尤其是项目开始阶段;面向高端应用的暂时除外);由于软硬件结合的
项目要求每个开发者必须有硬件,所以成本也是必须考虑的问题;
(4) 已有的硬件平台要足够灵活,不要加上人为的限制;
鉴于以上各点,我们的硬件平台还需要在成本、灵活性上下功夫;
目前第二点已经做得不错了。
高端的调试器,那硬件就更有意思了,首先,要做到能telnet进去控制,得有个多任务的操作系统,
uclinux不错。然后我们为低端版本设计好的电路不会浪费,直接接在处理器上即可,
也就是上位机从原来的PC机变成了跑嵌入式操作系统的处理器。基于这种想法,这两个项目前期是
有交叠的,这样也好投入更多的人力物力来搞这部分。同时,外部IO部分也是重合的,而且值得仔
细研究下低成本的高速方案。 很好很好,有这么多网友参与讨论。
我建议,想参与的网友最好能留下一个email联系,这样以后制版之类也好直接联系。既然h2feo4兄已经公布了邮箱,
大家就都给他发封信说明下(一定要注明id哦,还可以说说自己的擅长等)吧;以后我们可以做个通讯录发给大家。
to【1楼】 yobdc
呵呵,谢谢支持哦,欢迎常来看看并参与讨论哦~
to【2/6楼】 minux 啊啊?
对,硬件低成本而灵活,确实是关键。
to【3楼】 dr2001
名字问题可以再讨论嘛,目前这个可以先作为codename,做好了发布的时候再叫个好听点的。
to【4楼】 h2feo4 无机酸
感兴趣的人越多越好哦,ourdev这个平台很好,集合大家的力量,前途无限可能~
to【5楼】 qjy_chess 孤欲化境
是,这些口当然要支持,采用FPGA的目的也在此,足够的灵活性,用户可以自主进行任何扩展,这也是很多商业产品做不到的,
我们的开源项目显然不会隐藏任何内部文档,所以用户有完全的掌控,可以做完全地再开发。 瞧瞧有什么新咚咚~ 很感兴趣
先支持一个 我总结下目前的成果:
(1) cy7c68013a + IS61LV256AL+ 24LC256 处理USB通信相关的东西
(2) FPGA: XC3S250E 处理通信协议和编程算法
(3) IO: 使用74LVC1T45处理每个通道的电平转换(取决于厂商,支持1.2-5.5或者1.8-5.5V)
(4) Flash: 使用一片XC9572XL的CPLD配合cy7c68013a读取串行Flash以及SD/TF卡
目前的iic固件流程如下:
(1) iic加载mass-storage的68013a固件,然后看看是否符合脱机编程器的启动条件,分别转2或3
(2) 脱机编程器:这部分流程就不用说了,根据需要加载Flash里面的固件和FPGA的位流
(3) 联机的情况:USB枚举成为mass-storage器件等待上位机配置,同时Flash的内容可以让上位机更新。
这样的好处是,iic的东西基本不会更新,这样即使某次我们更新进入Flash的固件有问题,也不影响系统
启动。
cy7c68013a的EA可以由CPLD控制。
目前的遗留问题是:
(1) 固件存储,SD/TF卡 or NAND?
我的建议是SPI Flash+TF卡,NAND的坏块管理太复杂了,用SPI的目的是即使没有TF卡,基本的功能也是可用的。
SPI Flash存放前期(包括脱机编程器模式)的固件和位流;TF卡可以存放更多的位流还有用户的编程文件。
(2) IO: 接地和Vref如何选择?
还有没有我没提的?欢迎大家补充。 支持,好东西呀!! to 【10楼】 minux 啊啊?
(1)我也同意 SPI Flash + TF卡,前者存固件,后者存应用程序、用户文件等
(2)用分立MOS管如何 分立MOS管的控制怎么办?让CPLD控制还是用74hc595之类? -_b
我依然对CPLD的用途表示疑虑,有这个必要加一个CPLD么……
合理的逻辑和加载顺序应该能避免之。
GND和VRef建议用分立MOS实现,主要考虑导通阻抗低,如果10 Ohm阻抗可以接受,可用TI的传输门。
Vref需要每路配置比较器,用于压差检测。或者做理想二极管。
待讨论。
如用分立器件,驱动信号看FPGA引脚分配结果?或者SPI的IO扩展,如595;IIC的IO扩展,PCA9555,16路的。
具体看资源和IO数量。
另,如果要扩展功能,要不要支持差分输入。。。这个就没边了。 CPLD开始是考虑用于SPI Flash和TF卡的接口辅助;不然cy7c68013a读取他们会太慢了。
全用FPGA的话会有这个问题,脱机模式下,读取、加载FPGA位流的时候就只能用8051 IO
口模拟时序了…… 速度会很慢,同时TF卡的CRC最好是让CPLD来完成,不然8051做更慢。
差分输入,确实比较麻烦,有没有兼容的办法?FPGA分配IO的时候还得仔细考虑下。 dr2001, 你说的Vref的压差检测是要做什么啊?
GND用NMOS是可以的,100ohm的导通阻抗实在是有点大,Vref用74HC4067之类的模拟mux来选择行不?
对了,选出来的Vref最好加个简单的AD电路,能测量Vref还是挺有用的功能的,不过采样率不用很高,
精度也没啥要求,所以用电容充电+比较器也是可行的。 to 【16楼】 minux 啊啊?
我有两种方案
方案1,分立MOS管,例如:
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_516341.PNG
(原文件名:20091218A.PNG)
方案2,低阻模拟开关,例如:
点击此处下载 ourdev_516342.rar(文件大小:237K) (原文件名:PI5C3253L.rar) 我觉得应该留上NET接口,BDI2000,3000,基本上都可以使用TCP调试的 To 【15楼】 minux
我的看法是IIC Flash里边放一个默认的FPGA固件,用来读卡的。三合一的帖子里写过操作流程。
Xilinx的CPLD宏单元很有限,不一定好完成这些工作。CoolRunner就太贵了。
差分要不然就是留IO插座吧。直接支持布线很麻烦,而且不知道有啥合适的器件。需要看看。
暂时先不考虑这个了。
GND和Vref的问题相当类似,都是自动识别/判断不可靠。
如果只支持用户指定引脚功能,那没问题。如果不是,那么只好依赖比较器做理想二极管来实现,我没想到更好的方案。
模拟开关的问题都在等效电阻上,我看了几个大约在5-10欧姆,10mA就0.1V了,不是很理想。
Vref的电压测量是小事情,只不过一个大致数据;PWM,RC滤波+比较器或者测量充电时间都没啥大问题。 要不然这样,用一块IO很多的3AN系列FPGA作为BUS-Matrix,采用单独的处理器,其他芯片都直接与FPGA相连?? to 【19楼】 dr2001
之前担心68013的IO读TF卡/SPI Flash太慢,CPLD只是给他当一个SPI收发器
XC9572XL应该10块钱或者略出一点头就能买到了 【19楼】 dr2001
常见的iic里面放不下FPGA位流的啊…… 而且iic速度也够慢的,400kb/s,这个得多长时间才能加载完
FPGA啊。太大的iic eeprom估计比较贵。我们用CPLD还可以做到CPLD直接做SPI Flash的串并转换,通过
slave parallel直接送入FPGA(TF卡也可以这么做,只要文件连续,或者每次送一个block)。
【20楼】 h2feo4 无机酸
我也曾考虑过让单独的FPGA/CPLD做switch matrix,不过延时会比较大(这样TCK速度限制了……
而我们用FPGA的目的是提高JTAG速度),用专用的芯片,那简直是贵死了……
当然,不用真正的switch matrix,是不可能做到用户指定连接的……
否则用户指定后,我们需要重新编译FPGA的位流(有一个办法可以搞定这个问题,只要自己P&R,
使用xdl和bitgen即可,但是这两个也需要license,总不能让用户都装个ISE webpack吧?)
你说的单独的处理器是啥意思?不在FPGA里放软核了?抑或是不用68013a里的8051而外接一个处理器? to 【22楼】 minux 啊啊?
仅仅是一种可能性
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_516347.PNG
(原文件名:20091218B.PNG) 【18楼】 wenming 老王
网络接口以后可以考虑,不过我觉得加了网络口之后,就必须上个ARM处理器了,
目前的版本先暂时考虑用高速USB口的吧。
等这个版本弄出来了,确实可以考虑搞个高端的平台,到时候肯定上个网口。 dr2001,我们在建立项目通讯录,能不能麻烦给h2feo4发封信啊~ To【25楼】 multijtager
Mail Sent to h2feo4.
To【23楼】 h2feo4
支持。
考虑68013+SRAM+FPGA(上电SPI Flash配置)+Port,预留两溜排针,可以用于差分,更多IO,高速通信的扩展。
基本结构和以前讨论的一样;同时考虑了近期的适度扩展。
对应的就是FPGA的规模要适当留大,需要PQ208这样的封装才好。 我对这个项目很感兴趣,希望能参加!
我一直想做一个像BDI2000那样的通用仿真器:),因此对有关JTAG的技术都比较关注并掌握了相关的知识。
之前看过“shixm.zh”的帖子(http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3775910),再看这个帖子有了些想法,就在这里说说。
我认为“h2feo4 无机酸”的方案与“shixm.zh”想法不太一样:
“h2feo4 无机酸”的方案是一个通用替换方案,可以通过不同的固件来模拟各种类型的仿真器(或下载线),包括接口,这样就可以利用原仿真器的软件;
而“shixm.zh”的想法是构建一个像BDI2000那样的通用系统,而不是去模拟其它仿真器,它有自己一套完整的软硬件体系结构,硬件基本一致,软件结构也基本一致,通过软件中的功能模块的替换来实现对不同目标的仿真功能。
基于前者,“h2feo4 无机酸”的方案比较不错:用68013A模拟接口,用PLD模拟行为(当然两者的界限并不十分清楚)。
若要后者,我认为还是用功能较强的CPU+较简单的PLD实现比较好:PLD就实现JTAG的接口和TAP控制器功能(有点像TI的JTAG接口控制芯片,具体型号忘了:),而CPU在PLD的基础上实现高级的功能和对上位机接口功能(如串口、网口、USB口等,前两者结合CPU的软件可直接与上位机的GDB通信进行调试)。
另外,我比较同意“minux 啊啊?”在6楼的(1)、(2)和(4)观点。要说灵活的话还是把重心放在CPU上的方案比较灵活,因为熟悉软件的人毕竟比熟悉PLD编程的人要多得多,缺点是成本上不会低。但在早期也可这样解决:用CPU的IO口或SPI口通过软件模拟JTAG的接口和TAP控制器功能,这样只需要CPU即可。后期可以升级用PLD替换软件模拟的JTAG接口和TAP控制器,只要在早期仔细规划好相应的软硬件接口即可。
罗哩罗嗦了这么些,希望能抛砖引玉,呵呵...... 根据以前的各种讨论,我认为,当时的基本定位/功能需求是这样的:
- 能够独立运行的装置,内置存储器,可以实现“上电/完成指定工序”的功能。
功能上很简单,设定为简单脚本这样的。
- 能够使用USB HS和PC连接,从而和网络/调试环境/etc.结合。
即如果该设备不独立运行,那么必须要有一个PC作为其接入点。
- USB Mass Storage支持,自带所有驱动程序。
用户不需要额外存储器携带目标代码,驱动等等。即插入,复制相应数据到本地,切换模式,完成调试功能。
相比下载线+U盘的模式,直接支持USB Mass Storage,可以用于提供/运行固件更多的功能固件。
- 相对强的USB Slave/Target模拟器,通过更换Firmware,可以模拟常见仿真器/下载线。
主要是因为很多调试环境的驱动接口封闭,很难自行开发接口;相比之下,反向协议/实现比较容易。
- 灵活的IO接口配置,以支持多种IO电压,线缆顺序,单端通信物理层协议。任何单端传输的通信协议,都存在被支持的可能性。
- 对于远程访问,GDB,难于在FW上直接实现的协议等等,以PC端代理的形式实现。
有点类似于JLink的方式,可以提供标准操作库,方便用户进行快捷的二次开发。
同时,调试代理支持不同的软件。
我对是否需要“一个完全独立,不需要PC介入,就能完成复杂工作;乃至于远程用以太网连接并操作的多功能调试器”,持保留态度。
很多事情完全可以放在PC上去处理,利用一些特定的固件,让效率保持的合理的水平就行了。同时保有较低的硬件拥有成本。 to 【28楼】 dr2001
第一版本还是先尽快实现基本功能吧,高级的慢慢来
争取年前做出第一版PCB,至少在上面跑个USB-232试试
另,已回复您的邮件 to 【27楼】 yzhu
欢迎加入,我们第一版可能暂时考虑利用FPGA中的CPU软核完成主要功能,先实现基本功能,在慢慢改进提高 占位 【27楼】 yzhu
欢迎加入。
我说下这么设计的原因。BDI2000那样的(另外类似的一款http://www.ronetix.at/peedi.html,
这个的网上文档稍微丰富些,适合研究它的实现方法)超高端仿真器需要的不只是硬件和固件,
还有配套的上位机软件,而且你需要支持主流的各个开发平台,这样的话,光靠一个小的开发
团队会难以支撑的,而这种级别的仿真器,如果有人需要的话,也不会在乎买个正版的价格的,
他们会需要很好的技术支持(所谓主要买的是那个服务),开源的东西如果没有一个公司支持它,
很难推广开,导致开发出来只能当作几个爱好者的“玩具”,实际上无法实用。
而实际上,大多数开发者并不需要那么强大的工具(试问,真正要调试多核器件的人会买不起相
应的工具么?),开源的工具应该定位于这部分最广大的用户群,让大多数用得起、用的了,这
样才可能有生命力。我前面说了对于开源项目来说,最重要的是用户。尤其是能帮助开发、测试
的用户。
至于做中低端的开发工具为什么要先采取模拟其他已有设备的方式,这是因为我们可以尽可能利
用已经开发好的上位机软件;前期这么做是最保险的方式,不然的话,不易于发展初期用户。
我不是说我们一直都得跟着别人做,我们当然可以创新,目前的架构完全可以做性能非常好的仿
真器,到一定的时候,我们完全可以自行做完整的仿真器系统的,可以先支持GDB的远程访问协议,
我也一直在兼顾这方面的需求。
然后我再说下目前的结构:
我们计划在FPGA里面放两个主要模块,一个是一个开源软核,比如ZPU那样的,当然需要定制,为
相应的需求定制;另一个模块是一个灵活的协议处理模块,举个例子,前面提到的TI的JTAG控制器
芯片hct8990,就和他类似,这个模块决定于物理层协议,JTAG是一个,BDM是一个,SWD是一个,
软核控制具体的流程,比如上位机过来说“向0x1000地址写入以下0x1000个字节”,我们的软核控制
首先移入适当的IR,然后再根据需要移入DR等等。
用这样的架构,好处是,我们只要完成了所有的协议处理模块,其余的部分完全变成了软件的工作,
调试之类也非常方便,以前绝大多数类似产品都不是这么做的,我希望这么做可以达到一个性能和
灵活性的最佳平衡。
至于cy7c68013a,前期模拟其他设备时候他可能工作量较大,但是后期就会变成只处理USB协议,负责
指挥软核并处理用户界面还有加载FPGA位流等。
我觉得这么说,可能就能对本项目目前的总体架构有个了解了,有什么问题欢迎讨论。 【23楼】 h2feo4 无机酸
唉,我其实很希望找个带有HS USB的ARM,那样我们就能彻底摆脱cy7c68013a了……
用个类似SAM3U类似芯片会非常合适,但是成本上不好办啊……
现在简单核算下成本,我按照淘宝上的价位保守估计:
cy7c68013a-128AXC 35
is61lv256al 6
xc3s250e-4tq144c 40
xc3s500e-4pq208c 65(以上两者选一个)
74lvc1t45 3 * 16 = 48
m25p64 15
24lv128 3
xc9572xl 10
没考虑的是阻容器件、接插件、PCB、还有MOS管/模拟开关/Vref切换电路。
用xc3s250e的成本是157+其他;用xc3s500e的是182+其他;
已经不便宜了…… 我觉得吧,总硬件成本还是不要太高,300元为硬性上界吧。
我的建议如下:不用追求一次性搞定,毕竟我们还没开始弄软件,开始弄软件之后估计
还会出现意料不到的问题;因此,尽早出一个差不多的板子试试,后期的硬件改进和软
件开发一同进行。IO问题既然我们还不确定,可以先按照h2feo4的设计,每个IO上四根
线控制,IO可能差不多。或者再稍微简化点?
大家觉得如何?我觉得不开始做软件/固件并实地实验,不知道到底有没有问题。 to 【33楼】 minux 啊啊?
3S500E我以前买过,价格61,手里还剩5片,不过是FT256封装的(要4层板才能布下,第一版不考虑)……
68013估计还能便宜
至于IO单元,如果按【17楼】方案1,是每个端口消耗3个IO,1个I,2个O,每个IO方向是固定的不需要转换,所以buffer可以适当简化
4个IO也可以,应该速度更快一点,但有失控烧毁的危险 To h2feo4
17#第一个方案的问题在于Vref比较低,比如1.8V时,PMOS给GND时候,不一定能让PMOS可靠导通并提供较低的Ron。
要么用PWM生成一个负压,推动PMOS;要么倍压正电压,想办法推NMOS。
另外的问题就是这个结构能支持到什么样的IO速度。
在三合一的讨论中,yzhu提出AVR32UC3A3x,不知道价格几何?应该也可以使用。 to 【35楼】 dr2001
分立MOS方案确实在电压较低的情况下不太好使,而且速度偏慢
AVR32系列很担心能否找到货 IO还是贵点保证性能吧?
Vref那端用FPGA IO + Buffer 倍压出来一个驱动电压,驱动NMOS在高端,你看如何?这样能确保电压起来。恩。
因为负电压不容易获得支持。
这样1 IO Data,1 O DIR,2 O Vref/GND?
Vref如果用理想二极管,则不消耗IO。
AVR32估计货源有问题,也不便宜。Digikey看12.9 USB/pcs to 【37楼】 dr2001
先确定一下要多少输出电流吧,这样方便元件选型 【34楼】 h2feo4 无机酸
哈,就那个芯片没查,我就估计了一个价格…… 已经根据taobao上平均价格改正估算。
4个IO方案确实容易出问题短路,但是如果如果省一个O,那么还得加译码器啊……
要不换个大点的CPLD也可以…… 那就用MAX II系列吧,它是用FPGA的4LUT结构做的,
比较适合这种特别简单的逻辑。
后期在电路完全确定了之后确实可以布块4层板,不过用BGA还是会使得很多人无法焊接,
还是需要仔细权衡。
【35楼】 dr2001
如果还要用负压或者倍压电路就非常麻烦了。
Atmel的AVR32UC3A3系列就是不知道好不好买…… 反正我在国内没查到货源…… Atmel家的东西就是这个货源比较郁闷……
(avr32我持比较保留的态度,第三方开发工具支持不好……要开发它,要么你放弃仿真器,要么去买JTAGICE mkII吧……)
现在估计能买到的也就是AT91SAM3U系列还算靠谱,但是也不知道价格多贵……
Vref用模拟mux如果不考虑导通电阻大和电压过高的情况,没问题吧?
只用NMOS控制GND的连接,这个问题可能会好点,Vth(on)和rds(on)都比较低的NMOS还是比较容易找的。
我前期仔细调查过包含高速USB的芯片,简略提下以前没提过的芯片(都不太可用……不然我就提了)。
(1) Freescale:MC9S12UF32 16-bit S12 Core, 32KB Flash,3.5KB RAM, 1.5KB USB Buffer, 7*2 endpoint,
TQFP100封装,60-80元@taobao。应该面向的是USB Mass Storage设备的,用在这里的话首先价格上不合适,其次封装也太大,
更别提那么受限的RAM了。该公司还有其他款的,但是都太高端了。
(2) Cypress:cy7c68001,无CPU,但是不支持EP1,真郁闷,其他跟cy7c68013a非常类似。cy7c68033我前面说了,不太好,
但是也可以重新考虑下。
(3) NXP:没办法,能用的单片机全是BGA封装,实在是郁闷,该公司就不能也出个QFP封装的么?
单独的控制器有ISP158x系列,14个可编程EP,8KB Buffer,SoftConnect技术;总线速度有点低,12.5MB/s,不过相对来说,
这个项目没必要那么高的带宽,用HS USB需要的是稍大于1MB/s的速度(33MHz TCK的时候我听说的最快ARM下载速度才1MB/s,
虽然我觉得还有优化空间;FPGA也要快也就达到理论上限4MB/s吧),和快速响应速度,比如125us的微帧间隔和1ms的
responsiveness差远了。
(4) PLX-Tech:NET2272不错,也是不带控制器的高速USB控制器。支持3个Endpoint以及所有EP类型,据厂商的数据是最大突
发传输速度是40MB/s,8/16位总线。总共有3kB的缓存。一个优势是支持virtual endpoint技术。我去电子市场问过,贵死了。
(5) TI:tusb6020,不说了,这个接口你没办法用的,只能配合TI的某些DSC/DSP用。
(6) 其他公司:ST, microchip都没发现合适的……
单独的高速USB设备控制器(不带单片机的版本),我可能没调研全,但是单片机调查得还是挺全的我觉得(除了国产的完全没调
研外)。
如果我们推翻前面的USB接口设计,可以,不过意味着要么我们用AVR32UC3A3或者AT91SAM3U,或者是上个NET2272/ISP158x但是
配合一个带外部总线的单片机。FPGA是肯定需要的,除非我们不想支持大于30MHz的JTAG速度。 总结下上贴,不用cy7c68013a的高速USB接口方案:
(1) cy7c68033,8位总线,外接NAND,15kB RAM
(2) cy7c68001(牺牲EP1) + 单独MCU
(3) ISP158x/NET2272 + 单独MCU
(4) AT91SAM3U (据说价格70/pcs左右吧……我曾经打听过)
(5) AVR32UC3A3 (这个最不靠谱……)
(6) 咱不怕,上个ARM9……
单独的MCU建议用100脚带FSMC的STM32。 【37楼】 dr2001
同意用贵点的IO保证性能,咱用了FPGA,TCK怎么得以50MHz作为目标吧?不然就浪费了FPGA了。
我发现Vref还真得换个小Rds(on)的MOS管,高速的时候电流可不一定小啊。
用NMOS可能比PMOS好点,但是倍压是比较麻烦啊,单个外部IO的辅助电路太复杂了…… 【35楼】 dr2001
1.8V导通的低Rds(on)至mOhm的PMOS还是能找到的…… IR有很多……
当然我都没调查价格。不过更低的Vref看样子不太可能自动切换了。 to 【39楼】 minux 啊啊?
三个IO也不用加译码,就按17楼那张图,不需要再加其他东西,普通输出也靠MOS管,但要选速度快的MOS管
另外再贴一个模拟开关的方案,4线方案,功能应该是最全的,而且性能与Vref无关,如果不需要上下拉功能就可以再省一个IO
速度倒是应该够了,但是电流输出能力较小,只有120mA,可以考虑两路并用
芯片资料可以参考17楼的那个压缩包,这个片子我手里有五十几片
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_516661.PNG
(原文件名:20091219A.PNG) mark 【43楼】 h2feo4 无机酸
哦,那个3线方式就是不用成品的电压转换芯片了,那倒是省了不少成本,不过这个电路的切换速度得
仔细算下。最好能找个封在一个封装里的PMOS+NMOS比较好。我不太确定能不能找到那么快的MOS管。
啊,确实提醒了我,不用单独的Vref选择,直接那个IO输出高即可,只要输出阻抗足够小,同时电流
驱动能力够大即可。这么考虑的话,自己拿MOS管做确实是个好办法。
这个新的方案还得再考虑下。你那个模拟开关ic电阻倒是挺小,那个好买么?单片价格如何?
有没有条件测试下,驱动比如说20pF*16的负载,50MHz行么?感觉这么快比较悬啊,另外,100mA的时候
估计得降压500mV(typical)了,还是有点大啊…… 分立PMOS的关断时间都比较长啊…… 尤其是大电流的版本。
比如IRLML6401GTRPBF,关断延时比开启延时大了一个数量级(250 vs 11ns typ.),当然这是电流Ids = 1.0A的情况。
我再看看小电流的有没有合适的。不过比较难,低Rds(on)的基本都是Power MOS……
to 【46楼】 minux 啊啊?
PMOS速度不够的话干脆就用全N结构好了,电路就要复杂点
电流不用那么大,估计500mA已经够满足所以情况了
模拟开关电容是稍大了一点,但是应该有很多公司的可选,本质上就是个74-253的增强版 看看这个http://www.fairchildsemi.com/pf/FD/FDG6332C.html,
互补的PMOS/NMOS,可以接受的延时参数,其他参数也还可以,从淘宝上看价格可能还可以。
延时可能得估计到40ns,支持1.8V很悬;这方便性能更好的很不好找…… to 【48楼】 minux 啊啊?
这个能买到么,封装尺寸倒是小的可爱,电流也足够,速度还有待详细论证
在分立MOS管方案中恐怕还是需要电平转换的,至少PMOS的驱动和输入都需要,不过可以使用简单得多的芯片,因为都是单方向的 负压驱动PMOS方案和倍压驱动NMOS我觉得都不太可行啊…… 因为这个负压和倍压的开关我们
照样会面临开关时间的问题……
现在我不知道lvc1t45是什么输出结构,它最大电流50mA,一般情况下也是够了啊?
但是不知道能不能像17楼图那么接…… 就是VCCB接都接在一起而不接别的东西。
另外,其他高电流输出的bus driver是不是也可以这么用?有244的实验下? to 【50楼】 minux 啊啊?
MOS管17楼那种接法是没问题的,只要MOS性能足够
MOS导通时可以双向过电流的(类似应用:MOS管整流桥)
集成驱动器不太清楚内部具体结构,不太推荐这么用 【49楼】 h2feo4 无机酸
NMOS我们可以转换到5V驱动他,导通电阻啥的都不用怕了,唯一的问题是PMOS的驱动电压可不好办。难道
真弄个负压发生电路,再串个NMOS么?这么做这个输出级我可以确定是史无前例了……哈哈。
我觉得分立MOS的速度应该没办法越过10ns左右的delay, 4ns左右的rise/fall time这个门槛了,那样50MHz几乎
没希望……至少从Power MOSFET来看应该是这样。 希望我是错的……
如果真是这样,多一级MOS开关,就要多20ns的延时,这个性能损失实在过于巨大。 to 【52楼】 minux 啊啊?
越折腾越复杂了
第一版干脆就1T45解决吧
VREF和GND采用单独的管脚,自适应暂不考虑
或者,1T45 + MOS管的4线法,用CPLD逻辑锁保证不会短路
说起来要是有个高速的MAX232,用它驱动MOS管就很爽了哈 等下,我想试试我刚才找到的那款互补MOS管的性能……
我试试用50MHz的方波推,后级接不同电容看看延时到底如何,反正电流啥的我们
都知道他没问题。
如果他能行,不但电路不复杂,而且比1t45便宜(假设淘宝上的价格靠谱的话)。
赶紧抽时间去电子市场……
【53楼】 h2feo4 无机酸
CPLD用啥呢?44脚的不够用了,上QFP100封装的MAX II吧? 哦 不用试了…… 仔细阅读发现,Qg太大了(~1.2nC),以至于FPGA如果要在5ns内改变其状态的话,
至少要有平均电流1.2nC/5ns = 0.24 A的电流…… 怎么可能…… 整个bank能不能有那么多电流
都不好说…… 更别提USB的电流限制了……
这么来看,自动切换Vref真是个吃力不讨好的行为…… 还是别做了,除非能非正常地使用那些芯片。
我现在也同意第一版简单点的观点了,就用16片1t45吧(这个似乎较贵,大家可以都调查下附近的电
子市场的价格,最好是买NXP的原装,性能好很多)。
要切换让用户自己接杜邦线算了…… 哈哈。 然后我们做个小转接板,把目前常见的接口都做上去,
至于自动检测接线,就用h2feo4以前说的方案吧,我们多留出几根只能O和只能I的IO出来(但是最好
也接电平转换,但是可以和另外16跟IO分开的Vref,扩展的时候我们自己再规定这些的用法,这样也
能尽可能利用好那个FPGA)。
既然两个人都同意了,如果其他人没啥意见,就画板吧。
没别的要讨论的了吧? 哦,只是不能用同一套电路既做Vref选择和强制GND,又做输出了…
分开还是可以的,似乎也不会让成本高很多啊…还是负压驱动PMOS吧,因为用NXP的1T45是可以支持1.2V电平的,
PMOS做这么低的Vth(on)很困难…有带有配套NMOS的PMOS,用它就行了。
这样倒是可以不放弃自适应… 第一版还是简单点比较好。IO有地方就预留,没有就算。先考虑主要功能。
参考的IO级如下。
可能存在的问题:
- Kick Start功能可以省略掉。
- 直接倍压输出电流和驱动能力是不是够,只驱动NMOS的话,mA数量级应该差不多了。
- 理想二极管在输入IO电压和Vref接近的时候,会频繁开断,可能需要增加一个滞环,不过就比较麻烦了。这里直接RC滤波,增加一个小延迟。
- 比较器可能会反灌电流,导致出现问题,可以通过比较器VCC串二极管解决。
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_516693.png
(原文件名:01.png) 感觉好像跟这个差不多,给个图片参考一下:
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_516705.JPG
(原文件名:True USB Willem2.JPG) SAM3U能有供货么
SAM3U + XC3S50A 估计成本和68013方案也差不多,而且说不定还方便一点 我感觉我的能力有限··只有先支持··· 先学习了,只是能力还达不到啊 【59楼】 h2feo4 无机酸
今年悬了…… 只能搞到样片,大概70元一片吧。用那个确实爽。
不过样片的errata真让人郁闷…… 【58楼】 guest01
赞,我去查下。 to 【62楼】 minux 啊啊?
我觉得如果SAM3U可用的话,肯定比68013方便
留着这个方案吧,等货源就绪可以考虑启动之
或者现在就用样片开玩? 【64楼】 h2feo4 无机酸
恩,SAM3U一直我认为最理想的做这个的单片机……
不过我尝试申请样片未成功…… 另外一个跟电路无关的问题,这个项目的硬件/软件分别用什么License啊?
我希望都用GPL,保证别人的修改必须反馈。
尽管国内都不怎么重视这个事情,但是我认为这不意味着我们不用选择License。
否则很可能我们的成果会被默认进入public domain,那就不好了。 【57楼】 dr2001
我的想法是这样:
Vref接一个LOAD Switch,比如:http://www.fairchildsemi.com/pf/FD/FDG6331L.html,由于内置了NMOS
Level Shifter,所以可以用3.3V开关(Vref最高8V,没问题,已经足够),从数据手册看,1.8V开启是没问题的。
这样也不用负压发生器了。这东东淘宝价1元左右,可以接受。
下接GND的就用NMOS,用3.3/5V推它,应该也足够了,比如这个:http://www.fairchildsemi.com/pf/FD/FDG311N.html。
2.5V Vgs的时候Rds(on)是150mOhm,足够小了,Idmax = 1.9A也肯定够了。不过这个也1元左右,如果Rds(on)能
稍微大点的话,可以选个更便宜点的,比如http://www.fairchildsemi.com/pf/FD/FDY300NZ.html,这个Rds(on)是
900mOhm左右,可能又有点大了。
我觉得不要在IO线上加太多MOS管或其他电路,不然负载电容大了,速度上不去了。
这样IO的电路就是lvc1t45, fdg6331L, fdg311n,一共需要1*IO+3*O来控制,为了安全起见,3*O使用CPLD来做译码。
这样不但能节省FPGA的IO,同时也考虑到3*O不需要经常变化,用移位寄存器来控制即可,更能节省FPGA的IO,
多出的FPGA IO可以也引出来,以后可以加上其他功能。
另外,Vref上加一片ADC,和一个三极管控制LED以指示Vref识别正确以及目标板接入,这样可能更人性化,很多仿真
器都有类似功能。ADC不用很高采样率,位数最好是10位吧,这样和整个设计相匹配点。 【59楼】 h2feo4 无机酸
可以考虑一下AVR32UC3A3x (SAM3U有的它都有,且支持SDRAM),不过成本有点高。 【68楼】 yzhu
avr32uc3a3前面已经讨论过了,不管从开发工具还是货源都不合适。
我觉得除非有个人用户能接受的价格和足够可靠性的第三方ICE出现或者ATMEL公布ICD的完整技术细节,
否则我自己也不会在avr32上花时间。 【67楼】 minux
其实问题回到原点:电压范围支持到多少,要不要Vref自适应,etc。
- 1.8V起跳,不要自适应,不要Kick Start,那就没问题,可选范围多很多。
一个IO线挂两个MOS引脚。我没在手册上看到MOS D/S的等效电容,估计不太大。Gate电容和这个没关系。
- 更低的Vref电压,PMOS,Vref在1.2V的情况下,可用性存疑。用NMOS的话,没有倍压电路,在5V的时候不行。
PMOS+NMOS,需要一个额外的反相器。
- 要不要Vref自适应,这个看需求。如果只是用户指定,选择合适的PMOS就行了;否则多一个比较器,问题也说了。
对连接到Target的IO而言,附加电容来源:
GND的NMOS D引脚。
Vref的PMOS S/D引脚【1.2V没有负压支持,可用性存疑】,或者NMOS的D/S引脚【没有5V倍压支持,5V可用性存疑】。或者两个引脚,不增加额外电源。
Kick Start(对外供电,小实验板可以使用),一个PMOS的D/S引脚。
如果Vref自适应,一个比较器的Vin引脚。
以上我没查到等效输入电容的数量级,好像一般都不列出来。
IO FPGA直接控制,CPLD控制等等,问题都在于上电/重新配置/修改配置时刻,稳态出问题的概率都不太大。
Ron,按照全压降0.05V@额定电流计算,因为1.2V电平最低1.1V,留0.05余量。这样,100mA的时候,每个管子许可0.025V@100mA,250 mOhm Ron@最劣工况就可以满足了。不是太困难的参数。
AD我没意见,就看大家期待什么精度了。示意性的没必要上AD。。。 【70楼】 dr2001
我觉得对于性能指标的要求,Vref至少要能保住1.8V可以支持,目前只能1.8V IO的器件已经进入实用了。
Vref自适应看样子是个吃力不讨好的活儿,因为即使适应了Vref,离确定其他的IO的用途还有相当的距离,
比如AVR和Altera都用相同的JTAG pinout,检测出Vref之后还是没办法直接区分,也没办法只根据他自动
加载固件,还是得看JTAG ID,但是繁多的芯片,JTAG ID的数据库放在我们的硬件中不太可行。
因此,还是让用户直接指明用什么接口吧,我们还是退一步只做能自动切换就行了。
kick start功能,为它又要加重IO的负载,可以不加吧?唉,主要是最高工作频率和易用性上总是矛盾的。
抑或是这样来个这种,我们只在某一个针脚上支持对外供电,比如用户插_插头的时候如果插在中间就完全
使用高速IO,插在靠某一侧,就能有kick start功能。
Rds(on)要250mOhm的话,似乎不是太容易在满足电容负载的情况下达到…… 分立的MOS管一般会给,至少得
考虑Cds量级,具体的分析不简单,还有寄生晶体管之类的影响,最好是仿真下。这个参数一般都不会低的,
尤其是低Rds(on)的。 既然这么定义需求的话,那就没问题了。
IO部分:
- LVC1T45电平转换;
- NMOS到GND;3.3V/GND驱动;Ron < 200 mOhm @ Vgs 3.0V, Ids 100mA。
- PMOS到Vref;Vref/GND驱动;Ron < 300 mOhm @ Vgs -1.8V, Ids 100 mA。Von(th)典型值最好在-1.0V左右。
上位机指定Pin类型。 IRF5851:
TSOP-6, 2.75x3mm面积;耗散0.5W;Vgs=+-12V。
Rds(on)=0.12/0.22 (N/P MOS) @ +/- 2.5V Vgs, 2.2A/-1,7A Ids.
Vgs(th,max)=1.25/1.2 (N/P MOS)。
手册给出的曲线最低Vgs=1.5V(NMOS), -1.2V(PMOS)。淘宝报价1 RMB,电联具体价格。
查曲线:
NMOS,3V Vgs,900mA @0.1V Vds,Ron足够小了。
PMOS,-1.2V Vgs,10 mA @0.1V Vds;-1.5V Vgs,50mA @ 0.1V Vds。
问题不是太大,低于1.8V的时候,注意降低IO输出能力就好,如果可能,多个引脚并联当Vref。
作为电源供电的没什么大问题了。 【72楼】 dr2001
71楼的需求我又多加了点关于kick start的折中……
PMOS比较难选型…… Kick Start不一定要,属于远后备功能。有则对于很小的受众来说,很好;没有的话,对于他们而言,也有是容易解决的问题。
同意你说的,比如,最后两根线不要定义信号IO功能,就是Vref/Kick Start/GND这样。用户靠边插接,就有这些功能,反之没有。
不过这个需要两个PMOS/NMOD头对头连接。
N/PMOS的用途不涉及信号IO,只要启动,说明该IO用于电源供应。
因此,主要需要考虑管子的导通阻抗,电容负载下,这个我们在可选范围里尽可能良好就行了。
还有就是,管子关闭的时候,Cds,Cdg,PMOS还有衬底产生的电容。不过这些信息好像手册里不全面啊。
有个Output Capacitance,我不知道测量条件和电路,数量级是50pF。 to 【68楼】 yzhu
UC3A3如果有货源,会考虑的
to 【66楼】 minux 啊啊?
License用GPL我没意见。dr2001怎么看?
意见统一的话,就请minux写一小段版权声明,我可以把它加到显眼的地方去 既不影响高速性能,又能提供低阻VCC/GND切换的就是继电器了吧
不过用几十个继电器也太夸张了,而且估计需要额外的电源 GPL我没啥意见,不过好像也分版本?
这个具体的内容我没研究过。呵呵。
继电器功耗什么的太夸张了,算了吧。。。还是MOS。 严重关注,需要帮忙提供资料的时候就说哈。 to 【79楼】 Gorgon Meducer 傻孩子
小声地问一下,SAM3U估计什么时候能买到呢?
用在这个项目中,功能可以说是完美,就是不知道能不能有货 【75楼】 dr2001
那两个能提供电流的针脚还真不能不具有IO功能……
看这几个pinout:
http://www.jtagtest.com/pinouts/maxq_jtag
http://www.jtagtest.com/pinouts/actel_flashpro3那个VPUMP也可能需要向目标板提供电源
我们虽然规划了16个双向IO,但是最后分布的时候,我估计还是用一个10*2的pin header吧?
(这样即使我们先不做转接板,也能用我们IO功能的灵活性兼容已知的接口们)
左侧10个都是IO,右侧中间6个是,其余是专用VREF/VSUPPLY,主要是ARM20的pinout太麻烦:
http://www.jtagtest.com/pinouts/arm20
另外一个麻烦的是这个:
http://www.jtagtest.com/pinouts/pld-jtag
同时,似乎还应该在pin header旁边布上LED,用来指示用户Pin 1的插入点,当然这在第一版也是
可有可无的。 mark 【76楼】 h2feo4 无机酸
如果就是使用GPL,版权声明倒是不麻烦,每个源文件都加上下面这段即可,同时项目的发布文件包(切忌不要用rar压缩)
中包含一个叫COPYING的文件,内容是http://www.gnu.org/licenses/gpl.txt。
multijtager - universal USB JTAG adapter
Copyright (C) 2009The multijtager team.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
不过啊,开源硬件协议中源代码用GPL没啥问题,电路图就不太好办了,我再看看有没有类似的
可行License吧。 今天去了电子市场,由于时间所限,没问到那几个fairchild的MOS管。
但是发现1t45的价格原来估计3元高了,至少可以降低到2元,这样接口部分就便宜了很多。
【73楼】 dr2001
PMOS的输入不需要用NMOS做一下level shift么?不然Vref = 5V时候,FPGA即使用3.6V的
Vccio也不能完全关闭PMOS啊。
另外,MOS管看来不能随意根据厂商网站上的选择,不然也许会很难买到,今天我问了不下
5家专营fairchild器件的柜台,均告诉我那两款暂时没现货…… to 【83楼】 minux 啊啊?
这个行不:CC-BY-NC-SA
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh 今天计划了一下,硬件平台做好后,软件上有几个milestone.
(1) 高速读写SPI Flash,至少可以测试2.7-3.6V的Vref电压的性能;同时SPI Flash的
最高时钟速率都很高,很容易通过这个测试整个架构的性能极限。
(2) 实现USB-Blaster,这个有现成的代码,但是我们可以创新的地方非常多,首先,根
据我阅读Altera器件的手册,几乎所有现今的器件支持的最快TCK频率都高于USB Blaster
能达到的6MHz,我们可以试试自动尝试提速。之所以先选择USB-Blaster,因为对于它的
理解最透彻。
(3) 实现功能类似于TI的hct8990的功能的JTAG Test Master,然后我们就不用再考虑JTAG
的物理层了。这样之后,svfplayer的就是水到渠成的事情了,有了svfplayer,这个设备
就真正可以实用了(很多器件的编程器都支持生成jam文件或者svf)。jam呢,稍微比svf复杂
点,但是在上位机做转换还是可能的。
这以后的还没有办法想到,因为这之后就需要反向工程现今的各个设备了。
ARM的调试可以考虑加入了,因为这也是有很多资料的,不过这个工作量就比较大了,因为
还有上位机软件接口的问题。
大家有啥想法? 【85楼】 h2feo4 无机酸
Creative Common的话,就是不能保证改进一定能反馈回来了……
如果用的话,建议是去掉NC,因为以往的经验显示,开源项目商业化如果完全遵守license的话,
对于项目是有利的(这当然要求我们得用像GPL那样稍微强一点的License,要是BSD之类,就可能
被人直接拿去改改卖而不反馈更新了……另外一点,得假设大家都整整遵守License,这点在中
国似乎是最不成立的……)。
用GPL的唯一问题是,不好定义硬件电路的衍生品。
抑或我们电路单独采用一个License,软件照常用GPL。 to 【86楼】 minux 啊啊?
SPI Flash 是个不错的主意,我当初想的其实是 USB-232 硬件用cc-by-sa是可以接受的,软件就GPL吧,这样不错。 【88楼】 h2feo4 无机酸
USB-232当然要实现;不过这个不太能突出这个项目的优越处,所以我在前面的计划
中就没写。另外,我们其实只能USB-TTL,232还是得上个接口芯片。
但是以后我们可以做到利用丰富的IO组合某些功能,那时候具有USB-TTL就很有利了。 这个项目现在看来挺复杂了,因为为了能组合功能模块,我们还需要定义片上总线和协议呢。
后期反向的事情还一大堆;上位机软件接口也要我们仔细权衡……
是不是可以申请开个专门的版面讨论了? SAM3U样片我应该可以搞到一些.大家如果选定方案的话,我回支持SAM3U和基于SAM3系列的软件开发. 算我一个了.邮件地址:qiujianben@msn.com 【92楼】 qiujianben
SAM3U的价格如何?不仅仅是样片,正式量产时候的芯片价格更重要些。 to 【92楼】 qiujianben
已发送邮件给您~ 这么说或许就用SAM3U了?也好。FPGA省事儿了,而且电路上不那么觉得绕了……
h2feo4,对于IO部分,你还有啥想法没?CPLD的事情也没定呢啊…… to 【93楼】 minux 啊啊?
SAM3U的USB是高速Full speed的480Mhz,而且可以外扩PSRAM,和Flash.这些器件加起来有点贵. ATMEL最近出了SAM3S,价格比较合理,但是USB是12Mhz的.看看有没有必要用480Mhz的USB.
to 【94楼】 h2feo4 无机酸
邮件已回. 【96楼】 qiujianben
SAM3U的USB是高速Full speed的480Mhz,而且可以外扩PSRAM,和Flash.这些器件加起来有点贵. ATMEL最近出了SAM3S,价格比较合理,
但是USB是12Mhz的.看看有没有必要用480Mhz的USB.
=============================================
High Speed USB对于这个项目至关重要,我前面早已分析过。所以尽管Full Speed USB的芯片非常丰富,我们
却只能用相对廉价的cy7c68013a“凑活”,因为我调研了甚长的时间都没有发现更好的方案。
如果用FS USB,那还不如用STM32呢,至少这个早就量产了,而且性能和性价比都不错……
参看39/40楼我对于高速USB的解决方案的较详细分析。
SAM3U我从它刚发布就开始关注,一直期待能及早量产…… 但是现在了还没动静。
如果价格合适,它是这个项目的最佳选择。就怕价格过高,因为我调研过样片的卖价是大概70元一片。
目前的方案cy7c68013a+is61lv256al+iic eeprom,甚至加上xc3s250e才80元左右,如果SAM3U最终价格
再稍微高点的话,一点价格优势都没有了…… to 【96楼】 qiujianben
非常感谢!已回复邮件到您的新邮箱 to minux、dr2001
问了 SAM3U 的价格,感觉非常不错
我能否将你们的邮箱、联系方式提供给qiujianben?