在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6004|回复: 18

[求助] 请教I2C设计的问题

[复制链接]
发表于 2011-8-19 12:07:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我是一位初学者,最近在练习用Verilg语言写I2C,第一步在写I2C从机接收数据,对I2C简单的协议能看懂,但具体实现就不知道怎么回事。最开始做了一件很笨的事,因为看到I2C的协议上只有两根数据总线,SCL 和SDA,在设计从机接收数据时,一位老师就告诉我说从机就只有这两根线,我还真的就按他的话,用两根线把从机的功能实现了。后来遇到了一位做IC设计的高手,他说我的思路是错的。必须还要有另外的端口,由于和那位高手只有一面之缘,不能像他请教。所以我在这向大家请教。请大家说说你们对这个的想法。我是一个菜鸟,还需要多像大家学习。。。期待佳音。
发表于 2011-8-19 13:35:52 | 显示全部楼层
能用简单方式实现复杂功能的才是真正高手
 楼主| 发表于 2011-8-19 15:10:32 | 显示全部楼层
不是呀,我都是乱写的。肯定不对。我再描述下我现在的思路,请哪位高手帮我解答下。一个文件是实现从机接收数据的功能,一个testbench来代替主机发数据。我的从机中有系统时钟clk,复位信号rst_n, 两根总线输入scl,sdi,输出sdo就是从机的响应信号,stop_en是用来告诉testbench不用发数据了,但感觉用这根线有点不对。所以就不知道testbench怎么检测到从机是否响应,然后又怎么控制不发送数据。我也知道我问的问题有点太笨,希望大家理解。
发表于 2011-8-22 11:48:17 | 显示全部楼层
建议你先把i2c协议研究好了,再写代码,你目前连最基本的数据如何收发都不很清楚
 楼主| 发表于 2011-8-23 19:51:25 | 显示全部楼层
回复 4# jun_dahai


    最基本的数据收发,我还是看懂了的。只是在实现时就不知道咋实现了。感觉用VERILOG语言来写,思路就乱了。。。
发表于 2011-8-23 22:04:47 | 显示全部楼层
只需要scl和sda啊~
master 发送完数据(经过八个scl)后,slave ack,即将sda下拉,若slave没有ack,则sda仍为高电平。(sda为OD,默认接上拉电阻,一般情况下总为高电平),master在第九个scl检测sda是否下拉,若下拉了,则进行下一步操作,否则认为slave没有ack。
发表于 2011-8-24 08:51:49 | 显示全部楼层
同问!
发表于 2011-8-24 09:04:43 | 显示全部楼层
论坛里有很多I2C程序,我自己也写过:http://bbs.eetop.cn/thread-267572-1-1.html
可以先参考参考别人的。
 楼主| 发表于 2011-8-25 11:30:28 | 显示全部楼层
回复 6# hua2011sz


    对于主机来说,不可能就这两根线吧,肯定需要外部接口,比如说系统时间,复位信号,数据输入端。我想问那对于从机有外部接口吧,我在开源代码网上下的一个代码里,它的从机就只有SDA,SCL两个端口和外部相连,在它的代码里,SDA,SCL既作了时钟线,又作了数据线,这种verilog代码风格是不对的吧。听说是一个端口线不能既作时钟线又作时钟线的。
发表于 2011-8-28 21:45:19 | 显示全部楼层
对于slave,scl是时钟线,sda是数据线。i2c协议是:
若要传输数据,scl高电平期间sda保持不变,数据有效,sda只能在scl的低电平期间变化。否则在scl高电平期间sda的跳变将被视为start(sda由1到0)和stop(sda由0到1)。实际操作一般选scl下降沿作为sda的输出时刻,选scl的上升沿作sda的数据采集时刻。
一般slave中还有一个上电复位por(reset)信号,这个在编verilog时模块需要,但实际芯片造出来后并没有这个pin,这个por信号由芯片内部一个专门的电路模块产生。
slave要实现的功能就是依据sda和scl的状态提取出,master发出的start,stop,和data信号,同时根据master的操作需要(读或是写)遵守scl的一定时序规律输出sda_o
你具体编写代码时就明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-15 15:56 , Processed in 0.028867 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表