USB2.0虛擬邏輯分析儀的設計與實(shí)現
傳統的邏輯分析儀體積龐大、價(jià)格昂貴、通道數目有限,并且在數據采集、傳輸、存儲、顯示等方面存在諸多限制,在很大程度上影響了其在實(shí)際中的應用。選用高性能的FPGA芯片進(jìn)行數據處理,充分利用PC的強大處理功能,配合LabView圖形化語(yǔ)言開(kāi)發(fā)的虛擬邏輯分析儀,其數據處理和傳輸速率大大提高,適用性極大增強,其顯示、操作界面和低廉的成本較之傳統的邏輯分析儀具有極大的優(yōu)勢和發(fā)展前景。
工作原理
本設計選用Altera公司的Cyclone系列FPGA器件EP1C3進(jìn)行數據采集和處理,外接SRAM,用于數據的存儲。系統通過(guò)高性能的PIC單片機PIC18F6620完成與PC的通信,接收PC發(fā)出的觸發(fā)、配置信息并控制系統將采集處理后的數據上傳至PC顯示。單片機與PC的接口利用符合USB2.0規范的接口芯片CP2102實(shí)現。
首先,PC向FPGA發(fā)送觸發(fā)字信息、數據采集控制信息和開(kāi)啟數據采集信號;單片機發(fā)送數據至外接DAC產(chǎn)生門(mén)限電壓;采集到的輸入信號通過(guò)高速比較器與此門(mén)限電壓進(jìn)行比較,以確定其值為0或1。接收到PC發(fā)出的開(kāi)啟數據采集信號后,FPGA按設定的工作方式采集數據,各通道數據移位輸入FPGA內部緩存并存入外部SRAM。FPGA將緩存中存儲的采集數據與設定的觸發(fā)字、觸發(fā)方式和屏蔽位進(jìn)行比較。一旦符合觸發(fā)條件,則設置觸發(fā)標志,記錄觸發(fā)位置。當數據采集至設定的點(diǎn)數后,FPGA向PC發(fā)送采集完成信號。上位機接收到此信號后,發(fā)送讀取數據命令,系統讀回采集數據并在PC屏上顯示。系統功能框圖如圖1所示。
圖1 系統功能框圖
系統觸發(fā)模塊設計
觸發(fā)模塊是整個(gè)系統的核心部分,主要包括采樣時(shí)鐘選擇模塊、觸發(fā)電平設置和觸發(fā)電路三個(gè)部分。
采樣時(shí)鐘選擇模塊
時(shí)鐘選擇模塊用于選擇采樣頻率??晒┻x擇的時(shí)鐘源包括:外部時(shí)鐘(由有源晶振提供)、單片機PWM模塊產(chǎn)生的PWM時(shí)鐘、外部時(shí)鐘輸入(由額外的設備提供)、以第N路數字信號輸入作為采樣時(shí)鐘。
觸發(fā)電平設置
觸發(fā)電平用來(lái)確定系統正確識別采樣信號的高低電平。該模塊由串行數模轉換器TLC5615和高速比較器LT1721構成。采樣開(kāi)始前,單片機向DAC發(fā)送觸發(fā)電平數據,轉換后的電平信號(范圍從0~+5V)送入高速比較器。
觸發(fā)電路
觸發(fā)電路的作用是判斷采樣信號是否滿(mǎn)足觸發(fā)條件,并分別產(chǎn)生觸發(fā)動(dòng)作。當采集的信號滿(mǎn)足用戶(hù)設置的觸發(fā)條件時(shí),系統記錄觸發(fā)位置并產(chǎn)生觸發(fā)信號通知上位機讀取、顯示采樣數據。本次設計的觸發(fā)電路具有三種可選的觸發(fā)模式:立即觸發(fā)、順序觸發(fā)和并行觸發(fā)。
立即觸發(fā)
當上位機向FPGA發(fā)出立即觸發(fā)觸發(fā)字和開(kāi)始采樣指令后,FPGA開(kāi)始采樣并立即產(chǎn)生觸發(fā)信號。采樣電路將采集到的信號存入外部的SRAM中,直至采集到規定的點(diǎn)數后停止采樣,向上位機發(fā)出采樣結束信號,通知其讀取采樣數據。此方式下讀回的觸發(fā)點(diǎn)位置為0。
順序觸發(fā)
該方式設置了一個(gè)8位的序列觸發(fā),只有當被測通道的信號按依次滿(mǎn)足觸發(fā)字所設定的8位序列時(shí),才產(chǎn)生觸發(fā)信號。同時(shí),為了操作的靈活性,還加入了屏蔽位。若對某一位的數據不敏感,可以將其對應的屏蔽位設置為0,在判斷觸發(fā)條件時(shí)不對該位進(jìn)行檢測。
使用順序觸發(fā)方式,可以對任意一個(gè)通道選擇最多8位長(cháng)度的序列進(jìn)行觸發(fā)。在進(jìn)行觸發(fā)設置時(shí),除設置觸發(fā)方式(選擇順序觸發(fā))和進(jìn)行采樣頻率選擇以外,還需要進(jìn)行通道選擇、觸發(fā)字和屏蔽位設置。其Verilog HDL算法源程序如下:
if(((dbuf^{TrigWord[1],TrigWord[ 0]})&{enbit[1],enbit[0]}) == 8'h00)
begin
TrigFlag=2'b01; Trigpoint[6:0] <= MemABus_Wr[6:0];
end
其中:dbuf為所測采樣通道的數據緩存;TrigWord[0]、TrigWord[1]為觸發(fā)字;enbit[0]、enbit[1]為屏蔽字;Trigpoint為觸發(fā)位置寄存器。
并行觸發(fā)
該方式設置了一個(gè)八級深度的并行觸發(fā),將每次采樣得到的4個(gè)通道的數據組合為一個(gè)十六進(jìn)制數,對應于一個(gè)4位的觸發(fā)字,當4個(gè)通道的數據在時(shí)間上依次滿(mǎn)足8個(gè)4位的觸發(fā)字時(shí)(并非要求連續),產(chǎn)生觸發(fā)信號。同樣,可以使用屏蔽位對某一通道的數據進(jìn)行屏蔽,即在進(jìn)行并行觸發(fā)檢測時(shí),不對該路通道進(jìn)行檢測。
使用并行觸發(fā)方式,可以選擇最多八級的并行觸發(fā)。在進(jìn)行觸發(fā)設置時(shí),除設置觸發(fā)方式(選擇并行觸發(fā))和進(jìn)行頻率選擇以外,還需要進(jìn)行觸發(fā)字、屏蔽位和并行深度的設置。其Verilog HDL算法源程序如下:
if ((({dbuf4[0],dbuf3[0], dbuf2[0],dbuf1[0]}^ TrigWord [dcount] )&enbit[0] ) == 4'h0)
begin
if(dcount[2:0]==control[4:2])
begin
TrigFlag=2'b01; Trigpoint[6:0] <= MemABus_Wr[6:0];
dcount="3"'b000; end
dcount = dcount+3'b001;
end
其中,dbuf4、dbuf3、dbuf2、dbuf1分別為采樣通道4、3、2、1的數據緩存;TrigWord[dcount]為觸發(fā)字;dcount為觸發(fā)深度計數器;control[4:2]為設定的觸發(fā)深度;enbit[0]為屏敝字;Trigpoint為觸發(fā)位置寄存器。
USB2.0接口設計
本設計選用符合USB2.0規范的CP2102芯片構建系統與PC的通信接口。
CP2102是USB-UART橋接芯片。該電路內置USB2.0全速功能控制器、USB收發(fā)器、晶體振蕩器、EEPROM及異步串行數據總線(xiàn),支持調制解調器全功能信號,無(wú)需任何外部的USB器件。其功能強大,采用MLP-28封裝,尺寸僅為5mm
評論