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

毕业论文再次修改版- 副本 - 图文(6)

来源:网络收集 时间:2026-07-28
导读: 图5.1 FPGA逻辑关系图1 图5.2 FPGA逻辑关系图2 其中,各个模块说明如下: (1) ctr:MCU 接口模块 端口说明:clk,400M时钟输入,用于对MCU控制信号采样 cs:片选 rst:复位 wr:写数据信号 rd:读数据信号 第 25 页

图5.1 FPGA逻辑关系图1

图5.2 FPGA逻辑关系图2

其中,各个模块说明如下: (1) ctr:MCU 接口模块

端口说明:clk,400M时钟输入,用于对MCU控制信号采样 cs:片选 rst:复位 wr:写数据信号 rd:读数据信号

第 25 页 (共41 页)

data[7..0]:数据总线 address[3..0]:地址总线

fifo_wren:写发送FIFO数据使能信号 fifo_wr:写发送FIFO数据时钟信号 sed_data[7..0]:写入发送FIFO数据总线

fifo_rden:读接收FIFO数据使能信号 fifo_rd:读接收FIFO数据时钟信号 rev_data[7..0]:读接收FIFO数据总线

作用:完成于MCU的接口及对内部数据读写的控制

(2)send_fifo:发送FIFO

端口说明:data[7..0],发送FIFO数据总线 wrreq:发送FIFO写数据使能 wrclk:发送FIFO写数据时钟 rdreq:发送FIFO读数据使能 rdclk:发送FIFO读数据时钟 q[7..0]:发送FIFO数据输出 rdempty:发送FIFO空标志 作用:用于存入MCU写入的数据 (3)S485_4B5B:发送模块 端口说明:clk,发送模块主时钟 Rst:复位

empty:发送FIFO空标志判断 indata[7..0]:读发送FIFO数据输入 rd:发送FIFO读 rden:发送FIFO读使能 txd_reg:数据发送端

作用:当判断MCU对发送FIFO写入数据后,则将数据发送出去(内部自动加数据帧头帧尾)

第 26 页 (共41 页)

发送数据波特率由该模块的输入主时钟决定 BAUD = CLK/10。 (4)S485_4B5B_RECV:接收模块 端口说明:clk :接收模块主时钟 rst:复位 rxd:数据接收端 wren:接收FIFO写使能 wr:接收FIFO写 q: 接收FIFO输入数据

作用:接收数据,并写入接收FIFO,供MCU读收到的数据(自动按帧头帧尾解码,实现帧同步)

接收数据波特率由该模块的输入主时钟决定 BAUD = CLK/10。

(5)rev_fifo:接收FIFO 端口说明:data[7..0]; wrreq:接收FIFO写数据使能 wrclk:接收FIFO写数据时钟 rdreq:接收FIFO读数据使能 rdclk:接收FIFO读数据时钟 q[7..0] :接收FIFO数据输出 作用:存储接收到的数据。

2、FPGA端发送流程

FPGA端发送流程如下:

第 27 页 (共41 页)

图5.3 RS485发送流程图

CPU写FIFO流程:首先触发1ms定时器,判断“启动发送”标志位是否等于0,若等于0,则判断CPU将数据写入FIFO,最后“启动发送”等于1再返回1ms定时器;若判断“启动发送”标志位不等于0,则判断1ms定时是否完成,若完成就向上层报告发送超时,最后再返回定时器重新执行,若判断1ms定时没有完成,则是返回再次判断“启动发送”标志位时候等于0。

FPGA发送流程:首先清除FIFO,然后判断“启动发送”标志位是否等于1,若等于1,就将FIFO数据加帧头帧尾并发送“启动发送”为0,最后再清除FIFO,继续循环;若清除FIFO后判断“启动发送”标志位不等于1,则再次返回“启动发送”标志位是否等于1。

3、FPGA端接收流程

FPGA端接收流程如下:

图5.4 RS485接收流程图

CPU读FIFO流程:首先进入中断服务,CPU接收到中断信号,将数据从FIFO读出,之后读取校验标志并校验标志,FPGA发出信号“接收完成”等于0,再向上层提供数据缓冲区以及校验等标志位,完成数据读取之后,中断返回,结束。

FPGA接收流程:FPGA处于空闲状态,首先判断“接收完成”是否等于0,若不等于0,则继续判断“接收完成”时候等于1;而等于0,则可以得知“正在接收”等于

第 28 页 (共41 页)

1,并开始接收数据并校验相应位标志,然后判断接收是否完成,若没有完成则继续判断数据是否完成;若完成接收,则数据进入接收FIFO,CPU对其读取,给出“正在接受”等于0和“接收完成”等于1的信号,最后返回到判断“接收完成”是否等于0,一次循环。

4、LPC3250驱动程序设计

由于CPU把FPGA当做外部存储器使用,因此需要对FPGA端的IO进行读写,而且读数据的条件需要利用中断实现,所以本驱动程序分成LPC3250驱动程序分为IO的驱动和中断两部分。

首先看LPC3250的物理地址定义:

0x8000 0000 to 0xFFFF FFFF:Off-Chip Memory;Two dynamic memory banks, 512 MB each;

0x8000 0000 - 0x9FFF FFFF: EMC_DYCS0_N 0xA000 0000 - 0xBFFF FFFF: EMC_DYCS1_N Four static memory banks, 16 MB each: 0xE000 0000 - 0xE0FF FFFF: EMC_CS0 0xE100 0000 - 0xE1FF FFFF: EMC_CS1 0xE200 0000 - 0xE2FF FFFF: EMC_CS2 0xE300 0000 - 0xE3FF FFFF: EMC_CS3

由于在访问FPGA作为外部RAM区时,使用的是EMC_CS3作为片选,因此地址段应该是0xE300 0000开始。 (1)IO驱动程序设计

定义FPGA端寄存器: #define FPGA_DATA_REG1

FPGA_REG(0x00) //数据寄存器 FPGA_REG(0x01) //接收计数寄存器高 FPGA_REG(0x02) //接收计数寄存器低 FPGA_REG(0x03) //累加和 FPGA_REG(0x04) //保留 FPGA_REG(0x05) //波特率寄器高 FPGA_REG(0x06) //波特率寄器低 FPGA_REG(0x07) //控制寄存器 FPGA_REG(0x08) //数据寄存器

#define FPGA_RCV_COUNT_H_REG1 #define FPGA_RCV_COUNT_L_REG1 #define FPGA_CHECK_SUM_REG1 #define FPGA_RESERVED_REG1

#define FPGA_BAUND_RATE_H_REG1 #define FPGA_BAUND_RATE_L_REG1 #define FPGA_CTRL_REG1 #define FPGA_DATA_REG2

第 29 页 (共41 页)

…… 此处隐藏:1081字,全部文档内容请下载后查看。喜欢就下载吧 ……
毕业论文再次修改版- 副本 - 图文(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/443115.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)