zhuzi1441 发表于 2008-8-5 14:11:07

请教高人用一片CPLD能扩展50个个串口吗?

一个项目串口需求量大的吓人,要用50个,其中49个只接收,单向就可以了,用一片CPLD能做出来吗,我没有用过CPLD,请教各位,能实现吗?如果能实现不知道难度怎么样?如果不能有没有什么好的办法呀,请指教,先谢了!

qinxg 发表于 2008-8-5 15:01:41

CPLD是不可能的: 里面的D触发器远远不够用.
只能是FPGA:就算1个串口用10个D触发器, 也要近500个D触发器.
市面上的CPLD容量不够的, 找一个上1000个D触发器的FPGA就足够了.

zhuzi1441 发表于 2008-8-5 15:04:15

谢谢楼上的指点,看来难度大了。

durgy 发表于 2008-8-5 15:13:03

EPM1270,30个还可以

zsmbj 发表于 2008-8-5 16:05:45

把串口换成485方式通讯,接在一条总线上。

machao 发表于 2008-8-5 16:15:53

如果通信量不是很大,而且实时性要求不高的话,可以采用RS232多机通信方式,一个UART口就够了。

zlei 发表于 2008-8-5 16:32:59

EPM1270,30个还可以 -->>1270这点资源,不可能的。
如果要做16550兼容,1270做了16倍速采样、baud发生器、收发器、FIFO、错误检测、内部寄存器和总线接口,资源就耗得差不多了。

还是需要FPGA做,我原先打算用Actel的A3P250做,25万门,只能做16个16C550兼容UART。

楼主要做UART的比较精简,A3P400之类的Flash FPGA应该可以了,100多点。

hebj 发表于 2008-8-5 16:38:16

RS232也可以做多机通讯?

machao 发表于 2008-8-5 16:47:19

RS232可以的,1对多。1个主多个从。我的教材中有介绍。

lxx_sea_sky 发表于 2008-8-5 16:58:03

问一下搂主,“其中49个只接收”都是与同一个串口通讯吗? 如果是的话,只需要做1路--49路的总线切换就可以了,不必做成串口的。

durgy 发表于 2008-8-5 17:09:11

to 【6楼】,楼主提到,49个是接收的,这样的话,EPM1270是可以做到30个左右的,因为我做过

zhuzi1441 发表于 2008-8-5 17:10:50

谢谢各位的热心指教,我的目的是做一个电子靶盘,上面有49个红外接收头,想采集每一个接收头的数据,然后通过第50个串口把采集到的数据串出去,波特率是固定的,马老师的书我也买了,如果都先转换成RS232的话,成本是不是就高多了呀,9楼的意思我没有明白,请明示谢谢。

zsmbj 发表于 2008-8-5 17:46:13

因为波特率相同,如果速度比较低,可以用单片机模拟接收。

不过红外接收头 输出的是串口格式吗?

lxx_sea_sky 发表于 2008-8-5 17:56:30

我的意思是CPLD中写一个串口 和 1路--49路切换开关,串口通过切换连线来轮流采集49个接收头的数据,编号,再通过串口发出去。
(我只在读书时接触过Verilog,水平有限,当不起“明示”,说错了望楼主见谅!)

zhuzi1441 发表于 2008-8-26 17:34:13

谢谢各位的热情,如果一片资源不够的话,用两片也可以呀,因为这个项目没有量,就计划做两个,成本不是问题。以前没有接解过VHDL和CPLD,现在项目比较急了,看了两天VHDL的书,还是一头雾水,请问【10楼】 durgy 大哥或哪位好心大哥能不能给一个例程让小弟先参考参考,先谢了!

zhuzi1441 发表于 2008-8-26 17:37:39

我明白了13楼的意思,但是我觉得可能不可以,虽然数据量非常小,平时几乎没有,但是也有同时有数据的情况存在,如果能同进接收的最好了。

wanyou132 发表于 2008-8-26 17:47:50

其实用2个二极管即可实现简单的RS232的扩展,实现把一个RS232变成2个RS232,当然也能扩到更多,本人最多扩了7个的,也许能扩的更多,元件呢就是多一个二极管而已,是不是成本降低了N多啊,也不用修改代码和印制板的,只要再数据线上焊接一个一个二极管就满足咯。

当然这些扩展出来的串口地位平等的,类似RS485总线上的东西,还要注意的是这些串口也只能做从机用,相互间不能直接通信,在同一时间内也只有一个在发送数据,不能同时发送,即主机发送的时候大家都能接收的,只有一个从机应答。

这种扩展方式非常适合时下poling通信方式,简单的原理图如下:
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_390898.jpg
(原文件名:20080618102121_29335.jpg)

s99060 发表于 2008-8-26 19:24:46

49个红外接收头这个都是uart的?

zhuzi1441 发表于 2008-8-26 19:28:46

是呀,别人做好的硬件,说是用串口就可以接收,我用单片机串口,接收过,没有问题的,N ,8 ,1,接收到4个字节,一个字节头,一个字节尾,中间两个用效数据字节。

watercat 发表于 2008-8-26 20:42:13

1路IIC下挂若干AVR T25,每个T25实现两个串口,你要挂出254个串口都没问题……

使用FPGA,最终也还要归结到某种上传协议上,很累也很贵,意义不大……

zhuzi1441 发表于 2008-8-27 09:03:04

我原计划想用一片AVR单片机和一片CPLD,如果需要两片CPLD,那就用一片双串口的AVR单片机。我想协议很简单,用单片机给某一个CPLD一个电平变化信号,CPLD就把接收到的数据透明传给单片机,CPLD不做处理,这些工作由单片机来做。这样是不是好做一点呀。

zsmbj 发表于 2008-8-27 09:20:57

串口波特率是多少?波特率低的话,直接用一个单片机模拟接收即可!

zhuzi1441 发表于 2008-8-27 09:26:25

串口波特率4800,我想过单片机,但是如果用单片机模拟接收,同一时间只能接收一路吧,如果有两三路同时发,那不就丢了吗?4800年波特率一片AVR能模拟出来几路来,有没有人试过,我只做过模拟两路的。

zsmbj 发表于 2008-8-27 11:42:57

如果4800的波特率,那么软件模拟应该可以。采用一个50个io以上的avr单片机,如M169,M64等。

4800波特率,一个位是208us,采用8倍采样,用定时器中断的方法,那么时间是208/8=26us。中断里查询io状态并处理每个输入的bit流。

如果单片机采用16M晶振,则单周期指令0.0625us,那么26us里可以执行416条单周期指令,处理49路io应该时间足够处理。

单片机里开49个ram缓冲,用于存放每路串口接收到的数据。

主程序采用查询的方法通过单片机的标准串口的txd发送收到的数据流给上位单片机。这样单片机只有一个定时器中断。不会对模拟查询造成时间上的延迟。


以上只是一个想法,如果可行,那将是成本最低的方案了。只是对时间和编程要做详细的论证。

实在不行可以把49路分成3个芯片实现,每路做17个输入,那么估计M48就可以了。成本也是很低的。

zhuzi1441 发表于 2008-8-27 14:37:45

楼上好办法,做个试验板试试,三片M48,CPLD以后再说,这次时间太紧了,赶不上了。

gliet_su 发表于 2008-12-30 21:53:35

疯狂的串口。

Friendz 发表于 2008-12-30 21:00:14

感觉楼主的方案可能有问题,有时候方案做不好,后续的事倍功半。



建议楼主更上一层楼。

zcllom 发表于 2008-12-29 17:34:26

超级串口

jack_io 发表于 2008-12-29 17:12:33

50个串口可以用FPGA实现,1片a3p250足够,成本很低,我的项目30个串口,可以和51进行8位数据总线相连,查询或中断方式传输数据都可以

avr-qq 发表于 2008-12-10 12:35:09

epm570

nescom 发表于 2008-12-10 12:08:19

绝对做不了 ,我就吃了这个亏,CPLD做逻辑还可以,做时序电路的时候里面的触发器太废LE了,我现在在找EPM240的替代型号也没找到,PIN完全兼容的  哪位大哥知道说一下

agnd 发表于 2008-12-10 12:02:35

我曾经做过用1片LPC2138I/O口接收16路4800波特的串口数据的项目(只收,是用来接串口输出的压力表的).芯片速度没问题!

ericdai 发表于 2008-12-16 17:35:04

49个串口都在一个位置吗,如果在一起不如直接修改前置电路,复用在一起,用以太网代替,如果分散,考虑无线

怎么看50个串口都不是个好方案,未来维护将带来巨大困难.我们做过180多个串口/RS485/RS422的改造,全部改成光纤以太网

效果超级好,客户都没有想到以太网这么好的

ourchuli 发表于 2012-1-9 17:38:36

也在想做一个

xyzjacky 发表于 2012-2-27 13:34:06

那在这里的朋友,有没有谁可以告诉我一种要么使用CPLD,要么使用GAL,从一个串口扩展6个串口的办法。要求是全双工通讯!

frozen 发表于 2012-3-6 10:28:43

这么多不如i2c

hellobear 发表于 2012-3-6 12:09:15

回复【35楼】frozen
这么多不如i2c
-----------------------------------------------------------------------

鄙视这种回帖的人,楼上是混 百度知道 的吧

yuyu87 发表于 2012-3-24 10:39:01

别听楼上乱讲,其实不要想的太复杂,别说50个,100个都没问题~

完全不用写啥FIFO的,你只要把它想像成类似于74HC138的这种器件

编号分别1-49个输入,一个输出,编号为0

完全不用管它啥协议之类的

有一个地址脚,6位,单片机控制,
CPLD根据这6位地址来选择接收哪一个串口信号,如果选择2号串口,则2号上的任何变化直接传递给0号输出串口,也就是always @(clk) begin txd0=rxd2;end,时钟嘛?大于串口约4倍就行


实际上不用在乎啥协议,就是根据地址,输出信号跟随输入信号即可~ 很简单,我前段时间用CPLD做过1转8,可输入,输出,3根地址选择,就类似于这样的,

不要想的太复杂,

waszyawcz 发表于 2012-3-28 11:34:07

jinshi25 发表于 2012-4-10 06:55:47

我最近完成一个项目,96个红外线并口接受信号,仅判断“0”或“1”,用ep3c16q240c8.该芯片提供115个可用IO.

zhikai_wu 发表于 2012-4-10 07:22:16

用25片STM8.如果再用定时器接收那么一片最少可以做到3个.那就17片.1块6一片加起来成本也不算高

sbboma 发表于 2012-4-12 12:42:21

EPM240可扩展出30个双向串口,EPM570可扩展出50个双向串口

wangshaosh123 发表于 2012-4-12 13:54:02

两块板子 不需要多考虑成本    使用xilinx的 spartan3的FPGA选个资源多的 一块芯片搞定
一个Microblaze上挂30个uart而已,不会VHDL就能搞定!

tcw_xny 发表于 2012-4-12 14:40:26

为什么不挂总线啊?485不行可以CAN啊
页: [1]
查看完整版本: 请教高人用一片CPLD能扩展50个个串口吗?