国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的1553B總線曼徹斯特編解碼器設(shè)計與實

2018-06-19 00:54現(xiàn)潘亮司斌張從霞張鵬
航空兵器 2018年2期
關(guān)鍵詞:高電平電平校驗

現(xiàn)潘亮 司斌 張從霞 張鵬

摘要: 曼徹斯特碼作為一種數(shù)字編碼技術(shù), 具有自帶時鐘、 無直流分量等優(yōu)點, 在數(shù)字通信系統(tǒng)中具有廣泛的應(yīng)用。 本文在分析曼徹斯特編解碼原理和1553B總線協(xié)議以及收發(fā)器HI-1573工作時序的基礎(chǔ)上, 利用ISE14.7開發(fā)環(huán)境, 采用VHDL語言, 基于Xilinx公司Spartan6型FPGA實現(xiàn)通用型和可定制的曼徹斯特Ⅱ型編解碼器設(shè)計, 并通過ISE Simulator和XST進行時序仿真和綜合優(yōu)化, 仿真結(jié)果驗證了設(shè)計方案的邏輯功能。 最后搭建UART硬件測試平臺, 驗證了設(shè)計方案的硬件可實現(xiàn)性。

關(guān)鍵詞: 曼徹斯特碼; 編解碼原理; 1553B總線; VHDL; FPGA

中圖分類號: TJ760; TP336文獻標識碼: A文章編號: 1673-5048(2018)02-0083-06

0引言

曼徹斯特碼是一種傳統(tǒng)、 經(jīng)典的數(shù)據(jù)編碼技術(shù), 也叫相位編碼(Phase Encoding), 具有自帶時鐘的特性, 是一種同步時鐘編碼技術(shù), 能夠很好地解決數(shù)字通信系統(tǒng)中同步難題。 按照編碼原理及實現(xiàn)算法[1]的不同, 曼徹斯特碼可以分為三種: 曼徹斯特雙相電平碼、 曼徹斯特Ⅱ型雙相電平碼以及差分曼徹斯特雙相電平碼, 可簡稱為曼徹斯特Ⅰ型碼、 曼徹斯特Ⅱ型碼和差分曼徹斯特碼。 曼徹斯特碼是在NRZ碼(NonReturn to Zero, 非歸零碼)的基礎(chǔ)上發(fā)展起來, 采用具有無直流分量特性的編碼技術(shù), 在電信業(yè)、 工業(yè)現(xiàn)場控制、 車輛總線及石油勘測等領(lǐng)域具有廣泛的應(yīng)用。

MILSTD1553B是美國關(guān)于數(shù)據(jù)總線傳輸?shù)能姺綐藴省?總線協(xié)議規(guī)定, 采用曼徹斯特Ⅱ型碼作為1553B總線的數(shù)字編碼技術(shù)標準[2], 因此, 曼徹斯特編解碼器性能的好壞將直接影響1553B總線的通信質(zhì)量。

目前FPGA集成了豐富的可編程器件門電路和部分IP核, 具有精確的時序處理能力, 在高速信號處理中應(yīng)用廣泛。 1553B總線曼徹斯特編解碼器工作在兆赫茲以上, 對時序的要求比較高, 因此, 本文采用FPGA設(shè)計曼徹斯特編解碼器。 其設(shè)計輸入的硬件描述語言 VHDL于1987年被IEEE確認為國際標準, 具有設(shè)計的靈活性和器件定義的嚴謹性以及強大的行為級抽象描述能力, 在數(shù)字系統(tǒng)設(shè)計領(lǐng)域具有廣泛的應(yīng)用, 因此本文采用VHDL實現(xiàn)FPGA開發(fā)的設(shè)計輸入。

1曼徹斯特Ⅱ型碼

1.1曼徹斯特碼編碼原理

曼徹斯特碼是用脈沖序列來表示數(shù)據(jù)“1”和“0”, 而脈寬是碼元寬度的一半。 在曼徹斯特Ⅱ型碼中, NRZ碼元1對應(yīng)于脈沖電平由高電平跳變到低電平; NRZ碼元0對應(yīng)于脈沖電平由低電平跳變到高電平, 在傳輸碼元的中間時刻含有一個記錄時鐘信息的跳變, 因此說曼徹斯特碼具有自帶時

收稿日期: 2017-04-26

作者簡介: 潘亮(1987-), 男, 河南洛陽人, 碩士研究生, 研究方向是嵌入式航空電子設(shè)備總線和嵌入式系統(tǒng)開發(fā)。

引用格式: 潘亮, 司斌, 張從霞, 等. 基于FPGA的1553B總線曼徹斯特編解碼器設(shè)計與實現(xiàn)[ J]. 航空兵器, 2018( 2): 83-88.

Pan Liang, Si Bin, Zhang Congxia, et al. Design and Implementation of the 1553B Bus Manchester Code Based on FPGA[ J]. Aero Weaponry, 2018( 2): 83-88.( in Chinese)

鐘的特征。 曼徹斯特Ⅱ型碼的波形圖如圖1所示。

圖1曼徹斯特Ⅱ型碼波形及其編碼原理

Fig.1Waveform and coding principle of ManchesterⅡ code

從圖1的時序波形可以看出, 曼徹斯特Ⅱ型碼是將NRZ碼元與其編碼時鐘電平同或處理得到。 同或是指當兩輸入電平同為“1”或“0”時, 運算結(jié)果是邏輯1; 而輸入電平不相同時, 運算結(jié)果是邏輯0。 由其逆向運算可知, 曼徹斯特Ⅱ型碼的基本解碼算法是將得到的曼徹斯特碼與同步的編碼時鐘電平同或處理, 即可得到NRZ碼元。

1.2曼徹斯特編解碼器與1553B總線通訊

1553B總線規(guī)定[2], 協(xié)議字分為數(shù)據(jù)字、 命令字和狀態(tài)字, 其位長是20, 包括同步頭、 有效數(shù)據(jù)和奇校驗三部分[3], 如圖2所示。 其中, 同步頭波形占據(jù)3個位寬, 有效數(shù)據(jù)為16位, 最后1位是前16位數(shù)據(jù)的校驗碼(協(xié)議規(guī)定采用奇校驗)。 從圖中看出, 數(shù)據(jù)字的同步頭波形是先低后高, 而命令字和狀態(tài)字的同步頭是先高后低。

圖21553B總線規(guī)定的3種協(xié)議字組成

Fig.2Three protocol words specified in the 1553B bus

曼徹斯特編解碼器的功能是實現(xiàn)協(xié)議字和曼徹斯特碼之間的相互轉(zhuǎn)換。 曼徹斯特編碼器將1553B協(xié)議終端的待發(fā)送數(shù)據(jù), 經(jīng)過編碼后以曼徹斯特碼的形式正確地發(fā)送給1553B總線專用收發(fā)器[4]HI-1573。 曼徹斯特解碼器將對從收發(fā)器HI-1573接收到的數(shù)據(jù)進行解碼, 提取出1553B總線協(xié)議規(guī)定的同步頭和協(xié)議數(shù)據(jù), 然后發(fā)送給1553B協(xié)議終端[2-5], 同時對可檢測的錯誤進行必要的標記。

1.3曼徹斯特碼在1553B總線中的波形

根據(jù)曼徹斯特Ⅱ型碼的編碼原理以及1553B總線協(xié)議[2], 傳輸線上不跳變電平的碼元組合[6]有8種, 分別是“0000”, “1111”, “111”, “000”, “11”, “1”和“00”以及“0”。 1553B總線的位時鐘為1 MHz, 曼徹斯特Ⅱ型碼的一個碼元寬度是0.5 μs。 因此, 傳輸線上曼徹斯特Ⅱ型碼的電平脈寬為500 ns, 1 000 ns, 1 500 ns和2 000 ns。 其中脈寬1 500 ns出現(xiàn)在同步頭電平中, 而脈寬2 000 ns出現(xiàn)在隨后的數(shù)據(jù)位與同步頭電平相一致的同步頭電平中; 脈寬500 ns和1 000 ns出現(xiàn)在數(shù)據(jù)位電平中, 由正反向數(shù)據(jù)以及排列組合關(guān)系可知有8種組合。 同步頭和數(shù)據(jù)位的脈寬類型如圖3~4所示。

航空兵器2018年第2期潘亮, 等: 基于FPGA的1553B總線曼徹斯特編解碼器設(shè)計與實現(xiàn)圖3曼徹斯特Ⅱ型碼同步頭脈寬類型

Fig.3Pulse width types of synchronization head in

Manchester Ⅱ code

圖4曼徹斯特Ⅱ型碼數(shù)據(jù)位脈寬類型

Fig.4Pulse width types of data in Manchester Ⅱ code

2曼徹斯特編解碼器

曼徹斯特Ⅱ型編解碼器按功能可劃分為編碼時鐘、 編碼器控制器和解碼時鐘以及解碼器控制器。 不同的1553B協(xié)議終端, 如總線監(jiān)視器、 總線控制器、 總線終端, 其功能會有差別。 總線監(jiān)視器不具有總線數(shù)據(jù)發(fā)送功能, 但另三種協(xié)議終端發(fā)送或接收數(shù)據(jù)均可通過曼徹斯特編解碼器實現(xiàn), 因而具有一定的共性特征, 如編解碼器使能、 奇偶校驗、 同步頭和數(shù)據(jù)位等, 可據(jù)此進行通用化設(shè)計, 通用的編解碼器應(yīng)具有協(xié)議規(guī)定的字核實、 同步頭收發(fā)、 數(shù)據(jù)位收發(fā)等功能。

2.1編解碼時鐘的設(shè)計

1553B協(xié)議允許的時間誤差范圍為150 ns, 因此最壞情況下, 曼徹斯特Ⅱ型碼電平脈寬為500±150 ns, 1 000±150 ns, 1 500±150 ns和2 000±150 ns。 在采樣時鐘的選取中, 為了保證時鐘沿的一致性和提高抗干擾性, 采樣時鐘常取位時鐘的4, 8或10倍。 1553B協(xié)議規(guī)定, 數(shù)據(jù)傳輸?shù)谋忍芈适? Mbps。 因此, 若采樣時鐘為8 MHz時, 脈寬計數(shù)器的計數(shù)值范圍分別是2~5, 6~9, 10~13和14~17; 若選10 MHz, 脈寬計數(shù)器的取值分別是3~6, 8~11, 13~16和18~21; 若選16 MHz, 脈寬計數(shù)器的取值分別是5~10, 13~18, 21~26和29~34。 設(shè)計中若采用8 MHz的采樣時鐘, 計數(shù)器的計數(shù)誤差可能會導致解碼錯誤; 同時若采用更高倍如16 MHz的采樣時鐘, 雖然會降低計數(shù)誤差導致的解碼錯誤概率, 但由于計數(shù)器的計數(shù)范圍大, 會浪費一部分寄存器資源。 綜合各種因素, 采用10 MHz的編解碼時鐘。

2.2編碼器設(shè)計

根據(jù)曼徹斯特Ⅱ型碼的編碼原理, NRZ碼元1對應(yīng)于脈沖電平由高電平跳變到低電平, NRZ碼元0對應(yīng)于脈沖電平由低電平跳變到高電平。 因此每一位NRZ數(shù)據(jù)的上半脈沖沿與NRZ數(shù)據(jù)的電平相同, 而下半脈沖沿與NRZ數(shù)據(jù)的電平相反, 即取非運算, 因此, 可考慮將待發(fā)送數(shù)據(jù)轉(zhuǎn)化為脈沖數(shù)據(jù)的上半沿和下半沿。 這是設(shè)計曼徹斯特Ⅱ型碼編碼器的主體思想。

在設(shè)計編碼器時, 考慮到編碼器的通用性和可擴展性, 設(shè)計了消息幀長、 發(fā)送使能設(shè)置和FIFOs地址自增等功能, 同時分別實現(xiàn)同步頭、 數(shù)據(jù)位發(fā)送及校驗位的發(fā)送。 設(shè)計中采用2個16位串行移位寄存器分別實現(xiàn)正向數(shù)據(jù)和反向數(shù)據(jù)的串行發(fā)送。 基于以上考慮, 本文設(shè)計了有限狀態(tài)機實現(xiàn)時序邏輯的轉(zhuǎn)換。

編碼器的有限狀態(tài)機為IDLE, START, WAIT, SHIFT1, WAIT1, SHIFT2, WAIT2, CHECK和CHECK_WAIT以及STOP等10個狀態(tài), 其之間的狀態(tài)轉(zhuǎn)換如圖5所示。

各個狀態(tài)的功能如下:

(1) IDLE: 空閑態(tài), 系統(tǒng)初始化處于該空閑態(tài), 同時一個合法字發(fā)送完成以及一幀發(fā)送完成后, 都返回該態(tài); 當檢測到發(fā)送命令, 進入同步頭發(fā)送的START態(tài)。

(2) START: 開始態(tài), 根據(jù)發(fā)送字同步頭準備待發(fā)送同步頭數(shù)據(jù), 完成后自動進入WAIT態(tài)。

(3) WAIT: 等待同步頭發(fā)送態(tài), 設(shè)計一個6位的移位寄存器, 逐位發(fā)送同步頭; 當位計數(shù)到7時, 進入SHIFT1態(tài)。

圖5編碼器狀態(tài)機轉(zhuǎn)換圖

Fig.5Transition diagram of state machine in encoder

(4) SHIFT1: 移位有效字的脈沖上半沿態(tài), 設(shè)計一個16位的移位寄存器, 按照時序邏輯逐位移位, 準備脈沖上半沿; 完成后自動進入WAIT1。

(5) WAIT1: 等待脈沖上半沿發(fā)送態(tài), 按照時序邏輯發(fā)送有效字的脈沖上半沿, 并逐位判斷位計數(shù)是否到39。 若到了, 則進入CHECK態(tài); 若未到, 則進入SHIFT2態(tài)。

(6) SHIFT2: 移位有效字的脈沖下半沿態(tài), 設(shè)計一個16位的反相移位寄存器, 按照時序邏輯逐位移位, 準備脈沖下半沿; 完成后自動進入WAIT2。

(7) WAIT2: 等待脈沖下半沿發(fā)送態(tài), 按照時序邏輯發(fā)送有效字的脈沖下半沿, 并逐位判斷位計數(shù)是否到39。 若到了, 則進入CHECK態(tài); 若未到, 則進入SHIFT1態(tài), 即進行16位有效字的循環(huán)發(fā)送。

(8) CHECK: 校驗態(tài), 將SHIFT1態(tài)16位移位寄存器生成的奇校驗準備成奇校驗位的脈沖上下半沿, 完成后自動進入CHECK_WAIT態(tài)。

(9) CHECK_WAIT: 等待校驗發(fā)送, 逐位發(fā)送校驗的脈沖上下半沿, 并判斷校驗計數(shù)是否到1。 若等于1, 則進入STOP態(tài); 若沒有, 則進入CHECK態(tài)進行校驗發(fā)送。

(10) STOP: 停止態(tài), 初始化幾個位計數(shù), 有效字計數(shù)自加, 自動進入IDLE態(tài)。

2.3解碼器設(shè)計

解碼器的關(guān)鍵技術(shù)是實現(xiàn)同步頭的識別。 1553B協(xié)議規(guī)定, 同步頭位長為6, 時長為3 μs; 考慮到HI-1573專用收發(fā)器的工作機理[7](如圖6所示), 若先檢測到正向端高電平, 說明接收到命令字或狀態(tài)字的同步頭; 而先檢測到反向端高電平, 說明接收到數(shù)據(jù)字同步頭。 當采用10 MHz 的采樣時鐘進行脈寬檢測時, 對同步頭的采樣計數(shù)范圍是13~16或18~21, 數(shù)據(jù)位的采樣計數(shù)范圍是3~6或8~11。 這是解碼器設(shè)計主體思想。

圖6HI-1573輸出電平的特性

Fig.6Characteristics of the HI1573 output level

在設(shè)計解碼器時, 考慮到HI-1573數(shù)據(jù)電平抖動和延時現(xiàn)象, 設(shè)計采用接收端的正向或反向電平的上升沿終止前一個電平的采樣計數(shù), 即數(shù)字上實現(xiàn)了對HI-1573輸出數(shù)據(jù)電平的調(diào)理。 在此基礎(chǔ)上, 基于字核實功能, 設(shè)計了校驗錯誤檢查、 碼元錯誤檢查和字連續(xù)檢查等邏輯接口功能。 最后采用有限狀態(tài)機分層次實現(xiàn)時序邏輯的狀態(tài)轉(zhuǎn)換。

解碼器的狀態(tài)有IDLE, START1, START2, WAIT, SAMPLE1和SAMPLE2以及STOP等7個狀態(tài), 其之間的狀態(tài)轉(zhuǎn)換如圖7所示。

各個狀態(tài)的功能如下:

(1) IDLE: 空閑態(tài), 初始化后處于該空閑態(tài), 總線上沒有數(shù)據(jù)傳輸時默認處于該態(tài)。 當檢測到HI-1573正向數(shù)據(jù)的高電平時, 進入START1; 若檢測到HI-1573反向數(shù)據(jù)位的高電平時, 進入START2。

(2) START1: 啟動命令字或狀態(tài)字同步頭檢測, 判斷反向數(shù)據(jù)位。 若出現(xiàn)高電平, 采樣計數(shù)器停止, 并判讀計數(shù); 若計數(shù)是7或6, 則進入WAIT; 若計數(shù)是3或4, 則進入START2; 否則, 進入IDLE, 并置Manchester碼錯誤。

(3) START2: 啟動數(shù)據(jù)字同步頭檢測, 判斷正向數(shù)據(jù)位。 若出現(xiàn)高電平, 采樣計數(shù)器停止, 并判讀計數(shù); 若計數(shù)是7或6, 則進入WAIT; 若計數(shù)是3或4, 則進入START1; 否則, 進入IDLE, 并置Manchester碼錯誤。

圖7解碼器狀態(tài)機轉(zhuǎn)換圖

Fig.7Transition diagram of state machine in decoder

(4) WAIT: 同步頭配置態(tài), 將同步頭的6或7位數(shù)據(jù)位串行寫入寄存器, 并設(shè)置同步頭類型。 完成后, 判斷正反向數(shù)據(jù)位電平, 若正向出現(xiàn)高電平, 則進入SAMPLE1; 若反向出現(xiàn)高電平, 則進入SAMPLE2。

(5) SAMPLE1: 采樣正向數(shù)據(jù)高電平脈寬, 判斷反向數(shù)據(jù)位。 若出現(xiàn)高電平, 則采樣計數(shù)器停止, 并判讀位計數(shù)以及采樣計數(shù); 若位計數(shù)到40, 則進入STOP, 并從寄存器中按次序取出17位數(shù)據(jù)位寫入暫存寄存器, 其中前16位是有效數(shù)據(jù)位, 最后一位是其校驗結(jié)果; 反之位計數(shù)不到40, 此時若采樣計數(shù)是1或2, 則進入SAMPLE2, 同時將數(shù)據(jù)位串行寫入寄存器, 否則進入IDLE, 并置Manchester碼錯誤。

(6) SAMPLE2: 采樣反向數(shù)據(jù)高電平脈寬, 判斷正向數(shù)據(jù)位。 若出現(xiàn)高電平, 則采樣計數(shù)器停止, 并判讀位計數(shù)以及采樣計數(shù); 若位計數(shù)到40, 則進入STOP, 并從寄存器中按次序取出17位數(shù)據(jù)位寫入暫存寄存器, 其中前16位是有效數(shù)據(jù)位, 最后一位是其校驗結(jié)果; 反之位計數(shù)不到40, 此時若采樣計數(shù)是1或2, 則進入SAMPLE1, 同時將數(shù)據(jù)位串行寫入寄存器, 否則進入IDLE, 并置Manchester碼錯誤。

(7) STOP: 停止態(tài), 初始化各個計數(shù)器, 判斷16位有效數(shù)據(jù)位的奇校驗與第17位的校驗結(jié)果是否一致。 若一致, 則設(shè)置parity 和Manchester碼正確, 并將暫存寄存器的17位數(shù)據(jù)寫入輸出端口, 同時進入IDLE; 若不一致, 則設(shè)置parity 和Manchester碼錯誤, 并進入IDLE。

3仿真驗證及硬件綜合

3.1仿真驗證

為了驗證所設(shè)計編解碼功能模塊的正確性, 在ISE14.7軟件開發(fā)環(huán)境[8], 采用Xilinx仿真工具ISE Simulator進行了時序仿真。 編寫測試文件時, 考慮到協(xié)議字收發(fā)的連續(xù)性和便于仿真結(jié)果觀察, 設(shè)計了幀長為3的協(xié)議字收發(fā)測試文件。 編解碼器的仿真結(jié)果如圖8~9所示。

圖8編碼器發(fā)送3個連續(xù)協(xié)議字的仿真時序圖

Fig.8Simulation sequence diagram of three continuous

protocol words sent from encoder

圖8中, 方框表示同步頭正確發(fā)送。 從圖看出編碼器實現(xiàn)了協(xié)議字的無間隔連續(xù)發(fā)送。

圖9解碼器接收4個連續(xù)協(xié)議字的仿真時序

Fig.9Simulation sequence diagram of four continuous

protocol words accepted in decoder

圖9中, 方框表示一個協(xié)議字的解析完成, 包括校驗正確和碼元正確等處理, 橢圓框表示同步頭識別, 可以看出解碼器收到1個命令字同步頭和2個數(shù)據(jù)字同步頭。

3.2硬件綜合

為了驗證編解碼器具有硬件綜合能力, 在Spartan6系列XC6SLX9-2TGQ144上進行綜合優(yōu)化, 利用ISE14.7軟件自帶的綜合工具XST進行綜合, 綜合后編解碼器的RTL模塊結(jié)構(gòu)如圖10~11所示, 可以看出綜合后的RTL結(jié)構(gòu)符合設(shè)計的接口。

在此基礎(chǔ)上, 進行UART閉環(huán)硬件測試, 具體方案是上位機發(fā)送數(shù)據(jù)→下位機UART接收并處理→編碼器→解碼器→下位機處理數(shù)據(jù)并經(jīng)UART發(fā)送→上位機接收數(shù)據(jù), 并通過上位機串口調(diào)試助手查看收發(fā)結(jié)果。 整個硬件測試的結(jié)構(gòu)框圖如圖12所示, 串口助手收發(fā)結(jié)果如圖13所示。 從圖13可以看出數(shù)據(jù)收發(fā)一致, 說明編解碼器收發(fā)功能正確。

圖10編碼器RTL結(jié)構(gòu)圖

Fig.10RTL structure diagram of encoder

猜你喜歡
高電平電平校驗
使用Excel朗讀功能校驗工作表中的數(shù)據(jù)
電能表在線不停電校驗技術(shù)
三電平PWM整流器下的地鐵牽引供電系統(tǒng)探討
高電平MMC子模塊電容電壓控制策略研究
基于直流側(cè)電壓不均衡的CHB多電平逆變器SHEPWM控制技術(shù)
精通文件校驗的“門道”
多種方法快速校驗文件
數(shù)字電子技術(shù)的應(yīng)用
淺談物理電路與數(shù)字電路
關(guān)于Multisim10.0的高電平調(diào)幅電路仿真研究