逯玉宏,魏國(guó)慶,冉明昊
(重慶金美通信有限責(zé)任公司, 重慶400030)
邏輯分析儀是基于時(shí)鐘捕獲的用于測(cè)量數(shù)字電路中邏輯關(guān)系及邏輯波形的重要檢測(cè)儀器,主要包含數(shù)據(jù)采集、存儲(chǔ)和顯示等部分。隨著數(shù)字技術(shù)的高速發(fā)展,邏輯分析儀作為重要的檢測(cè)儀器具有良好的發(fā)展前景和廣泛的應(yīng)用范圍,在電子研發(fā)、工業(yè)控制、科研教學(xué)等領(lǐng)域發(fā)揮著重要的作用。目前,邏輯分析儀主要有獨(dú)立式和虛擬式兩大類別,前者功能強(qiáng)大但價(jià)格昂貴,而虛擬式成本較低、應(yīng)用廣泛,可在基于WEB 的儀器、便攜式儀器、PC 等不同設(shè)備上運(yùn)行[1-2]。
基于以上情況,研究設(shè)計(jì)了一種基于FPGA 并結(jié)合單片機(jī)的簡(jiǎn)易虛擬邏輯分析儀,通過(guò)實(shí)際測(cè)試能夠?qū)崿F(xiàn)常規(guī)邏輯分析儀的通用功能,能較好地滿足電子工程應(yīng)用和科研需求,具有良好的實(shí)用性。
從系統(tǒng)設(shè)計(jì)的總體方案的介紹入手,對(duì)軟件設(shè)計(jì)做詳細(xì)說(shuō)明,最終得出可行性結(jié)論分析。
本系統(tǒng)設(shè)計(jì)的基本框架,包括XILINX 公司的SC3S1500 型號(hào)FPGA、SRAM 芯片CY7C1041 以及Silicon 公司的C8051F120 型單片機(jī)等硬件資源。系統(tǒng)整體結(jié)構(gòu)如圖1 所示。其中,F(xiàn)PGA 外接一個(gè)SRAM 存儲(chǔ)器;C8051F120 單片機(jī)采用EMIO 總線復(fù)用的方式連接FPGA;0x0000~0x2000 地址段用于訪問(wèn)內(nèi)部存貯器,0x2000~0x2020 地址段用于控制和存貯數(shù)據(jù)讀取,實(shí)現(xiàn)1~16 通道數(shù)據(jù)采集和存儲(chǔ)功能;單片機(jī)的輸出主時(shí)鐘作為FPGA 時(shí)鐘,與此同時(shí),單片機(jī)的串口0 通過(guò)max-232 電平轉(zhuǎn)換后被連接到PC 機(jī),并通過(guò)串口助手或者由VC 編寫(xiě)的分析工具,在PC 機(jī)上完成數(shù)據(jù)的邏輯分析和波形顯示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
FPGA 程序采用VHDL 語(yǔ)言編寫(xiě), 使用Xilinx ISE 14.4 編譯,由總線接口(EMI0)、數(shù)據(jù)采集(LOGIC)、時(shí)鐘(TIME)、存儲(chǔ)器接口(RAM)等模塊[3-4]構(gòu)成。
總線接口模塊負(fù)責(zé)控制指令和邏輯數(shù)據(jù)的傳輸。模塊接收到C8051F120 的指令后,控制時(shí)鐘分頻比,采集數(shù)據(jù)寬度與時(shí)刻寬度,捕捉頁(yè)面選擇,啟動(dòng)/暫停所采集數(shù)據(jù)的傳輸。
LOGIC 模塊實(shí)現(xiàn)數(shù)據(jù)的觸發(fā)、采集功能。數(shù)據(jù)的采集過(guò)程是在主時(shí)鐘的上升沿讀取外部輸入信號(hào)與上次比較不同時(shí),按不同采集位寬疊加時(shí)間信息形成16 位數(shù)據(jù)寫(xiě)入SRAM,地址加1,準(zhǔn)備下次寫(xiě)入。數(shù)據(jù)的采集取樣率與時(shí)間基準(zhǔn)無(wú)關(guān)。
TIME 模塊是主時(shí)鐘分頻器,根據(jù)設(shè)定的時(shí)間單位控制分頻比,形成不同時(shí)間基準(zhǔn)。時(shí)間基準(zhǔn)與波形的復(fù)現(xiàn)有關(guān),太大或太小會(huì)造成波形失真。
RAM 模塊實(shí)現(xiàn)采樣數(shù)據(jù)的快速寫(xiě)入與順序讀出。FPGA 捕捉信號(hào)流程圖如圖2 所示。由流程圖可知,輸入信號(hào)每變化一次,記錄存儲(chǔ)一次,從而使存儲(chǔ)空間得到最大程度的利用。
圖2 FPGA捕捉流程圖
C8051F120 是Silicon 公司提供的高性能8 位單片機(jī),主頻最高可達(dá)到100MHz,實(shí)現(xiàn)可編程主時(shí)鐘輸出,F(xiàn)PGA 配置文件壓縮存儲(chǔ)及配置,與上位機(jī)經(jīng)過(guò)串口通信,完成邏輯分析的捕獲參數(shù)設(shè)置,波形的復(fù)現(xiàn),函數(shù)還原以及原始數(shù)據(jù)的上報(bào)等功能。PC機(jī)到MCU 控制的相關(guān)指令如表1 所示??刂颇K的軟件設(shè)計(jì)擔(dān)負(fù)著全系統(tǒng)工作狀態(tài)的控制和管理,是構(gòu)成整個(gè)系統(tǒng)的極為重要的部分[5-6]。
波形的復(fù)現(xiàn)原理是:與數(shù)據(jù)采集相對(duì)應(yīng),記錄數(shù)據(jù)時(shí)保存的時(shí)間信息與上次數(shù)據(jù)的差值就是上次波形延續(xù)的寬度。按行為單位,采用打印字符“ - ”(數(shù)據(jù)為1)、字符“ _ ”(數(shù)據(jù)為0)及回車換行的方式實(shí)現(xiàn)。一行可打印150 個(gè)字符,在行尾可選擇打印地址信息。只要按照一定的規(guī)律逐行將波形一一復(fù)現(xiàn)出來(lái),即可實(shí)現(xiàn)波形的分析。函數(shù)的可編程還原是在波形分析的基礎(chǔ)上,識(shí)別出幀信號(hào)、時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào),并結(jié)合相關(guān)文檔分析得出的。利用時(shí)鐘的邊沿采集移位數(shù)據(jù),在幀尾自定義函數(shù)名及參數(shù)格式打印。由于分析產(chǎn)生的數(shù)據(jù)量非常龐大,如果采用串口傳輸這些文本方式的波形將耗費(fèi)大量時(shí)間,所以只需傳輸原始數(shù)據(jù)。具體分析功能由PC 端完成,波形復(fù)現(xiàn)程序流程圖如圖3 所示。
表1 PC機(jī)到MCU的捕捉及分析指令
PC 端的程序采用VC 編程來(lái)完成,將獲取的原始數(shù)據(jù)還原成波形文本,方便上下行閱讀對(duì)比分析。VC 方式開(kāi)發(fā)的程序,在指令的下發(fā)需要行編輯,生成的文件還是自動(dòng)保存為文本。以TXT 記事本的方式打開(kāi),便于波形分析時(shí)添加標(biāo)志,編譯后生成EXE 可執(zhí)行文件。PC 端的分析工具analyse.exe 的界面如圖4 所示,根據(jù)顯示的提示符,輸入不同的命令,即可獲得文本文件,命令標(biāo)志以“a”~“z”區(qū)分,參數(shù)為16 進(jìn)制格式,以空格為間隔標(biāo)志,“$”為執(zhí)行標(biāo)志,“#”為結(jié)束標(biāo)志,相應(yīng)生成的文件也以“a”~“z”命名保存。PC 端分析工具的相關(guān)指令匯總于表2 當(dāng)中。
圖3 波形復(fù)現(xiàn)流程圖
表2 PC端分析指令匯總
根據(jù)圖4 所示的PC 端界面命令提示,編輯輸入命令:b 0 200 2 1 1 $,生成起始地址為0,結(jié)束地址為0x200, bit0, bit1 兩路波形,最大分辨率帶時(shí)間信息的波形分析文件b.txt,其原始數(shù)據(jù)與波形、時(shí)間對(duì)應(yīng)關(guān)系如表3 所示。
其中,Bit0 為接在邏輯分析儀輸入0 腳的捕獲值,Bit1 為接在邏輯分析儀輸入1 腳的捕獲值,以m個(gè)時(shí)間點(diǎn)(m ≥1)為基數(shù)復(fù)現(xiàn)一段波形,其波形對(duì)照如圖5 所示。其中較短的一組對(duì)應(yīng)m=10,較長(zhǎng)的一組則為m=5。以Bit0、Bit1 說(shuō)明數(shù)據(jù)位與波形對(duì)應(yīng)關(guān)系,第一行Bit0,第二行Bit1,依次類推,每位數(shù)據(jù)占據(jù)一行,連續(xù)多行數(shù)據(jù)形成組,多組波形組合形成文本保存,便于手工分析時(shí)添加注釋,手工分析清楚邏輯關(guān)系后,再次編程由電腦輔助分析數(shù)據(jù)。
表3 原始數(shù)據(jù)與波形、時(shí)間信息對(duì)應(yīng)關(guān)系
圖5 不同時(shí)間基準(zhǔn)波形對(duì)照?qǐng)D
數(shù)據(jù)0 在波形中表示為“_”,相鄰n 個(gè)“_”表示低電平持續(xù)n×m 倍時(shí)間單位;同理數(shù)據(jù)1 在波形中表示為“-”,相鄰n 個(gè)“-”表示高電平持續(xù)n×m 倍時(shí)間單位。
圖6 所示的USB 差分信號(hào)是采用0.01μs 時(shí)間單位捕捉到USB 串口的一段波形,由基礎(chǔ)分析指令b 0 40000 2 1 1 $ 執(zhí)行后生成b.txt 文件中局部截圖得到。其中,數(shù)字8、9、25 等字分別表示所在位置高低電平持續(xù)了0.08μs、0.09μs、0.25μs;數(shù)字0 表示差分0,數(shù)字1 表示差分1。波形由再現(xiàn)的D+、D-兩信號(hào)及時(shí)間信息組成,按USB 協(xié)議規(guī)定,差分信號(hào)1滿足D+>D-,差分信號(hào)0 則有D->D+;EOP 持續(xù)2位時(shí)間的SE0 信號(hào)。根據(jù)此特征在analyse 源碼中添加分析函數(shù)usb_analyse,識(shí)別NRZI 碼,再轉(zhuǎn)換為源碼由u.txt 輸出,達(dá)到智能可編程分析的目的。
圖6 USB差分信號(hào)
由波形信息及USB 數(shù)據(jù)的傳輸規(guī)則[7-8],分析傳輸一段同步幀,NRZI 碼為:
01010100010011101110101110110101
其NRZI 碼波形信息轉(zhuǎn)為源碼是:
00000001100101100110000110010000
用16 進(jìn)制表示即為“01966190”。
為降低成本、提高系統(tǒng)的靈活性而設(shè)計(jì)實(shí)現(xiàn)的此款基于FPGA 的數(shù)據(jù)采集存儲(chǔ)邏輯分析儀,以其高速的輸入性能,可有效保障數(shù)據(jù)的完整性,外加MCU 控制傳遞數(shù)據(jù),并使用PC 機(jī)軟件的分析方案,簡(jiǎn)化了電路設(shè)計(jì)的復(fù)雜度,使用非常方便。源碼自動(dòng)分析及存儲(chǔ)功能也實(shí)現(xiàn)了友好的人機(jī)協(xié)作界面。經(jīng)研究分析可確定:此款可編程邏輯分析儀上位機(jī)及邏輯分析儀實(shí)體可以組合運(yùn)行,也可以單獨(dú)運(yùn)行,具有很強(qiáng)的靈活性和實(shí)用價(jià)值,適用于多種場(chǎng)合,尤其可在電子工程研究人員的工作中發(fā)揮重要作用。