FPGA与单片机实现串行通信.docx
- 文档编号:2989066
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:15
- 大小:268.76KB
FPGA与单片机实现串行通信.docx
《FPGA与单片机实现串行通信.docx》由会员分享,可在线阅读,更多相关《FPGA与单片机实现串行通信.docx(15页珍藏版)》请在冰点文库上搜索。
FPGA与单片机实现串行通信
题目名称:
FPGA与单片机实现串行通信
1设计任务及内容1
2设计方案1
3系统硬件设计1
3.1单片机串行通信设计2
3.2FPGA串行通信3
4系统软件设计5
4.1FPGA单元设计………………………………………5
4.2串行通信MAX3232……………………………………6
5.系统调试10
6课程设计总结10
附录:
11
1设计任务及内容
要求实现FPGA与单片的串行通信,熟悉单片机和VHDL语言的编写,在设计过程中对单片机与FPGA有进一步理解,能够实现串行通信。
2设计方案
整个设计采用模块化的设计思想,可分为四个模块:
FPGA数据发送模块,FPGA波特率发生控制模块,FPGA总体接口模块以及单片机数据接收模块。
在通信过程中完全遵守RS232协议,并利用VHDL语言实现FPGA与单片机的串口异步通信电路。
本设计采用ll位帧格式异步通信方式,一位起始位、一位停止位、一位奇偶校验位、8位数据位,基于有限状态机原理进行FPGA设计。
设计方案框图如下:
FPGA
3系统硬件设计
3.1单片机串行通信设计
单片机与FPGA串行通信可采用单片机的SPI(串行外设接口)方式。
相对于UART,SPI更简单,速度更快。
SPI共四条线。
MOSI(MasterOutSlaveIn).MISO,SCK(SerialClock),SS(SlaveSelect)。
图1为SPIT作时序。
当单片机向FPGA传输命令或数据时,应用SPI的四种模式中的SPIO模式。
当片选SS拉低。
然后在每个时钟(SCK)上升沿送出数据。
将片选信号SS与移位寄存器使能端(En)相接,MOSI与移位寄存器数据输入端(SI)相接,SCK同时为移位寄存器提供时钟信号。
在SS信号为低电平时,移位寄存器开始工作,在每个时钟上升沿将接收到的数据左移一位,等全部接受完毕,将SS置一l”,移位寄存器工作完毕,同时为触发器提供时钟,使移位寄存器接收到的数据并行输出。
当单片机从FPGA读取数据时,向FPGA发送读使能信号RE(可用任意空闲I/0口)。
在每个时钟(SCK)上升沿.FPGA送出一位串行数据,单片机通过MISO读取数据。
借助VHDL硬件描述语言和EDA开发工具可方便的实现该系统。
如下图所示:
图一:
单片机电路
3.2FPGA串行通信
由于FPGA具有丰富的引脚资源,且EP1C3T100C8N的核电压是3.3V,STC89LE52的输出电压也是3.3V,所以任选3064A四个I/O与单片机4个I/O口连接即可,若连接在单片机的Po口时需要加上拉电阻。
在这里将SS(CS)、SCK、SDI、SDO分别如图所示连接。
图二:
FPGA电路
4系统软件设计
4.1FPGA单元设计
FPGA的设计是通信网络的核心部分。
依据功能要求,FPGA内部划分成四大功能模块:
SRAM控制器、发送数据缓冲模块、16个UART模块、接收数据缓冲模块。
发送数据缓冲模块划分成16个RAM区,每个RAM区分别连接1个UART,当发送缓冲模块接收到主单片机下发的控制数据后,启动UART将数据发送至从单片机。
接收缓冲区同样分为16个RAM区,发送控制数据后,UART周期性地向从单片机发送状态查询命令,从单片机将最新状态发送至UART模块,UART模块将数据存入接收缓冲模块相应的RAM区。
如图3所示。
FPGA内部共有16对读/写和数据总线,分别连接UART和相应的发送缓冲区RAM及接收缓冲区RAM。
FPGA内部模块采用图3FPGA内部功能模块示意图自顶向下的设计方法,将复杂系统划分为简单系统,然后通过逻辑和接口设计实现各个模块功能。
SRAM控制器用于FPGA和C8051F020的接口,负责内部RAM的读写控制。
UART负责接收从单片机上传的串行信号,将其并行化后存入接收数据缓冲RAM;另外也负责将发送缓冲RAM中的数据转换成符合RS232协议规范的串行信号发送给从单片机。
FPGA内部系统采用同步有限状态机(FSM)的设计方法实现,FSM负责调配各功能模块之间的协作。
状态机采用独热(one—hot)编码,使电路的可靠性和速度有显著的提高。
系统状态转移图如图4所示。
4.2串行通信MAX3232
主单片机和上位机的通信速率及FPGA和从单片机的通信速率均设置为38.4Kbps,可以更精确的控制主单片机与各个从单片机之间的通信时间。
通信指令由报头、设备类型、设备号、命令号、命令数据、校验等字段组成。
报头用于通知单片机开始串行通信。
设备类型和设备号用于将指令正确传达到相应的设备,命令号用于通知单片机指令,命令数据用于通知单片机具体的功能,校验则采用CRC校验以保证通信的准确性。
写入控制命令号为OOH,读取命令号为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位33H,一共发送两遍。
发送的数据格式说明:
当发送55H时,其二进制为01010101,则发送的数据的二进制数为00101010111(1位开始位+8位数据位+1位奇校验位+1位停止位)。
单片机部分先对FPGA发送过来的文件头进行确认,正确就接收文件,否则放弃接收的数据。
根据FPGA发送模块的协议,对串口控制寄存器SCON和波特率控制寄存器PCON的设置即可实现。
FPGA接收数据仿真图:
串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。
接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rsr,最后输出数据dout。
还要输出一个数据接收标志信号标志数据接收完。
5.系统调试
首先,检查电路板上各个元器件的工作电压正确,电路板能正常工作;其次,将调试的部分小程序下载到电路板上,检测R232能正常工作;再次,将单片机发送,FPGA接受的子程序下入电路板,观察现象正确,将FPGA发送,单片机接受的子程序下入电路板,观察现象;最后,将总程序下载到电路板中,观察现象正确。
6课程设计总结
此次课程设计,让我们有机会把课本中学到的理论应用到实际中去,理论联系实际,在更好的掌握了书本中的知识的同时加强了动手能力,在调试工程中遇到了许多问题,这些问题是在书中学不到的,只有通过查阅大量资料,咨询老师和同学,我们才一步步排除电路错误,在调试排错的同时收获了很多单片机实际应用中的知识。
这次实习让我们受益匪浅,无论从知识上还是其他的各个方面。
上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。
但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。
这几周的实习还是比较辛苦的,程序里面的好多内容不懂,自我感觉是单片机和FPGA我们所学的内容还不足以编出这两个程序,但是只好硬着头皮去看去理解。
但在学习过程中也充满了乐趣,当看懂了程序的一些语句,画出了要求的设计图,那我喜悦那种成就感油然而生。
在这次课程设计中又让我体会到了集体的力量,当遇到不会或是设计不出来的地方,我们就会向老师或者是同学请教。
团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。
这次课设是对我的学习态度的一次检验。
对于这次课程设计,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。
我们这次实习所遇到的多半问题多数都是由于我们不够严谨。
我们认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
单片机和FPGA是电子信息工程的一门重要专业课,学好单片机和EDA,就可以凭这个技术找一个好工作。
为即将毕业的我们在面试时提供了一些实习经验。
我们要在今后的学习中进一步学习单片机知识,培养对其的兴趣,为将来工作打好基础,充实度过大学生活。
附录:
Libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityatel2_binis
port(txclk:
instd_logic;--2400Hz的波特率时钟
reset:
instd_logic;--复位信号
din:
instd_logic_vector(15downto0);--发送的数据
start:
instd_logic;--允许传输信号
sout:
outstd_logic--串行输出端口
);
endatel2_bin;
architecturebehavofatel2_binis
signalthr,len:
std_logic_vector(15downto0);
signaltxcnt_r:
std_logic_vector(2downto0);
signalsout1:
std_logic;
signalcou:
integer:
=0;
signaloddb:
std_logic;
typesis(start1,start2,shift1,shift2,odd1,odd2,stop1,stop2);
signalstate:
s:
=start1;
begin
process(txclk)
begin
ifrising_edge(txclk)then
ifcou<3thenthr<="0000000001010101";--发送的文件头
elsifcou=3then
thr<="0000000000000010";--发送的文件长度
elsif(cou>3andstate=stop2)thenthr<=din;--发送的数据
endif;
endif;
endprocess;
process(reset,txclk)
variabletsr,tsr1,oddb1,oddb2:
std_logic_vector(7downto0);
begin
ifreset='1'then
txcnt_r<=(others=>'0');
sout1<='1';
state<=start1;
cou<=0;
elsiftxclk'eventandtxclk='1'then
casestateis
whenstart1=>
ifstart='1'then
ifcou=3then
len<=thr;
endif;
tsr:
=thr(7downto0);
oddb1:
=thr(7downto0);
sout1<='0';--起始位
txcnt_r<=(others=>'0');
state<=shift1;
else
state<=start1;
endif;
whenshift1=>
oddb<=oddb1(7)xoroddb1(6)xoroddb1(5)xoroddb1(4)xoroddb1(3)xoroddb1
(2)xoroddb1
(1)xoroddb1(0);
sout1<=tsr(0);--数据位
tsr(6downto0):
=tsr(7downto1);
tsr(7):
='0';
txcnt_r<=txcnt_r1;
if(txcnt_r=7)then
state<=odd1;cou<=cou1;
endif;
whenodd1=>--奇校验位
ifoddb='1'then
sout1<='0';state<=stop1;
else
sout1<='1';state<=stop1;
endif;
whenstop1=>
sout1<='1';--停止位
ifcou<4then
state<=start1;
else
state<=start2;
endif;
whenstart2=>
tsr1:
=thr(15downto8);
oddb2:
=thr(15downto8);
sout1<='0';--起始位
txcnt_r<=(others=>'0');
state<=shift2;
whenshift2=>
oddb<=oddb2(7)xoroddb2(6)xoroddb2(5)xoroddb2(4)xoroddb2(3)xoroddb2
(2)xoroddb2
(1)xoroddb2(0);
sout1<=tsr1(0);--数据位
tsr1(6downto0):
=tsr1(7downto1);
tsr1(7):
='0';
txcnt_r<=txcnt_r1;
if(txcnt_r=7)then
state<=odd2;
endif;
whenodd2=>--奇校验位
ifoddb='1'then
sout1<='0';state<=stop2;
else
sout1<='1';state<=stop2;
endif;
whenstop2=>
sout1<='1';--停止位
iflen="0000000000000000"then
state<=stop2;
else
state<=start1;
len<=len-1;
endif;
endcase;
endif;
endprocess;
sout<=sout1;
endbehav;
原理图:
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 单片机 实现 串行 通信