FPGA与单片机实现数据RS232串口通信的设计

发布者:鑫森淼焱最新更新时间:2011-11-22 关键字:FPGA  RS232串口通信 手机看文章 扫描二维码
随时随地手机看文章

1 前言
现场可编程逻辑器件(FPGA)在高速采集系统中的应用越来越广,由于FPGA对采集到的数据的处理能力比较差,故需要将其采集到的数据送到其他CPU系统来实现数据的处理功能,这就使FPGA系统与其他CPU系统之间的数据通信提到日程上,得到人们的急切关注。本文介绍利用VHDL语言实现 FPGA与单片机的串口异步通信电路。
整个设计采用模块化的设计思想,可分为四个模块:FPGA数据发送模块,FPGA波特率发生控制模块,FPGA总体接口模块以及单片机数据接收模块。本文着重对FPGA数据发送模块实现进行说明。
2 FPGA数据发送模块的设计
根据RS232 异步串行通信来的帧格式,在FPGA发送模块中采用的每一帧格式为:1位开始位 8位数据位 1位奇校验位 1位停止位,波特率为2400。本系统设计的是将一个16位的数据封装成高位帧和低位帧两个帧进行发送,先发送低位帧,再发送高位帧,在传输数据时,加上文件头和数据长度,文件头用555555来表示,只有单片机收到555555时,才将下面传输的数据长度和数据位进行接收,并进行奇校验位的检验,正确就对收到的数据进行存储处理功能,数据长度可以根据需要任意改变。由设置的波特率可以算出分频系数,具体算法为分频系数X=CLK/(BOUND*2)。可由此式算出所需的任意波特率。下面是实现上述功能的VHDL源程序。
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity atel2_bin is
port( txclk: in std_logic; --2400Hz的波特率时钟
reset: in std_logic; --复位信号
din: in std_logic_vector(15 downto 0); --发送的数据
start: in std_logic; --允许传输信号
sout: out std_logic --串行输出端口
);
end atel2_bin;
architecture behav of atel2_bin is
signal thr,len: std_logic_vector(15 downto 0);
signal txcnt_r: std_logic_vector(2 downto 0);
signal sout1: 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;
begin
process(txclk)
begin
if rising_edge(txclk) then
if cou<3 then thr<="0000000001010101"; --发送的文件头
elsif cou=3 then
thr<="0000000000000010"; --发送的文件长度
elsif (cou>3 and state=stop2) then thr<=din;--发送的数据
end if;
end if;
end process;
process(reset,txclk)
variable tsr,tsr1,oddb1,oddb2: std_logic_vector(7 downto 0);[page]

begin
if reset='1' then
txcnt_r<=(others=>'0');
sout1<='1';
state<=start1;
cou<=0;
elsif txclk'event and txclk='1' then
case state is
when start1=>
if start='1' then
if cou=3 then
len<=thr;
end if;
tsr:=thr(7 downto 0);
oddb1:=thr(7 downto 0);
sout1<='0'; --起始位
txcnt_r<=(others=>'0');
state<=shift1;
else
state<=start1;
end if;
when shift1=>
oddb<=oddb1(7) xor oddb1(6) xor oddb1(5) xor oddb1(4) xor oddb1(3) xor oddb1(2) xor oddb1(1) xor oddb1(0);
sout1<=tsr(0); --数据位
tsr(6 downto 0):=tsr(7 downto 1);
tsr(7):='0';
txcnt_r<=txcnt_r 1;
if (txcnt_r=7) then
state<=odd1;cou<=cou 1;
end if;
when odd1=> --奇校验位
if oddb='1' then
sout1<='0';state<=stop1;
else
sout1<='1';state<=stop1;
end if;
when stop1=>
sout1<='1'; --停止位
if cou<4 then
state<=start1;
else
state<=start2;
end if;
when start2=>
tsr1:=thr(15 downto 8);
oddb2:=thr(15 downto 8);
sout1<='0'; --起始位
txcnt_r<=(others=>'0');
state<=shift2;
when shift2=>
oddb<=oddb2(7) xor oddb2(6) xor oddb2(5) xor oddb2(4) xor oddb2(3) xor oddb2(2) xor oddb2(1) xor oddb2(0);
sout1<=tsr1(0);--数据位
tsr1(6 downto 0):=tsr1(7 downto 1);
tsr1(7):='0';
txcnt_r<=txcnt_r 1;
if (txcnt_r=7) then
state<=odd2;
end if;
when odd2=> --奇校验位
if oddb='1' then
sout1<='0';state<=stop2;
else
sout1<='1';state<=stop2;
end if;
when stop2=>
sout1<='1'; --停止位
if len="0000000000000000" then
state<=stop2;
else
state<=start1;
len<=len-1;
end if;
end case;
end if;
end process;
sout<=sout1;
end behav;[page]

其中各信号的说明已在程序中标明了。波形仿真图如图2所示。

图2 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的设置即可实现。
3 总结
目前电子产品的开发中经常要综合运用EDA技术、计算机控制技术、数字信号处理技术,那么电路各部分经常需要数据交换。本文也是基于此给出这方面应用的实例,供开发者交流。

 

关键字:FPGA  RS232串口通信 引用地址:FPGA与单片机实现数据RS232串口通信的设计

上一篇:uC/OS-II在MSP430单片机芯片上实现RTOS的问题分析
下一篇:基于16位单片机作为主控芯片的嵌入式设备解决方案

推荐阅读最新更新时间:2024-03-16 12:46

设计灵活、高性能的嵌入式系统——软处理和IP定制同时确保灵活性和性能
您的下一个嵌入式系统设计项目需要的是什么:是可以让您轻松地定制设计的灵活的系统元件,还是额外的性能空间,以便您在设计周期中加入更多的功能?为什么要让自己承受过度的开发压力,并且只能舍此取彼呢?软处理和IP定制能够为同时确保灵活性和高性能提供了最佳的解决方案,将定制设计的概念和协处理带来的性能加速结合起来。 分立处理器只能提供固定的外设选择,并且一些性能受到时钟频率的限制。在嵌入式FPGA所提供的平台上,您可以创建一个具有大量定制处理器核、灵活的外设、甚至协处理减负引擎的系统。现在,您能设计出一个不折不扣的定制处理系统——不仅满足最具挑战性的项目要求,而且能够冲破性能极限,与此同时,通过使用FPGA硬件实现加速的软件指令最大限度地
[嵌入式]
Xilinx行业预测:5G,数据中心,AI和软件,IIoT和医疗
来源:赛灵思(Xilinx)博客 上周,我们预测了2021年汽车行业趋势,今天,我们要针对5G,数据中心,AI和软件,医疗保健和IIoT市场进行预测。 对于我们的有线和无线网络设备,我们相信适应性,开放标准,人工智能(AI)和机器学习将推动5G网络在2021年的发展。运营商希望自己掌握命运,并混合使用一流的硬件以及新的5G系统中的软件。我们强大适应性的SoC和RF解决方案将帮助引领潮流。 在数据中心,我们预计SmartNIC部署将超过具有超扩展程序和云服务提供商的传统NIC。 SmartNIC提供了引人注目的TCO和性能优势,而协同处理已成为当今高速网络需求下提高效率的必备条件。我们在数据中心看到的另一个大趋势是交互式
[嵌入式]
三强争霸高端FPGA市场
英特尔在早前宣布,他们已开始将其第一批新的Agilex FPGA交付给抢先体验的客户。这使得最大的两家FPGA供应商之间竞争进入到了“正面交锋”阶段。Xilinx于6月份交付了他们的第一款“ Versal ACAP”FPGA,因此,在经历了一场漫长而有争议的“谁能首先交付?”之战之后。事实证明,这两家竞争公司都可以在大约两个月内,开始交付其可用来与对手对标的FPGA产品线。这意味着,与其他凭借第一时间引入先进节点来提升性能的竞争不同,这两家公司都没有足够的时间去利用一种新的、更先进的技术来赢得设计上的胜利。 不过,这次竞争的领域扩大了,新玩家Achronix声称他们将在今年年底之前交付其新型Speedster 7t FPGA的
[嵌入式]
基于FPGA的实时可编程高精度信号源设计
  1 引言   信号源作为一种电子测量和计量设备,通常可产生大量的标准信号和用户定义信号。由于它具有高精度、高稳定性、可重复性和易操作性等特点,而被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。它不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能与其它仪器进行通讯,组成自动测试系统。在各种实验应用和实验测试处理中,既可根据使用者的要求,作为激励源来仿真各种测试信号,并提供给被测电路,以满足测量或各种实际需要,也可作为一种测量仪器来完成一定的测试功能。然而,由于应用背景的不同和对测试、测量技术要求的提高,对信号源的频率精度、幅值精度、信号形式等要求也越来越高,因此开发高精度信号源具有重大的意义
[单片机]
基于<font color='red'>FPGA</font>的实时可编程高精度信号源设计
向软件开发者伸出橄榄枝 赛灵思发布Vitis统一软件平台
“Vitis 统一软件平台是针对AI界的软件开发人员。长久以来我们的开发工具主要是面向硬件开发人员,因此对于软件人员来说,赛灵思并不很知名。随着今天正式全面推出Vitis 和Vitis AI,标志着公司整体战略的转型,我们想要改变人们对于赛灵思的认识。” 赛灵思软件与 AI 产品市场营销副总裁Ramine Roane(罗明)先生 近日,在2019赛灵思开发者大会( XDF )亚洲站上,赛灵思软件与 AI 产品市场营销副总裁Ramine Roane(罗明)先生,就赛灵思在人工智能和软件领域的一些进展,还有他对这个行业的看法,接受了EEWorld记者的采访。 自适应才能赶上创新速度 罗明先生首先介绍了赛灵思AI业务
[嵌入式]
向软件开发者伸出橄榄枝 赛灵思发布Vitis统一软件平台
数据编排支持人工智能(AI)的下一步发展
数据编排支持人工智能(AI)的下一步发展 (白皮书编号:WP025) 本文概要 深度学习技术需要大量的张量算术运算(tensor arithmetic operation)。为了支持实时执行,存储器和处理器的性能必须满足比标准软件驱动架构尽可能高得多的性能目标。这种需求导致去使用基于专用硬件加速器的设计,来执行并行化和高度流水线化的张量算术运算。为了避免通道阻塞,数据必须在合适的位置,合适的时间,以合适的格式出现。专用的数据编排硬件避免了加速器通道阻塞,从而支持以最高效率运行。 数据编排包括预处理和后处理操作,确保数据以最佳速度和最适合进行高效处理的格式传输到机器学习引擎中。操作范围从资源管理和使用规划,到I/O适
[嵌入式]
数据编排支持人工智能(AI)的下一步发展
利用单片机和FPGA实现系统中可延时调节模块的设计
基于P89C51RD2和FPGA的信号延时模块主要用在传输时钟信号、数字同步信号等对信号延迟有高要求的点对点传输系统中,它可对多路信号进行单独的适当延时调整。造成信号的延迟原因有:不同的传输线路、信号处理时间不同以及器件速度存在差异等。无论何种原因,延时模块可以对输入的已存在有延时积累的信号进行不同精度、不同范围的延时量调节,使信号到达终端后相对延迟时间符合要求。由于利用了可编程器件FPGA和增强型单片机,延时模块不仅能较好地实现其功能,而且实现了系统的模块化和微型化,利于模块在系统中的使用和模块的二次开发。 系统结构及硬件设计 系统结构框图如图1。其硬件结构比较简单,主要由单片机P89C51RD、RS-232/TTL接口电路
[单片机]
利用单片机和<font color='red'>FPGA</font>实现系统中可延时调节模块的设计
DSP和FPGA在图像传输系统中的应用和实现
视频通信是目前计算机和通信领域的一个热点。而无线扩频与有线相比,有其固有的优越性,如联网方便、费用低廉等。所以开发无线扩频实时图像传输系统有很高的实用价值。   系统设计   在短距离通信中,通常可以在收发端加入奇偶校验、累加和校验等出错重发的防噪声措施。但以上措施都只能检错,不能纠错,也就是说传输过程中不能容错。在远距离、干扰大、出错概率非常高的情况下,单纯的出错重发措施会失去工作效率和意义。因此,需要一种能容错的数据传输方式,就要对数据编码。采用扩频技术,并选取具有优良自相关特性和互相关特性的高速伪随机码对待传信号带宽进行扩展,可增强系统的抗干扰能力。在对图像数据压缩后,采用QPSK扩频调制技术。   系统的DSP由主
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved