新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PSoC3 UDB的曼彻斯特编码及应用

基于PSoC3 UDB的曼彻斯特编码及应用

作者:田江学 赛普锐思半导体主任应用工程师时间:2011-09-01来源:电子产品世界收藏

摘要:本文介绍使用 UDB实现,并基于该编码与LED 恒流驱动芯片TLS3001通信实现对LED系列的控制。
关键字:, UDB,

本文引用地址:http://www.eepw.com.cn/article/123138.htm

1, 概述
        在曼彻斯特(Manchester)编码中,每个二进制位(码元)的中间都有电压跳变。用电压的正跳变表示“0”,电压的负跳变表示“1”。由于跳变都发生在每一个码元的中间位置(半个周期),接收端就可以方便地利用它作为同步时钟,因此这种又称为自同步曼彻斯特编码。如图1所示。


 
                                        图1,曼彻斯特编码与逻辑电平对应关系

        从图1可以看出曼彻斯特编码本身并不复杂,在有些应用中可以采用单片机软件编程实现编码。但若应用系统要求较高的数据传输速率,比如本文后面介绍的LED控制中要求数据传送速率范围在100KHz~2MHz时,用软件实现曼彻斯特编码可能达不到速率要求。本文将采用 UDB实现曼彻斯特编码,即用Datapath实际基本控制逻辑,用PLD实现状态机,由于其采用硬件实现故能达到速率要求。

        PSoC3使用基于单循环流水线的高性能8051内核 (67MHz/33MIPS),提供业界广泛采用的5.5V至0.5V电压范围和低至200nA的休眠电流,可以满足极低功耗的应用场合。PSoC3的高性能模拟子系统和数字系统都拥有可编程通路,允许将任何模拟或数字信号(包括可编程时钟)分配到任何通用I/O引脚,这为使用者提供了真正的“系统级”可编程能力。

        UDB(Universal Digital Blocks)是PSoC3可编程数字系统的核心功能,由PLD和Data path组成,可以创建各种通用外设和定制化功能。PSoC3的数字逻辑部分由多个UDB通过矩阵和可编程互联组成,PSoC3、UDB和Datapath的关系如下图2所示。

 

                                              图2,PSoC3、UDB和Datapath关系示意图

2,曼彻斯特模块设计
        采用PSoC3的UDB 实现曼彻斯特编码,就是用Datapath实现简单的控制逻辑,在PLD中用Verilog语言描述曼彻斯特模块功能的过程。在PSoC Creator中设计的曼彻斯特模块如下所示:
        

         该模块只有一个时钟输入和一个曼彻斯特编码输出,要编码的数据是通过Datapath的FIFO输入的。Datapath的配置可采用提供的“Datapaht Configuation Tool”工具实现,如图3所示:

 

                                         图3,Datapath Configuration Tool

         基于Datapath设计曼彻斯特模块的步骤如下:
1),寄存器规划
        A0,用做移位寄存器
        F0,用做暂存下一个数据的FIFO,当A0为空时从F0中load 数据到A0
2),状态机
        状态机是曼彻斯特模块功能的具体实现,通过Verilog语言描述在PLD中运行,如图4所示:
 


                                            图4,曼彻斯特模块状态机

         数据的每一个位需要两个时钟来产生曼彻斯特编码输出,即Shift/NOP或者Load&Shift/NOP过程。当没有数据时,verilog语言描述为状态机进入IDLE阶段并输出0。

        由于从F0 下载数据到A0时一次只能下载1byte 数据,为了保证曼彻斯特编码频率的一致性,在每个数据字节移位到最后1bit的同时从F0下载数据到A0,即Load&Shift阶段。

3),动态配置区设置
        Datapath的动态配置区功能如表一所示:


        在Datapath Configuration Tool中的设置如表二所示:
        表二,Datapath动态区配置


4),静态配置区设置
        静态配置区设置比较简单,将SHIFT SEL设置为SL从最高为开始左移;将F0 INSEL设置为BUS以表示F0作为输入FIFO;将F0 ASYNC设置为ASYNC。其在Datapath Configuration Tool中的实现如图5所示:
 


                                                        图5,Datapath静态区配置

3,基于曼彻斯特编码的LED控制
        这是一个基于PSoC3 UDB的应用,采用前面介绍的曼彻斯特编码模块与三通道LED 恒流驱动芯片TLS3001通信以控制LED系列。系统应用框图如图6所示,其中TLS3001_2与TLS3001_3和TLS3001_1一样都接有LED灯的。


 
                                                           图6,LED控制应用框图

        TLS3001 是单线传输、三通道LED 恒流驱动芯片,内置12 位灰阶控制的PWM调制功能。3 个恒流输出通道所输出的电流值不受输出端负载电压影响,并提供恒定一致的输出电流,用户可以选择不同的外接电阻来调整输出电流,调整范围从0 到30mA。内置电压调节器,使芯片正常工作在5~17V 的较宽电压范围内,输出端口最大耐压达到17V。

        根据TLS3001芯片要求,在芯片上电后必须先发一次同步帧,以便芯片检测通讯的波特率。同步帧的格式为:15’b111111111111111+4’b0001+11’b00000000000,在发送同步帧后必须延时一段时间再发送数据帧。在发送若干帧数据后,重新发送一次复位帧,等待1ms 之后,再发送一次同步帧, 以便芯片消除积累误差, 复位帧格式为:15’b111111111111111+4’b0100d. 数据帧格式为:15’b111111111111111+4’b0010(数据头)+ 第一个芯片39bit 数据 + 第二个芯片39bit 数据 + …… + 第n 个芯片39bit 数据。其数据时序如图7所示:
 


                                                                 图7,LED控制时序

这样,就使用前面定义的曼彻斯特模块发送编码流,以对LED灯的控制,控制软件流程如图8所示:
 


         图8,LED软件控制流程

用示波器观测编码输出管脚的波形,其时序完全能满足TLS3001芯片的要求,如下图9所示,其中通道2为时钟输出,通道1为Manchester编码输出。


                                                             图9,Manchester编码波形

4,结束语
        本文主要介绍了PSoC3的UDB功能,并用UDB实现曼彻斯特编码模块的过程。由于其硬件实现的方式故可输出很高的编码频率。



评论


相关推荐

技术专区

关闭