预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

题目名称:FPGA与单片机实现串行通信 目录 TOC\*MERGEFORMAT1设计任务及内容1 2设计方案1 3系统硬件设计1 3.1单片机串行通信设计2 3.2FPGA串行通信3 4系统软件设计5 4.1FPGA单元设计………………………………………5 4.2串行通信MAX3232……………………………………6 5.系统调试10 6课程设计总结10 附录:11 1设计任务及内容 要求实现FPGA与单片的串行通信,熟悉单片机和VHDL语言的编写,在设计过程中对单片机与FPGA有进一步理解,能够实现串行通信。 2设计方案 整个设计采用模块化的设计思想,可分为四个模块:FPGA数据发送模块,FPGA波特率发生控制模块,FPGA总体接口模块以及单片机数据接收模块。在通信过程中完全遵守RS232协议,并利用VHDL语言实现FPGA与单片机的串口异步通信电路。本设计采用ll位帧格式异步通信方式,一位起始位、一位停止位、一位奇偶校验位、8位数据位,基于有限状态机原理进行FPGA设计。设计方案框图如下: FPGA 单片机 发送器 通信控制 控制器 接收器 波特率发生 3系统硬件设计 3.1单片机串行通信设计 单片机与FPGA串行通信可采用单片机的SPI(串行外设接口)方式。相对于UART,SPI更简单,速度更快。SPI共四条线。MOSI(MasterOutSlaveIn).MISO,SCK(SerialClock),SS(SlaveSelect)。图1为SPIT作时序。当单片机向FPGA传输命令或数据时,应用SPI的四种模式中的SPIO模式。当片选SS拉低。然后在每个时钟(SCK)上升沿送出数据。将片选信号SS与移位寄存器使能端(En)相接,MOSI与移位寄存器数据输入端(SI)相接,SCK同时为移位寄存器提供时钟信号。在SS信号为低电平时,移位寄存器开始工作,在每个时钟上升沿将接收到的数据左移一位,等全部接受完毕,将SS置一l”,移位寄存器工作完毕,同时为触发器提供时钟,使移位寄存器接收到的数据并行输出。 当单片机从FPGA读取数据时,向FPGA发送读使能信号RE(可用任意空闲I/0口)。在每个时钟(SCK)上升沿.FPGA送出一位串行数据,单片机通过MISO读取数据。借助VHDL硬件描述语言和EDA开发工具可方便的实现该系统。如下图所示: 图一:单片机电路 3.2FPGA串行通信 由于FPGA具有丰富的引脚资源,且EP1C3T100C8N的核电压是3.3V,STC89LE52的输出电压也是3.3V,所以任选3064A四个I/O与单片机4个I/O口连接即可,若连接在单片机的Po口时需要加上拉电阻。在这里将SS(CS)、SCK、SDI、SDO分别如图所示连接。 图二:FPGA电路 4系统软件设计 4.1FPGA单元设计 FPGA的设计是通信网络的核心部分。依据功能要求,FPGA内部划分成四大功能模块:SRAM控制器、发送数据缓冲模块、16个UART模块、接收数据缓冲模块。发送数据缓冲模块划分成16个RAM区,每个RAM区分别连接1个UART,当发送缓冲模块接收到主单片机下发的控制数据后,启动UART将数据发送至从单片机。接收缓冲区同样分为16个RAM区,发送控制数据后,UART周期性地向从单片机发送状态查询命令,从单片机将最新状态发送至UART模块,UART模块将数据存入接收缓冲模块相应的RAM区。如图3所示。FPGA内部共有16对读/写和数据总线,分别连接UART和相应的发送缓冲区RAM及接收缓冲区RAM。FPGA内部模块采用图3FPGA内部功能模块示意图自顶向下的设计方法,将复杂系统划分为简单系统,然后通过逻辑和接口设计实现各个模块功能。SRAM控制器用于FPGA和C8051F020的接口,负责内部RAM的读写控制。UART负责接收从单片机上传的串行信号,将其并行化后存入接收数据缓冲RAM;另外也负责将发送缓冲RAM中的数据转换成符合RS232协议规范的串行信号发送给从单片机。FPGA内部系统采用同步有限状态机(FSM)的设计方法实现,FSM负责调配各功能模块之间的协作。状态机采用独热(one—hot)编码,使电路的可靠性和速度有显著的提高。系统状态转移图如图4所示。 4.2串行通信MAX3232 主单片机和上位机的通信速率及FPGA和从单片机的通信速率均设置为38.4Kbps,可以更精确的控制主单片机与各个从单片机之间的通信时间。通信指令由报头、设备类型、设备号、命令号、命令数据、校验等字段组成。报头用于通知单片机开始串行通信。设备类型和设备号用于将指令正确传达到相应的设备,命令号用于通知单片机指令,命令数据用于通知单片机具体的功能,校验则采用CRC校验以保证通信的准确性。写入控制命令号为