基于PSoC3 UDB的曼徹斯特編碼及應(yīng)用
摘要:本文介紹使用Cypress的PSoC3 UDB實現(xiàn)曼徹斯特編碼,并基于該編碼與LED 恒流驅(qū)動芯片TLS3001通信實現(xiàn)對LED系列的控制。
關(guān)鍵字:PSoC3, UDB, 曼徹斯特編碼
1, 概述
在曼徹斯特(Manchester)編碼中,每個二進制位(碼元)的中間都有電壓跳變。用電壓的正跳變表示“0”,電壓的負(fù)跳變表示“1”。由于跳變都發(fā)生在每一個碼元的中間位置(半個周期),接收端就可以方便地利用它作為同步時鐘,因此這種曼徹斯特編碼又稱為自同步曼徹斯特編碼。如圖1所示。
圖1,曼徹斯特編碼與邏輯電平對應(yīng)關(guān)系
從圖1可以看出曼徹斯特編碼本身并不復(fù)雜,在有些應(yīng)用中可以采用單片機軟件編程實現(xiàn)編碼。但若應(yīng)用系統(tǒng)要求較高的數(shù)據(jù)傳輸速率,比如本文后面介紹的LED控制中要求數(shù)據(jù)傳送速率范圍在100KHz~2MHz時,用軟件實現(xiàn)曼徹斯特編碼可能達不到速率要求。本文將采用PSoC3 UDB實現(xiàn)曼徹斯特編碼,即用Datapath實際基本控制邏輯,用PLD實現(xiàn)狀態(tài)機,由于其采用硬件實現(xiàn)故能達到速率要求。
Cypress PSoC3使用基于單循環(huán)流水線的高性能8051內(nèi)核 (67MHz/33MIPS),提供業(yè)界廣泛采用的5.5V至0.5V電壓范圍和低至200nA的休眠電流,可以滿足極低功耗的應(yīng)用場合。PSoC3的高性能模擬子系統(tǒng)和數(shù)字系統(tǒng)都擁有可編程通路,允許將任何模擬或數(shù)字信號(包括可編程時鐘)分配到任何通用I/O引腳,這為使用者提供了真正的“系統(tǒng)級”可編程能力。
UDB(Universal Digital Blocks)是PSoC3可編程數(shù)字系統(tǒng)的核心功能,由PLD和Data path組成,可以創(chuàng)建各種通用外設(shè)和定制化功能。PSoC3的數(shù)字邏輯部分由多個UDB通過矩陣和可編程互聯(lián)組成,PSoC3、UDB和Datapath的關(guān)系如下圖2所示。
圖2,PSoC3、UDB和Datapath關(guān)系示意圖
2,曼徹斯特模塊設(shè)計
采用PSoC3的UDB 實現(xiàn)曼徹斯特編碼,就是用Datapath實現(xiàn)簡單的控制邏輯,在PLD中用Verilog語言描述曼徹斯特模塊功能的過程。在PSoC Creator中設(shè)計的曼徹斯特模塊如下所示:
該模塊只有一個時鐘輸入和一個曼徹斯特編碼輸出,要編碼的數(shù)據(jù)是通過Datapath的FIFO輸入的。Datapath的配置可采用Cypress提供的“Datapaht Configuation Tool”工具實現(xiàn),如圖3所示:
圖3,Datapath Configuration Tool
基于Datapath設(shè)計曼徹斯特模塊的步驟如下:
1),寄存器規(guī)劃
A0,用做移位寄存器
F0,用做暫存下一個數(shù)據(jù)的FIFO,當(dāng)A0為空時從F0中l(wèi)oad 數(shù)據(jù)到A0
2),狀態(tài)機
狀態(tài)機是曼徹斯特模塊功能的具體實現(xiàn),通過Verilog語言描述在PLD中運行,如圖4所示:
圖4,曼徹斯特模塊狀態(tài)機
數(shù)據(jù)的每一個位需要兩個時鐘來產(chǎn)生曼徹斯特編碼輸出,即Shift/NOP或者Load&Shift/NOP過程。當(dāng)沒有數(shù)據(jù)時,verilog語言描述為狀態(tài)機進入IDLE階段并輸出0。
由于從F0 下載數(shù)據(jù)到A0時一次只能下載1byte 數(shù)據(jù),為了保證曼徹斯特編碼頻率的一致性,在每個數(shù)據(jù)字節(jié)移位到最后1bit的同時從F0下載數(shù)據(jù)到A0,即Load&Shift階段。
3),動態(tài)配置區(qū)設(shè)置
Datapath的動態(tài)配置區(qū)功能如表一所示:
在Datapath Configuration Tool中的設(shè)置如表二所示:
表二,Datapath動態(tài)區(qū)配置
4),靜態(tài)配置區(qū)設(shè)置
靜態(tài)配置區(qū)設(shè)置比較簡單,將SHIFT SEL設(shè)置為SL從最高為開始左移;將F0 INSEL設(shè)置為BUS以表示F0作為輸入FIFO;將F0 ASYNC設(shè)置為ASYNC。其在Datapath Configuration Tool中的實現(xiàn)如圖5所示:
圖5,Datapath靜態(tài)區(qū)配置
3,基于曼徹斯特編碼的LED控制
這是一個基于PSoC3 UDB的應(yīng)用,采用前面介紹的曼徹斯特編碼模塊與三通道LED 恒流驅(qū)動芯片TLS3001通信以控制LED系列。系統(tǒng)應(yīng)用框圖如圖6所示,其中TLS3001_2與TLS3001_3和TLS3001_1一樣都接有LED燈的。
圖6,LED控制應(yīng)用框圖
TLS3001 是單線傳輸、三通道LED 恒流驅(qū)動芯片,內(nèi)置12 位灰階控制的PWM調(diào)制功能。3 個恒流輸出通道所輸出的電流值不受輸出端負(fù)載電壓影響,并提供恒定一致的輸出電流,用戶可以選擇不同的外接電阻來調(diào)整輸出電流,調(diào)整范圍從0 到30mA。內(nèi)置電壓調(diào)節(jié)器,使芯片正常工作在5~17V 的較寬電壓范圍內(nèi),輸出端口最大耐壓達到17V。
根據(jù)TLS3001芯片要求,在芯片上電后必須先發(fā)一次同步幀,以便芯片檢測通訊的波特率。同步幀的格式為:15’b111111111111111+4’b0001+11’b00000000000,在發(fā)送同步幀后必須延時一段時間再發(fā)送數(shù)據(jù)幀。在發(fā)送若干幀數(shù)據(jù)后,重新發(fā)送一次復(fù)位幀,等待1ms 之后,再發(fā)送一次同步幀, 以便芯片消除積累誤差, 復(fù)位幀格式為:15’b111111111111111+4’b0100d. 數(shù)據(jù)幀格式為:15’b111111111111111+4’b0010(數(shù)據(jù)頭)+ 第一個芯片39bit 數(shù)據(jù) + 第二個芯片39bit 數(shù)據(jù) + …… + 第n 個芯片39bit 數(shù)據(jù)。其數(shù)據(jù)時序如圖7所示:
圖7,LED控制時序
這樣,就使用前面定義的曼徹斯特模塊發(fā)送編碼流,以對LED燈的控制,控制軟件流程如圖8所示:
圖8,LED軟件控制流程
用示波器觀測編碼輸出管腳的波形,其時序完全能滿足TLS3001芯片的要求,如下圖9所示,其中通道2為時鐘輸出,通道1為Manchester編碼輸出。
圖9,Manchester編碼波形
4,結(jié)束語
本文主要介紹了PSoC3的UDB功能,并用UDB實現(xiàn)曼徹斯特編碼模塊的過程。由于其硬件實現(xiàn)的方式故可輸出很高的編碼頻率。
評論