完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 wangka 于 2011-9-5 16:41 编辑
1, 概述 在曼彻斯特(Manchester)编码中,每个二进制位(码元)的中间都有电压跳变。用电压的正跳变表示“0”,电压的负跳变表示“1”。由于跳变都发生在每一个码元的中间位置(半个周期),接收端就可以方便地利用它作为同步时钟,因此这种曼彻斯特编码又称为自同步曼彻斯特编码。如图1所示。 图1,曼彻斯特编码与逻辑电平对应关系 从图1可以看出曼彻斯特编码本身并不复杂,在有些应用中可以采用单片机软件编程实现编码。但若应用系统要求较高的数据传输速率,比如本文后面介绍的LED控制中要求数据传送速率范围在100KHz~2MHz时,用软件实现曼彻斯特编码可能达不到速率要求。本文将采用PSoC3 UDB实现曼彻斯特编码,即用Datapath实际基本控制逻辑,用PLD实现状态机,由于其采用硬件实现故能达到速率要求。 Cypress 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的配置可采用Cypress提供的“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实现曼彻斯特编码模块的过程。由于其硬件实现的方式故可输出很高的编码频率。 |
|
|
|
788 浏览 0 评论
4271 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2529 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2929 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31479 浏览 11 评论
72907 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:43 , Processed in 0.402717 second(s), Total 31, Slave 24 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号