摘要:本設計採用單片機控制8路邏輯信號電平採集;採用EDA技術設計的CPLD芯片處理邏輯信號,控制點陣掃描和分析結果在示波器上顯示;單片機和CPLD間採用中斷方式交換數據。該設計具有1、3級觸發方式,觸發字位置和浮動時標線顯示等功能,以及友好操作介面和波形穩定顯示等特點,並拓寬示波器使用功能。
關鍵字:點陣掃描控制;邏輯分析;CPLD;VHDL編程
The design of the logical analysis apparatus of one-chip microcomputer and the EDA's technology baseding on
【Abstract】This design uses the one-chip microcomputer to be controlled gathering of logical signal levels of 8 tunnels, Use CPLD's chip of EDA's technical design to the logic signal processing and Control scanning to the lattice signal and The result of display analysis on the oscillograph , Use the interrupt mode exchange data between one-chip microcomputer and CPLD. this design has 1 and 3 grade of method of activation , trigger word seat display and time to be marked thread display etc. merit ability,As well as friendly operation interface and waveform stabilization what shows etc. characteristic , And widen the oscillograph use merit ability .
【Key words】The lattice scanning control; The logical analysis; CPLD; VHDL's programming
1 引言
邏輯分析儀是數字電路調試和信號分析中不可缺少的工具。本設計參照“2003年全國大學生電子設計競賽”的題目,用雙蹤信號示波器作爲邏輯分析結果顯示設備;用單片機控制邏輯信號採集和邏輯分析儀的各項功能操作;用EDA(電子設計自動化)技術設計的CPLD(複雜可編程邏輯器件)芯片處理邏輯信號,控制邏輯分析結果波形的點陣掃描;達到一般邏輯分析儀應有的功能和指標[1]。本設計的邏輯分析儀特點是性能穩定、成本低,並拓寬了示波器使用功能。
2 總體結構及各硬件設計
邏輯信號分析的總體結構如圖1所示;其中邏輯分析儀由8路邏輯信號檢測電路、單片機系統和CPLD點陣掃描控制電路構成。邏輯分析儀能接受8路邏輯信號(D7~D0)和位傳送時鐘信號(B-CLK);其接受的邏輯信號形式如圖2所示。
600)makesmallpic(this,600,1800);' src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-7831.png" width="554" height="202" />
邏輯分析儀各部分解釋如下:
2.1 邏輯信號檢測
8路邏輯信號檢測部分由8選1採樣模擬開關(CD4051)和模數轉換器ADC(MAX7820)組成,如圖3所示。爲了適應較寬範圍(0.25~4V)邏輯信號門限電壓(邏輯1的電壓)的輸入,對邏輯信號電平採用模擬信號採樣,當AD轉換獲得邏輯信號電平的數字量(A/D-DATA)大於門限電壓對應的數字量時,確定爲邏輯1。由於分時檢測8路邏輯信號(D7~D0),要求採樣開關速度和AD轉換速度要遠遠大於邏輯信號位傳送速度;當位傳送時鐘信號到來時,才能保證8路邏輯信號每1路採樣點在靠近位的中間位置,從而得到可靠的電平數字量。
本設計的CD4051從地址選通(CH-SELECT)到數據輸出時間約500ns,MAX7820轉換一路信號所需的時間約3ns,採集處理8路邏輯信號各位(1個字節)所需時間約5us。若8路邏輯信號每位採樣點在位中間的三分之一區,則邏輯信號的位寬約爲15us,因此本設計的邏輯分析儀可對66kHz以下波特率的8路信號進行邏輯分析。
600)makesmallpic(this,600,1800);' src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-16949.png" width="519" height="222" />
2.3 單片機系統
單片機系統[2]由單片機(AT89C51)、點陣液晶顯示模組和4×4鍵盤三部分組成,其示意圖見圖1的“單片機系統”部分。單片機的P0口在不同的時間段分別用於顯示數據輸出,邏輯信號採樣數據輸入,採樣字節輸出的數據傳送;P1、P3口用於邏輯信號檢測(見圖3引腳標註)、CPLD點陣掃描控制(見圖4引腳標註)和液晶顯示模組的操作控制;P2口用於4×4鍵盤掃描及按鍵資訊接受。單片機系統的鍵盤和顯示部分用於完成1、3級觸發方式,1級、3級觸發字,16級門限電壓選擇,數據採集區的前、中、後顯示頁面(16字節)選擇,時間線位置等參數的設定和顯示,以及相關功能操作。
2.4 CPLD點陣掃描控制
CPLD點陣掃描控制部分由可編程邏輯陣列(CPLD)、數模轉換器(DAC)和X、Y、Z軸掃描信號放大電路組成,並在CPLD控制下工作;其電路如圖4所示。
600)makesmallpic(this,600,1800);' src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-5417.png" width="549" height="280" />
CPLD向透過輸出中斷CPLD-INT請求(單片機的INT0)從單片機系統獲得採樣字節;對每個採樣字節按順序進行8路邏輯信號位波形(或時標線)的點陣掃描的資訊處理,並控制數模轉換(DAC)、信號放大、信號掃描顯示和回掃信號消隱處理。在處理一個頁面(1/3數據區)16個採樣字節後,重複處理過程。
CPLD內部由計數器鏈(2分頻器,點、位、字節計數器)、數據接收器、X軸位邊界定位器、加法器、Y軸定位輸出器、2選1多路器、消隱控制器等部分組成,如圖5所示。CPLD外部引腳CLK(CPLD-CLK)、EN(使能)、TR(資訊類型控制)、DI[7~0] (CPLD-DATA)、CP(鎖存)、-INT(CPLD-INT)分別連邏輯分析儀單片機的ALE、P1.7、P3.1、P0[0~7]、P3.0、P3.2引腳(見圖4的引腳標註);-WR、A0(通道選擇)、DO[7~0]分別連DAC的-WR、A0、D[7~0]引腳;Zout連信號放大器的Z軸輸入端。CPLD工作原理說明如下:
600)makesmallpic(this,600,1800);' src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-12884.png" width="438" height="246" />
開機後,CPLD內部復位,EN=0,CPLD處於保持狀態。
1.數據傳送——首先設定EN=0,CPLD處於保持;然後,CP的上升沿,將外部數據送入數據接收器;設定TR=0,傳送8路信號採樣字節;TR=1,傳送觸發字或時標線位置的4位編碼(給出16個位置資訊)。傳送數據後,設定EN=1,CPLD工作。
2.邏輯信號掃描——在EN=1,TR=0前提下,外部時鐘CLK的上升沿驅動計數器鏈工作。字節計數器(採樣字節計數)值ByteC經過X軸位邊界定位器處理後的值X1(X1=ByteC*10H)與點計數器(位內點計數)值Xc再經過加法器處理,產生當前掃描點X軸數字量X=X1+Xc=ByteC*10H+Xc。位計數器(採樣字節各位計數)值BitC和數據接收器(存放採樣字節)值DI[7~0]經過Y軸定位輸出器處理,產生當前掃描點Y軸數字量的Y有兩種:①當DI[BitC]=0,Y=0E0H-(BitC*20H)+05H;②當DI[BitC]=1,Y=0E0H-(BitC*20H)+15H。在A0正(A0=1)、負(A0=0)狀態對2選1多路器的驅動下,分時將Y、X送到DO[7~0]總線上;以此同時,在兩個-WR(-CLK)的上升沿(A0正、負半個週期的中間)驅動下,將送到DO[7~0]總線上的Y和X分別寫入數模轉換器DAC的兩個通道。位計數器值BitC=7時,表示一個採樣字節處理完,CPLD發出傳送下一個字節的中斷請求-INT。邏輯分析儀單片機收到中斷請求後,進行一次數據傳送處理。
3.觸發字和時間線位置掃描——在EN=1前提下,TR=1將數據接收器DI[3~0](位置資訊)送入字節計數器,並控制點計數器值Xc=0,經過X軸位邊界定位器和加法器處理後,產生掃描點X軸數字量X=X1+Xc=DI[3~0]*10H+0;同時TR=1控制Y軸定位輸出器的值Y按計數方式工作,在CLK1驅動下,輸出Y=00~0FFH的計數值,在示波器屏上顯示豎線,表示觸發字或時間線位置。當Y=0FFH時,表示位置資訊掃描完畢,發出傳送下一個字節的中斷請求信號。
4.消隱處理——在Xc=0FH,即開始下1路時鐘位各點掃描時,點計數器輸出Z1=1;在BitC=7,即開始8路信號下一組各時鐘位(下一個採樣字節)掃描時,Y軸定位輸出器輸出Z2=1;在Y=OFFH,即觸發字和時間線位置掃描結束時,Y軸定位輸出器輸出Z2=1;在A0=1時,爲了消除當前傳送的Y軸數字量與前一次X軸數字量產生的干擾掃描點,2分頻器輸出的A0使Z3=1;Z1、Z2、Z3信號經過消隱控制器(或非門電路)處理,使Zout爲低電平,經反相放大器處理後,向示波器Z軸輸出+12V電壓,以消除回掃線和干擾點。
雙蹤信號示波器調整到X-Y工作方式,探頭Y1爲X軸輸入,探頭Y2爲Y軸輸入,顯像管電子槍控制端爲Z軸輸入。CPLD輸出的X、Y軸數字量X、Y經過數模轉換和放大處理後,產生示波器X、Y軸掃描的模擬信號,在示波器屏上顯示8路邏輯信號。CPLD輸出的Zout信號經放大後,控制示波器的Z軸,以消隱回掃線和干擾點,使8路邏輯信號更清晰的顯示。
3 軟件設計
軟件設計部分有邏輯信號檢測及數據採集處理、鍵盤顯示掃描處理、採樣字節輸出處理和CPLD內部結構設計VHDL(硬件描述語言)編程四部分。本文主要介紹邏輯信號檢測及數據採集處理和CPLD結構設計VHDL編程部分。
3.1 邏輯信號檢測及數據採集處理
邏輯信號檢測及數據採集處理是透過單片機的INT1中斷服務程序來完成。其中1級觸發字邏輯信號檢測中斷服務程序和數據採集處理子程序流程如圖6、圖7所示。
當各項參數設定後,按“確認鍵”儲存參數,並開啟邏輯信號檢測中斷(INT1),關閉採樣字節輸出中斷(INT0)。每次邏輯信號發生器的位傳送時鐘(B-CLK)觸發一次邏輯信號檢測中斷服務程序的執行,每次服務程序執行要進行8次路選和8次AD轉換啓動,並分別檢測轉換結束狀態和讀取轉換結果。每次邏輯信號檢測中斷服務,要調用8路邏輯信號數據採集處理子程序,將8路信號狀態轉換成1個採樣字節,並存入採樣數據區。當數據區存滿後,關閉邏輯信號檢測中斷,開啟採樣字節輸出中斷,等待CPLD輸出中斷請求(CLPD-INT)。
600)makesmallpic(this,600,1800);' src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-27242.png" width="514" height="421" />
CPLD點陣掃描控制電路在每次輸出8路1位信號波形後,向單片機系統發出採樣字節輸出中斷;對每次採樣字節輸出中斷的服務,單片機要對CPLD進行一次採樣字節輸出及寫操作控制。輸出的`採樣字節有波形數據、觸發字和時標線位置三種數據類型。
3.2 CPLD結構設計的VHDL編程
CPLD內部結構各部分設計採用硬件描述語言VHDL編程來實現[3]。由於篇幅所限,僅給出部分設計的編程及解釋說明。
1.點計數器設計的編程
if TR='0' then -- TR=0時,邏輯信號時鐘位的掃描點計數。
if f='0' then -- f爲回掃時鐘插入標誌位,f=0時,正常的點計數掃描。
Xc<=Xc+1; -- 點計數增1。
else
Xc<=Xc; -- f=1時,Xc保持1個時鐘時間。
end if;
if Xc="1111" then
f<='1'; -- 計完1個時鐘位16個點後,f置1控制插入一個回掃時鐘
BitC<=BitC+1; -- 採樣字節的位計數增1
Z1<='1'; -- 控制下一時鐘週期不顯示
else
f<='0'; -- 控制正常計數
Z1<='0'; -- 控制正常顯示
end if;
else -- TR=1時,觸發字和時標線位置掃描
Xc<="0000"; -- 點計數器值Xc 置0
end if;
程序中的“Xc<=Xc+1”語句僅爲點計數器增1作準備,只有下一個時鐘到來後,才計數增1變化;因此,對後邊的“if Xc="1111" then”語句,判斷到Xc="1111"時,已經爲點計數器Xc變成0做好了準備。程序中的“--”爲註釋標誌。
2.Y軸定位輸出器設計的編程
if TR='0' then -- TR='0'邏輯信號掃描,由位計數器值和數據接收器值確定Y值
if BitC="000" then — 第1路邏輯信號,對應字節內的最高位,示波器上端
if DI(7)='0' then Y<="11100101"; -- DI(7)=0,Y=E5H
else Y<="11110101"; -- DI(7)=1,Y=F5H
end if;
elsif BitC="001" then -- 第二路
if DI(6)='0' then Y<="11000101"; -- DI(6)=0,Y=C5H
else Y<="11010101"; -- DI(6)=1,Y=D5H
end if;
elsif BitC="010" then -- 第三路
if DI(5)<='0'then Y<="10100101"; -- DI(5)=0,Y=A5H
else Y<="10110101"; -- DI(5)=1,Y=B5H
end if;
elsif BitC="011" then -- 第四路
if DI(4)<='0'then Y<="10000101"; -- DI(4)=0,Y=85H
else Y<="10010101"; -- DI(4)=1,Y=95H
end if;
elsif BitC="100" then -- 第五路
if DI(3)='0' then Y<="01100101"; -- DI(3)=0,Y=65H
else Y<="01110101"; -- DI(3)=1,Y=75H
end if;
elsif BitC="101" then -- 第六路
if DI(2)='0' then Y<="01000101"; -- DI(2)=0,Y=45H
else Y<="01010101"; -- DI(2)=1,Y=55H
end if;
elsif BitC="110" then -- 第七路
if DI(1)='0' then Y<="00100101"; -- DI(1)=0,Y=25H
else Y<="00110101"; -- DI(1)=1,Y=35H
end if;
elsif BitC="111" then -- 第八路
if DI(0)='0' then Y<="00000101"; -- DI(0)=0,Y=05H
else Y<="00010101"; -- DI(0)=1,Y=15H
end if;
end if;
else -- TR='1'觸發字和時標線位置掃描,Y軸定位輸出器按計數方式工作
if Y<"11111111" then -- Y<"11111111"時,計數增1,從下到上掃描位置線
Y<=Y+1;Z2<=’0’; -- Z2=’0’,正常顯示
else -- Y="11111111"時,消隱控制,發出中斷申請
Z2<='1', INT<='0';
end if;
end if;
4 結束語
本設計將單片機和EDA技術結合起來,簡化了硬件結構,工作性能穩定,經過應用測試,達到了邏輯分析儀應有的功能要求。
透過本設計,筆者認爲,運用EDA技術設計電路,設計者可專注於電路的行爲和功能,而不必考慮電路如何實現及電路佈線,並且可透過計算機進行設計效果的模擬和修改,爲設計者提供了更廣闊的設計空間。用單片機和EDA技術開發的電子產品,在功能、性能指標和開發效率等方面比傳統的方法有明顯的提高,而且成本降低。
參考文獻:[1]顧乃級,孫續. 邏輯分析儀原理與應用[M]. 北京:人民郵電出版社,1973.
[2]李華,MCS-51系列單片機實用接口技術[M]. 北京:北京航空航天大學出版社,1993.
[3]潘鬆,黃繼業. EDA技術實用教程[M]. 北京:科學出版社,2002.