FPGA与51串口通信_第1页
FPGA与51串口通信_第2页
FPGA与51串口通信_第3页
FPGA与51串口通信_第4页
FPGA与51串口通信_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、宜宾学院(物理与电子工程学院论文设计)FPGA与51串口通信设计专 业: 电子信息科学与技术 学生姓名: XXX 学生学号: XXXXXXXXX 院 系: 物理与电子工程学院 班 级: XXXXX 指导教师: XX 2014年6月18日目录摘要1第一章 引言2第二章设计要求3第三章设计方案4第四章仿真结果5第五章总结6第六章参考文献7附录18摘要本设计介绍了AT89C51单片机与FPGA之间进行简单的串口通信中FPGA部分。FPGA从AT89C51单片机接收数据之后,再发送出去。关键词: AT89C51单片机、FPGA、串口通信第一章 引言单片机均内含异步串行通信口,如AT89C51单片机内为

2、UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器),可实现全双工串行通信,其串行通信非常方便。FPGA发展十分迅速,集成度不断提高,可以完成很多复杂的功能,在其完成各种功能的同时,完全可以将串行通信接口构建于其中。这样,FPGA与单片机的串行通信就变得极其方便。第二章 设计要求本设计只设计FPGA接收与发送部分。当接收到接收信号时,FPGA从单片机P0与P2口接收数据,有地址锁存信号对其锁存。当地址为7F00H时,锁存地址,并等待WR口下降沿到来。当WR下降沿到来时,读P0口数据进行锁存,开始准备发送。当接收发发送信号时,来一个

3、时钟上升沿就对数据输出一位,直到8位数据全部输出,则FPGA又开始接收数据。第三章 设计方案本设计采用AT89C51单片机与FPGA进行串口通信,系统总程序框架如图3-1:初始化定义端口是否锁存地址址下11是发送数据锁存数据判断握手信号是否发送完数据址下是否否图3-1 总程序框架实验程序代码见附录1第四章 仿真结果仿真结果结果如图4-1、图4-2所示:图4-1 串口通信仿真结果图4-2 串口通信仿真结果第五章 总结该设计结果与预期结果一致,可以实现FPGA连续从单片机中接收与发送数据。在此次设计中也遇到一些问题,如:如何实现FPGA连续接收与发送等。同时也更好的掌握了VHDL语言编程。还在此过

4、程中学会了Quartus软件。第六章 参考文献(1) 单片机原理及接口技术/张毅刚,彭喜元编著.-北京:人民邮电出版社,2008.11(2013.12重印)(2) EDA技术与应用/万隆、巴奉丽编著. 清华大学出版社,2011.10附录1library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fpga_51_ztj is port(P0,P2: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ALE,WR,S_CLK

5、:IN STD_LOGIC; S_DATA: OUT STD_LOGIC; LD: OUT STD_LOGIC);end fpga_51_ztj;-architecture fpga_51 of fpga_51_ztj issignal addr_l: std_logic_vector(7 downto 0); -地址低八位锁存signal addr_h: std_logic_vector(7 downto 0); -地址高八位锁存signal DATA: std_logic_vector(7 downto 0); -数据缓冲SIGNAL r_s: std_logic:='1'

6、 -fpga发送/接收判断信号,为1则处于接收中,否则处于发送中SIGNAL addr_p: std_logic:='0' -地址是否为7f00h判断signal LD_1: std_logic:='0' -数据发送是否完信号begin-地址锁存进程 PROCESS(ALE) BEGIN if(ALE'EVENT AND ALE='1')then -如果地址锁存信号上升沿到来,则判断fpga是否处于接收状态 if(r_s='1')then -如果fpga处于接收状态,则判断地址是否为7F00H IF(P0="00

7、000000" AND P2="01111111")THEN -如果地址为7F00H,则将地址锁存,地址判断信号置1 addr_l<=P0;addr_h<=P2;addr_p<='1' end if; else addr_p<='0' -否则地址判断信号置0 end if;END IF; end process;-数据锁存进程 PROCESS(WR,LD_1) BEGIN IF(LD_1='1')THEN -如果数据发送完信号为高电平,则接收/发送信号置1 r_s<='1'

8、; elsif(WR'EVENT AND WR='0')then -否则如果写控制端出现下降沿,判断地址判断信号、 if(addr_p='1')then -如果地址已锁存,则将P0口数据锁存到DATA,接收/发送信号置0 DATA<=P0;r_s<='0' end if; end if; end process;-数据发送进程 process(S_CLK,r_s) variable CNT:integer range 0 to 8:=0; -定义数据发送计数变量 begin if(r_s='1')then -若

9、fpga处于接收中,则数据输出端输出高阻 S_DATA<='Z'LD<='0'LD_1<='0'CNT:=0; ELSIF(S_CLK'EVENT AND S_CLK='1')THEN -否则时钟上升沿到来时,如果CNT不等于8,发送数据 IF(CNT/=8)THEN case CNT IS WHEN 0=>S_DATA<=DATA(0); WHEN 1=>S_DATA<=DATA(1); WHEN 2=>S_DATA<=DATA(2); WHEN 3=>S_DATA<=DATA(3); WHEN 4=>S_DATA<=DATA(4); WHEN 5=>S_DATA<=DATA(5); WHEN 6=>S_DATA<=DATA(6); WHEN 7=>S_DATA<=DATA(7);LD<=&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论