ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:268.82KB ,
资源ID:16701256      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16701256.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA与单片机实现串行通信Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FPGA与单片机实现串行通信Word文件下载.docx

1、 FPGA 3系统硬件设计3.1单片机串行通信设计单片机与FPGA串行通信可采用单片机的SPI(串行外设接口)方式。相对于UART,SPI更简单,速度更快。SPI共四条线。MOSI(Master Out Slave In)MISO,SCK(Serial Clock),SS(Slave Select)。图1为SPI T作时序。当单片机向FPGA传输命令或数据时,应用SPI的四种模式中的SPIO模式。当片选SS拉低。然后在每个时钟(SCK)上升沿送出数据。将片选信号SS与移位寄存器使能端(En)相接,MOSI与移位寄存器数据输入端(SI)相接,SCK同时为移位寄存器提供时钟信号。在SS信号为低电平

2、时,移位寄存器开始工作,在每个时钟上升沿将接收到的数据左移一位,等全部接受完毕,将SS置一l”,移位寄存器工作完毕,同时为触发器提供时钟,使移位寄存器接收到的数据并行输出。当单片机从FPGA读取数据时,向FPGA发送读使能信号RE(可用任意空闲I0口)。在每个时钟(SCK)上升沿FPGA送出一位串行数据,单片机通过MISO读取数据。借助VHDL硬件描述语言和EDA开发工具可方便的实现该系统。如下图所示:图一:单片机电路3.2 FPGA串行通信由于FPGA具有丰富的引脚资源,且EP1C3T100C8N的核电压是33 V,STC89LE52的输出电压也是33 V,所以任选3064A四个IO与单片机

3、4个IO口连接即可,若连接在单片机的Po口时需要加上拉电阻。在这里将SS(CS)、SCK、SDI、SDO分别如图所示连接。图二:FPGA电路4系统软件设计4.1 FPGA单元设计 FPGA的设计是通信网络的核心部分。依据功能要求,FPGA内部划分成四大功能模块:SRAM控制器、发送数据缓冲模块、16个UART模块、接收数据缓冲模块。 发送数据缓冲模块划分成16个RAM区,每个RAM区分别连接1个UART,当发送缓冲模块接收到主单片机下发的控制数据后,启动UART将数据发送至从单片机。接收缓冲区同样分为16个RAM区,发送控制数据后,UART周期性地向从单片机发送状态查询命令,从单片机将最新状态

4、发送至UART模块,UART模块将数据存入接收缓冲模块相应的RAM区。如图3所示。FPGA内部共有16对读写和数据总线,分别连接UART和相应的发送缓冲区RAM及接收缓冲区 RAM。 FPGA内部模块采用图3 FPGA内部功能模块示意图自顶向下的设计方法,将复杂系统划分为简单系统,然后通过逻辑和接口设计实现各个模块功能。SRAM控制器用于FPGA和 C8051F020的接口,负责内部RAM的读写控制。UART负责接收从单片机上传的串行信号,将其并行化后存入接收数据缓冲RAM;另外也负责将发送缓冲RAM中的数据转换成符合RS232协议规范的串行信号发送给从单片机。FPGA内部系统采用同步有限状态

5、机(FSM)的设计方法实现,FSM负责调配各功能模块之间的协作。状态机采用独热(onehot)编码,使电路的可靠性和速度有显著的提高。系统状态转移图如图4所示。4.2串行通信MAX3232 主单片机和上位机的通信速率及FPGA和从单片机的通信速率均设置为384 Kbps,可以更精确的控制主单片机与各个从单片机之间的通信时间。通信指令由报头、设备类型、设备号、命令号、命令数据、校验等字段组成。 报头用于通知单片机开始串行通信。设备类型和设备号用于将指令正确传达到相应的设备,命令号用于通知单片机指令,命令数据用于通知单片机具体的功能,校验则采用CRC校验以保证通信的准确性。写入控制命令号为OOH,

6、读取命令号为01H,读取指令命令数据为0字节。通信指令的帧格式如下:单片机接收到控制命令后,如果接收正确,返回00H,若错误则返回01H。返回帧格式为: 接收后单片机返同帧格式为:系统发送、接受程序流程图如下:FPGA发送数据的仿真图如下:图中Din写入值为3355H,波特率为2400Hz,Start信号始终置逻辑1,即随时都能发送数据。Reset信号逻辑1时复位,逻辑0时电路开始工作。THR是数据寄存器,文件头、数据长度以及数据位都先寄存到THR中,Len是数据长度,TSR是低8位数据帧寄存器,TSR1是高8位数据帧寄存器。数据长度Len定为02H,发送时先发送低8位55H,后发送高8位33

7、H,一共发送两遍。发送的数据格式说明:当发送55H时,其二进制为01010101,则发送的数据的二进制数为00101010111(1位开始位+8位数据位+1位奇校验位+1位停止位)。单片机部分先对FPGA发送过来的文件头进行确认,正确就接收文件,否则放弃接收的数据。根据FPGA发送模块的协议,对串口控制寄存器SCON和波特率控制寄存器PCON的设置即可实现。FPGA接收数据仿真图:串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期

8、采样接收数据,移位输入接收移位寄存器rsr,最后输出数据dout。还要输出一个数据接收标志信号标志数据接收完。 5.系统调试首先,检查电路板上各个元器件的工作电压正确,电路板能正常工作;其次,将调试的部分小程序下载到电路板上,检测R232能正常工作;再次,将单片机发送,FPGA接受的子程序下入电路板,观察现象正确,将FPGA发送,单片机接受的子程序下入电路板,观察现象;最后,将总程序下载到电路板中,观察现象正确。6课程设计总结此次课程设计,让我们有机会把课本中学到的理论应用到实际中去,理论联系实际,在更好的掌握了书本中的知识的同时加强了动手能力,在调试工程中遇到了许多问题,这些问题是在书中学不

9、到的,只有通过查阅大量资料,咨询老师和同学,我们才一步步排除电路错误,在调试排错的同时收获了很多单片机实际应用中的知识。这次实习让我们受益匪浅,无论从知识上还是其他的各个方面。上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。这几周的实习还是比较辛苦的,程序里面的好多内容不懂,自我感觉是单片机和FPGA我们所学的内容还不足以编出这两个程序,但是只好硬着头皮去看去理解。但在学习过程中也充满了乐趣,当看懂了程序的一些语句,画出了要求的设计图,那我喜悦那种成就感油然而生。

10、在这次课程设计中又让我体会到了集体的力量,当遇到不会或是设计不出来的地方,我们就会向老师或者是同学请教。团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。这次课设是对我的学习态度的一次检验。对于这次课程设计,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。我们认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,

11、而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。单片机和FPGA是电子信息工程的一门重要专业课,学好单片机和EDA,就可以凭这个技术找一个好工作。为即将毕业的我们在面试时提供了一些实习经验。我们要在今后的学习中进一步学习单片机知识,培养对其的兴趣,为将来工作打好基础,充实度过大学生活。Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity ate

12、l2_bin isport( txclk: in std_logic; -2400Hz的波特率时钟reset: -复位信号din: in std_logic_vector(15 downto 0); -发送的数据start: -允许传输信号sout: out std_logic -串行输出端口);end atel2_bin;architecture behav of atel2_bin issignal thr,len: std_logic_vector(15 downto 0);signal txcnt_r: std_logic_vector(2 downto 0);signal sout1

13、: std_logic;signal cou: integer:=0;signal oddb:std_logic;type s is(start1,start2,shift1,shift2,odd1,odd2,stop1,stop2);signal state:s:=start1;beginprocess(txclk)if rising_edge(txclk) thenif cou3 then thr=0000000001010101; -发送的文件头elsif cou=3 thenthr3 and state=stop2) then thr=din;-发送的数据end if;end proc

14、ess;process(reset,txclk)variable tsr,tsr1,oddb1,oddb2: std_logic_vector(7 downto 0);if reset=1 thentxcnt_r0sout1=statecouif start=if cou=3 thenlenoddb -奇校验位if oddb=stop1;when stop1= -停止位4 then=start2;when start2=tsr1:=thr(15 downto 8);oddb2:=shift2;when shift2=oddb2(7) xor oddb2(6) xor oddb2(5) xor oddb2(4) xor oddb2(3) xor oddb2(2) xor oddb2(1) xor oddb2(0);=tsr1(0);-数据位tsr1(6 downto 0):=tsr1(7 downto 1);tsr1(7):=odd2;when odd2=stop2;when stop2=if len=0000000000000000=len-1;end case;sout=sout1;end behav;原理图:欢迎您的下载,资料仅供参考!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1