畢業實習總結報告
寫於1999年10月28日,看了第七章才知道原來我寫實習報告也很有幽默感…… 畢業實習總結報告
電子與資訊科技
xxx班
Charlwin No.9
同組:Neville Chen philip Gao
一、 設計名稱
簡易數字頻率計
二、 設計任務
設計一臺至少5位數字顯示的簡易頻率計。
三、設計目的
1、熟悉GAL器件的結構,瞭解ABEL程式語言及其程式設計方法。
2、熟悉EDA軟體Lattice Synario的設計環境和方法。
3、掌握數字頻率計的工作原理及其設計方法。
4、掌握計數器和分頻器的原理及其設計方法。
四、設計要求
1、基本要求
(1)頻率測量
a. 測量範圍:訊號:方波,正弦波;
幅度:0.5V至5V;
頻率:1Hz~100KHz;
b. 測量誤差:≤0.1%;
(2)顯示器:實現十進位制數字顯示,顯示位數為5位。
(3)自行設計並製作時鐘電路,所配晶振為32768Hz。
五、實驗器件
1、Lattice ISp 1016 pLCC60C 可編邏輯陣列一片。
2、8段發光二極體顯示器5個,CD4511 BCD譯碼器5片。
3、32768Hz晶體振盪器一個,IC 7411一片,電容、電阻若干。
六、基本原理與設計過程
1、流程圖
2、實驗原理圖
實現頻率測量,應使被測訊號在1秒的閘門時間內用數字計數器計數,並將結果顯示出來。因為我們使用的是1秒的標準訊號,所以顯示出來的結果就是被測訊號的頻率值。
根據以上理論,我們設計的實驗原理圖如下:
3、圖中各模組電路的功能與實現方法如下:
1) 時鐘電路
受條件限制,我們使用的是32768Hz的晶體振盪器。為產生32768Hz的時鐘訊號,我們採用了下圖的振盪電路:
測量輸出為32763Hz(與所需訊號約有0.015%的誤差)、幅度為5V、佔空比為50%的方波。
2)分頻器
為實現寬度為1秒的閘門訊號, 將32768Hz時鐘訊號進行216(即32768)次分頻, 便可得到1秒的閘門訊號, 我們採用一個16位的二進位制計數器進行分頻,其中,16位二進位制計數器又以五個4位二進位制計數器級聯組成。4位二進位制計數器原理圖如下。
以上為使用T觸發器組成的同步帶進位二進位制計數器,電路為標準電路,根據數位電路教科書範例修改而成。其中,Q4,Q3,Q2,Q1分別為四位輸出,T為輸入脈衝訊號,CLK為同步時鐘,C為進位輸出。用五個4位二進位制計數器級聯(因為要考慮佔空比,所以空出最低一個計數器的最低端不用,故需要在最高階補回一個計數器,共需要五個計數器)就形成16位二進位制計數器,原理圖如下。
圖中C4單元即上面的4位二進位制計數器,它們的Q4-Q1分別與本圖中的Q14-Q1相連;Q15為最高階的計數器的Q1、Q2訊號“與”的結果;CLK為同步時鐘,VCC為高電平,C為溢位標誌。閘門時間由Q15輸出。Q15輸出的訊號的頻率為0.5Hz,週期為2秒,因為佔空比為50%,因而可以產生1秒的閘門時間。這個計數器還空出兩個擴充套件埠,即最高階計數器的Q3、Q4位,可用來實現控制脈衝及擴充套件部分。
3)閘閘電路
上圖中,FX輸入為需要測試的外部訊號,CLEAR為控制電路輸出的清零訊號,CK為控制電路輸出的時鐘訊號,COUT為輸出給十進位制計數器的時鐘訊號。這個電路將控制電路輸出的訊號處理成閘門訊號,並與被測訊號相“與”,產生需要測試的一段脈衝,並從COUT輸出給同步十進位制計數器作同步時鐘,從而達到計算脈衝個數的目的。
4)控制脈衝發生器
整個電路的控制訊號有兩個,分別是計數器清零訊號和顯示鎖存訊號,兩訊號的時序如下:當閘門開啟前,必須給一個清零訊號給計數器清零,從而使計數器在閘門開啟的時間內從零開始計數。當閘門訊號關閉時,計數器也停止計數。此時將計數結果送到顯示電路顯示。在計數器計數過程中,顯示電路必須鎖定,即不顯示計數器的'計數過程,而僅將每次的計數結果顯示出來。因此,要在閘門關閉的時間範圍內給一個脈衝來控制顯示電路的輸入。我們使用了ABEL語言來構造這個模組,程式如下:
MODULE NAND16_1
"Inputs
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15 pin;
"Outputs
V,LS,CTRL pin;
Equations
V= A0 & !A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !A14 & !A15;
LS= !A0 & !A1 & !A2 & !A3 & !A4 & !A5 & !A6 & !A7 & !A8 & !A9 & !A10 & !A11 & !A12 & !A13 & !A14 & A15;
CTRL= A0 & A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !A15;
END
由於我們設計的十進位制計數器的清零訊號是高電平有效的,因此我們取閘門開啟前的最後一個時鐘脈衝作為清零訊號V,這樣則有V= A0 & !A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !A14 & !A15 。對於顯示鎖存訊號,由於譯碼器CD4511的鎖存輸入端是低電平有效,但我們在該模組清零訊號輸出後又加了一個反相器才從晶片輸出到顯示電路,所以我們選取閘門訊號結束後的第一個時鐘作為顯示鎖存訊號LS,LS= !A0 & !A1 & !A2 & !A3 & !A4 & !A5 & !A6 & !A7 & !A8 & !A9 & !A10 & !A11 & !A12 & !A13 & !A14 & A15。控制訊號CTRL則被送入閘閘電路中作時鐘訊號。它是一個當分頻器計數到16383或32767時產生的一個脈衝訊號,故CTRL= A0 & A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !A15。
5)重新整理時間控制電路
為實現重新整理時間在1秒,0.1秒,0.01秒變換,就必須對分頻器進行預置。因為時鐘為32768Hz,則1秒共有32768個時鐘脈衝,預置數為32768-32768=0=(0000)16,即不用進行置位;而0.1秒約有3277個時鐘脈衝, 則預置數為32768-3277=29491=(7333)16,0.01秒約等於328個時鐘,預置數為32768-328=32440=(7EB8)16。我們對外部的選擇進行編碼,設(00)為1秒,(01)為0.1秒,(10)為0.01秒。為避免電路進入(11)的掛起現象,增設(11)為預設值1秒。將四個狀態用兩位編碼,輸出到分頻器,分頻器根據不同的狀態分別對二進位制計數器進行預置初始值,就可以動態地對訊號進行取樣了。由於時間及器件的侷限,本模組並沒有在實際電路中實現,特此說明。
6)5位十進位制計數器
該計數器是在閘門開啟時間內對被測訊號進行十進位制計數,並以BCD碼方式輸出。它由5個同步十進位制加法計數器組成,為避免非同步造成的時間延遲,我們採用同步進位,這也是一個標準電路。每個同步十進位制加法計數器模組的電路如下:
圖中Q1,Q2,Q4,Q8即8421碼對應各位,C為進位;T為控制T觸發器翻轉的脈衝訊號:最低階直接連VCC,以上每一級需要的T都由下面各級的進位C相“與”產生;RST為清零訊號輸入;CLK為控制各十進位制計數器的同步時鐘訊號。
7)顯示電路
顯示電路是將5位十進位制同步計數器輸出的BCD碼寄存起來並轉換為十進位制數字在LED顯示出來。具體電路如下圖:
4、總電路圖
如下圖:
七、測試過程中遇到的問題及解決方法
1、在編譯某一個模組時,系統常出現某些輸入節點出現不穩定狀態而導致出錯的資訊。經分析,我們知道了在模組中的輸入節點是不能懸空的,要麼接一個I/0 pAD,要麼接電源或地,否則就會出現狀態不穩定。
2、在ABEL語言程式的編譯中,系統常出現模組沒有時鐘訊號的錯誤提示。這是因為在Lattice Synario中,為了增加設計的靈活性,允許不同模組中採用不同的時鐘訊號。因而在ABEL語言程式設計時,必須定義模組的時鐘訊號,格式為OUT.AC=CLK。其中,OUT為模組輸出,CLK為定義的時鐘訊號,.AC則是變數OUT的點擴充套件屬性。
3、在整個工程的編譯中,多次出現設計所需的GLB超出晶片的GLB數的出錯提示。經分析,ISp 1016的內部提供的GLB為16個。GLB,即通用邏輯陣列塊,是一個與或陣列。對於一般的邏輯與非結構,基本不佔用GLB資源;但暫存器卻佔用大量GLB資源。經推算,我們估計大約四個暫存器便要佔用一個GLB資源。因而程式中不能用太多的暫存器,否則就很容易超出16個的限制。解決的方法可以是用與門、或門和非門等分立電路來表示暫存器,以減少GLB的消耗,但這樣可能會造成時延。另外一個辦法是將某些電路移出晶片,用分立元件來實現。
4、在接線過程中,我們發現ISp 1016的管腳並沒有和電路板的輸出腳連線,而且電路板的輸出腳號與ISp 1016的管腳號也並非一一對應。因此我們使用了萬用表,在ISp晶片的管腳與電路板的輸出腳之間測量其是否短路,以確定其對應關係。
5、由於所用電路板經長期使用,某些內部線路已出現斷路,致使電路不能正常輸出和顯示。對此,我們使用了萬用表測量判斷其是否連通。若斷路,則將元件往旁邊移位;如果位置上受限制無法移動元件,則用導線直接連線。個別節點還出現鬆動,我們便將粗導線插進去,補滿空隙以保證接觸良好。
7、在電路的除錯中,我們發現所設計的電路的抗干擾能力比較差。當我們測量100kHz的訊號時,結果往往只有30k~40kHz;但如果我們將示波器的電容探頭接到時鐘訊號輸入時,結果就為92kHz;如果輕輕碰一下CD4511或者有人在電路旁走過時,顯示結果就又會有明顯的下降,大約降到60~70kHz;當人遠離電路半米左右,則結果又會回到92kHz。我們認為這是由於電路中分佈電容的影響,亦有可能是閘門訊號的上升沿和下降沿不穩定所致。解決方法為:在晶振電路中加大電阻和在振盪電路輸出加一級反相器來提高上升沿和下降沿的穩定性。
八、感受與經驗
透過本次畢業實習,我鞏固了在“電子測量”方面所學的知識,並學習了p