当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:提出了一种利用异步串行通信接口电路的FPGA实现方法,该方法运用双端口RAM乒乓操作、CRC枝验、状态机、组帧等操作描述了各个功能模块的FPGA设计,同时给出了该异步接口电路在集成开发软.件Xilinx ISE11. 1下的Modelsim仿真结果。结果证明,该异步串口通信设计可以简化电路并提高程序的灵活性和实用性,有利于程序在不同场合下的应用。

引言

随着FPGA在电子产品中的广泛应用,多片FP- GA芯片中的数据传输也应用的非常广泛。就传输数据而言,串口通信是通信系统和控制系统应用中较为广泛的一种。串口通信分为异步和同步两种方式。本文釆用RS 232异步通信协议来设计两片FPGA的之间的数据传输电路,同时,为了保证传输的准确性,还在数据的收发端加入了CRC校验。

1 专用异步串口通信接口电路设计

本设计的目的是实现两块基带板之间的数据传输,其通信电路的结构框图如图1所示。在每块基带板上均有一片Xilinx公司的XC4VSX55型FPGA芯片,两块基带板之间通过柔板相连接。为了节约两片FPGA相互通信的I/O 口,设计采用RS 232异步串行通信协议和RS 422接口电平,其传输速率为115 200 bps。异步串行通信协议是基于FPGA来实现的,并选用MAX3077作为RS 422电平转换芯片。两片FPGA的全局时钟GLOBAL _ CLK均由100 MHz的晶振产生。

专用异步串口通信电路的FPGA实现


       本设计将整个电路分为接收基带板与发送基带板两部分接口电路。其中接收基带板接口电路包括数据乒乓读取模块、数据组帧模块、
CRC编码模块、串口发送模块;而发送基带板接口电路则包括串口接 收模块、CRC校验模块。在接收基带板上,先将无线接收下来的数据进行乒乓存储与读取,再组成发送端 所需的帧结构,并在组帧的同时进行CRC编码,最后将组成帧的数据进行串行发送。在发送基带板上,也可通过串口接收数据,并进行CRC校验。当CRC校验通过后,可直接送给后级的数据调制模块进行数据 的调制与发送。

1.1  数据乒乓读取模块

本模块是前端程序与接口电路的隔离模块。前端基带解调模块先将接收到的基带数据按一定的速率写入RAM,接下来被组帧模块按一定的速率读出并送到串口发送模块发送。因此,两者有着各自的数据线、地址线和控制线。介于此,双端□RAM可以很好的满足要求,为了保证数据读取速率与读取的准 确性,将双端口 RAM设计成为乒乓模式,这样,读取RAM的速率就不受写入RAM速率的约束,只要检测到写满标志为1,就可以以较快的速率读取,而无需担心读空。设计时,可将双端口RAM的大小设置为2块128X8 b。

1.2  串口发送模块

串口发送模块的主要目的是将需要发送的数据按字节发送到FPGA芯片外的串口电平转换芯片MAX3077上,由其转换成差分RS 422电平后,再将数据送到柔板上进行传输。本接口电路采用的是异步传输方式。为了每个字节的同步需要,在每个发送字节前先发一个0比特作为字节同步。

该模块中主要有分频计数器、发送计数器和移位寄存器。分频计数器可将系统时钟分成所需的波特率,当分频计数器计到一个特定值(将该特定值设为 参数)时将釆样使能置1,其余时刻均保持0状态。当该模块的发送数据请求管脚收到一个高脉冲的时候,即可将需要发送的字节读取进来送入移位寄存器,同时按照采样使能的频率发送一个同步比特0, 然后比特输出计数器加1,当使能的下一个上升沿到来时,将移位寄存器中待发送数据的最高位发送出去,同时将移位寄存器循环右移一位,发送计数器加1,当发送计数器加到8时,表明一个字节已经发送完毕,此时将发送完毕的信号送一个高脉冲出去,并通 知前级可以再填入需要发送的字节数据。

1.3  CRC编码与校验模块

釆用CRC编码模块是因为其不仅能够加强传输过程中检测错误的能力,而且其实现电路比较简单。本项目中的CRC不仅能够检测收发基带板之间串口传输时出现的错误,而且能够检测基带发送板与接收发射信号的终端之间无线链路传输过程中出现的错误。

最基本的CRC校验码编码方法是用待发送的二进制数据M(工)除以生成多项式g(z),然后将最后的余数作为CRC校验码。从CRC的编码规则可以看出,CRC编码实际上是将待发送的"位二进制多项式M(Q转换成可以被g(x)除尽的儿+艮位二进制 多项式T(z),所以,解码时可以用接收到的数据去除g(x),如果余数为零,则表示传输过程没有错误,否则表示存在错误。

本项目中需要对124个字节进行校验,故釆用CRC16的编码方式,生成的多项式采用g(a:) = rclf,+刘'+ / + 1。由于CRC编码的过程本质上是一个循环移位的模2运算。故可设置一个2字节移位寄存器(CRC),在需要做CRC校验的每一帧数据到来前将该移位寄存器全部设置为1。需要校验的数据按字节送入该CRC校验模块,当数据到来时把数据的最高位和移位寄存器的最高位进行异或并作为反馈值,然后将其存入移位寄存器中的第0b位。移位寄存器的第5 b、15 b分别存储反馈值与移位寄存器的第4 b、第14 b的异或值,其余移位寄存器的每一位都存储低一位的值,然后参与校验的每一位数据在时钟的驱动下,再在移位寄存器中右移存储,移完一个 字节后,移位寄存器中的两个字节就是CRC的校验结果。在CRC的编码端将所需要进行CRC校验的数据依次送入该模块进行CRC编码,并将编码结果紧跟编码数据一起通过串口发送。在CRC的校验端,可将CRC编码端参与编码的数据以及收到的编码结果依次送入同一个CRC校验模块进行校验,如果校验结果为0,证明传输过程中没有错误,反之则表示传输存在错误,数据不能用。

1.4  组帧模块设计

本模块是基带接收板接口电路的核心模块,该模块控制数据乒乓读取模块、CRC编码模块以及串口发送模块。组帧模块所组的帧为每帧127 B的定长帧,该模块包含一个帧头和帧尾数据发送计数器、读RAM地址计数器、CRC编码数据发送计数器。当检测到数据存储乒乓RAM的一块写满信号为1时,即启动帧头帧尾发送计数器,将帧头EB91按字节送入串口发送模块,同时将EB91送入CRC编码模块编码。发送完EB91,可将读RAM的使能信号置高,以进入读RAM状态。如果读RAM的读地址计数器小于121,同时检测到串口发送模块字节发送完毕信号为1时,地址计数器加1,这样就可以不断将RAM 中的数据按字节送入串口发送模块,同时将从RAM 中读出的数据送入CRC编码模块编码。当读地址计数器加到121时,若检测到第121个字节发送完毕信号为1,则将读RAM的读使能信号拉低,同时将CRC的输出信号送入串口发送模块,当检测到串口发送模块发送完CRC编码的第二个字节发送完毕时,即可将状态跳回帧头帧尾发送状态,以将帧尾4E送入串口发送模块,同时将帧头帧尾数据发送计数器加1。当该字节发送完毕后,再将所有寄存器清零,同时将状态机置为初始状态。

1. 5  串口接收模块

串口接收模块可将基带接收板上发出的异步串行数据接收下来存在双口RAM中,在接收数据的同时将数据按字节送入CRC校验模块,再校验接收下来的帧是否为有效帧。通过CRC校验时则将数据整帧读走进行调制发送,否则丢弃。

为了能够准确地从串口线上接收数据,解决两个基带板上的全局时钟同频不同相的问题,避免釆样时钟采集到串行数据的跳变边沿,通常需要在数据的中 间进行采样,以保证采到的数据值是唯一的。

通过本模块分频计数器可将时钟分成传输波特率的八倍,并给出相应的采样使能,再用该采样使能去检测传输数据的边沿。因为每个字节前都加入了同步比特0,所以,当采样使能检测到下降沿时,立即起动一个采样计数器。当采样使能为1时,采样计数器加1。当釆样计数器计到3时,正好是同步0比特的中间,此时可将釆样计数器清零,此后,在没有接收 完一个字节时,采样计数器都是计到7再清零。而每次串行数据都是在采样计数器计到7时循环移入一个8 b移位寄存器。

这样,每次移入的串行数据都是在数据的中间采 样的,从而保证了数据传输的准确。此外,还需要设 置一个比特接收计数器对接收到的每比特数据进行 计数,每次采样计数器计到7时,比特接收计数器加1,当比特接收计数器加到7时,表示一个字节的数据 已经接收完毕,此时便可以将数据存到双端口 RAM中了。数据的存储过程也是采用乒乓存储的方式,这里不再赘述。

2 接口电路的仿真验证

将串口发送端口和串口接收端口连接在一起进行时序模拟仿真的仿真结果如图2所示。该仿真结果表明,本设计电路能够实现基带接收板双端口RAM中数据的乒乓读取,之后可再进行组帧、CRC 编码、串口发送接收、CRC校验及乒乓存储等功能。同时还可以将程序下载到FPGA中运行。此外,运行结果还表明,该电路工作稳定,而且具有较高的实用价值。

专用异步串口通信电路的FPGA实现

3 结语

本设计电路采用FPGA芯片较好的实现了两片FPGA中数据互相传输的问题,并可对所传输的数据 进行一定的数据处理,(如CRC校验以及数据组帧), 因而从一定程度上简化了两块基带板之间的数据传输问题。另外,由于FPGA的可编程特性及程序的可移植性,因此,采用参数化的程序设计,还可以对本设计电路进行功能扩展,以满足更高的要求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体

半导体产品老化是一个自然现象,在电子应用中,基于环境、自然等因素,半导体在经过一段时间连续工作之后,其功能会逐渐丧失,这被称为功能失效。半导体功能失效主要包括:腐蚀、载流子注入、电迁移等。其中,电迁移引发的失效机理最为突...

关键字: 半导体 电迁移 FPGA
关闭
关闭