搜索
bottom↓
楼主: multijtager

multijtager(基于FPGA的多功能JTAG调试/下载接口)开源项目倡议与讨论

[复制链接]

出0入0汤圆

发表于 2010-9-26 17:42:48 | 显示全部楼层
今天得知Xilinx的USB Core的OPB版本也需要约1300 slice,不太可行,
但是DDR2 controller core只需要约350 slice.

所以,现在还是得实验下cy7c68013a-128的问题,我尽快买几片然后快递
给无机酸进行试验,同时我尽快开始做xc3s50an的测试。

出0入0汤圆

发表于 2010-9-26 21:39:25 | 显示全部楼层
继续记录今天的讨论结果:
以Spartan 3A的FG484封装为例,控制部分使用右半部分的IO bank,上下两个“半bank”各有大约35个IO,
以及一定量的IP,但是由于PCB的限制,IP可能不能全部fanout。

bank 1大概70条借32位宽度DDR2 SDRAM。
bank 0 & 2均3.3V,他们的右侧接如下东西:
  CY7C68013A: D[7:0], A[11:0], EA/RD#/WR#/OE#/PSEN#/(CS#), 16 bit FD[15:0], SLRD/SLWR/SLOE, IFCLK
              另外还可能需要n条IO(n>1)。
  SD Card Slot: 4 pin (我们肯定不支持SD卡模式吧?就用1pin SPI模式吧?取决于是否能找到开源的SD Host)
  SPI Flash: 4 pin
  SRAM: A[17:0], D[15:0]/D[7:0], LB#/UB#, CE#/OE#/WE#
一共最多需要是45+4+4+39+n=92+n,其中CY7C68013A的A[11:0]可以用IP。这个IO可能有点不足了。

bank 3的Vccio外面给,用于外部IO;bank 0 & 2的左侧可用于外部差分输入(LVDS33)。

出0入0汤圆

发表于 2010-9-27 01:05:38 | 显示全部楼层
今天的讨论中我突然想到了一种更诡异的配置cy7c68013a的方法,以避开VR 0xa0。

基本不需要FPGA的配合了,也不需要外部RAM,而且可以用更常用的100脚封装!!

首先我们看TRM中的如下内容:
7.4 CPU Reset Effects
The USB host may reset the CPU at any time by downloading the value 0x01 to the CPUCS register.
The basic USB device configuration remains intact through a CPU reset.
Endpoints keep their configuration, the USB Function Address remains the same, and the IO ports retain their
configurations and values. Stalled endpoints remain stalled, data toggles do not change, and the RENUM bit is
unaffected. The only effects of a CPU reset are as follows:
■ USB (INT2) interrupts are disabled, but pending interrupt requests remain pending.
■ When the CPU comes out of reset, pending interrupts are kept pending, but disabled. This gives the firmware writer the
choice of acting on pre-reset USB events, or ignoring them by clearing the pending interrupts before enabling INT2.
■ The breakpoint condition (<font color="red">BREAKPT.3) is cleared.</font>
■ While the CPU is in reset, the EZ-USB enters the Suspend state automatically if a ‘suspend’ condition is detected on the bus.

注意上面的彩色部分,注意是只清除BREAKPT寄存器的第三位。

下面看BREAKPT寄存器的描述:
Bit 3: Break Enable Breakpoint.
   The BREAK bit is set when the CPU address bus matches the address held in the bit breakpoint
   address registers (0xE606/07). The BKPT pin reflects the state of this bit. Write a  '1' to the BREAK bit
   to clear it. It is not necessary to clear the BREAK bit if the pulse mode bit (BPPULSE) is set.
Bit 2: BPPULSE Breakpoint Pulse Mode.
   Set this bit to ’1’ to pulse the BREAK bit (and BKPT pin) high for eight CLKOUT cycles when the 8051
   address bus matches the address held in the breakpoint address registers. When this bit is set to ’0’,
   the BREAK bit (and BKPT pin) remains high until it is cleared by firmware.
Bit 1: BPEN Breakpoint Enable.
   If this bit is ’1’, a BREAK signal is generated whenever the 16 bit address lines match the value in the
   Breakpoint Address registers (BPADDRH:L). The behavior of the BREAK bit and associated BKP pin
   signal is either latched or pulsed, depending on the state of the BPPULSE bit.

看出来了么,USB Host的CPU Reset只清除的位其实无关紧要,设想我们的固件上来将BPADDRH:L设置为0x0000,BPEN设为1,
BPPULSE设为0,然后很阴险的将BKPT管脚反向之后接到RESET#管脚(当然常规的电阻电容电路也是要有的)。

那么,一旦上位机重新下载了68013A的程序,那么必然Reset 68013A,那么在68013A从0x0000开始执行程序的时候,立即
会导致BKPT输出1,从而立即把自己重启,重启后,会自动从EEPROM中读取程序,这样我们就有接管了68013A。

只所以设置BPPULSE为0,是因为:
The RESET# pin can also be asserted at any time after the EZ-USB is running. If the EZ-USB’s XTALIN pin is
driven by an external clock source that continues to run while the chip is in reset, RESET# need only be
asserted for 200 μs. Otherwise, it must be asserted for at least 5 ms.
8个CLKOUT周期无论如何不够5ms.

现在,至少从数据手册上看,我的方法是可行的,唯一的疑问是:
(1) CPU Reset是否真的只如数据手册说的,清除BREAK位而不是整个寄存器都清零(只清除一位显然很费劲,这个只清除
一位的功能如果没有测试到,还是有可能被错误实现为清除整个寄存器的)。
(2) 如果在清除BREAK位的时候CPU的地址总线已经是0了,也就是这个0没有被检测到怎么办?
这个是有解决方法的,只要把BPADDRH:L设置为0x0001即可。因为8051所有的跳转指令都不会少于2个字节,所以这个位置
是一定会执行到的。

我们以后当然可以让FPGA来感受BKPT然后控制RESET#,肯定比我上面说的直接反向的办法更灵活(实际上,由于我们的EEPROM
固件无法从68013a那里判断到底是如何启动的它[是刚上电还是USB Host导致的重启],还是得通过FPGA来保存这个状态信息)。

我马上弄个测试程序,给无机酸,估计今天就能得到结果。
如果证实可行,那我们以前苦恼了那么长时间的问题就解决了,而且68013A方案也真正可行了(前面用EA的方式控制68013A
太浪费FPGA IO了,我们右侧IO非常紧缺)。

出0入0汤圆

发表于 2010-9-27 01:38:47 | 显示全部楼层
哈哈,我又衍生出另外一种方式,是不取决于68013A的内部实现的,就只利用了清除BREAK位的行为。

这需要FPGA和68013A的通力配合,首先FPGA上电后,启动一个timeout计数器。
我们的68013A固件执行后,立即设置下一个指令就是断点,并使BPPULSE为0,也就是如果我们不清楚
BREAK位,那么BKPT会一直输出1,待BREAK位置1之后,为了保险起见,我们可以把BPADDRH:L设置一个
不可能执行到的地址去,BPEN可以保持不变。FPGA在timeout之前如果检测到BKPT的1,那么认为我们的
68013A已经被控制。开始进入下一个状态,等待BKPT的下跳沿。

一旦上位机使用VR 0xa0更改了68013A的程序,那么在它恢复CPU Reset的时候,必定会清除BREAK位,
那么BKPT管脚必然会变低,FPGA感知之后可以立即使RESET#变成0,然后68013A就又回到我们的怀抱了~


这个方法主要是解决了上一个方法的如下一个问题:RESET#为0的Hard Reset是否清除BREAKPT寄存器?
这个数据手册没明确说。如果不清除,那么我们的代码启动后也会马上使得BKPT管脚为高,导致FPGA
又RESET,如此循环。
当然,巧妙地编程FPGA确实可以让我们免除这个问题的干扰,但是现在这个办法,我们肯定不用再担心
了。。。。

呵呵,我宣布:100脚的CY7C68013A一定可以绕开VR 0xA0了(如果数据手册是准确的话)!

出0入0汤圆

发表于 2010-9-27 15:33:54 | 显示全部楼层
好消息。经过无机酸的测试,998楼的方案已经可用,正如我所料想的那样。

现在正在测试997楼的方案。


另外,使用68013A方案需要注意FPGA应该控制IIC的WP引脚,以防止USB Host下载下来的固件
修改了我们的EEPROM。

出0入0汤圆

发表于 2010-9-27 16:20:56 | 显示全部楼层
997楼的方案也可以用了。

记录几个测试数据:997楼方案,BKPT低~100ns;998楼方案,BKPT低大约6.5ms-8.5ms之间,这
跟第二次加载的程序何时拉高BKPT有关.

这样看来,控制68013A的问题已经完美解决了。

出0入0汤圆

发表于 2010-9-27 19:56:37 | 显示全部楼层
设计时,考虑加个跳线来选择屏蔽或不屏蔽 VR 0xA0 。

出0入0汤圆

发表于 2010-9-27 20:16:42 | 显示全部楼层
【1001楼】 zzemu

屏蔽VR 0xA0仅仅是在我们在模拟其他设备的时候启用,其余的时候肯定不用屏蔽VR 0xA0。
但是模拟其他设备的时候不屏蔽VR 0xA0就肯定没办法做了。

出0入0汤圆

发表于 2010-9-28 08:57:01 | 显示全部楼层
回复【1000楼】minux  啊啊?
-----------------------------------------------------------------------

恭喜啊,转了一大圈,最后还是回到68013上了。-_b

出0入0汤圆

发表于 2010-9-28 10:47:01 | 显示全部楼层
回复【1000楼】minux 啊啊?
-----------------------------------------------------------------------

澄清一下
997楼方案,在BKPT上会输出低脉冲,宽度大概是150ns
998楼方案,在载入其他程序后(用的是xusb_emb.hex),BKTP会变低并始终为低。6-8ms的低电平,是在反复加载测试程序的情况下测得的

出0入0汤圆

发表于 2010-9-28 11:42:23 | 显示全部楼层
考虑我们的板子是基于FPGA的,所以堆叠时,板间互联用LVDS更划算一些
考虑每块板子提供四组LVDS和两组差分时钟
我们只用Bank0剩下的IO就足够了,堆叠接插件中只提供电源(20pin),LVDS数据(16pin)和时钟(4pin),RST等全局信号(8pin),以及插入检测(2pin),这样只要一个2*25(甚至更小)的板对板即可,尺寸很小巧
Bank2的剩余部分可以使用一个高速串行连接器(例如HDMI),方便将串行信号外引
至于Bank3,可以向侧面拉出一个较大的边缘连接器,用于无FPGA的外设连接

其余部分IO规划请参考【996楼】

出0入0汤圆

发表于 2010-9-28 12:03:00 | 显示全部楼层
目前的问题是
布板需要较好的PCB工艺(四层,0.5mm过孔环,局部可能需要5mil线,其余6mil)
需要寻找合适的板厂
预计板尺寸50mm*50mm,有4片BGA
随手画的草稿:

(原文件名:20100928A.PNG)
剩余面积内要装下晶振,三组电源,JTAG插座,比较拥挤

FPGA的内核电源位于中央,引出有些困难(四层板肯定避免不了,除非有一个Bank使用1.2V)
但可以考虑使用小尺寸的稳压器,直接放在FPGA下面

另外,DDR控制器的时钟,因为DDR2所有信号都必须放在Bank1中(Bank1没有GCLK引脚,只有RHCLK)
700A左右两侧也各有两个DCM,但不知DDR控制器的IP核能否使用两侧的DCM(以及RHCLK时钟)

出0入0汤圆

发表于 2010-9-28 14:48:24 | 显示全部楼层
回复【1006楼】h2feo4  无机酸

另外,ddr控制器的时钟,因为ddr2所有信号都必须放在bank1中(bank1没有gclk引脚,只有rhclk)
700a左右两侧也各有两个dcm,但不知ddr控制器的ip核能否使用两侧的dcm(以及rhclk时钟)
-----------------------------------------------------------------------

为啥要用到RHCLK呢?用DCM出DDR控制器的时钟只要有两个BUFG就可以了呀......

出0入0汤圆

发表于 2010-9-28 15:07:37 | 显示全部楼层
回复【1008楼】wei1985_5
-----------------------------------------------------------------------

因为我们要照顾FPGA动态重构的特殊要求,所有固定资源全部要放在FPGA的右半部分
GCLK只有一半可用

出0入0汤圆

发表于 2010-9-28 15:55:10 | 显示全部楼层
【1003楼】 dr2001

SAM3U还是觉得最近货源不太容易搞……

于是偶尔讨论cy7c68013A的时候突然看到了BKPT的事情……

SAM3U的方案可以暂时pending,以后货源正常了可以继续考虑。反正这次主要做的是FPGA部分,
用SAM3U的时候FPGA部分会更简单了。

出0入0汤圆

发表于 2010-9-28 15:59:57 | 显示全部楼层
【1006楼】 h2feo4 无机酸

我看看DDR2控制器能不能搞到明文RTL,如果可以,咱们可以先试试用RHCLK加区域约束综合下,并看看
时序仿真的结果,或许是RHCLK性能不够。

出0入0汤圆

发表于 2010-9-28 16:18:27 | 显示全部楼层
回复【1010楼】minux  啊啊?
-----------------------------------------------------------------------

SAM3U货源怎么都是问题。汗。

这样也挺好,成本可能下降了,不过程序……可能复杂咧。

出0入0汤圆

发表于 2010-9-28 16:21:00 | 显示全部楼层
回复【1011楼】minux  啊啊?
-----------------------------------------------------------------------

如果时钟用的不多,RHCLK可以通过两个DCM,变成全局的GCLK。

从Low Level布局结果看,RHCLK和GCLK好像走的是同样的全局时钟线资源。。。

出0入0汤圆

发表于 2010-9-28 16:50:33 | 显示全部楼层
【1013楼】 dr2001

恩,其实我们只要严格使用右半侧的IO就行了,其实也是有GCLK的。

但是如果用了bank 0或者2,他们的电平可就得跟着DDR走了…… 于是我们的3.3V IO bank就又不够用了……

出0入0汤圆

发表于 2010-9-28 17:01:20 | 显示全部楼层
【1005楼】 h2feo4 无机酸

用边缘连接器很好,插入IO板之后我们的板子就不再是正方形了…… 很好。

只要我们的板子宽度在5cm,长度可以稍微扩展些,比如6cm。默认IO板是4cm*5cm
合起来是5cm*10cm,这个整体尺寸相当好。


==
Xilinx的MIG真厚道,原来RTL就是明文的,那我们就直接试试综合就行了。

但是,我刚才的结果是只用Bank 1是不能接32位的DDR2的…… 它要求的数据线
根数有点诡异,太多了…… 接16位的DDR2都将将够用。。。。即使DQS用单端信号
也不行。。。。还没仔细看为啥用了那么多数据线。

出0入0汤圆

发表于 2010-9-28 17:15:18 | 显示全部楼层
回复【1013楼】dr2001  
回复【1011楼】minux  啊啊?
-----------------------------------------------------------------------
如果时钟用的不多,rhclk可以通过两个dcm,变成全局的gclk。
从low level布局结果看,rhclk和gclk好像走的是同样的全局时钟线资源。。。
-----------------------------------------------------------------------

是因为DDR2控制器直接由外部时钟源驱动的原因需要用RHCLK么?如果不是由外部时钟源推就无所谓RHCLK了。反正DCM出来的只要保证走全局时钟缓冲BUFG到DDR控制器就完全没有问题。

出0入0汤圆

发表于 2010-9-28 17:23:13 | 显示全部楼层
回复【1015楼】minux  啊啊?
-----------------------------------------------------------------------

Xilinx的MIG好麻烦,推荐试试Lattice的那个DDR控制器代码,使用/修改都挺方便方便。

出0入0汤圆

发表于 2010-9-28 17:58:01 | 显示全部楼层
诸位,我们的软核用啥好呢?

有几个选择:
LatticeMico32, Microblaze, NIOS 2, OpenRISC

还有啥可选的?软核这里我们逻辑资源的预算只有2k slice,BRAM更少,一侧只有10个,软核
估计不能占用太多,有部分要做DDR2的FIFO,另外一部分可能要做和外设的接口FIFO(当然这部
分可以做到左侧去)。当然,这边是有一片SRAM的,对于访问速度要求不高的东西可以往那里放。

我们就上开源的lm32么?

定了这个我们的外设也好选择了,如果要用开源外设的话,可能lm32用wishbone是最佳选择。

出0入0汤圆

发表于 2010-9-28 19:03:27 | 显示全部楼层
回复【1013楼】dr2001
-----------------------------------------------------------------------

Spartan-3 家族 FPGA 中时钟区域分为四片
Top Left(TL)、Top Right(TR)、Bottom Left(BL)、Bottom Right(BR)
GCLK和顶部、底部DCM可以驱动全部的四个片区
LHCLK及左侧DCM可以驱动TL、BL两个片区,RHCLK及右侧DCM可以驱动TR、BR两个片区

(原文件名:Globle Clock Resources.PNG)

我们这次使用的所有资源都限制在右半
最好能把上下的DCM留给全局用途,给DDR控制器用右侧的DCM(反正东西都在右半,左侧肯定不会用DDR的时钟)

出0入0汤圆

发表于 2010-9-28 19:20:45 | 显示全部楼层
大致放了放退耦电容,其他的都挺舒服,就有一个不爽
请看下图,Bank1正中央有一个VCCAUX
Bank1我们要挂DDR2,也就是1.8V,但正中央来了个3.3V电源脚,电源平面不太爽
左侧也有同样的问题


(原文件名:VCCAUX.PNG)


我在想能不能这样,右边这个VCCAUX脚只放退偶电容,但不接到VCC33(印象中Xilinx的FG封装载板是4层,有电源平面的)
而且VCCAUX不会有大电流流过,但能否这么搞还是很担心

除了左右各一个VCCAUX脚的问题外,目前电容摆的已经挺舒服了(下图中未连接的脚均为 NC 或 Input-Only Pin)


(原文件名:20100928C.PNG)

除四个角上的GND外,每个VCC-GND pair都放了电容


(原文件名:20100928B.PNG)

考虑如果想把1.2V稳压器放在FPGA肚子上,查了一圈貌似只有LTC3561/LTC3561A比较合适,尺寸够小电流够大
但功率电感貌似必须买TDK或者村田之类的,否则一般的体积没这么小

出0入0汤圆

发表于 2010-9-28 19:44:12 | 显示全部楼层
回复【1018楼】minux  啊啊?
-----------------------------------------------------------------------

lm32好 wishbone灰常好....

出0入0汤圆

发表于 2010-9-28 21:58:59 | 显示全部楼层
回复【1019楼】h2feo4  无机酸
-----------------------------------------------------------------------

呵呵,我只是说,RHCLK或者LHCLK如果不怕浪费DCM的话,是可以通过全局DCM推到全局时钟上的。这种方法时钟走的都是全局时钟线。
如果输入不care的话,走长线也可以到TOP/BOT DCM,进而获得GCLK,只不过会多一个布线警告。
既然我们所有的都是RHCLK区,那用RHCLK就不存在问题。全局时钟线还不是太紧张,一般的应用。

不过S3的全局线不能用于CLE之类,略有不爽,好像V6/S6就可以了??
此问属无关话题。

出0入0汤圆

发表于 2010-9-28 23:26:54 | 显示全部楼层
【1021楼】 wei1985_5

为啥呢?

出0入0汤圆

发表于 2010-10-3 22:57:54 | 显示全部楼层
ft 我们的核心版不就是要做这样的板子么:
http://www.ztex.de/usb-fpga-1/usb-fpga-1.2.e.html#imgs
http://www.ztex.de/usb-fpga-1/usb-fpga-1.11.e.html#imgs

感谢taoist的提示。

出0入0汤圆

发表于 2010-10-4 00:04:43 | 显示全部楼层
记录下和无机酸讨论的IO部分的最新成果:

直接使用廉价CPLD的某一个bank,只要该CPLD支持hotswap,具有至少2个IO bank,并且每个IO的OE可以单独控制且
尽可能支持宽的IO电压即可。

目前可能满足要求的有:
Xilinx CoolRunner II 系列(不兼容5V输入,但是参照xapp429是有很多解决方法的)
Lattice ispMach4000ZE 系列(兼容5V输入,但目前不知道其Flash可以写入多少次)
Altera MAX II 系列(不兼容5V输入[但是也可以解决],数据手册上说明的Flash写入次数较少)

可能还有别的选择。

我觉得现在关键需要验证的是,比如我们选择64个Macrocell的版本,能否支持16个或者更多的IO每个的OE独立控制
(比如Altera的MAX3000系列就不支持这个,以上我只确定MAX II和CR2可以,另1个另外需要尝试才行)。

已知,在商业产品中,S*e*g*g*e*r公司的最老版本的J*T#r#a#c#e就是用的这个方法,具体的图大家可以在本论坛中
搜索。确实没有用IO buffer,那么只可能是把JTAG IO接在了FPGA(EP1C12)的一个IO bank上了(它不支持5V的IO电压)。

出0入0汤圆

发表于 2010-10-4 00:49:25 | 显示全部楼层
根据我们对IO板的需求,我的CPLD测试程序入下,就是一个移位寄存器用于保存OE的状态,另一个load
信号加载新移入的OE状态(这是为了节约CPLD和FPGA的IO,而且由于IO的方向变化不应该非常快速,这个
串行的方案是可行的):
module test(
    input wire clk,
    input wire data,
    input wire load,
    input wire[15:0] data_out,
    output wire[15:0] data_in,
    inout wire[15:0] IO
);
reg[15:0] OE_i, OE;

always @(posedge clk)
    OE_i <= {OE_i[14:0], data};

//always @(load, OE_i) // latch
always @(posedge clk)
    if (load)
        OE <= OE_i;

genvar i;
generate
for (i = 0; i < 16; i = i + 1) begin: IOs
    assign data_in = IO;
        assign IO = OE ? data_out : 1'bz;
end
endgenerate
endmodule

目前的结果是,如果OE和OE_i均采用DFF的话,CR2可以在XC2C64A-5-VQ100中实现:
Macrocells Used     Pterms Used    Registers Used   Pins Used    Function Block Inputs Used
64/64(100%)         76/224(34%)    32/64(50%)       51/64(80%)     62/160(39%)
注意到,这个测试感觉上只应该用32个Macrocell的,但是由于每个IO输出都必须是Marcocell的输出,所以
还是用了64个Macrocell,感觉这个应用其实不太适合用CPLD来完成,因为每个Pterm的中独立输入的个数
太少了,发挥不了CPLD的任何优势。
但是如果OE使用latch的话,就只能用XC2C128了。

如果是MAX II系列:EPM240T100可以实现,资源消耗:
LE: 32/240(13%), IO: 51/80(64%)
这个明显是预期的行为,主要在于MAX II是FPGA的架构,不受上面提到的CPLD的限制。
如果我们用MAX II的话,多出来的IO和LE还可以做很多事情。


ispLEVER Classic正在下载中,还有待测试。

出0入0汤圆

发表于 2010-10-4 11:10:44 | 显示全部楼层
回复【1024楼】minux 啊啊?
ft 我们的核心版不就是要做这样的板子么:
http://www.ztex.de/usb-fpga-1/usb-fpga-1.2.e.html#imgs
http://www.ztex.de/usb-fpga-1/usb-fpga-1.11.e.html#imgs
感谢taoist的提示。
-----------------------------------------------------------------------

这个已经差不多是我们理想中的形态了
不过这块板子中旁路电容的搞法可真够诡异的

出0入0汤圆

发表于 2010-10-4 11:45:42 | 显示全部楼层
回复【1026楼】minux 啊啊?
-----------------------------------------------------------------------

Coolrunner2的IO是可以旁路宏单元的,看图
红色的是逻辑流,蓝色的是IO流,在适当的设计下,他们是可以互不干扰的

(原文件名:CoolRunner-II Macrocell.PNG)

另外,使能控制不能搞成低速的,否则想模拟OC输出就很难了
移位寄存器说实话不太适合用于乘积项机构的CPLD,译码+锁存也许更合适
我觉得,用2C32应该可以完成12bit我们所需的IO
用64的话,可以完成16bit再加上Pull-up、Pull-down和Keeper等功能

出0入0汤圆

发表于 2010-10-4 11:57:45 | 显示全部楼层
回复【1027楼】h2feo4  无机酸
-----------------------------------------------------------------------

排容减小电感?不过打的地孔又是拉线出去打的。略有奇怪。



回复【1028楼】h2feo4  无机酸
-----------------------------------------------------------------------

图中红线是常用信号路径。

蓝色线恐怕很难实现:To IO Block和From IO Block,应该是同一个IOB的线,手册上没有明确指出。
从总结构图上,CR2在IOB和MC之间没有布线池,这二者应该是对应关系。即FF要么作为输入锁存;要么作为输出锁存;均对应于同一个Pin。

输出的数据,都要走乘积项过来;输入的数据可以快速反馈到全局布线池或者FB的与阵列。

出0入0汤圆

发表于 2010-10-4 12:07:57 | 显示全部楼层
回复【1029楼】dr2001
-----------------------------------------------------------------------

没见过靠排容减小电感的,而且还是正向并联,引线拉老长,个人认为这么搞一点意义都没有
用LICC、IDC、LGA电容,过孔放在焊盘中,才是最靠谱的


CR2的我再考证一下

出0入0汤圆

发表于 2010-10-4 12:31:22 | 显示全部楼层
回复【1030楼】h2feo4  无机酸
-----------------------------------------------------------------------

如果要节约逻辑资源,恐怕就是
Target-CPLD-FPGA方向直通/一级FF。(FF放在输出的MC里。)

FPGA-CPLd-Target,Data和OE分别FF/Latch一下。
OE的FF肯定少不了,除非用专用的Pin来控制;而Data的输出路径FF必然存在,不用就浪费。
CLK用GCK直接到FF;CE的乘积项形如 [~]SEL_OE and [~]EN,可以正好放在乘积项里。不用额外MC。

这样,1 IO + 1 OE,需要3 MC。还能有点资源处理附加小逻辑。PU/PD估计实现资源不太够,64MC@16Pnis X/L的CPLD的话。

出0入0汤圆

发表于 2010-10-4 14:17:09 | 显示全部楼层
【1028楼】 h2feo4 无机酸

恩 但是Pull-up/down以及Bus Keeper都是在配置位流里面的。

我们现在IO部分的需求还是需要一定的FPGA的性质,最好是即有片上ROM存放初始
配置,又能通过JTAG实时配置(不能像MAX II那样擦除后写入)。我觉得Lattice的
MachXO系列CPLD挺符合这个要求的(5V输入还是不兼容,我们也得外部钳位)。
而且还是FPGA架构,像MAX II那样(其中逻辑资源的能力又比MAX II多得多,有
LUTRAM的功能,虽然不支持SRL16)。当然,实在不行就上一片XC3S50AN。

----
双向IO一般都比较慢速,用移位寄存器配置没啥问题,更重要的是,我们现在
已经可以实时知道引脚的电平了,不像1T45,必须切换方向才能知道电平,所以
我觉得这么设计也是可行的。

出0入0汤圆

发表于 2010-10-4 14:29:34 | 显示全部楼层
我现在觉得既然输出一定要放CPLD/FPGA,那么不如放一个FPGA了。

但是这个有如下几个要求:
0,在成本可行的情况下,最好自带配置EPROM,但是(静态)重配置的时候,不能通过擦除/重写入EPROM的形式。 (必备)
1,IO分至少两个bank;IO支持的标准要多,且可以兼容5V (必备)
2,bitstream可以完全掌控 (可选)

如果能满足2的话,我们可以把IO的交叉互联开关做到这个FPGA里,不通过逻辑资源来做交叉互联,而是直接通过布线资源,
这样这枚FPGA可以用非常非常少的资源来实现(本来也不需要很多资源,16x16的cross switch的资源消耗那可是相当大的)。

用FPGA最大的好处在于:
我们能提供真正的任意IO选项:GND, VCC, OC, Pull-Up, Pull-Down。

哦,对了,我们Vref的选择还是通过手工跳线抑或是NMOS或者模拟开关? 这里也需要尽可能简化。
比如我们制定两个pin使用NMOS选择Vref,保留一排跳线,除此之外的pin如果是Vref可以通过跳线
来选择。

出0入0汤圆

发表于 2010-10-4 17:23:26 | 显示全部楼层
刚才和无机酸手机讨论了超过2个小时,现在总结如下:

一、系统硬件架构
由于我们最希望用的器件Spartan 6 FPGA和SAM3U MCU均有货源的问题,暂时搁置使用他们的方案。

现在的系统框架是两个大部分(FPGA处理板+IO子板)组成:


  CY7C68013A  <===>  FPGA1 <===> FPGA2 <-> IO
|____________+____________|   |______+______|
              \                       \
               \ FPGA处理板            \ IO子板

之所以在IO板上也放一个FPGA而不是CPLD还是考虑到IO板的灵活性,参见前面我的说明。

二、器件选择
1,FPGA处理板
现在最大的争议在这个FPGA1的选择上,如果Spartan 6可用的话,那么没任何争议,直接XC6SLX16FG256。
但是目前S6各种我们想到的途径都查了,无果。

可选择的器件有:
Altera Cyclone 3, EP3C16:
                          好处:没有IP脚,有免费的NIOS 2/e软核;LE和IO性能比Spartan 3(A/E)系列好,性价比高,4层板布线方便
                          坏处:不支持SRL16和LUTRAM;多一组2.5V电源;(差分IO使用2.5V电源)。
Xilinx Spartan 3A, XC3S700A(N):
                          好处:引脚布局好,使得4层板布线方便;SRL16和LUTRAM;电源组数少;(差分IO可以用3.3V电源);IOB有可控
                                延时线。
                          坏处:有IP脚,BRAM少;microblaze没有免费版本(?)
Xilinx Spartan 3E,XC3S1200E:
                          好处:肯定支持动态重配置,SRL16和LUTRAM;
                          坏处:有IP脚,BRAM少;microblaze不免费版本(?);电源多一组Vccaux 2.5V;(差分IO使用2.5V电源)
                                布线不方便;IOB没有可控延时线

2,IO子板
这个FPGA2已经基本确定为XC3S50AN了,好处很多,首先是非易失的配置信息存储,且可以在不改写片上Flash
的同时(整体)重配置;我近期会搞这个的位流结构,以后我们可能可以直接在软核里面完成bitgen的功能,
而且IO的功能很强,除了不兼容5V输入,但是大多数器件都不支持,且我们有很好的解决方案。

之所以没用MachXO系列是因为他的货比较贵,也不好买。

XC3S50AN在24元左右,而我们用的1T45每片都是3元,所以只要FPGA方案能控制在16*3=48元成本以下,我们的
选择就赚了。

三、实现附注
0,FPGA控制cy7c68013A的VR 0xa0的附注
需要使用方案一,断点设在0x0000,这样我们reset它的时候也是上位机期待它重枚举的时候,对于软件的兼容性
更好,同时,只要我们的FPGA反应够快,即使把并行的FPGA配置管脚也接在68013A上也是不怕的;
方案二由于只要上位机使用VR 0xa0使得68013A进入CPU reset状态就会reset,可能导致上位机软件下载新固件超时,
降低了软件兼容性。

1,IO子板的5V兼容性考虑
原来是考虑直接外部接电阻和二极管钳位,后来改成用串电阻加带有VCC/GND钳位的ESD保护器件来搞,比如
USBLC6-4,可以直接保护4路,价格不贵,而且不大影响性能。ESD保护电路的VCC采用3.6V或者略低一点的电压。

2,IO子板的Vref选择
无机酸提出了一种方案,就是所用IO Bank的VCCO不接电源,而是接电容+电压跟随器;在用户设定的Vref管脚上
输出低电平,让电流反向灌入IO bank的VCC网络。这个方案理论可行,但是由于不知道FPGA IO的实际结构,不知
道是否实际可行,需要继续实验。

3,IO子板的OE控制
不用移位寄存器,而是用4位(2^4=16)地址线+Set/Reset+Enable+Clk来实现,这样我们可以快速切换某一个IO的
方向。便于在初期(还不能动态地配置FPGA2的时候)实现双向通信以及OC输出。

四、TODO
0,核心板FPGA方案确定
1,实验IO板的Vref切换方式
2,电源方案确定

出0入0汤圆

发表于 2010-10-4 21:16:27 | 显示全部楼层
终于达成了一致意见:先从小系统做起,做一个68013A+3S50A的小板子。

出0入0汤圆

发表于 2010-10-5 06:17:39 | 显示全部楼层
占一个位置

出0入0汤圆

发表于 2010-10-10 10:41:52 | 显示全部楼层
持续关注

出0入0汤圆

发表于 2010-10-11 08:47:56 | 显示全部楼层
关注~

出0入0汤圆

发表于 2010-10-13 20:43:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-14 02:13:54 | 显示全部楼层
关注

出0入0汤圆

发表于 2010-10-14 17:04:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-17 17:24:23 | 显示全部楼层
大家好,我已经做出了2IN1的USB下载线,支持ALTERA和XILINX,无需额外驱动,直接识别。通过拨动开关进行ALTERA模式和XILINX模式的切换。

出0入0汤圆

发表于 2010-10-20 11:12:45 | 显示全部楼层
回复【1043楼】mcupro
大家好,我已经做出了2in1的usb下载线,支持altera和xilinx,无需额外驱动,直接识别。通过拨动开关进行altera模式和xilinx模式的切换。
-----------------------------------------------------------------------

牛...........什么时候可以出产品,期待中

出0入0汤圆

发表于 2010-10-20 11:13:34 | 显示全部楼层
怎么没有消息了?

出0入0汤圆

发表于 2010-10-20 12:01:14 | 显示全部楼层
是啊!怎么没有动静了?

出0入0汤圆

发表于 2010-10-20 19:00:08 | 显示全部楼层
回复【1046楼】canghaibj  
-----------------------------------------------------------------------
正式板子以及外壳正在做。应该很快。

出0入0汤圆

发表于 2010-10-21 02:50:15 | 显示全部楼层
回复【1047楼】mcupro
回复【1046楼】canghaibj   
-----------------------------------------------------------------------
正式板子以及外壳正在做。应该很快。

-----------------------------------------------------------------------

我顶!!!

出0入0汤圆

发表于 2010-10-23 14:51:27 | 显示全部楼层
持续关注~~~~~~~~

出0入0汤圆

发表于 2010-10-28 17:17:53 | 显示全部楼层
终于把帖子看完了,累的眼疼,项目进度如何了,不会夭折了吧,有没有QQ群之类的,在帖子上讨论,一点也不活跃。

出0入0汤圆

发表于 2010-10-28 20:21:29 | 显示全部楼层
回复【1050楼】hontor
----------------------------------------------------------------------

最近正在紧锣密鼓进行中,绘制第一版PCB,近期就会推出

出0入0汤圆

发表于 2010-10-29 00:58:09 | 显示全部楼层
我顶!!!

出0入0汤圆

发表于 2010-10-30 13:54:17 | 显示全部楼层
to 【1051楼】 h2feo4 无机酸
非常期待,什么时候公布原理图?第一批做多少块PCB,是否可以预定?

出0入0汤圆

发表于 2010-10-30 14:50:09 | 显示全部楼层
回复【1053楼】hontor
-----------------------------------------------------------------------

原理图大致是CY7C68013 + XC3S200A
具体哪个脚连哪个脚,还要视布线情况调整,发货前会公布细节
第一批可能有50块
可能将采取现货供应,具体供货方式将会与阿莫讨论决定

出0入0汤圆

发表于 2010-11-3 19:10:43 | 显示全部楼层
【1050楼】 hontor

最近一个月其实进展迅猛的…… 只不过没在论坛上讨论而已……

这个项目讨论到这个地步,要是夭折都对不起打那么字的时间…… 哈哈。

出0入0汤圆

发表于 2010-11-7 13:23:38 | 显示全部楼层
建议整个SVN服务器,让更多的人参与,只有参与的人越来越多,项目才有生命力,不然我真的担心夭折。
从你们的研究历史可以看出,一年了,硬件都没出来,等到软硬件都成熟,弄不好就5年10年了。中国的大环境不太适合做开源软件,生存的压力往往就把人的意志,对技术的追求磨灭了,所以中国人做东西就是要快,慢了就窝里斗了。

出0入0汤圆

发表于 2010-11-8 00:44:09 | 显示全部楼层
回复【楼主位】multijtager
-----------------------------------------------------------------------

这两天也在处理下载线的破事
我看了一下 有3个功能和 1个自制功能是可以集成的 而且体积不会超过一般U盘

1 altera  2 TI XDS100 3 Lattice
ALTERA的只有1个68013
TI 的 给了 PLD 源码的
Lattice的 只有1个 68013 (去看LATTICE的官网开发板图纸)

准备用 68013A 56P + EPM240 + 1G45 来整
240处理点换线和 TI原来的逻吉 再交换几个2402
1.2 - 5V 间容 但不自适应
自集成的功能可以有 SPI收发机 I2C 收发机 1 WIRE收发机 TTL频率计.....

出0入0汤圆

发表于 2010-11-10 18:08:12 | 显示全部楼层
回复【1043楼】mcupro 李伟
大家好,我已经做出了2in1的usb下载线,支持altera和xilinx,无需额外驱动,直接识别。通过拨动开关进行altera模式和xilinx模式的切换。
-----------------------------------------------------------------------

什么时候能上市?给个淘宝链接,我先预定一个

出0入0汤圆

发表于 2010-11-10 22:10:49 | 显示全部楼层
用两个 spi口  模拟过 JTAG时序的仿真器,国产芯片

出0入0汤圆

发表于 2010-11-11 14:01:09 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-11-11 14:40:52 | 显示全部楼层
支持FPGA?没兴趣,我想要支持ARM的,最好是还能支持SWD的,接口最好能支持GDBSERVER调试的,这样就可以摆脱盗版的困扰了。

出0入0汤圆

发表于 2010-11-12 08:46:21 | 显示全部楼层
这个东西是一个多功能的平台,类似JTAG协议的都可以支持。
硬件具备之后只要有人开发软件就能支持各种功能。。。

出0入0汤圆

发表于 2010-11-14 12:42:22 | 显示全部楼层
我就希望能支持TI的LM3S系列芯片就好了

出0入0汤圆

发表于 2010-11-14 15:24:42 | 显示全部楼层
不错 也有这种想法做一个 51 AVR ARM FPGA DSP 都能用的下载调试器 不过我原来想的是叫它 Conjunc-Link 就是Conjuncted Link

出0入0汤圆

发表于 2010-11-14 15:25:07 | 显示全部楼层
不错 也有这种想法做一个 51 AVR ARM FPGA DSP 都能用的下载调试器 不过我原来想的是叫它 Conjunc-Link 就是Conjuncted Link

出0入0汤圆

发表于 2010-11-15 21:32:32 | 显示全部楼层
关注

出0入0汤圆

发表于 2010-11-16 10:38:29 | 显示全部楼层
占个座位..预定一个...

出0入0汤圆

发表于 2010-11-16 10:46:12 | 显示全部楼层
顶一个。。
现在进行什么阶段了?

出0入0汤圆

发表于 2010-11-16 12:27:15 | 显示全部楼层
能加入PIC的调试么?。。。

出0入0汤圆

发表于 2010-11-16 17:37:06 | 显示全部楼层
回复【1069楼】chewy  
能加入pic的调试么?。。。
-----------------------------------------------------------------------

虽然PIC24、dsPIC和PIC32支持JTAG,但是还没听说能用什么工具调试。

出0入0汤圆

发表于 2010-11-16 21:24:02 | 显示全部楼层
【1056楼】 hontor

我们软硬件在一起做呢。而且很快就要有结果了。

出0入0汤圆

发表于 2010-11-19 20:03:15 | 显示全部楼层
这一段时间太低调了,透露下进度
今天把测试版PCB送去打样了,PCB略显拥挤
预览

(原文件名:20101119A.PNG)

出0入0汤圆

发表于 2010-11-19 22:38:04 | 显示全部楼层
回复【1072楼】h2feo4 无机酸
-----------------------------------------------------------------------

这样的工具还是很需要的,可以在不同厂家的板子上实现下载,还有就是用开源的软核,实现GDB的调试。

出0入0汤圆

发表于 2010-11-20 02:02:51 | 显示全部楼层
center>
(原文件名:03.jpg) </center>


(原文件名:01.jpg)



小批量试生产成功!
拨动模式切换后免拔插自动枚举并加载驱动 (原文件名:2in1.JPG) </center>

出0入0汤圆

发表于 2010-11-20 14:12:13 | 显示全部楼层
回复【1074楼】mcupro 李伟
-----------------------------------------------------------------------

什么时间出产品啊,期待试用!

出0入0汤圆

发表于 2010-11-20 23:42:05 | 显示全部楼层
这样 盖楼 似乎不是办法啊

对开源项目 应该有更好的管理方法吧

看的好累

出0入0汤圆

发表于 2010-11-21 00:50:16 | 显示全部楼层
回复【1074楼】mcupro 李伟
center&gt;
(原文件名:03.jpg)


(原文件名:01.jpg)
引用图片
小批量试生产成功!
拨动模式切换后免拔插自动枚举并加载驱动 (原文件名:2in1.jpg)

-----------------------------------------------------------------------

终于出产品,顶啊!

出0入0汤圆

发表于 2010-11-21 18:44:20 | 显示全部楼层
强烈要求 出一个进度专用贴

不允许盖楼

出0入0汤圆

发表于 2010-11-21 19:01:34 | 显示全部楼层
回复【1078楼】nanfansky
-----------------------------------------------------------------------

目前进度:
PCB打样中
主要器件已经采购

正在之前飞线做的样机上进行验证
引用图片
-----------------------------------------------------------------------

(原文件名:20101111A.JPG)

引用图片
-----------------------------------------------------------------------

(原文件名:20101111B.JPG)

引用图片
-----------------------------------------------------------------------

(原文件名:20101111C.JPG)

出0入0汤圆

发表于 2010-11-22 11:01:52 | 显示全部楼层
回复【1080楼】mcupro 李伟
-----------------------------------------------------------------------

楼上的兄弟,请不要总在我们的技术讨论帖中做广告
请您单独开贴,谢谢

出0入0汤圆

发表于 2010-11-23 15:16:02 | 显示全部楼层
回复【1081楼】h2feo4 无机酸
-----------------------------------------------------------------------
楼上的兄弟,请不要总在我们的技术讨论帖中做广告
请您单独开贴,谢谢
-----------------------------------------------------------------------

楼上的兄弟,我一没留电话二没留淘宝,为什么说我做广告呢?
我发上来的目的就是把我做出来的产品让大家看一下,研究一下


(原文件名:01.jpg)


(原文件名:02.jpg)


(原文件名:03.jpg)


(原文件名:04.jpg)

出0入0汤圆

发表于 2010-11-23 16:08:04 | 显示全部楼层
【1082楼】 mcupro 李伟

呵呵,要是做学术研讨的话,我们非常欢迎,我们的解决方案也马上要出来了。

出0入0汤圆

发表于 2010-11-23 16:56:23 | 显示全部楼层
哈哈,百花争鸣,有对比才有进步啊

出0入0汤圆

发表于 2010-11-23 23:56:50 | 显示全部楼层
To:【1082楼】 mcupro
看了第一张图和第四张图觉得很牛B,看过第2、3张图感觉很一般了。你这样成本多了XC2C256太贵了,没有竞争力。

主要是一片68013+一片CPLD就可以搞定所有的逻辑,看到了背面的XC2C256看来您还是没有完全理解X*i*l*i*n*x的协议,没有脱离开X*i*l*i*n*x框架束缚。

我已经全部解开了所有的逻辑。X*i*l*i*n*x的协议涉及42种指令,比Altera复杂的多。有时间多交流。

出0入0汤圆

发表于 2010-11-24 00:53:28 | 显示全部楼层
【1085楼】 NiosII 软核

您说“解开了所有的逻辑”,这是什么意思?
话说您是如何只用一片CPLD来搞定所有的呢?不需要切换CPLD固件么?

出0入0汤圆

发表于 2010-11-24 01:23:04 | 显示全部楼层
回复【1085楼】NiosII 软核
to:【1082楼】 mcupro  
看了第一张图和第四张图觉得很牛b,看过第2、3张图感觉很一般了。你这样成本多了xc2c256太贵了,没有竞争力。
主要是一片68013+一片cpld就可以搞定所有的逻辑,看到了背面的xc2c256看来您还是没有完全理解x*i*l*i*n*x的协议,没有脱离开x*i*l*i*n*x框架束缚。
我已经全部解开了所有的逻辑。x*i*l*i*n*x的协议涉及42种指令,比altera复杂的多。有时间多交流。
-----------------------------------------------------------------------

很高兴和你交流:我保留原来的COOLRUNNER CPLD是处于对固件升级的考虑。因为原厂的XILINX PLATRFORM CABLE 太灵活了,68103固件和CPLD逻辑都可以随时配置很更新,没有人能保证下一版本的固件和逻辑会做多大的变化,虽然考虑到相对稳定性,但是我觉得还是能升级比较适当。我还没有想到一种不保留原厂CPLD而实现全面兼容的方法。我们反过来想想,如果不采用了原来的CPLD而实现逻辑更新,那逻辑更新给谁呢,又是如何起作用呢,因此应该说不存在这样一种方法。
如果单纯考虑成本,我觉得省去XC2C256就有很多方案,完全一个68013就能胜任(且不说速度),这在德国网站上已经有原型,根据那个思路继续完善就可以。
你说的很道理,只是可能我们设计时候侧重点不一样。

出0入0汤圆

发表于 2010-11-24 13:09:57 | 显示全部楼层
【1087楼】 mcupro 李伟

ISE 9-12一直没有更新过CPLD固件,我感觉,以后升级CPLD固件的概率也非常小了。

出0入0汤圆

发表于 2010-11-26 19:12:12 | 显示全部楼层
1N4148不如用1N5819

出0入0汤圆

发表于 2010-11-26 21:25:00 | 显示全部楼层
用的就是1N5819 正向压降低

出0入0汤圆

发表于 2010-12-7 22:55:14 | 显示全部楼层
回复【536楼】h2feo4 无机酸
-----------------------------------------------------------------------

好久不见,无机酸又出新东西了
老大,你的绘制软件是Ad designer吗?怎么这么漂亮

出0入0汤圆

发表于 2010-12-8 10:48:13 | 显示全部楼层
回复【1085楼】NiosII 软核
-----------------------------------------------------------------------

哥们,什么时候把x*i*l*i*n*x的协议涉及42种指令发上来让大家见识一下呢?

出0入0汤圆

发表于 2010-12-8 10:48:58 | 显示全部楼层
回复【1085楼】NiosII 软核
to:【1082楼】 mcupro  
看了第一张图和第四张图觉得很牛b,看过第2、3张图感觉很一般了。你这样成本多了xc2c256太贵了,没有竞争力。
主要是一片68013+一片cpld就可以搞定所有的逻辑,看到了背面的xc2c256看来您还是没有完全理解x*i*l*i*n*x的协议,没有脱离开x*i*l*i*n*x框架束缚。
我已经全部解开了所有的逻辑。x*i*l*i*n*x的协议涉及42种指令,比altera复杂的多。有时间多交流。
-----------------------------------------------------------------------

哥们,什么时候把x*i*l*i*n*x的协议涉及42种指令发上来让大家见识一下呢?

出0入0汤圆

发表于 2010-12-8 22:04:20 | 显示全部楼层
帖子太长了,mark!!

出0入0汤圆

发表于 2010-12-14 11:35:52 | 显示全部楼层
支持楼主,学习了
能把PCB的layout也是开源的吗?

出0入0汤圆

发表于 2010-12-15 00:11:06 | 显示全部楼层
回复【1095楼】sxmman
支持楼主,学习了
能把pcb的layout也是开源的吗?
----------------------------------------------------------------------
。。。。。。。。。。。

出0入42汤圆

发表于 2010-12-16 14:26:12 | 显示全部楼层
关注中,貌似来的有些晚,花了3个小时看完
硬件上已经初步搞掂,软件我也帮不上忙,不过可以帮忙测试,目前手上有xilinx的FPGA,altera的CPLD,avr,8051,arm9&11,msp430
一堆仿真器,实在是烦人啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-8-27 02:52

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

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