原创 第一个完整的小项目 CPLD

2009-7-26 21:20 2940 4 8 分类: FPGA/CPLD

https://static.assets-stash.eet-china.com/album/old-resources/2009/6/9/d698dc9c-fa7a-46e5-8141-92ae3eaaef1f.rar


最近在做一个CPLD(MAX II EMP240)的小项目,要写一个I2C Slave模块,来代替原来的IO-expander,代码两天写好了,调试却花了三个礼拜,遇到的问题其实只有一个,分两步解决:


1、老板非要在打板之前把代码验证好,所以手工制作了一个demo板,代码在上面调试了两个礼拜,一直在改代码,后来才发现代码的问题不大,原来是自己制作的demo板有问题,不是我焊的不好,而是手工搭的干扰太大,导致内部的一个计数器错误计数,正好原来的主板上已经有一颗CPLD了,就把代码下到主板上的那个CPLD上,出错的概率降低了一百倍,但还是有错误,不能用在量产上。


2、既然计数器错误计数那就是触发它的clk有问题,但scl只有20K,我们都不认为这会影响到计数器。可事实上确实是这样,在scl上下拉了一个30pF的陶瓷电容,问题没有了。起初为是overshoot或undershoot对计数器产生了影响,但通过示波器观察电容只是影响了scl的上升沿,对其他特性到没多大影响,这就让人很难理解了,但问题确实解决了。


为什么呢?!为什么是一个电容呢???


代码是我参考一随书光盘的例子,但不能直接编译,需要修改,需要说明的是那个主体的状态机是对的,有兴趣的可以看看。


后记:电容不是真正的原因,板子打出来了,加上电容作用不大。将上拉电阻减小效果明显,但稳定性不敢保证,后来偶然把MAXII的引脚施密特触发器加上问题全部解决了。


今天看到了这么一段话,来自Altera官网的一个I2C 控制器(master)的参考设计文档,摘录如下:This design uses the I2C SCL signal as a clock. This requires that the SCL signal have clean, fast edges on both the rising and falling edges of this signal. Slow rise and fall times on this signal can show noise effects which can cause improper clocking of registers within the Stratix FPGA. If the loading of the SCL signal in the system is such that the rise and fall times are slow (>20nS), external buffers such as Schmitt Triggers will be required to interface to the FPGA

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户80674 2010-1-4 20:40

学习下,谢谢分享

用户1447181 2009-7-13 00:04

这东西好难学啊,单片机简单多了

用户220317 2009-7-10 10:07

刚开始学 谢谢分享资料

tengjingshu_112148725 2009-6-12 09:53

谢谢经验分享
相关推荐阅读
用户142112 2011-01-04 23:43
IEEE Verilog 2001标准翻译
闲来无聊,想翻译Verilog2001标准,有兴趣的联系我,邮箱captainliuy@163.com。英文原版标准见附件。到现在为止翻译了前两章,如果你在阅读的时候,觉得那里翻译的不对,或者用词不准...
用户142112 2011-01-04 21:21
FWFT FIFO读操作注意
    FWFT:First Word Fall Through的缩写,好像是Xilinx的说法,Altera对应的概念是Show-ahead synchronous(SASO)。即数据在rdreq有...
用户142112 2010-10-08 19:36
Modelsim自动化仿真平台--BFM_FIFO
         这次添加了FWFT(First Word Fall Through) FIFO的BFM模型,以及DDR多端口控制器的仿真模型。因为如果写RTL级的DDR多端口控制器比较费时,所以写了...
用户142112 2010-09-21 21:07
Modelsim自动化仿真平台--BFM_CLK
写了第一个简单的BFM模块,时钟和复位。将覆盖原来的BFM文件夹,将两个do文件放在test目录下,打开modelsim执行*sim.do。...
用户142112 2010-09-18 20:09
Modelsim自动化仿真平台
下载后,解压到D盘根目录,打开Modelsim,执行*sim.do,就可以进行仿真。具体内容可以看目录结构和脚本。BFM和用户库文件还没有做,等做好后再上传。...
用户142112 2010-08-20 20:23
TCL 双引号和花括号的区别
用了很一段时间的Modelsim,用TCL脚本仿真,开始注意起来它,看了些资料,有一个问题始终让我很困惑,那就是花括号 的用法,今天Google了一下,觉得有一点豁然了,记录一下。为了不让自己的翻译影...
我要评论
4
4
关闭 站长推荐上一条 /1 下一条