用CPLD控制曼徹斯特編解碼器
引 言
在油田測井中,井下儀在井下采集大量信息,并傳送給地面測井系統;但井下儀到地面這段信道的傳輸性能并不好,常用的NRZ碼不適合在這樣的信道里傳輸,而且NRZ碼含有豐富的直流分量,容易引起滾筒的磁化,因而選用了另外一種編碼 ――曼徹斯特碼。曼徹斯特編碼是串行數據傳輸的一種重要的編碼方式。和最常用的NRZ碼相比,曼徹斯特碼具有很多優(yōu)點(diǎn)。例如,消除了NRZ碼的直流成分,具有時(shí)鐘恢復和更好的抗干擾性能,這使它更適合于信道傳輸。
但曼徹斯特碼的時(shí)序比較復雜,實(shí)現編解碼器和單片機的接口需要添加大量的邏輯電路,給電路設計和調試帶來(lái)很多困難。使用CPLD可大大簡(jiǎn)化這一過(guò)程。CPLD(Complex Programmable Logic Devices)具有用戶(hù)可編程、時(shí)序可預測、速度高和容易使用等優(yōu)點(diǎn),這幾年得到了飛速發(fā)展和廣泛應用。上至高性能CPU,下至簡(jiǎn)單的74電路,都可以用CPLD來(lái)實(shí)現。而且CPLD的可編程性,使修改和產(chǎn)品升級變得十分方便。用戶(hù)可以根據原理圖或硬件描述語(yǔ)言自由地設計一個(gè)數字系統,然后通過(guò)軟件仿真,事先驗證設計的正確性。PCB完成以后,還可以利用PLD的在線(xiàn)修改能力,隨時(shí)修改設計而不必改動(dòng)硬件電路,從而大大縮短了設計和調試時(shí)間,減少了PCB面積,提高了系統的可靠性。
1 選用器件和開(kāi)發(fā)軟件
1.1 選用器件
?。?)XC95144
Xilinx公司的XC9500系列產(chǎn)品具有業(yè)界領(lǐng)先的速度,同時(shí),具有增強引腳鎖定結構和支持全面的IEEE Std. 1149.1 JTAG邊界掃描,向用戶(hù)提供了更高的靈活性。XC9500體系由多個(gè)同一功能塊組成,每個(gè)功能塊內含18個(gè)宏單元,引腳到引腳速度最快支持到5 ns;支持125 MHz時(shí)鐘速率,I/O口接口電平5 V、3.3 V或兩者皆可。其中XC95144內部有144個(gè)宏單元。
?。?)HD-6408和HD-6409
HD-6408和HD-6409是Intersil公司的產(chǎn)品,兩者均是曼徹斯特編解碼器。
HD-6408編碼器轉換串行NRZ數據(通常來(lái)自移位寄存器)為曼徹斯特編碼,增加一個(gè)同步頭和一個(gè)奇偶位。解碼器識別這個(gè)同步頭,并判斷出這是數據同步,還是命令同步,數據解碼后移出NRZ碼(通常送到移位寄存器中)。最后檢查奇偶校驗位。如果沒(méi)有編碼或奇偶校驗方面的錯誤,解碼器將輸出一個(gè)有效信號,表明接收到一個(gè)有效的字。解碼器能夠向輸入的曼徹斯特碼字以很高的速率提供時(shí)鐘恢復和優(yōu)異的抗干擾能力。HD-6408使用在很多商業(yè)應用場(chǎng)合,例如安全系統、環(huán)境控制系統及串行數據鏈等。它的數據傳輸速率高達1 Mb/s,開(kāi)銷(xiāo)很小,20位中有16位可用來(lái)傳輸數據。
HD-6409曼徹斯特編解碼器使用原理與HD-6408略有差別,但基本相似。
1.2 使用軟件
CPLD編程軟件選擇Xilinx Foundation 3.1i。該軟件界面友好,功能強大,提供了開(kāi)發(fā)CPLD所需的整個(gè)流程,包括:編輯、綜合、實(shí)現、仿真及 下載等。該軟件可人工指定引腳,編譯各個(gè)子模塊文件,并提供了兩種仿真:功能仿真和時(shí)序仿真。其中時(shí)序仿真對時(shí)序提出了要求,是更嚴格的仿真。
2 曼碼控制系統設計
2.1 系統說(shuō)明
系統中,HD-6408以T2模式(20.8 Kb/s)從地面接收數據,HD-6409以T5模式 ( 93.75 Kb/s)向地面發(fā)送數據。
接收時(shí),HD-6408接收外部傳來(lái)的曼碼數據,轉換成NRZ碼在CPLD里進(jìn)行串并轉換,轉換完成后產(chǎn)生接收中斷,通知單片機取數據;發(fā)送時(shí),單片機送給CPLD數據,進(jìn)行并串轉換,移位輸出到HD-6409的輸入端,由HD-6409編碼發(fā)送出去。接收地址和發(fā)送地址均由CPLD解碼產(chǎn)生。HD-6408和HD-6409所需的外部時(shí)鐘源,通過(guò)CPLD對外部晶振分頻得到。
2.2 CPLD內部功能設計
2.2.1 系統總體框圖
設計CPLD內部電路時(shí),采用了模塊化設計方法,內含5個(gè)模塊:16位串并轉換器、16位并串轉換器、分頻器、解碼器及控制器。系統頂層邏輯框圖如圖1所示。
以上模塊均采用VHDL語(yǔ)言描述??刂破魇呛诵牟糠?,實(shí)現對HD-6408接收和HD-6409發(fā)送的時(shí)序控制。
2.2.2 HD-6408解碼時(shí)序
HD-6408的接收時(shí)序如圖2所示。
?。?)引腳定義
VW:輸出字有效信號。
DSC:解碼移位時(shí)鐘。
TD:接收數據信號。
SDO:串行數據輸出。
BZI、BOI:雙極性數據輸入。
?。?)解碼時(shí)序過(guò)程
解碼器一直監視數據輸入線(xiàn),當接收到有效的同步頭和兩個(gè)有效的曼徹斯特碼數據位后,便開(kāi)始輸出。當同步頭被識別后,CDS引腳輸出同步的類(lèi)型:如果接收的是命令,便輸出高并保持16個(gè)DSC周期;如果接收的是數據,就繼續保持低電平。TD變高,并在SDO輸出NRZ數據期間一直為高。SDO輸出一個(gè)字后,開(kāi)始檢驗奇偶位。如果曼徹斯特碼和奇偶位都正確,VW信號輸出高,此時(shí)解碼器開(kāi)始尋找新的同步頭,開(kāi)始下一個(gè)接收周期。接收到新的有效的同步頭和兩個(gè)曼徹斯特碼位后,VW信號被復位;否則,在持續大約20個(gè)DSC周期后,VW信號變低。
2.2.3 HD-6409發(fā)送時(shí)序
HD-6409發(fā)送時(shí)序如圖3所示?! ?/P>
(1)引腳定義
SD/CDS:串行NRZ碼數據輸入。
CTS:清除準備發(fā)送信號。
ECLK:編碼時(shí)鐘。
BZO、BOO:曼徹斯特編碼數據輸出。
(2)編碼時(shí)序過(guò)程
CTS信號高無(wú)效,低有效。在CTS信號的下降沿,引腳BZO和BOO開(kāi)始發(fā)送同步序列(8個(gè)曼碼“0”組成)。同步序列后就是命令同步脈沖(由1.5位高電平和1.5位低電平組成)。在輸出命令同步脈沖時(shí),NRZ數據在ECLK的下降沿通過(guò)SD/CDS引腳輸入,這些數據編碼后在命令同步序列后持續輸出。這些碼字沒(méi)有奇偶校驗和字結構。編碼數據塊的長(cháng)度由CTS決定。
2.2.4 VHDL源程序
控制器的VHDL源文件如下(程序較長(cháng),附核心部分):
process (controlcs)
begin
if(controlcs 'vent and controlcs= '1') then
control_data = databus;
end if;
end process;
ee08 = reset and control_data(0);
lclk595 = not td08;
sclk595 =td08 and dsc08;
lclk597 =control_data(3) and qq_out;
sclk597 = (not(esc08 and sd08)) and (not eclk09);
tdd08 = not(td08);
cdss08 =not(cds08);
cts09 = control_data(1);
load =(ee_bit or (not(control_data(1))))and qq_out;
dr08 = control_data(2);
ss08 =control_data(4);
mr08 = control_data(5);
信號說(shuō)明如下:
control_data――8位控制寄存器;
controlcs――控制寄存器片選信號,低有效;
mr08――hd-6408的主復位信號,高有效;
dr08――hd-6408的編碼器復位信號,高有效;
ee08――hd-6408的使能信號,高有效;
ss08――編碼同步頭選擇;
cts09――hd-6409的使能信號,低有效;
lclk595――串并轉換器的載入數據信號;
sclk595――串并轉換器的時(shí)鐘信號;
lclk597――并串轉換器的載入數據信號;
sclk597――并串轉換器的時(shí)鐘信號;
load――16位計數器載入初值信號;
qq_out――16位邊界指示器;
tdd08――觸發(fā)中斷信號。
3 仿真與實(shí)現
本系統采用Xilinx公司生產(chǎn)的XC95144芯片,使用Xilinx Foudation 3.1i軟件進(jìn)行開(kāi)發(fā)。所用VHDL程序通過(guò)時(shí)序仿真和下載后,觀(guān)察波形并進(jìn)行實(shí)際驗證,可以正確地接收和發(fā)送曼徹斯特碼,符合設計要求。
4 結 論
本系統時(shí)序配合嚴格,運行可靠,易于修改;可以根據需要,靈活地加入各種各樣的使用曼徹斯特碼通信的系統中。
評論