huanxin1456 发表于 2011-1-12 11:39:48

CPLD与51单片机四位数据端口通信,数据接收不正常

我用CPLD与51单片机四位数据端口通信,CPLD选的是EPM240,晶振是27M;单片机是c51F320,晶振是10M,我采用的是四位数据方式,一根时钟线和一根使能线,一个字节发两次,我让EPM240发送同样的数据,但是接收时,10个数据能错四五个,误码率太高了,不知道怎么回事,不知道哪位DX做过,帮忙分析一下,先谢谢了。

117433525 发表于 2011-1-12 11:44:26

把使能做成双方的回应线可能更好,或把使能接51的外部中断。反正至少要让51能忙得过来。

huanxin1456 发表于 2011-1-12 11:47:49

我用的是排线连接两个板子,连接没有任何问题,时钟线的波形也正常,单片机能接收到正确的数据,但是数据不稳定,

huanxin1456 发表于 2011-1-12 11:53:19

To 117433525 Owen:
谢谢,时钟是由c51发起的,CPLD只是在接收到时钟信号后立即把数据送到数据线上而已,而且我也在时钟里面加入了大量的延时,算起来不到500K/s了,时间上是足够的,51只做接收数据这一件事。之前也觉得是这里的问题,这个我已经试过了,好像不是这个原因

117433525 发表于 2011-1-12 11:54:59

查一查程序,和你的数据传送逻辑,如果不是速度太快不可能出问题的,如果不行搞个串口也可以。

117433525 发表于 2011-1-12 11:57:32

你是4位的接收,最后有没有再合成8位数据,有没有产生错位的可能。

huanxin1456 发表于 2011-1-12 12:00:52

To 117433525 Owen:
我想也是,这在理论上是很成熟的四线并口方案,逻辑我对了好多遍了,单片机这边:先拉高,延时等待,在接受数据;CPLD:检测到时钟线拉高,立即传送数据,这样有问题吗

   串口太慢了,不能满足要求,只能用并口

huanxin1456 发表于 2011-1-12 12:03:17

To 117433525 Owen:
   有合成8位数据再显示, 单片机能接收到对的数据,说明合并之后数据是对的,但是错的也有不少,CPLD发数据15,单片机接收到有15,F1,FF,好像是随机的

117433525 发表于 2011-1-12 12:15:42

回6楼,
你这样会出现不同步的问题吧,51没有办法知道CPLD是否已经把数据准备好了。也就是说51读到的数据没有一点保障,CPLD如果在忙数据还没有送出来,或者数据送出来了51还没有读到CPLD又修改了数据的呢。你要把一细你程序的数据传送细节讲一下。

qianhng 发表于 2011-1-12 14:48:51

试试在所有输入脚边上接10K上拉电阻

lisn 发表于 2011-1-12 16:20:46

cpld和单片机通信我通常使用的是51总线方式,屡试不爽。
cpld在像单片机通信时你可以考虑成,单片机对ram进行操作。cpld发出信号后单片机在进行读取,这样比较方便。

NJ8888 发表于 2011-1-12 17:01:47

51太老了还和CPLD连用,我想方案也许单片CM3就行

unic 发表于 2011-1-12 18:08:09

应该是时序问题

cfqxdgr 发表于 2011-1-12 19:24:16

拿逻辑分析仪看,51在什么时候进行采样的?你不会置完时钟直接读IO口了吧……绝壁数据有问题啊

yuexinjie 发表于 2011-1-13 13:19:53

单片机可以用FPGA内嵌的核,不用CPLD
页: [1]
查看完整版本: CPLD与51单片机四位数据端口通信,数据接收不正常