基于PSoC3 UDB的曼徹斯特編碼及應用
摘要:本文介紹使用Cypress的PSoC3 UDB實現曼徹斯特編碼,并基于該編碼與LED 恒流驅動芯片TLS3001通信實現對LED系列的控制。
關鍵字:PSoC3, UDB, 曼徹斯特編碼
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實現曼徹斯特編碼模塊的過程。由于其硬件實現的方式故可輸出很高的編碼頻率。
評論