基于FPGA的随机读写I2C串行总线接口电路设计
[关键词:FPGA,随机读写,串行总线] [热度 ]提示:此毕业设计论文完整版包含【论文】 作品编号:txgc0331,word全文:48页,合计:25000字 |
根据I2C接口电路与MCU的连接需求,分析I2C接口数据传输的规范,本论文设计了如图21所示的顶层框图。该接口模型接收来自MCU产生的读/写信号﹑并行地址信号﹑并行数据信号,把它们转换为相应的串行信号发送到串行SCL/SDA端口;它还发回应答信号(ACK)到MCU,以便让MCU调节接口电路和外围E2PROM之间收/发数据的速度。图中标明了大部分连接信号及其数据传输方向。
该电路分成两部分:开关组合电路和控制时序电路。开关电路在控制时序的控制下有节奏地打开或闭合,在不同的时刻,送出不同的SDA数据,如起始信号、地址信号、数据、结束信号等。控制时序电路同时产生SCL信号,该控制电路可以用同步有限状态机(FSM)来设计实现,其状态转移如图21所示
测试模块设计
完成接口电路的设计后,还需要做的重要一步是测试模块的设计。为了程序设计方便起见,本文中所设计的测试模块并没有采用标准的MCU接口信号模式,而是采用了将接口电路作为测试电路的组件的模式;这样做的好处是会给程序设计带来比较大的方便,因为若需要给接口电路发送某个信号,直接在测试程序中给出就行了,不必再通过输出端口连接,程序比较简单。本测试模块的驱动时钟采用板载的50M晶振。测试模块的结构框图如图23所示
本测试模块的设计思路如下:测试模块首先将数据通过接口电路写入外围E2PROM Atmel AT24C02中,接着马上将写入的数据读出,并将两个数据显示在外围LED数码管和发光二极管输出设备上,从而直观地比较写入和输出的数据的正确性。
测试模块中给出11位的地址和待写的数据,调用接口电路,将数据写入E2PROM中,然后再把写入的数据读出(有可能由于某些原因使写入和读出的数据不一致);测试模块将原先的数据和读出的数据同时通过HC164driver在数码管上显示出来。11位的地址组成为,低八位地址为待写入数据的E2PROM的内部地址;高三位为E2PROM器件外地址的低三位,器件外地址的高四位为固定1010,从而组成7位器件外地址。测试电路的程序片段如表3.2所示。
本文中为了节省开发板FPGA的I/O引脚,外围数码管的“驱动点亮”并没有采用传统的并行驱动方法,而是采用了两片串联的8位串/并转换电路来驱动外围数码管,74HC164用来驱动点亮数码管以及LED指示灯(74HC164的同步工作时钟为50-175MHz)。
采用串行驱动是基于如下考虑:并行驱动的话测试模块必须给出位扫描信号,如8个数码管8个位选信号必须占用FPGA 8个引脚,非常浪费硬件资源,若用移位寄存器来替代的话,就可以大大节省引脚资源。其工作过程为:测试模块把并行的位扫描码和此刻的7段码在计数脉冲的作用下变换成串行信号送入移动位寄存器的数据输入端,在16个移位脉冲hc_cp的作用下,该串行信号变换成并行的“驱动点亮”信号,图23中HC164driver实现本功能。
本文实现了一个传输速率为20KBps的I2C总线接口电路。在Modelsim6.0仿真软件环境中进行仿真,在Xilinx公司的ISE9.1i开发平台上进行了下载;搭建外围电路对整个系统进行测试研究,用Agilent逻辑分析仪进行数据采集,分析测试结果。
首先,介绍了微电子设计的发展概况以及设计流程,重点介绍了HDL/FPGA的设计流程。
其次,对I2C串行总线进行了介绍,重点说明了总线上的数据传输格式并对所使用的AT24C02 E2PROM存储器的读/写情况作了介绍。
第三,基于Verilog_HDL设计了随机读/写的I2C接口电路、测试模块和显示电路;接口电路由同步有限状态机(FSM)来实现;测试模块首先将数据写入到AT24C02的指定地址,接着将写入的数据读出,并将两个数据显示在外围LED数码管和发光二极管上,从而直观地比较写入和输出的数据的正确性。
第四,用Agilent逻辑分析仪进行传输数据的采集,分析数据传输的时序,从而验证电路设计的正确性。最后,论文对所取得的研究成果进行了总结,并展望了下一步的工作。
提示:此毕业设计论文完整版包含【论文】 作品编号:txgc0331,word全文:48页,合计:25000字 |
本通信工程毕业设计论文作品由 毕业论文设计参考 [http://www.qflunwen.com] 征集整理——基于FPGA的随机读写I2C串行总线接口电路设计(论文)!