当前位置:首页 >> 信息与通信 >>

基于VHDL的UART IP核设计


基于VHDL的通用异步收发器(UART)IP核设计
‘位娜胡钛卞春江
(中国科学院空间科学与应用研究中心北京100080) 摘要: 本文介绍了使用FPGA实现uart的设计方法,将uart的核m功能集成到 FPGA上,涉及包含发送模块、接收模块,波特率发生嚣等主要部分设计.系统采 用VIiDL硬件描述语言实现,在Quartus软件开发环境下进行设计.综合和仿真

测 试. 关键词:
VHDL UART FPGA UART(universal asynchronous receiver transmitter),

即通用异步收发器,是一

种广泛应用的串行传输接口,允许在串行链路上进行全双工通信。串行外设接口一般采用 UART来实现,常用的芯片8250、8251速度较慢,而16550、16750满足了高速传输的要求, 却存在接口较多、使用复杂的缺点。这里我们将系统的基本功能用VHDL语言实现,集成到


FPGA中,使整个设计更加简单实用。



我们知道数据在设备内部往往是并行传送的,如果在两个设备之间也采用并行数据通 信,虽然传输速度会加快,但需要多条数据线并行传送。而基本的UART只需要两条线号线 就可以完成数据的全双工通信。只需要在两条信号线TXD、RXD之间制定一定的规则.使接 收、发送双方达成~致即可。图1为常见的UART连接通信图。

图1

UART连接通信图

其中TXD为UART的发送端,RXD为接收端,信号线上采用的是RS232的接口电平。

1.UART传输协议
基本的UART信号格式如图2所示。
图2

UART信号基本格式

发送器空闲时,数据线保持逻辑l状态。 起始位,start位,通过发送起始位表示开始一个字符的传送,起始位数据线处于逻辑 0状态,通知接收器开始数据传输。一般为1位。 数据位,do__d7位,在起始位之后,表示我们要传输的数据,一般为一个字:肖8位, 也可以是6、7位等的情况,。 校验位,用来检验接受的数据位有没有错误,通常是奇偶校验,不过在使用中该位通常
可以省略。

停止位,stop位,通常数据线是逻辑1的状态,表示~个字符传送完毕。可以是0.5 位、1位、还有1.5位等的情况。

2.UART系统功能
UART由丁是异步,不传送时间信号,而两个设备之间的时钟又不可能是同步的,这就
585

使其并行信号转化为串行信号和串行转为并行不只是简单的转化。发送部分将并行的数据按 照DART协议格式。转化为串行信号输出。串行信号的时钟可以采用本地时钟。接收部分将 接收到的串行数据转化为并行数据,但是考虑到收发设备之间时钟的不同步.这里就需要一 个远高于本地时钟波特率的时钟信号对输入的串行信号进行采样,使收发设备之间保持同 步,在本设计中采闱了16倍频的波特率时钟。整个UART设计分为波特率发生模块,接收模 块,发送模块和寄存器控制模块。
2.1波特率发生模块

波特率发生器实际上就是一个分频器,它的分频系数可以根据系统提供的时钟频率和我 们期望的传输波特率计算得出,波特率分频因子=时钟频率/(16.期望波特率)。假设系统 时钟频率为11.0592MHz,我们期望的波特率为9600bps,那么 波特率分频因子=11059200/(16.9600)=72 我们这里要产生的是波特率时钟频率的16倍,以满足在接收时的数据采样。
圈3为波特率发生模块仿真波形。

图3波特率发送生模块仿真波形
2.2发送模块

发送摸块相对比较简单,只需要每个波特率时钟发送一位,即16个bc]k周期输出一位。
并且按照基本UART数据格式发送。

这里用状态机实现,图4为发送状态机状态圈。

一一一—]‘Udl。



t_stop

、~7。

r———~~
“1::::芝“


,I、



叶,蝴一,一、



、l?。.

幽4发送状态机状态转移圈

可以看出,此处一共有5个状态:t—idle(空闲).t—start(起始何)
t—shift(移位),t—stop(等l}‘位)。


idle(空闲):系统复位历,状态机进入空闲态。发送器等待一个数据发送命令,当

该命令信号置1,状态机进入t—start起始停状态。

586

t_start(起始位):起始位状态下,发送器发送一个位时间宽度(即16个bclk时钟周 期)的逻辑0信号表示起始位,起始位发送完毕.状态机进入t_wait(等待)状态, t_wait(等待):在等待状态中。等待计满16个bclk时钟,发送1个数据位,同时判断 数据位长度是否达到预设的长度,如果没达到数据位长度进入移位状态,否则进入停止位状 态。 t_shift(移位):移位状态下,完成要发送数据的并串转换,然后立即回到t.wait状 态。 t—stop(停止位):当数据位发送完毕,状态机进入该状态,发送16个bclk时钟周期 的逻辑1状态,作为停止位。发送完停止位后状态机重新进入空闲状态。 图5为发送模块仿真波形图:
暑c根

日fDm
仰^T^[T】 盯盯^暗】 彻^TA[5】 时^了^[1】 仰^T^[3】 盯^I^伫】 仰盯^e1】

……一
1 厂1

9。。④固口互]《Ⅺ弼:;i


…一一—————W



『]



X!x



^ l

..j

r]
厂1 —-J




『l



。几厂——]广—]l
l{ J


n广1

L—
L一
I I

耶^n[Ol

剽烈蜀剽訇
2.3接收模块

牡芹—币一“




n n几


r]厂]


n厂]r]几n

圈5发送模块仿真波形图 由于数据和接收时钟是异步的,逻辑0认为是一个起始位,但是为了避免毛刺的影响, 找到正确的起始位信号,我们要求起始位至少有一半是逻辑0才能认定为起始位。接收器采 用bclk对信号进行采样,因为这里一个波特率时钟是bclk的16倍,所以要求至少有8个 连续的bclk周期的逻辑0接收后,才可以判断为开始位接收到。然后是数据位,每隔16 个bclk也就是1个波特率时钟采样一次,这样也可以保证接下来的数据都在中点处被采样。 图6是接收状态机的状态转换图。

587

//


md-syp’l,

图6接收状态机状态转移图 可以看出,接收状态机一共有5个状态:r
r_wai t(等待),r_sample(采样),r_stop(停止位)。

(等待状态位), 点中( trats_,)r center

r_start(等待起始位):接收器复位后处于等待状态,等待接收信号电平由逻辑l变为 逻辑0,即表示起始位到来,数据传输开始。起始位被确定以后状态机进入r


retnc_。态状

center(中点):对于异步串行信号,为了使每一次都检测到正确的信号,而且在以后

的检测中累计误差较少,一般采用在每一位的中点进行检测。由起始位得到每一位的中点, 通过对bclk进行计数,找到中点。由于r_start状态检测到的起始位可能是偶然出现的干 扰脉冲,这种干扰脉冲时间一般很短,这里我们采用计数超过8个bclk才认定为起始位, 否则状态机回到r_start状态。这样就很好的避免了将脉冲干扰误认为起始位的错误。 r_wai(等待):当状态机处于这一状态时,等待计满16个bclk进入采样状态对数据位 进行采样,同时判断采集的数据位是否到达长度。如果未达到数据位状态机继续处于等待、 采样状态,达到数据位长度后,状态机进入停止位状态。 r_sample(采样):数据位采样状态,采样完成后立即无条件转入等待状态,等待下一个
数据位到来。

r_stop(停止位):状态机不具体检测RXD信号,只是输出接收完毕信号,停止位后状态 机回到开始状态,等待下一个起始位到来。 图7接收模块仿真波形图:

588

∞争t

移2
£疹3 —d}t

日助盯^ .越啦^f7] .劬盯^船]
-助^了^【5]

n几n几nnn厂]n 粼∞L03
1I

nn几
x L43 x【

x口5】l[61

茁5
《多5

-彻盯^|t
-黜Ⅱ^D

l l

1 l I I


-盛7 o8
-盛}9

一暑Dm【2: .∞m【l:
一曲^n∞







I.......一

?盛L0



图7接收模块仿真波形酗 2.4寄存器控制模块 寄存器控制模块相对比较简单,主要是实现和CPU的信号接口,实现对RBR、THR等寄 存器的读写操作。

3.系统功能测试
设计中对每个模块都单独进行仿真测试,检查其功能和时序的正确性,然后进行顶层设 计,并写出测试平台,对其总体进行验证测试。

4.结论
乖j用VHDL语言实现的UART的IP核,包含了UART的基本功能,舍弃了常用芯片16550、 16750复杂的设计,例如modem控制等,使整个系统更加简单实用,设计更加紧凑。设计具 有~定的移植性,也可以容易的根据系统要求作出修改,能更好的满足系统设计的简单高速 的耍求。 参考文献 1.林敏.VHDL数字系统设计与高层次综合.北京:电子工业出版社,2002:全二}弓 2.李广军,孟宪元.可编程ASIC设计及应用.成都:屯子科技大学出版社,2001:全书 3.朱明程.Xilinx数字系统现场集成技术.南京:东南大学出版社,2001:全书
4.Stfan’oholm,Lennart Lindh.VHDL for

Designers.北京:清华大学出版社(Prentice

Hall),1997:全书
5.Lattcae Corporation.Lattice Technical Support Application_'ote AN8062.2001.http:

Ⅵw.fpga.corn,eli|freeiP



uart

all

lattice.Pdf

6。潘松,黄继业.Et)A技术实用教程[羽.北京:科学出版社。2002.10. 7.林客益.CPU/SOC及外同电路应用设计(基于FPGA/CPLD).[M].北京:北京航空航天大 学出版社,2004.

589


相关文章:
基于FPGA的ASIC设计
基于FPGA 的 ASIC 设计——232 ——232 接口功能 设计说明 一、 设计说明配合...只规定了 信号物理特性, 链路层的协议是 UART, RS232 接口的逻辑设计是指这...
基于VHDL的UART控制器设计
基于VHDL的UART控制器设计_电子/电路_工程科技_专业资料。基于VHDL的UART控制器设计...基于VHDL的UART IP核设计... 5页 1下载券 基于VHDL的UART IP设计与... 4...
基于FPGA的机器视觉的设计
基于FPGA 的机器视觉的设计一、引言:机器视觉通俗的来讲就是我们给机器加上视觉...在视觉处理过程中可以通过 UART 模块与外界进行通信,同时也方便设计的调试。 五...
基于IP核的乘法器设计
基于IP核的乘法器设计_信息与通信_工程科技_专业资料。基于 IP 核的乘法器设计...2. 用 IP 核生成一个 16 位的乘法器 multiplier1。 。 3. 用 VHDL 语言...
2013毕业设计题目
控制的设计与实现 15、 基于 FPGA 的 UART 借口设计 16、 单片机脉搏测量仪 17、 单片机汽车倒车测距仪 18、 单片机自行车测速系统设计 19、 基于 VHDL 的数字...
基于VHDL的uart设计
基于VHDL的UART IP核设计 5页 2财富值 基于VHDL的UART控制器设计 暂无评价 59...Uart 顶层文件 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_...
FPGA_IP核设计与应用综述
目前以硬件描述语言( Verilog 或 VHDL )所完成的电路设计,可以经过简单的 综合...IP 核重复利用具有可 以提高设计能力,节省设计劳力,有效填平8051和uart串口的...
FPGA关于IP核设计与应用-文献综述
FPGA关于IP核设计与应用-文献综述_计算机软件及应用_IT/计算机_专业资料。FPGA...本文用 VHDL 语言实现 uart 控制模块,控制 serial LCD 【11】 。 2、小结 ...
毕业论文:基于VHDL的UART设计
毕业论文:基于VHDL的UART设计_IT/计算机_专业资料。CTRL C,CTRL V来的东西今日推荐 四季养生 中医养生与保健 中医养生知识大全 女人养生之道78份文档 笑...
IP核实验设计报告
IP核实验设计报告_计算机软件及应用_IT/计算机_专业...设置器件类型,输出文件语言为 VHDL。 ④完成原理图...基于SOPC的IP核实验 125页 1下载券 8052单片机IP...
更多相关标签:
uart ip核 | altera中的uart ip核 | vhdl ip核元件例化 | vhdl uart | 硬ip核设计工具 | ip核设计 | 基于fpga的uart设计 | uart数据收发电路设计 |