摘要:本設計採用微控制器控制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.