i2c代码读取地址的问题,大神救助!
时间:10-02
整理:3721RD
点击:
在网上下了很大关于i2c的代码,有lattice公司的rd1005,rd1006,还有夏宇闻老师的i2c的代码,但是在用modelsim仿真的时候,我发现testbench都是固定了从设备的地址,有没有那种i2c先读取地址再把数据送到该地址寄存器的代码哎?求助求助!
自己写一个也很简单
我刚刚读大二,verilog也刚刚起步,老板让我直接找网上成熟的代码,而且项目也很急,请问有没有现成的这种代码呀?
直接将夏老师的那个testbench的从设备地址改一下就OK了啥
改一下从设备地址那也只是对应的一个地址啊,我现在想的是有多从设备,先读地址信号选中一个地址寄存器后,再读数据,把数据信号读到该寄存器中。
这个也简单啊,将那个从设备地址做成一个变量,在需要访问的时候设一个值,下一次要用不同地址时,再设成另外一个值就可以了。
我发现我木有理解清楚,应该是集成很多个寄存器,然后主设备发送地址和数据,对寄存器进行读写操作,这该如何实现呢?
既然要学习I2C的协议,那就先好好看看I2C的协议标准,这个网上有的是。
然后试着写一写代码,仿真一下。可以从网上download一个i2c的simulation model,测试一下是否可以通信。
我始终不喜欢上来就要代码的做法,要是真的想做,那就自己做一个,况且i2c又不是很复杂。
学生阶段我相信时间还是很多的,静下心来好好看看协议规范,不是挺好吗
之前看书也看过,书上的代码都是简化的,而且仅是实现功能,不能代表性能和稳定性。
看书仅借鉴思路,你所做的事情我做过。i2c看上很简单,其实调试还是很多困难。建议:
1.明确你老板的需求,i2c实现多少寄存器读写,太多了,是否考虑400K,这样不至于影响性能。
2.明确i2c协议,吃透时序;
3.先做一个简单的接口调试,吃透协议,然后时序你需要的功能
在opencore上有个经典的I2C的代码 你可以看看 支持wishbone
