查看: 1565|回复: 1

用verilog实现IIC(i2c)

[复制链接]

该用户从未签到

发表于 2015-1-29 10:47:14 | 显示全部楼层 |阅读模式
分享到:
 我想用verilog实现一个控制AT24C08读写的IIC协议的状态机,现在出现了一个很奇怪的问题,我的状态机在功能仿真时可以实现读写,但下到芯片里却发现不成功。特此求教大家,望大家不吝赐教,如能解答问题,鄙人十分感激。关于代码的详细内容可参见附件
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-29 11:06:57 | 显示全部楼层

回复:用verilog实现IIC(i2c)

 附件上传不成,以下是代码:

/*这是一个控制AT24C08读写的基于IIC协议的状态机,具体功能是,向AT24C08输入一个数,再把这个数读回来。
输入的数和读回的数分别用一位数码管显示。IIC的实现思路是将SCL时钟分成四段,操作SDA变换。*/
module i2c_controller_top(write,read,datain,clock,rst,scl,sda,seg,dig);
        input clock,rst;
        input[3:0]datain;//数据输入端
        input write,read;//控制读写的按键
       
        output reg [7:0] seg;//数码管段信号
        output reg[1:0]dig;//数码管位信号
        output reg scl;
        inout wire sda;
//--------------数码管显示部分---------------//       
        reg clk_dig;//数码管动态显示时钟
        reg[15:0]cnt1;//数码管显示用的分频系数
        reg[7:0]seg_code;//数码管显示译码器的输入码
        //reg st;
        reg [7:0]dout,dout_buf;//数据输出端及其缓冲器(输出从AT24C08读回的数据)
        wire[7:0]din;//主状态机的数据输入端
 
        always@(posedge clock or negedge rst)begin //产生数码管动态显示时钟       
                if(!rst) begin

                        cnt1
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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



手机版|小黑屋|与非网

GMT+8, 2024-9-22 15:32 , Processed in 0.124716 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.