




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目名称:FPGA与单片机实现串行通信目录1设计任务及内容12设计方案13系统硬件设计13.1单片机串行通信设计23.2 FPGA串行通信34系统软件设计54.1 FPGA单元设计 54.2串行通信 MAX3232 65.系统调试106课程设计总结10附录:111设计任务及内容要求实现FPGA与单片的串行通信,熟悉单片机和VHDL语言的编写,在设计 过程中对单片机与FPGA有进一步理解,能够实现串行通信。2设计方案整个设计采用模块化的设计思想,可分为四个模块:FPG数据发送模块,FPGA 波特率发生控制模块,FPG总体接口模块以及单片机数据接收模块。 在通信过程 中完全遵守RS23协议,并利用
2、VHD语言实现FPGAf单片机的串口异步通信电 路。本设计采用II位帧格式异步通信方式,一位起始位、一位停止位、一位奇偶 校验位、8位数据位,基于有限状态机原理进行 FPG设计。设计方案框图如下:FPGA3系统硬件设计从机图2工作模式3.1单片机串行通信设计单片机与FPG串行通信可采用单片机的SPI(串行外设接口)方式。相对于 UARTSPI 更简单,速度更快。SPI 共四条线。MOSI(Master Out Slave In). MISO SCK(Serial Clock) , SS(Slave Select)。图 1为SPI T作时序。当单片机向 FPGA 传输命令或数据时,应用SPI的四
3、种模式中的SPIO模式。当片选SS拉低。然后在 每个时钟(SCK)上升沿送出数据。将片选信号SS与移位寄存器使能端(En)相接, MOS与移位寄存器数据输入端(SI)相接,SCI同时为移位寄存器提供时钟信号。 在SS信号为低电平时,移位寄存器开始工作,在每个时钟上升沿将接收到的数据 左移一位,等全部接受完毕,将SS置一 I”,移位寄存器工作完毕,同时为触发 器提供时钟,使移位寄存器接收到的数据并行输出。当单片机从FPG读取数据时,向FPG发送读使能信号RE(可用任意空闲I /0 口)。在每个时钟(SCK)上升沿.FPG送出一位串行数据,单片机通过MISO取数 据。借助VHD硬件描述语言和EDA
4、ff发工具可方便的实现该系统。如下图所示:P0.142P0.241POJ40P0 439P0.5羽P0.«J7P0.7羽KO24P3.1P2.22627 一P2.428P2.5対P27JIVD叩44R18.jI?:UP虫牯32ALE3iMCU'ZKZI10POO43o 1 3 4 3 6 7 O.QO'.O.GO.O.G pppppppp0 12 3 4 5 6 7 工工工d2.!2_工 p p p p p p _p pIMO1M.1D<T2IMJXT.4L2XTAL1勺<®>LEPR£-WGPLCX3ph4pi?"3&
5、quot;Pl 3CPl .4F5&Pl 69Pl 711pa.oPM14P3.21SP3316P?.417P3.51£W酋15"Pj.723P4.Q54P4.1P4.2TxDPJlE<TDP3 2 r<flps_3TOP3.4 7:P5 5P:.O21Q I宀亠J4豈亠舌7 1A- B M * T* i 1 -TL» d-p-pppfpp2011.05!IZZI1C34图一:单片机电路3.2 FPGA串行通信由于FPG具有丰富的引脚资源,且EP1C3T100C8的核电压是3.3 V, STC89LE52 的输出电压也是3. 3 V,所以任选3
6、064A四个I /O与单片机4个I /O口连接即可, 若连接在单片机的Po口时需要加上拉电阻。在这里将 SS(CS)、SCK SDI、SDO分 别如图所示连接。:-乂:Q-二二二 HACLO-匚WO1-二二二.-A - - 2 - -呂 go_(djg 工 UM1JIAa2-二-二亠=1602亠 Ego_Luwi.-: rxlcnx二FH<O1o-IOI loTioT ICE-IU5IUT7 IU-T rTIZT7 TUTT ionloIOIOIOIOIOIOIOgIOIOIOIOot三二三.s2-.- E>dl2 負专A.ol -£$od-r-H-t Jd 口 .otJ
7、lnrxJ- di:色 g 01rOIOCP & -£.二-二S& &苻9801-口-gC-1筈lzg«NE 口 Q30% 担 A ”01HKTCHGfxH盘一3 5 !图二:FPG电路4系统软件设计4.1 FPGA单元设计FPG的设计是通信网络的核心部分。依据功能要求,FPG内部划分成四大功 能模块:SRA控制器、发送数据缓冲模块、16个UAR模块、接收数据缓冲模块。 发送数据缓冲模块划分成16个RA区,每个RA区分别连接1个UART当发送缓冲 模块接收到主单片机下发的控制数据后, 启动UAR将数据发送至从单片机。接收 缓冲区同样分为16个 RA区
8、,发送控制数据后,UAR周期性地向从单片机发送状 态查询命令,从单片机将最新状态发送至UAR模块,UAR模块将数据存入接收缓 冲模块相应的RA区。如图3所示。SR.AM发送丿 接收iS冲 模块16个 UART模块匪J卜5内訂曲綽按入世用fpg内部共有16对读/写和数据总线,分别连 接UAR和相应的发送缓冲区RA及接收缓冲区RAMFPG内部模块采用图3 FPG内部功能模块示意图自顶向下的设计方法,将复杂系统划分为简单系统,然后通过逻辑和接口设计实现各个模块功能。SRA控制器用 于FPG和C8O51FO20勺接口,负责内部RA啲读写控制。UAR负责接收从单片机 上传的串行信号,将其并行化后存入接收
9、数据缓冲 RAM另外也负责将发送缓冲 RAI中的数据转换成符合RS23协议规范的串行信号发送给从单片机。FPG内部系统采用同步有限状态机(FSM)的设计方法实现,FS硕责调配各功 能模块之间的协作。状态机米用独热(one hot)编码,使电路的可靠性和速度有 显著的提高。系统状态转移图如图4所示。N地址?命令井开发送 兄牛蠶卉向命令 屮斷关团接段到 正确JR据?'发送裂、 冲区RAM 按收鳌据j计时50m5搖收绳神JxRAM计时200 ms计时 30nw接收:缓冲区 IAM<- "FF图4有限址态机状态转移图4.2串行通信 MAX3232主单片机和上位机的通信速率及 F
10、PGA和从单片机的通信速率均设置为 38. 4 Kbps,可以更精确的控制主单片机与各个从单片机之间的通信时间。 通信指令由 报头、设备类型、设备号、命令号、命令数据、校验等字段组成。报头用于通知单片机开始串行通信。设备类型和设备号用于将指令正确传达到相 应的设备,命令号用于通知单片机指令,命令数据用于通知单片机具体的功能, 校验则采用CRC校验以保证通信的准确性。写入控制命令号为 00H读取命令号为01H,读取指令命令数据为0字节。通信指令的帧格式如下:报头1字*1 ? &1 TV1字VN字V1卞W果接收正确,返回00H,若错误则返回01Ho返回帧格式为:设备类野设备号命令号1字描1
11、字&1字打1字节丨字冇p报头:设备号1宇节】字菸】t 1V接收后单片机返同帧格式为:邮头1设备类型命令号设备状憲i字|字借1字节1字节¥字卄】了卩系统发送、接受程序流程图如下:FPGA发送数据结束仿真图如下: Va<ue: IFlame:300.0ns500.0nsstartresetH 33553365400.0ns图中Din写入值为3355H波特率为2400Hz Start信号始终置逻辑1,即 随时都能发送数据。Reset信号逻辑1时复位,逻辑0时电路开始工作。THR是 数据寄存器,文件头、数据长度以及数据位都先寄存到 THR中,Len是数据长度, TSR是低8位数
12、据帧寄存器,TSR1是高8位数据帧寄存器。数据长度 Len定为 02H,发送时先发送低8位55H,后发送高8位33H, 共发送两遍。发送的数据 格式说明:当发送55H时,其二进制为01010101,则发送的数据的二进制数为 00101010111( 1位开始位+8位数据位+1位奇校验位+1位停止位)。单片机部分先对FPGA发送过来的文件头进行确认,正确就接收文件,否则 放弃接收的数据。根据FPGA发送模块的协议,对串口控制寄存器SCON口波特率 控制寄存器PCON勺设置即可实现。FPGA接收数据仿真图:mdlrst恥A1EiwttuftoAdwre-rAr鬓4HQOHOCI串行数据帧和接收时钟
13、是异步的,发送来的数据由逻辑1变为逻辑0可以视 为一个数据帧的开始。接收器先要捕捉起始位,确定 rxd输入由1到0,逻辑0 要8个CLK16时钟周期,才是正常的起始位,然后在每隔 16个CLK16时钟周期 采样接收数据,移位输入接收移位寄存器rsr,最后输出数据dout。还要输出一 个数据接收标志信号标志数据接收完。5.系统调试首先,检查电路板上各个元器件的工作电压正确, 电路板能正常工作;其次, 将调试的部分小程序下载到电路板上,检测 R232能正常工作;再次,将单片机 发送,FPGA接受的子程序下入电路板,观察现象正确,将 FPGA发送,单片机接 受的子程序下入电路板,观察现象;最后,将总
14、程序下载到电路板中,观察现象 正确。6课程设计总结此次课程设计,让我们有机会把课本中学到的理论应用到实际中去,理论联系实际,在更好的掌握了书本中的知识的同时加强了动手能力,在调试工程中遇到了许多问题,这些问题是在书中学不到的,只有通过查阅大量资料,咨询老师 和同学,我们才一步步排除电路错误,在调试排错的同时收获了很多单片机实际 应用中的知识。这次实习让我们受益匪浅,无论从知识上还是其他的各个方面。 上课的时候的学习从来没有见过真正的单片机, 只是从理论的角度去理解枯燥乏 味。但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。 这几周的实习
15、还是比较辛苦的,程 序里面的好多内容不懂,自我感觉是单片机和 FPGA我们所学的内容还不足以编 出这两个程序,但是只好硬着头皮去看去理解。但在学习过程中也充满了乐趣, 当看懂了程序的一些语句,画出了要求的设计图,那我喜悦那种成就感油然而生。 在这次课程设计中又让我体会到了集体的力量, 当遇到不会或是设计不出来的地方,我们就会向老师或者是同学请教。 团结就是力量,无论在现在的学习中还是 在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、 更多的情感。这次课设是对我的学习态度的一次检验。对于这次课程设计,我的第一大心得体会就是作为一名工程技术人员,要求 具备的首要素质绝对应该
16、是严谨。我们这次实习所遇到的多半问题多数都是由于 我们不够严谨。我们认识到,无论做什么事情,只要你足够坚强,有足够的毅力 与决心,有足够的挑战困难的勇气,就没有什么办不到的。通过这次单片机实习, 我不仅加深了对单片机理论的理解, 将理论很好地应用到实际当中去,而且我还 学会了如何去培养我们的创新精神, 从而不断地战胜自己,超越自己。创新可以 是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。单片机和FPGA是电子信息工程的一门重要专业课,学好单片机和 EDA就 可以凭这个技术找一个好工作。为即将毕业的我们在面试时提供了一些实习经 验。我们要在今后的学习中进一步学习单片机知识, 培养对
17、其的兴趣,为将来工 作打好基础,充实度过大学生活。附录:Library ieee;use ieee.std_logic_1164.all;use ieee.stdo gic_arith.all;use ieee.std_logic_ un sig ned.all; en tity atel2_bi n is的波特率时钟发送的数据port( txclk: in std_logic; -2400Hz reset: in std_logic;- 复位信号din: in stdo gic_vector(15 dow nto 0);- start: in std_logic;-允许传输信号sout: o
18、ut std_logic - 串行输出端口 );end atel2_b in;architecture behav of atel2_bi n is sig nal thr,le n: stdo gic_vector(15 dow nto 0); sig nal txcnt_r: stdo gic_vector(2 dow nto 0);sig nal sout1: std_logic;sig nal cou: in teger:=0;sig nal oddb:std_logic;type s is(start1,start2,shift1,shift2,odd1,odd2,stop1,sto
19、p2);sig nal state:s:=start1;beg inprocess(txclk)beg inif risin g_edge(txclk) the nif cou<3 then thr<="0000000001010101"- 发送的文件头elsif cou=3 the nthr<="0000000000000010"-发送的文件长度elsif (cou>3 and state=stop2) the n thr<=di n;-发送的数据end if; end if;end process;process(res
20、et,txclk)variable tsr,tsr1,oddb1,oddb2: std_logic_vector(7 dow nto 0);beg inif reset='1' the ntxcnt_r<=(others=>'0');sout1<='1'state<=start1;cou<=0;elsif txclk'eve nt and txclk='1' the ncase state iswhe n start1=>if start='1' thenif cou=3
21、 the nlen<=thr;end if;tsr:=thr(7 dow nto 0);oddb1:=thr(7 dow nto 0);sout1<='0'- 起始位txcnt_r<=(others=>'0');state<=shift1;elsestate<=start1;end if;whe n shift1=>oddb<=oddb1 xor oddb1 (6) xor oddb1 (5) xor oddb1 xor oddb1 (3) xor oddb1 (2) xor oddb1(1) xor oddb1(
22、0);sout1<=tsr(0);- 数据位tsr(6 dow nto 0):=tsr(7 dow nto 1);tsr:='0'txcn t_r<=txc nt_r 1;if (txc nt_r=7) the nstate<=odd1;cou<=cou 1;end if;when odd1=> -奇校验位if oddb='1' thensout1<='0'state<=stop1;elsesout1<='1'state<=stop1;end if;whe n stop1=&g
23、t;sout1<='1'- 停止位if cou<4 the nstate<=start1;elsestate<=start2;end if;whe n start2=>tsr1:=thr(15 dow nto 8);oddb2:=thr(15 dow nto 8);sout1<='0'- 起始位txcnt_r<=(others=>'0');state<=shift2;whe n shift2=>oddb<=oddb2 xor oddb2 (6) xor oddb2 (5) xor oddb2 xor oddb2 (3) xor oddb2 (2) xor oddb2(1) xor oddb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论