王力生 畢文峰
摘要:波形編輯軟件作為數(shù)據(jù)域測(cè)試的重要儀器,在測(cè)試設(shè)備中發(fā)揮著重要的作用,正日益引起人們的重視。并且它是隨著用戶自定義的測(cè)試波形的需要形成和發(fā)展起來(lái)的。目前波形編輯軟件已經(jīng)廣泛運(yùn)用于FPGA測(cè)試、磁盤(pán)驅(qū)動(dòng)測(cè)試、串行數(shù)據(jù)通信、汽車防抱死、生物醫(yī)學(xué)模擬以及汽車發(fā)動(dòng)機(jī)控制等領(lǐng)域。文章著重闡述了設(shè)計(jì)波形編輯軟件中的幾個(gè)關(guān)鍵技術(shù)——波形編輯軟件的界面與模塊的設(shè)計(jì)、波形刷新延遲問(wèn)題的解決。通過(guò)實(shí)踐表明,該方法對(duì)開(kāi)發(fā)波形編輯軟件和測(cè)試軟件具有一定的參考價(jià)值[3]。
關(guān)鍵詞:波形編輯軟件;FPGA測(cè)試;刷新延遲;框架與模型設(shè)計(jì)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)20-4895-04
A User Interface and Module Design for Waveform Editing Software
WANG Li-sheng1, BI Wen-feng2
(1.Department of Computer Science and Technology, Tongji University, Shanghai 201804, China; 2.Software Engineering, Tongji Univer? sity, Shanghai 201804, China)
Abstract: Waveform editing software plays important part in the field of the test, which attracts increasing attention among the people. The formation and development of waveform editor accompany with the need of user-defined test waveforms. Waveform editing software has been widely used in the FPGA test, disk drive test, the serial data communications, automotive anti-lock, biomedical simulation and au tomotive engine control and other fields. The article focuses on several key technology in the design of Waveform editing software, includ ing following two aspect: 1) Designing UI and model for waveform editing software. 2) Solving latency issue in the process of waveform re fresh. Through the practice shows that, this method has some reference value for the development of Waveform editing software and test software.
Key words: waveform editing software; FPGA test; refresh latency; design framework and model
1概述
在現(xiàn)代測(cè)試平臺(tái)的構(gòu)建中,波形編輯器是其中一個(gè)必不可少的模塊,它不僅可以讓設(shè)計(jì)者圖形化地觀測(cè)需要被驗(yàn)證的信號(hào),而且可以使用戶編輯波形例如拖拉觸發(fā)沿、拷貝、粘貼以及畫(huà)新的波形信號(hào)。由于波形編輯器不僅能產(chǎn)生測(cè)試過(guò)程中的測(cè)試向量,而且能夠以圖形化的方式直觀地顯示測(cè)試結(jié)果,所以對(duì)它的研究和開(kāi)發(fā)已開(kāi)始引起人們的廣泛關(guān)注
2軟件界面和模塊設(shè)計(jì)
波形編輯軟件主要由界面設(shè)計(jì)、波形編輯、數(shù)據(jù)處理與波形顯示、數(shù)據(jù)交換接口四部分組成。其中界面設(shè)計(jì)的質(zhì)量直接決定了整個(gè)軟件的外觀和用戶體驗(yàn)的好壞。數(shù)據(jù)處理是指如何定義波形的數(shù)據(jù)結(jié)構(gòu),它不僅是進(jìn)行波形編輯和顯示的前提,也直接決定整個(gè)軟件系統(tǒng)的性能。在測(cè)試系統(tǒng)中,波形編輯是指仿真前測(cè)試信號(hào)的定義,波形顯示是指測(cè)試結(jié)束后對(duì)反饋的信號(hào)數(shù)據(jù)進(jìn)行圖形化的波形顯示。數(shù)據(jù)交換接口是用于實(shí)現(xiàn)波形編輯軟件和底層測(cè)試平臺(tái)的通信。其中界面的設(shè)計(jì)、波形數(shù)據(jù)的處理以及各個(gè)模塊的設(shè)計(jì)是整個(gè)波形編輯軟件設(shè)計(jì)的關(guān)鍵。
2.1軟件界面設(shè)計(jì)
用戶界面是對(duì)用戶與系統(tǒng)間進(jìn)行交互所采用的方式、途徑、內(nèi)容、布局及結(jié)構(gòu)的總稱。它是用戶與計(jì)算機(jī)通過(guò)軟件進(jìn)行信息交流的接口。當(dāng)前的軟件界面都是采用圖形用戶界面的方式,具有簡(jiǎn)單,直觀、良好的可讀性和可操作性等特點(diǎn)。
2.1.1用戶界面的總體結(jié)構(gòu)設(shè)計(jì)
在Windows平臺(tái)下,利用.NET圖形界面開(kāi)發(fā)工具,在設(shè)計(jì)波形編輯軟件界面時(shí),主要的內(nèi)容包括主界面窗口的設(shè)計(jì)、波形編輯窗口的設(shè)計(jì)、初始化窗口的設(shè)計(jì)、參數(shù)設(shè)置對(duì)話框的生成。
其中主界面窗口分為菜單欄和工具欄兩大部分,在菜單欄和工具欄中,主要有如表1,表2所示的幾項(xiàng)。
在波形編輯界面中,主要有刻度尺、引腳信息和引腳波形三個(gè)區(qū)域。其中刻度尺將波形和時(shí)間參數(shù)對(duì)應(yīng)起來(lái)。引腳信息包含了該引腳信號(hào)的名稱和當(dāng)前值信息。引腳波形是與該引腳對(duì)應(yīng)的波形信號(hào)。波形的所有初始化、編輯、顯示功能都是在這個(gè)界面上完成的。所以說(shuō)它是整個(gè)波形編輯器的核心。
波形初始化窗口是用來(lái)完成對(duì)各類引腳信號(hào)初始化參數(shù)的設(shè)置。其中包括輸入輸出引腳信號(hào)、總線信號(hào)、計(jì)數(shù)器信號(hào)、激勵(lì)信號(hào)。由于每種信號(hào)所需要的參數(shù)是不同的,所以要在初始化參數(shù)對(duì)話框中根據(jù)不同的信號(hào)類型選擇相應(yīng)的Tab選項(xiàng)來(lái)對(duì)其參數(shù)進(jìn)行設(shè)置。
參數(shù)設(shè)置對(duì)話框完成的是對(duì)波形編輯參數(shù)的設(shè)置。主要是指編輯的最小周期、仿真時(shí)間、放大倍數(shù)的設(shè)置。通過(guò)該功能可以大大提高了編輯操作的靈活性和易用性。
2.1.2界面的功能實(shí)現(xiàn)
實(shí)現(xiàn)的功能如下:
當(dāng)打開(kāi)程序后,首先進(jìn)入的就是主界面窗口。當(dāng)多次單擊主界面工具欄上的新建按鈕,便可以同時(shí)打開(kāi)多個(gè)波形編輯窗口。在進(jìn)行波形初始化的時(shí)候,首先需要雙擊波形編輯窗口中的引腳區(qū)域,彈出波形初始化對(duì)話框,當(dāng)用戶輸入完初始化信息后,點(diǎn)擊確認(rèn)按鈕就完成了對(duì)引腳信號(hào)的初始化操作。在波形編輯界面上,我們可以實(shí)現(xiàn)的編輯功能有:放大、縮小、復(fù)制、粘貼、變0、變1、變高阻、總線編輯等功能。除總線的編輯功能外,其它功能都可以通過(guò)先“選中”,然后再單擊主面板上的相應(yīng)按鈕來(lái)實(shí)現(xiàn)。由于總線編輯比較特殊,需要雙擊波形區(qū)域中的某條總線,然后彈出總線的編輯對(duì)話框。它里面包括了總線改變后的值、改變的起始位置和終止位置。先對(duì)這些項(xiàng)進(jìn)行設(shè)置后單擊確認(rèn)按鈕,便實(shí)現(xiàn)了對(duì)總線的編輯功能。
界面的關(guān)系和工作流程如圖1所示:
2.2功能模塊設(shè)計(jì)
波形編輯軟件不僅要圖形化地觀測(cè)需要被驗(yàn)證的信號(hào),而且要實(shí)現(xiàn)對(duì)波形的可視化編輯。一般來(lái)說(shuō),它必須具備的基本功能包括:1)輸入功能:向計(jì)算機(jī)輸入各種命令和數(shù)據(jù),產(chǎn)生測(cè)試領(lǐng)域中需求的各種波形數(shù)據(jù)信號(hào)。2)存儲(chǔ)功能:波形編輯軟件的根本目的是為了產(chǎn)生送高速DA進(jìn)行轉(zhuǎn)換的波形數(shù)據(jù)信號(hào),因此必須能夠?qū)Ξa(chǎn)生的數(shù)據(jù)信號(hào)進(jìn)行存儲(chǔ)和加載操作。3)交互功能:實(shí)現(xiàn)對(duì)產(chǎn)生的或已有的波形數(shù)據(jù)進(jìn)行編輯處理。4)輸出功能:顯示和保存波形編輯結(jié)果以及實(shí)現(xiàn)人機(jī)交互。綜上分析,波形編輯軟件功能需求如下:
1)提供可視化的編輯界面;
2)支持各種標(biāo)準(zhǔn)的波形編輯功能(如創(chuàng)建、刪除、選中、放大、縮小、導(dǎo)入、導(dǎo)出、變0、變1、變不確定、變高阻);
3)實(shí)現(xiàn)編輯軟件和底層硬件平臺(tái)的通信。
同一般的矢量圖形系統(tǒng)相比較,波形編輯軟件不需要維護(hù)圖層的概念,但是由于行業(yè)應(yīng)用的不同,波形編輯軟件有其自身的一些特點(diǎn),尤其是在對(duì)波形進(jìn)行編輯的過(guò)程,其波形數(shù)據(jù)一定要和時(shí)間參數(shù)對(duì)應(yīng)起來(lái),正是由于這個(gè)特性使得傳統(tǒng)的解決方案并不適合波形編輯軟件的開(kāi)發(fā)[4]。
綜上分析,波形編輯軟件根據(jù)功能劃分,主要由中心控制某塊、波形產(chǎn)生模塊、波形編輯模塊、波形存儲(chǔ)模塊四部分構(gòu)成。其大致關(guān)系如圖2所示:
其中波形產(chǎn)生模塊可以通過(guò)兩種方式產(chǎn)生波形。第一種是通過(guò)用戶提供的初始化參數(shù)產(chǎn)生波形;第二種是通過(guò)導(dǎo)入自定義的波形文件來(lái)產(chǎn)生波形。其中波形編輯模塊是整個(gè)系統(tǒng)的核心,它提供了波形處理過(guò)程中的一些常用功能,例如放大、縮小、移動(dòng)、變0、變1、變高阻等功能。波形存儲(chǔ)模塊提供了波形數(shù)據(jù)的導(dǎo)入和導(dǎo)出功能,我們可以通過(guò)該模塊實(shí)現(xiàn)將波形數(shù)據(jù)保存為我們自定義的文件格式,方便用戶對(duì)波形數(shù)據(jù)進(jìn)行存儲(chǔ)。
2.3數(shù)據(jù)模塊設(shè)計(jì)
數(shù)據(jù)模塊的設(shè)計(jì)包括兩個(gè)方面:1)如何設(shè)計(jì)波形文件的存儲(chǔ)格式;2)如何設(shè)計(jì)數(shù)據(jù)處理過(guò)程中波形數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
2.3.1波形文件格式
波形在導(dǎo)入導(dǎo)出時(shí),可能要存儲(chǔ)大量的波形數(shù)據(jù)。如何定義波形文件的格式,成為了實(shí)現(xiàn)波形存儲(chǔ)的關(guān)鍵。因?yàn)槲募袷皆O(shè)計(jì)的好壞,直接決定波形文件的大小以及通用性。而在波形數(shù)據(jù)中可能包含大量的信息,如果我們采取存儲(chǔ)波形中每個(gè)結(jié)點(diǎn)信息的方式,那么數(shù)據(jù)量將會(huì)大的驚人。所以為了對(duì)波形文件進(jìn)行壓縮存儲(chǔ),我們僅僅保存波形中數(shù)據(jù)發(fā)生變化的結(jié)點(diǎn)信息。圖3,圖4是一個(gè)波形樣例和其對(duì)應(yīng)的波形文件內(nèi)容。
2.3.2波形數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
在數(shù)據(jù)處理過(guò)程中,一般需要三個(gè)數(shù)據(jù)結(jié)構(gòu),分別是WaveNode、WaveLine、WaveIndex,其中WaveNode是一個(gè)結(jié)構(gòu)體,它存儲(chǔ)每條波形的變化結(jié)點(diǎn)信息,WaveLine存放的是每條波的信息,WaveIndex存放整個(gè)界面所有的波形,主要用于對(duì)整個(gè)波形文件進(jìn)行索引。下面我們分別來(lái)介紹一下這三個(gè)數(shù)據(jù)結(jié)構(gòu)。
在WaveNode中,包含NodeIndex和NodeValue兩個(gè)元素,分別存儲(chǔ)單波變化結(jié)點(diǎn)的列號(hào)和該結(jié)點(diǎn)的值.其大致結(jié)構(gòu)如圖5所示:
圖5單波變化結(jié)點(diǎn)的存儲(chǔ)單元
在WaveLine中,包含LineNo、LineName,、WaveList三個(gè)元素,分別用于存儲(chǔ)單波的行序號(hào)、引腳名、所有的變化結(jié)點(diǎn)(它是一個(gè)數(shù)組,存放的是該條波中所有數(shù)據(jù)發(fā)生變化的結(jié)點(diǎn))其大致結(jié)構(gòu)如圖6所示:
圖6單波存儲(chǔ)單元
WaveIndex里存放了編輯界面中所有的波形,通過(guò)它可以索引到其中的任意一條波形。我們可以通過(guò)WaveIndex找到相應(yīng)的WaveLine,然后的WaveLine根據(jù)它的WaveNode顯示波形。它和WaveLine和WaveNode關(guān)系如圖7所示:
3.2挖掘數(shù)據(jù)處理的并發(fā)性
當(dāng)我們?cè)谶M(jìn)行波形編輯的時(shí)候,基本上都需要先選波,然后再改變數(shù)據(jù)結(jié)構(gòu),最后對(duì)波形進(jìn)行重繪,如果單單只用一個(gè)線程來(lái)完成這些工作,就會(huì)給波形的刷新帶來(lái)延遲問(wèn)題。而且在數(shù)據(jù)處理過(guò)程中,往往都涉及到對(duì)數(shù)據(jù)結(jié)構(gòu)的遍歷,并且在很多情況下,都需要用到一次甚至兩次循環(huán),如果在波形信息不大的情況下,這對(duì)于波形刷新的影響并不是很明顯,但隨著波形信息量的增加,就會(huì)帶來(lái)非常嚴(yán)重的刷新延遲問(wèn)題。因此我們需要借助一些編譯工具(例如TBB和OpenMP),來(lái)挖掘數(shù)據(jù)處理過(guò)程中的一些并行性,從而提高數(shù)據(jù)處理效率和緩解延遲問(wèn)題。
波形編輯軟件已成為測(cè)試設(shè)備中不可或缺的一部分,該文從軟件的界面設(shè)計(jì)和處理模塊設(shè)計(jì)出發(fā),對(duì)軟件的基本設(shè)計(jì)思路進(jìn)行了詳細(xì)的介紹,并針對(duì)軟件設(shè)計(jì)過(guò)程中,可能出現(xiàn)的波形刷新延遲問(wèn)題,提出了一些可行的解決方案。
[1] Senthil Mani.Using User Interface Design to enhance Service Identification[C].IEEE International Conference on Web Services,2008.
[2]張學(xué)鋒,胡長(zhǎng)江.功能各異的各種任意波形發(fā)生器[J].國(guó)外電子測(cè)量技術(shù),2000(4):17-18.
[3]陳昌勇.任意波形編輯器的設(shè)計(jì)與實(shí)現(xiàn)[D].天津:天津大學(xué),2007.
[4]吳蓓.任意波發(fā)生器人機(jī)交互界面及其數(shù)據(jù)處理模型設(shè)計(jì)[D].成都:電子科技大學(xué),2009:12-14.
[5] Jennifer Ferreira.Agile Development Iterations and UI Design[C].IEEE Computer Society,2007.
[6]張晴暉,李俊荻.基于ZigBee的環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].國(guó)外電子測(cè)量技術(shù),2010,29(1).
[7]白森,蘇延川.基于USB協(xié)議的DSP高速上位機(jī)接口設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011(15).
[8]李瑞金,彭雙生.基于VB的上位機(jī)與DSP之間的通信研究與實(shí)現(xiàn)[J].煤礦機(jī)械,2011(9).