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