教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

[精品]基于FPGA的I2C接口程序实现毕业论文(3)

来源:网络收集 时间:2026-09-27
导读: 块工作的触发信号,并反馈给处理器一个响应信号,告诉处理器,已经接收完数据; 3、时序控制模块,控制整个系统工作的时序,并把8位并行数据转换成串行 4、发送数据模块,反馈总线的工作信息; 5、输出缓冲器,是一

块工作的触发信号,并反馈给处理器一个响应信号,告诉处理器,已经接收完数据;

3、时序控制模块,控制整个系统工作的时序,并把8位并行数据转换成串行 4、发送数据模块,反馈总线的工作信息;

5、输出缓冲器,是一个三态的缓冲器,可为总线时钟和数据信号提供开漏极输出;

6、寄存器组,包括了3个寄存器,各部分的信息如表4-1所示。 表4-1 IIC总线接口寄存器

寄存器 字地址寄存器 数据寄存器 状态寄存器 地址 00 01 10 类型 读写 只读 只读 外部处理器发送出控制信号和地址信号,不同的地址信号指向不同的寄存器,进入不同的读写状态。当地址信号是00时,指向字地址寄存器,处理器进入读写状态,把数据信号写入字地址寄存器或者从寄存器读出,当地址信号是01,10时,外部处理器分别读取数据寄存器和状态寄存器。

parameter w_add=2'b00;地址寄存器 parameter d_add=2'b01;数据寄存器 parameter s_add=2'b10;状态寄存器

按照设计的要求,需要8位数据线,2位地址线,时钟线,复位,使能信号线,读写命令线,还有反馈信息的响应线以及一位串行时钟线和一位串行数据线。其详细的输入输出接口信号及其功能如表4-2所示,l表示信号低电位有效,在整个设计中都应用了这个规则,其中cs_l是芯片的使能信号,和clk信号是同步的,只有当它有效的时候,其它的地址、复位和命令信号才能启动。 表4-2 IIC总线接口信号表

端口 clock rst_1 cs_1 rd_wr_l 方向 输入 输入 输入 输入 描述 处理器的时钟输入 异步复位信号 接口使能信号 读写控制命令

addr[1:0] data[7:0] ack_l scl_pin sda_pin 输入 双向 输出 输出 双向 地址选择信号 数据输入输出信号 反馈给处理器的响应信号 IIC总线的时钟信号 IIC总线的数据信号 综上所述,整个设计分为6个模块,时钟分频器、时序控制器、数据接收器、数据发送器、输出缓冲器、寄存器组。其结构如图4.1所示。

数据发送模块addr[1:0]data[7:0]clkrst_1cs_1rd_wr_1ack_1寄存器组数据接收模块时钟分频模块时序控制模块输出缓冲模块scl_pinsda_pin 图4.1 IIC总线接口结构框图

4.3 内部模块的设计和Verilog HDL实现

4.3.1 时钟分频器

由于通常的FPGA系统外部时钟输入都很高,如50MHz,,而IIC总线接口协议规定数据传输速率在标准模式下为100Kbits,快速模式下为400 kbits。为了能产生正确的数据传输时序,由时钟分频寄存器对输入时钟进行分频再作为时序控制器的时钟。8 bit的计数器可以满足大多数情况下的使用,但是如果微处理器的时钟比较大,就需要更大的计数器。同样地,如果IIC总线要求工作速度比较大,那么就需要一个相对小的计数器。系统复位时,计数器清零,当时钟上升沿时,计数器加1。在本设计中,假定外部时钟为50 MHz,总线工作在标准模式100 KHz,基于Verilog同步设计的需要,本地时钟一般为SCL时钟的整数倍,这里取2倍。可以求得计数器值NUM=50M(100K*2)=250,换算为16进制为FA。通过软件编程可以实现数据传输速率的控制,

其模块的RTL级描述如图4.2,

图4.2 时钟分频模块RTL级描述

用Quartus II软件编译仿真之后生成一个器件模块图,其接口电路模块图形如图4.3。

图4.3 时钟分频模块图

4.3.2 数据接收模块

数据接收模块既要接受来自微处理器的数据信号,同时也要输出反馈信号和触发信号。因此,该模块需要一个字地址寄存器,同时要产生状态机的触发信号。当系统复位时,初始化输出的字地址,在使能信号和命令信号同时有效的情况下,当地址信号为00,指向字地址寄存器时,输入的8位数据以字地址信息存储起来,并触发一个i2c_go命令,这个命令是时序控制模块工作的触发信号,并反馈给处理器一个响应信号,告诉处理器,已经接收完数据。

其模块的RTL级描述如图4.4,

图4.4 接收寄存器模块RTL级描述

用Quartus II软件生成一个电路模块图如图4.5所示,

图4.5 接收寄存器模块

4.3.3发送寄存器

在这个模块里包括三个寄存器,字地址寄存器,数据寄存器,状态寄存器,根据处理器的地址信号,指向不同的寄存器,输出不同的信息,把总线的状态反馈给处理器。当指向数据寄存器时,把时序控制模块重复读取的总线上的数据信息以8位数据的形式反馈给处理器,如字地址,IIC器件的数据,状态等。字地址和数据都是8位的信号直接输出,当处理器的命令是指向状态寄存器时,输出的8位的数据

中,各个位的定义如表4-3所示:

表4-3状态寄存器位功能表

位 7 6 5~1 0

用Quartus II软件生成一个电路模块图如图4.8,

信号 Ready Error 0 响应 功能 IIC器件已经把数据准备好 IIC器件不能响应当前的读命令 未用 IIC总线周期激活

图4.8 发送寄存器模块

4.3.4 时序控制模块

时序控制模块是接口的核心部分,它控制着整个系统的工作过程、数据传输,及通过控制SCL和SDA信号线来触发开始和停止信号,该模块包含一个状态机,用于控制系统工作的时序,同时当主机要把数据写入IIC总线上的器件时,因为数据寄存器的位宽是8bit,而IIC总线上的数据位宽是1bit,所以必须经过并串转换。即该模块具有如下功能:

1、控制IIC总线的周期; 2、对输入数据进行并串转换; 3、对总线上的数据进行转换; 4、触发IIC的时钟信号; 5、触发IIC的数据信号;

…… 此处隐藏:742字,全部文档内容请下载后查看。喜欢就下载吧 ……
[精品]基于FPGA的I2C接口程序实现毕业论文(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/446286.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)