[精品]基于FPGA的I2C接口程序实现毕业论文(3)
块工作的触发信号,并反馈给处理器一个响应信号,告诉处理器,已经接收完数据;
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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




