- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EDA期末小论文—51单片机与FPGA通信
51单片机与FPGA接口逻辑设计
专 业:
学生姓名:
学生学号:
院 系:
年级、班:
指导教师: 目录
第1章 设计要求及方案 1
1.1 设计要求 1
1.2 设计方案 1
第2章 程序设计 3
第3章 仿真与分析 5
3.1 程序仿真 5
3.2 仿真结果分析 6
3.3 程序问题分析与解决 7
3.4 图形化编程简介 9
第4章 总结 10
第1章 设计要求及方案
1.1 设计要求
本设计要求实现51单片机与FPGA之间的数据传输(FPGA作为单片机的片外扩展存储单元,地址为7F00H),即利用单片机的P0口将8位数据并行发给FPGA内部寄存器锁存后,再由FPGA同步串行输出,即每来一个时钟上升沿就输出1位数据,当第8位数据发送完后,停止发送数据,FPGA产生一个正脉冲,提示数据输出完成,可继续接收数据。
1.2 设计方案
单片机与FPGA的接口方式一般有两种,即总线方式与独立方式,这里采用的是总线方式。51单片机具有很强的外部总线扩展能力,利用片外三总线结构很容易实现单片机与FPGA的总线接口。而且单片机以总线方式与FPGA进行数据与控制信息通信也有许多优点:速度快;节省PLD芯片的I/O口线;相对于非总线方式,单片机编程简捷,控制可靠;在FPGA中通过逻辑切换,单片机易于与SRAM或ROM接口。
单片机与FPGA以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构,其通信的时序必须遵循单片机内固定的总线方式读/写时序。FPGA的逻辑设计也相对比较复杂。在程序设计上必须与接口的单片机程序相结合,严格安排单片机能访问的I/O空间。单片机以总线方式与FPGA进行数据通信与控制时,其通信工作时序是纯硬件行为,速度要比前一种方式快得多,另外若在FPGA内部设置足够的译码输出,单片机就可以仅通过19根I/O线在FPGA与单片机之间进行通信和控制信息交换,这样可以节省FPGA芯片的I/0线。下面介绍51单片机的时序图:
图1-2-1 51单片机时序图
ALE为地址锁存使能信号,可利用其下降沿将低8位地址锁存于FPGA中的地址锁存器中;当ALE将低8位地址通过P0锁存的同时,高8位地址已稳定建立于P2口,单片机利用读指令允许信号的低电平从外部ROM中将指令从Po口读入,由时序图可见,其指令读入的时机是在PSEN的上升沿之前。接下来,由P2口和P0口分别输出高8位和低8位数据地址,并由ALE的下降沿将P0口的低8位地址锁存于地址锁存器。若需从FPGA中读出数据,单片机则通过指令“MOVX A,@DPTR”使RD信号为低电平,由P0口将锁存器中的数据读入累加器A;若欲将累加器A的数据写进FPGA,则需通过指令“MOVX @DPTR,A”和写允许信号WR。这时,DPTR中的高8位和低8位数据作为高、低8位地址分别向P2和P0口输出,然后由WR的低电平并结合译码,将累加器A的数据写入相关的锁存器。
通过分析51单片机总线读/写时序,结合到本设计的要求,画出如图1-2-2所示的原理图。
图1-2-1 接口原理图
当ALE的下降沿到来时,首先将P0口上的低8位地址数据锁存在FPGA的锁存器(latch_addr)中,之后可将需要发送的数据放在P0口上,而P2口存放的是高8位地址数据,若此时由P2口、P0口组成的16位地址正好是FPGA的地址时,在WR的下降沿到来后,将P0口上的数据锁存在FPGA的锁存器(catch_d)中。之后,在同步时钟s_clk的控制下由FPGA串行输出锁存器(catch_d)中的8位数据,最低位先输出,当输出完第8位数据后,FPGA输出端LD发出一个正脉冲,提示数据发送完毕,图1-2-3给出了FPGA输出的关系:
图1-2-3 FPGA输出关系
第2章 程序设计
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity port_convertion is
port(s_clk: in std_logic; --同步时钟
send_ctrl: in std_logic; --发送控制
s_data: out std_logic; --串行数据输出
ld:
文档评论(0)