电子发烧友网 > 可编程逻辑 > 正文

在FPGA芯片上使用VHDL语言实现UART模块的设计

2020年08月05日 17:45 次阅读

1 引言

数据采集系统中, 常需要进行异步串行数据传输,目前广泛使用的RS232异步串行接口,如8250、NS16450等专用集成芯片,虽然使用简单,却有占用电路体积、引脚连接复杂等缺点。SoC(System on Chip,片上系统)是ASIC设计中的新技术,是以嵌入式系统为核心,以IP 复用技术为基础,集软、硬件于一体的设计方法。使用IP复用技术,将UART集成到FPGA芯片上,可增加系统的可靠性,缩小PCB板体积;其次由于IP核的特点,使用IP核可使整个系统更加灵活,还可以根据需要进行功能的升级、扩充和裁减。

本文使用Verilog HDL语言编写UART模块,将其集成到FPGA芯片上,与芯片上的其它功能模块构成SoC片上系统。

2 UART模块设计与实现

UART串行数据格式如图1所示,串行数据包括8位数据(8 data bits)、1位起始位(start bit)、1位结束位(stop bit)、1位校验位(parity bit),共11位。

在FPGA芯片上使用VHDL语言实现UART模块的设计

UART模块结构如图2所示,左边发送锁存器、发送移位寄存器和逻辑控制组成发送模块(txmit),右边接收锁存器、接收移位寄存器和逻辑控制组成接收模块(rxcver)。发送模块和接收模块除了共用复位信号、时钟信号和并行数据线外,分别有各自的输入、输出和控制逻辑单元。

2.1 波特率时钟的控制

UART核包含一个可编程的波特率发生器,它给发送模块和接收模块提供发送数据和接收数据的基准时钟,波特率发生器产生的时钟mclkx16是串行数据波特率的16倍。它对系统时钟进n分频,计算公式为:mclkx16=系统时钟/波特率*16,针对不同波特率设定相应的数值就可以得到期望的内部波特率时钟。

2.2 发送模块设计

发送模块分为三种模式:空闲模式、载入数据模式、移位模式。当并行8位数据从总线写入发送模块后,发送模块将并行数据装入锁存器thr中,然后在移位寄存器tsr中将数据移位,产生完整的发送序列(包括起始位,数据位,奇偶校验位和停止位),以相应波特率从tx发送。发送模块的输入时钟mclkx16是串行数据波特率的16倍,模块内部将其16分频后得到波特率时钟txclk。

在发送时序图中我们看到输入数据为8’b00001111,校验位为奇校验,产生校验位为’1’。tx端依次输出起始位’0’,8位数据’00001111’,校验位’1’。tsr移位寄存器中数据依次右移,高位在前两次右移中补’1’,之后8次移位中高位补’0’。

下面是发送模块主要程序段,使用Verilog HDL语言编写。由于初始和移位程序比较简单,这里没有给出。

always @(posedge txclk or posedge reset)

if (reset)

idle_reset; //初始程序

else

begin

if (txdone && txdatardy)

load_data; //将数据装入tsr,并发送起始位

else

begin

shift_data; // tsr8位数据移位,并产生校验位

if (txdone )

tx 《= 1‘b1; // 输出停止位

else if (paritycycle)

tx 《= txparity; // 输出校验位

else

tx 《= tsr[0]; //输出数据位

end

end

2.3 接收模块设计

接收模块也分为三种模式:空闲模式、检测起始位模式、移位模式。首先捕捉起始位,

在mclkx16时钟下不断检测从rx端输入数据的起始位,当检测到起始位后,接收模块由空闲模式转换为移位模式,并且16分频mclkx16产生rxclk波特率时钟。此时rxclk时钟的上升沿位于串行数据每一位的中间,这样接下来的数据在每一位的中点采样,能有效滤除噪声影响。然后由rxclk控制在上升沿将数据位写入移位寄存器rsr的rsr[7]位,并且rsr右移1位,照此过程8位数据全部写入rsr,并且停止产生rxclk波特率时钟。判断奇偶校验、帧结构和溢出标志正确后,rsr寄存器中的数据写入rhr数据锁存寄存器中,最后由8位数据总线输出转换完成的数据。

rxclk时钟的产生依靠判断起始位,在起始位’0’的中点产生,并且在检测到结束位后停止,如图4所示。

接收移位程序段如下:

task shift_data;

begin

rsr 《= rsr 》》 1; // 寄存器右移一位

rsr[7] 《= rxparity; // 数据装入rsr[7]

rxparity 《= rxstop;

rxstop 《= rx;

paritygen 《= paritygen ^ rxstop; // 产生奇偶比较标志

end

endtask

由时序图可以看到一个完整的数据帧的接收过程,hunt和idle标志捕捉到起始位后,产生rxclk波特率时钟,串行数据在rsr中移位,rsr中数据右移高位补零。当起始位’0’移位到rsr[0]后,接收模块在下一个clk上升沿返回空闲状态,返回空闲状态后产生数据移位完成中断rxrdy,数据可从8位数据总线读出。

3 UART综合

程序经仿真验证后,须综合生成IP核并嵌入FPGA中。使用Xilinx公司的Xilinx ISE工具综合UART模块,FPGA选用Xilinx公司的Spartan-IIE xc2s50E,系统时钟40Mhz。经Xilinx ISE综合后,资源使用结果如下所示,表明使用少量FPGA的Slice和LUT单元就可生成UART核。

UART核可灵活分成接收和发送两部分,可根据需要选择使用,节省系统资源;一些控制标志字也可根据需要自行删减和扩充。最后将集成有UART核的FPGA数据采集系统与测试台进行异步串行通信实验,通信数据经检测表明使用UART核传输数据稳定可靠。

4 结束语

在数据采集系统中经常采用UART异步串行通信接口作为数据采集系统的短距离串行通信。相对于传统的UART芯片来说,集成在FPGA中的具有UART功能的IP核更有利于提高数据采集系统的可靠性和稳定性,缩小电路体积。本文设计的UART IP核通过仿真验证,经综合、编译、嵌入FPGA,成功应用于数据采集系统的端口通信中。

责任编辑:gt

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

写好状态机--从2019年全国FPGA竞赛谈Verilog编码技巧

理解Verilog编码技巧掌握FPGA中状态机的写法掌握非重叠序列检测代器Verilog代码编写
发烧友学院发表于 2020-04-21 00:00 20998次阅读
写好状态机--从2019年全国FPGA竞赛谈Verilog编码技巧

采用FPGA器件和高速模数转换器实现高精度信号卡...

在导弹型号的研制过程中,匹配装置是用于遥测系统中信号变换的关键部件,是弹上所有关键部件的信息送到遥测....
发表于 2020-08-05 18:00 0次阅读
采用FPGA器件和高速模数转换器实现高精度信号卡...

基于可编程逻辑器件实现Web服务器的应用设计

嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积....
发表于 2020-08-05 17:38 25次阅读
基于可编程逻辑器件实现Web服务器的应用设计

基于可编程逻辑器件实现多路数据采集系统的设计

对于国内而言,正如DSP在20年前出现的情形一样,如今,FPGA正处于数字信号处理技术的前沿。而DS....
发表于 2020-08-05 17:30 21次阅读
基于可编程逻辑器件实现多路数据采集系统的设计

基于EP1K30TC144-3芯片实现温控定时喷...

FPGA是新型的可编程逻辑器件,能够将大量的逻辑功能集成于单个器件中,它所提供的门数从几百门到上百万....
发表于 2020-08-05 17:17 19次阅读
基于EP1K30TC144-3芯片实现温控定时喷...

基于可编辑逻辑器件实现IEEE 802.11协议...

IEEE 802.11标准定义了能够统筹所有基于以太网的无线通信的协议。它是迄今为止最流行的无线局域....
发表于 2020-08-05 17:06 19次阅读
基于可编辑逻辑器件实现IEEE 802.11协议...

基于EP2S30 FPGA芯片实现MAC接收控制...

传统的测控网是将具有各种功能的仪器通过诸如VXI、CAN等专用总线连接起来构成一套完整的测控系统。现....
发表于 2020-08-05 17:00 19次阅读
基于EP2S30 FPGA芯片实现MAC接收控制...

采用现场可编程门阵列器件实现典型电路的设计方案

在科研和工程中,数据采集系统具有很广泛的应用,针对各类电压型传感器输出的信号伏值不同这种情况,本文提....
发表于 2020-08-05 16:55 28次阅读
采用现场可编程门阵列器件实现典型电路的设计方案

采用可编辑逻辑器件和VHDL语言实现波控系统设计...

相控阵是通过波控系统控制阵列天线各单元通道的相位、幅度以形成空间波束并控制其方位角和俯仰角。早期的波....
发表于 2020-08-05 16:43 19次阅读
采用可编辑逻辑器件和VHDL语言实现波控系统设计...

基于DDS和FPGA器件实现频率特性测试仪的设计

在电路测试中。常常需要测试频率特性。电路的频率特性体现了放大器的放大性能与输入信号频率之间的关系。频....
发表于 2020-08-05 15:01 35次阅读
基于DDS和FPGA器件实现频率特性测试仪的设计

基于EP1C6Q240C8的FPGA芯片实现对实...

利用FPGA开发振动模拟器研制开发费用低,不承担投片风险,通过开发工具在计算机上完成设计,电路设计周....
发表于 2020-08-05 14:29 38次阅读
基于EP1C6Q240C8的FPGA芯片实现对实...

fpga--矩阵键盘实现某些按键独特功能

矩阵键盘原来是按一下输出一个值,现在想把其中几个值改为一直按一直输出而不是一直按着只输出一个值 ...
发表于 2020-08-05 10:30 40次阅读
fpga--矩阵键盘实现某些按键独特功能

Stepper库接口是反的原因?

控制步进电机倒是没有问题,但是接口是反的。另外这个怎么停止啊……不知道指令。...
发表于 2020-08-05 07:53 0次阅读
Stepper库接口是反的原因?

FPGA如何获得外部输入信号?

你好, 我们想使用LCD引脚,在FPGA中获得外部输入信号。 我们在上阅读了讨论,我们使用vivado逻辑进行了一些...
发表于 2020-08-05 07:12 0次阅读
FPGA如何获得外部输入信号?

【每周FPGA案例】至简设计系列_串口回环工程

至简设计系列_串口回环工程 --作者:小黑同学 本文为明德扬原创及录用文章,转载请注明出处! 1.1 总体设计1.1.1 概...
发表于 2020-08-04 20:31 101次阅读
【每周FPGA案例】至简设计系列_串口回环工程

基于VHDL文本的时序逻辑电路设计

用VHDL文本设计触发器,触发器的类型可任选一种。给出程序设计、仿真分析、硬件测试及详细实验过程。
发表于 2020-08-04 17:38 82次阅读
基于VHDL文本的时序逻辑电路设计

基于FPGA器件实现UART适应自顶向下的设计

UART(通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。专....
发表于 2020-08-04 17:25 145次阅读
基于FPGA器件实现UART适应自顶向下的设计

电脑usb接口供电不足的解决办法

如果电脑中的主板不是好品牌的话,就很容易会出现前置usb接口供电不足的问题,只要用户把数据线接入前置....
发表于 2020-08-04 17:24 71次阅读
电脑usb接口供电不足的解决办法

智能电视主要接口介绍

HDMI接口,即高清多媒体接口。目前市面上的智能电视一般都至少有2个HDMI接口,电视盒子一般有1个....
发表于 2020-08-04 17:11 153次阅读
智能电视主要接口介绍

一文详谈FMC标准和FMC连接器的

FMC标准描述了一个通用的模块,它是以一定范围的应用,环境和市场为目标的。
发表于 2020-08-04 16:35 22次阅读
一文详谈FMC标准和FMC连接器的

基于DSP的RS232串口连接设计

此芯片缺陷是不能够一对多发送数据,只能一对一,倒也能满足我使用需求。
发表于 2020-08-04 15:41 151次阅读
基于DSP的RS232串口连接设计

关于工业级光电液位开关LLC200D3SH电气特...

当纯水液位过高过低会出现如下情况:当纯水箱液位高于HH以上时只发出警报,混床系统停止运行,其他设备不....
发表于 2020-08-04 11:53 25次阅读
关于工业级光电液位开关LLC200D3SH电气特...

基于EP1C6Q240C8的FPGA芯片实现电子...

本文采用的是ALTERA公司的EP1C6Q240C8型号的FPGA,整个体统采用模块化设计的思想,将....
发表于 2020-08-04 09:39 200次阅读
基于EP1C6Q240C8的FPGA芯片实现电子...

基于FPGA和单片机构成的电子加密系统的设计

FPGA/CPLD技术是近年来计算机与电子技术领域的又一场新的革命,为了保护知识产权,出现了各种层次....
发表于 2020-08-03 17:58 109次阅读
基于FPGA和单片机构成的电子加密系统的设计

FPGA器件EP1C3T100I7实现高速传输速...

近些年来,各种电路功能,包括模拟电路和数字电路,越来越多地用单片集成电路来实现。采用单片集成电路不仅....
发表于 2020-08-03 17:54 166次阅读
FPGA器件EP1C3T100I7实现高速传输速...

基于可编辑逻辑器件实现ADPLL的应用设计

随着数字电路技术的发展,特别FPGA技术的普遍应用,采用FPGA实现全数字锁相环(ADPLL)的应用....
发表于 2020-08-03 17:40 39次阅读
基于可编辑逻辑器件实现ADPLL的应用设计

高性能接口设计准则

高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。
发表于 2020-08-03 17:37 116次阅读
高性能接口设计准则

采用编程逻辑器件控制8个LED小灯电路的设计

演化硬件(EHW)是指能根据外部环境变化自动改变自身结构和功能的一类硬件,它把可编程逻辑器件的结构位....
发表于 2020-08-03 17:35 58次阅读
采用编程逻辑器件控制8个LED小灯电路的设计

基于FPGA器件实现AMI编码器和译码器的设计

实际的基带传输系统,含有丰富直流和低频成分的基带信号不适宜在信道中传输。而对具有易获取定时信息、无直....
发表于 2020-08-03 17:31 171次阅读
基于FPGA器件实现AMI编码器和译码器的设计

基于VHDL语言及SOPC技术实现全数字调频信号...

在常用的信号源及信号处理设计方案中,RC/LC振荡电路频率调整方便,但是它的工作频率稳定度较低。频率....
发表于 2020-08-03 17:19 68次阅读
基于VHDL语言及SOPC技术实现全数字调频信号...

采用EPM7064S芯片和TMS320F2812...

CCD驱动板完成CCD信号的驱动,产生CCD像元同步、帧同步信号和经过运放处理的视频信号,DSP电路....
发表于 2020-08-03 17:12 43次阅读
采用EPM7064S芯片和TMS320F2812...

采用SOPC技术和VHDL语言实现图像增强处理系...

图像增强最早起源于人类的空间探索计划。从卫星或飞船上获得的关于地球和太阳系中行星的图像因为多种原因而....
发表于 2020-08-03 17:07 29次阅读
采用SOPC技术和VHDL语言实现图像增强处理系...

基于FPGA XC3S400芯片和ARM相结合实...

在往复式压缩机状态在线监测系统中,由于压缩机结构复杂、零部件多、运动形式各不相同,发生的故障也就会多....
发表于 2020-08-03 17:01 66次阅读
基于FPGA XC3S400芯片和ARM相结合实...

基于EP1C6Q240C8芯片的FPGA开发板实...

本文使用了6输入1输出的BP神经网络结构,其隐含层选择了8个神经元。当传感器出现故障时,系统就根据传....
发表于 2020-08-03 16:53 31次阅读
基于EP1C6Q240C8芯片的FPGA开发板实...

紫光同创PGL22G开发平台试用---软件和器件

已经可以支持到DDR3的800M。内部频率150M---200M,可以很好的运行。硬件部分和国外的中....
发表于 2020-08-03 16:46 272次阅读
紫光同创PGL22G开发平台试用---软件和器件

Vitis AI:从边缘到云的最佳人工智能推断

有了世界领先的模型压缩技术,我们可以在对精度影响极小的情况下,将模型的复杂性降低 5 至 50 倍。....
发表于 2020-08-03 16:40 154次阅读
Vitis AI:从边缘到云的最佳人工智能推断

提高MRAM的整体产量和需求,来降低MRAM存储...

Everspin在磁存储器设计,制造和交付到相关应用中的知识和经验在半导体行业中是独一无二的。Eve....
发表于 2020-08-03 16:26 91次阅读
提高MRAM的整体产量和需求,来降低MRAM存储...

采用复杂控制逻辑器件和VHDL语言实现曼彻斯特编...

虽然计算机通信的方法和手段多种多样,但都必须依靠数据通信技术。数据通信就是将数据信号加到数据传输信道....
发表于 2020-08-03 15:53 64次阅读
采用复杂控制逻辑器件和VHDL语言实现曼彻斯特编...

请问zynq 怎么实现PS与PL数据交互,然后通过UART串口打印出来?

请问zynq 怎么实现PS与PL数据交互,然后通过UART串口打印出来?   前辈们做过的指导我一下。 ...
发表于 2020-08-03 15:53 134次阅读
请问zynq 怎么实现PS与PL数据交互,然后通过UART串口打印出来?

牛人牛语-FPGA

发表于 2020-08-02 17:56 0次阅读
牛人牛语-FPGA

VHDL语言100例详解(含代码)

发表于 2020-08-01 14:57 202次阅读
VHDL语言100例详解(含代码)

连接器效能在那些方面受到了环境的影响

连接器在应用的过程中会面临各种各样不同的环境。同一型号的连接器如果应用环境不同,那么所发挥的技术性能....
发表于 2020-08-01 11:44 247次阅读
连接器效能在那些方面受到了环境的影响

奈奎斯特升余弦数字滤波器的工作原理和采用FPGA...

随着信息需求量的增大,网络都逐渐朝着综合化、宽带化方向发展。数据速率的提高,对于数字信号处理的速度和....
发表于 2020-07-31 18:04 71次阅读
奈奎斯特升余弦数字滤波器的工作原理和采用FPGA...

基于MAX7000S系列的FPGA芯片解决基带传...

现场可编程门阵列FPGA是一种由用户实现芯片功能的器件,用户在设计完成之后可以进行功能仿真,也可以现....
发表于 2020-07-31 17:55 75次阅读
基于MAX7000S系列的FPGA芯片解决基带传...

数字Σ-Δ调制器的基本原理及采用FPGA器件实现...

Σ-Δ调制在数字信号处理以及通信系统方面的应用正越来越引起大家的重视,因为Σ-Δ调制实现时主要采用数....
发表于 2020-07-31 17:52 91次阅读
数字Σ-Δ调制器的基本原理及采用FPGA器件实现...

基于GPS中频信号源的FPGA设计实现方案

在GPS接收机的设计中,为了检验和完善信号处理算法,需要在本地获得GPS数字中频信号数据。采用真实的....
发表于 2020-07-31 17:37 177次阅读
基于GPS中频信号源的FPGA设计实现方案

采用FPGA器件实现滤波器的设计和验证方法

光电脉冲编码器是一种集光、机、电为一体的用于检测机械位移或间接检测速度的光电传感器,根据其用于检测角....
发表于 2020-07-31 17:31 71次阅读
采用FPGA器件实现滤波器的设计和验证方法

Han® 1A 矩形连接器:可做新的以太网接口

基于以太网的网络已成为工业领域必不可或缺的一部分。以太网连接着传感器、机械、控制系统、计算机和数据中....
发表于 2020-07-31 17:16 101次阅读
Han® 1A 矩形连接器:可做新的以太网接口

使用CPLD器件和VHDL语言实现USB收发模块...

当前,高密度可编程逻辑器件CPLD,由于具有巨大的灵活性而广泛应用于状态机、同步、译码、解码、计数、....
发表于 2020-07-31 17:10 43次阅读
使用CPLD器件和VHDL语言实现USB收发模块...

基于FPGA技术和CVSD编解码算法实现语音编解...

64 Kbit/s的A律或μ律的对数压扩PCM编码在大容量的光纤通信系统和数字微波系统中已得到广泛应....
发表于 2020-07-31 16:12 76次阅读
基于FPGA技术和CVSD编解码算法实现语音编解...

采用CH375的USB接口芯片实现机车智能测温系...

本文来源于一机车智能测温项目(功能模块如图1所示)。在列车或其他重要电工场合,重要部件的温度变化是极....
发表于 2020-07-31 14:40 86次阅读
采用CH375的USB接口芯片实现机车智能测温系...

【MYMINIEYE Runber蜂鸟开发版免费试用连载】安装软件和申请license

1、高云的软件还是比较完善的,可以从官网下载http://www.gowinsemi.com.cn/faq.aspx 2、但是下载完还是需要申请...
发表于 2020-07-30 16:35 606次阅读
【MYMINIEYE Runber蜂鸟开发版免费试用连载】安装软件和申请license

可以直接将FPGA和那部分连接在一起吗?

嗨专家, 我有一个使用XC7K325T-2FFG900C的新设计,HP组的IO标准是LVDS18(1.8V LVDS),该组将...
发表于 2020-07-30 16:25 0次阅读
可以直接将FPGA和那部分连接在一起吗?

上电期间的FPGA I / O引脚是否应该处于三态?

大家好, 我目前正在研究基于thetrix xc7a35tfgg484-1的设计。 电源是: VCCINT - 1.0V VCCBRAM - ...
发表于 2020-07-30 09:51 0次阅读
上电期间的FPGA I / O引脚是否应该处于三态?