>
首页 » 业界动态 » 基于ADSP-BF533和EPM7160实现的多路UART接口电路设计

基于ADSP-BF533和EPM7160实现的多路UART接口电路设计

作者:  时间:2008-12-09 22:19  来源:
摘要: 在介绍了ADSP- BF533处理器的基础上, 给出了基于ADSP- BF533和CPLD设计具有
多路UART接口的系统设计方法, 该方法克服了一个系统中的ADSP- BF533不能满足多个
UART接口的缺点。文章最后还给出了基于ModelSim的仿真波形。
关键词: 异步串口; 分频; ModelSim; 多路UART接口

0 引言
目前, 在数字信号处理技术中, DSP+CPLD
是控制接口设计中比较常用的方式。然而, ADSP-
BF533虽有异步串口, 但该芯片只有一个异步
串口, 当一个系统中出现多个UART接口时,
ADSP- BF533就显得无能为力了。为此, 本文采
用CPLD来实现多路UART接口的设计, 以满足
ADSP- BF533与多路UART接口的通信。
1 ADSP- BF533简介
ADSP- BF533处理器是Blackfin系列产品中的
一员。其最大工作频率可达600 MHz。Blackfin处
理器内核包含有2个16位乘法器、2个40位累加
器、2个40位ALU、4个视频ALU 和1个40位移位
器, 可处理来自寄存器组的8位、16位或32位数
据。
该处理器包含有丰富的外设, 可通过不同的
高速宽带总线与内核相连。该系统不但配置灵
活, 而且有极好的性能。通用外设包括UART、
带有PWM (脉冲宽度调制) 和脉冲测量能力的定
时器、通用I/O标志引脚、实时时钟和看门狗定
时器等。
该处理器有多个独立的DMA 控制器, 能够
以最小的处理器内核开销自动完成数据传输。
DMA传输可以发生在ADSP- BF533处理器的内部
存储器和任一有DMA 能力的外设之间。此外,
DMA 传输也可以在任一有DMA 能力的外设和已
连接到外部存储器接口的外部设备之间完成(包
括SDRAM控制器、异步存储器控制器)。有DMA
传输能力的外设包括SPORTs、SPI 端口、UART
和PPI 端口。每个独立的、有DMA 能力的外设至
少应有一个专用DMA 通道。
ADSP- BF533处理器有16个双向通用可编程I/
O引脚(PF15- 0)。每一个可编程引脚对标志控制
寄存器、标志状态寄存器和标志中断寄存器的编
程均可独立控制。标志方向控制寄存器可规定每
个独立的PFx引脚的方向, 并可用作输入或输出。
ADSP- BF533该处理器提供有1个全双工的通
用异步接收/发送(UART) 端口, 并与PC标准的
UART完全兼容。UART端口可为其它外设或主机
提供一个简化的UART 接口, 并可支持全双工、
有DMA 能力的异步串行数据传输。UART端口可
支持5~8个数据位、1或2个停止位以及无校验、
奇校验、偶校验位。UART端口的波特率、串行
数据格式、错误代码的产生和状态、中断等均可
编程设置。
2 ModelSim仿真工具
ModelSim为HDL仿真工具, 利用该软件可对
所设计的VHDL或Verilog程序进行仿真。Model-Sim
支持IEEE常见的各种硬件描述语言标准。
Modelsim仿真工具是Model公司开发的。它
可以支持Verilog、VHDL以及它们的混合仿真,
也可以将整个程序分步执行, 使设计者直接看到
自己程序的下一步要执行的语句, 而且在程序执
行的任何步骤、任何时刻, 都可以查看任意变量
的当前值, 也可以在Dataflow窗口查看某一单元
或模块输入输出的连续变化等情况, 因而比quartus
自带的仿真器功能强大的多, 是目前业界最通
用的仿真器之一。
3 异步串口原理
UART(Universal Asynchronous Receiver/Transmitter)
通用异步收发器是用于控制计算机与串行
设备的芯片。它提供有RS- 232C数据终端设备接
口, 因此, 可以通过计算机和调制解调器或其它
使用RS- 232C接口的串行设备进行通信。UART
内部结构原理如图1所示。图2所示是其系统总体
结构框图。图2中的总线控制逻辑主要用于完成
数据总线的方向控制。
UART发送模块中16位并行数据的高4位用来
控制是发向第几路的数据, 低八位则是要发给该
路异步串口的数据。发送模块中还有一部分用来
把并行低8位数据转化成串行8位数据, 然后再根
据并行数据的高4位判断发往哪一个异步串口。
UART接收模块中, 把接收到的8位串行数据
转化成并行数据送到总线控制逻辑, 然后通过中
断通知DSP来读取。
这样就实现了通过DSP的并行数据总线来控
制10路异步串口的收发数据。

4.2 接收模块的仿真波形
在EPM7128中编程检测输入串口数据的下降
沿, 并使能接收时钟, 然后即可开始接收数据。
接收数据时, 要把接到的第一位数据去掉, 然后
取第2~9位数据, 这样就把起始位去掉了, 从而
得到八位数据。接收模块的仿真波形如图4所示。
serial1_in~serial10_in是第一路到第十路串口
的接收端口, 它们的输入数据依次是1~10; clock
是系统时钟; reset 是系统复位, 高电平有效;
read_strobe是DSP的读信号; flag是通道选择, 用
1~10分别对应开通第1路到第10路串口通道, 图5
是第10路串口所接收的信号局部波形放大图;
data_o是并行数据输出; received8位串行数据接
收完毕后, 通过高电平向DSP发出的中断请求信
号, 以便DSP通过读信号read_strobe 读取数据;
rxclk_enable是接收串行数据时钟使能; rxclk是接
收串行数据时钟。


从图5的放大图可以看出, 在串口没有接收
数据时, data_o为高阻状态, txclk_enable是低电
平, 因而不使能, txclk没有接收时钟, received
是低电平, 没有置高; 而当开始接收数据时,
data_o是高阻态, txclk_enable为高电平使能, txclk
有接收时钟; 此后再当接收完数据时, received
为高电平并向DSP发送中断请求信号; 此
时, DSP响应中断, 并通过read_strobe置低来读
取数据, 从而使数据10出现在并行数据线上。
现在可以从serial10_in结合rxclk来分析接收
到的数据, 串行数据依次是0010100001, 因为第
一位0是起始位, 故数据从第二位算起的八位数
据是01010000, 又因数据是低位先发, 因此, 真
正的数据是00001010 (十进制数是10), 由图中可
以看到, data_o上输出的确实是10。
5 结束语
当一个系统中存在多个异步串行接口时, 基
于ADSP- BF533和CPLD设计的、具有多路UART
接口的系统, 可以方便的分别与多个异步串口进
行通信, 而且灵活性比较强, 成本也很低, 功能
也比较完善。目前, 该设计经实际板子验证, 结
果证明完全可行。

相关推荐

ADI沉痛缅怀首席执行官Jerry Fishman的突然离世

ADI  模拟  2013-04-02

ADI新数字模拟前端助力医疗影像领域

ADI  X 射线  ADAS  2012-12-11

ADI推出高速模数转换器简化FPGA应用设计

ADI  FPGA  2012-10-21

嵌入式视觉联盟会员已20家,并增加了白金会员

嵌入式视觉联盟  ADI  TI  2012-05-11

ADI 公司宣布收购 MULTIGIG

ADI  数据转换  2012-04-18

ADI公司表彰出色战略供应商

ADI  信号处理  2012-04-16
在线研讨会
焦点