摘要:信號(hào)發(fā)生器是科研及工程實(shí)踐中最重要的儀器之一,以往多用硬件組成,系統(tǒng)結(jié)構(gòu)比較復(fù)雜,可維護(hù)性和可操作性不佳。隨著計(jì)算機(jī)技術(shù)的發(fā)展,信號(hào)發(fā)生器的設(shè)計(jì)制作越來越多地使用計(jì)算機(jī)技術(shù),種類繁多,價(jià)格、性能差異很大。
在各種類信號(hào)發(fā)生器中,三角波信號(hào)發(fā)生器是最普通的一類。其原因除了三角信號(hào)容易產(chǎn)生,容易描述,還是比較廣泛的載波信號(hào)。顯然,由于信號(hào)發(fā)生器的性能,被測(cè)器件、設(shè)備各項(xiàng)性能參數(shù)的測(cè)量質(zhì)量,將直接依賴于信號(hào)發(fā)生器的性能。
關(guān)鍵詞:EDA技術(shù);三角波信號(hào)發(fā)生器;電路原理圖
中圖分類號(hào):R857,3 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1672—0407(2011)09—026—14
1.1 本課題目前發(fā)展?fàn)顩r
在研制、生產(chǎn)、測(cè)試和維修各種電子器件、部件以及整機(jī)設(shè)備時(shí),都需要有信號(hào)源,由它產(chǎn)生不同頻率、不同波形。有的將電壓、電流信號(hào)并加到被測(cè)器件、設(shè)備上,用其他測(cè)量?jī)x器觀察、測(cè)量被測(cè)者的輸出響應(yīng),以分析確定他們的性能參數(shù)。這種提供測(cè)試用電信號(hào)的裝置,統(tǒng)稱為信號(hào)發(fā)生器,用在電子測(cè)量領(lǐng)域,也稱為測(cè)試信號(hào)發(fā)生器。和示波器、頻譜分析儀等一樣,信號(hào)發(fā)生器是電子測(cè)量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。除了在電子技術(shù)尤其是電子測(cè)量方面的應(yīng)用外,信號(hào)發(fā)生器在其他領(lǐng)域也有很廣泛的應(yīng)用,例如機(jī)械部門的超聲波探傷,醫(yī)療部門的超聲波診斷、頻譜治療儀等。
信號(hào)發(fā)生器是輸出供給量的儀器,它產(chǎn)生頻率、幅度、波形等主要參數(shù)都可調(diào)節(jié)的信號(hào),有以下作用:
1 測(cè)元件參數(shù)。如電感,電容的值及品質(zhì)因數(shù)、損耗角等。
2 測(cè)網(wǎng)絡(luò)的幅頻特性、相頻特性。連續(xù)改變信號(hào)源的頻率,用示波器或電壓表測(cè)網(wǎng)絡(luò)的響應(yīng),屬于穩(wěn)態(tài)激勵(lì)、點(diǎn)頻測(cè)試。
3 測(cè)接收機(jī)。信號(hào)源發(fā)出射頻已調(diào)波,測(cè)接收機(jī)的靈敏度、選擇性、AGC范圍等指標(biāo)。
4 測(cè)量網(wǎng)絡(luò)的瞬態(tài)響應(yīng)。用方波或窄帶脈沖激勵(lì),測(cè)網(wǎng)絡(luò)的響應(yīng)、沖擊響應(yīng)、時(shí)間等。
5 校準(zhǔn)儀表。輸出頻率、幅度準(zhǔn)確的信號(hào),校準(zhǔn)儀表的衰減器、增益及刻度。
此外信號(hào)源在調(diào)試?yán)走_(dá)、電視、多路通訊系統(tǒng)和電子計(jì)算機(jī)、檢修電子儀器也是十分重要的設(shè)備。
1.2 課題的提出與意義
信號(hào)發(fā)生器是科研及工程實(shí)踐中最重要的儀器之一,以往多用硬件組成,系統(tǒng)結(jié)構(gòu)比較復(fù)雜,可維護(hù)性和可操作性不佳。隨著計(jì)算機(jī)技術(shù)的發(fā)展,信號(hào)發(fā)生器的設(shè)計(jì)制作越來越多地使用計(jì)算機(jī)技術(shù),種類繁多,價(jià)格、性能差異很大。
在各種類信號(hào)發(fā)生器中,三角波信號(hào)發(fā)生器是最普通的一類。其原因是三角信號(hào)容易產(chǎn)生,容易描述又是比較廣泛的載波信號(hào)。顯然,由于信號(hào)發(fā)生器的性能,被測(cè)器件、設(shè)備各項(xiàng)性能參數(shù)的測(cè)量質(zhì)量,將直接依賴于信號(hào)發(fā)生器的性能。
如果波形發(fā)生器單純地以單片機(jī)89C51為核心而設(shè)計(jì),則很難通過濾波電路在示波器上顯示出波形圖。但近年來隨著數(shù)字電子技術(shù)的飛速發(fā)展和電子設(shè)計(jì)技術(shù)的不斷提高,可編程邏輯器件(如CPLD、FPGA)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性。這些器件可以通過軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法,設(shè)計(jì)過程和設(shè)計(jì)觀念。
1.3 本課題設(shè)計(jì)內(nèi)容
本文將介紹的是利用EDA工具軟件,VHDL語言設(shè)計(jì)實(shí)現(xiàn)的三角波發(fā)生器。該波形發(fā)生器主要是通過外部輸入信號(hào)的不同而引起三角波形幅值的變化。本系統(tǒng)是以FPGA為核心,以單片機(jī)為主要控制器件,采用FPGA中的波形發(fā)生器控制電路對(duì)外來控制信號(hào)和高速時(shí)鐘信號(hào)進(jìn)行分頻控制,再通過D/A轉(zhuǎn)換,將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),從而可在示波器上顯示出三角波形。
本設(shè)計(jì)主要是依靠功能強(qiáng)大的計(jì)算機(jī),在EDA工具軟件平臺(tái)上,對(duì)以硬件描述語言VHDL為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化和仿真,直至下載到可編輯邏輯器件FPGA芯片中,實(shí)現(xiàn)既定地電子電路設(shè)計(jì)功能。通過EDA軟件平臺(tái)來完成對(duì)系統(tǒng)硬件功能地實(shí)現(xiàn),極大地提高了設(shè)計(jì)效率,縮短了設(shè)計(jì)周期,節(jié)省了設(shè)計(jì)成本。如圖1-1所示(是設(shè)計(jì)的方框圖)
2.1 硬件選擇
2.1.1 EDA處理模塊
方案1:FPGA部分采用EPFl0K30器件,用傳統(tǒng)的直接頻率合成器。這種方法能實(shí)現(xiàn)快速的頻率變換,具有低相位噪聲以及所有方法中最高的工作頻率。但由于采用大量的倍頻、分頻、混頻和濾波環(huán)節(jié),導(dǎo)致直接頻率合成器的結(jié)構(gòu)復(fù)雜、體積龐大、成本高,而且容易產(chǎn)生過多的雜散分量,難以達(dá)到較高的頻譜純度。更重要的是,這種方法只能實(shí)現(xiàn)正弦波,或者進(jìn)而進(jìn)行積分、微分等方法實(shí)現(xiàn)方波、三角波等標(biāo)準(zhǔn)波形,而對(duì)于我們所要求的任意波形卻無法實(shí)現(xiàn)。
方案2:FPGA部分采用EPFl0K30器件。利用鎖相環(huán),將壓控振蕩器的輸出頻率鎖定在所需頻率上。這種頻率合成器具有很好的窄帶跟蹤特性,可以很好的選擇所需頻率信號(hào),抑制雜散分量,并且避免了大量的濾波器,有利于集成化和小型化。但由于鎖相環(huán)本身是一個(gè)惰性環(huán)節(jié),鎖定時(shí)間較長(zhǎng),故頻率轉(zhuǎn)換的時(shí)間較長(zhǎng)。而且,由模擬方法合成的三角波的參數(shù),如幅度、頻率和占空比都很難控制。除此之外,同方案1類似,此方案也無法實(shí)現(xiàn)任意頻率的波形的輸出。
方案3:FPGA部分采用EPFl0K30器件。用64個(gè)點(diǎn)來構(gòu)成這個(gè)三角形,由鍵盤輸入的數(shù)值來改變?nèi)切蔚念l率、幅度、占空比的變化,經(jīng)D/A轉(zhuǎn)換,在示波器上可得所需波形。這樣去設(shè)計(jì)具有相對(duì)帶寬很寬,頻率轉(zhuǎn)換時(shí)間極短,頻率分辨率可以做到很高等優(yōu)點(diǎn);另外,全數(shù)字化結(jié)構(gòu)便于集成,輸出頻率、幅度、占空比均可實(shí)現(xiàn)程控,而且理論上能夠?qū)崿F(xiàn)任意頻率的三角波波形,可以全面的滿足本題目的要求。因此采用此種方案。
2.1.2 單片機(jī)鍵盤顯示處理模塊
方案:用單片機(jī)AT89C51直接與按鍵相連,串口接LED顯示電路。此種方法硬件電路簡(jiǎn)單易懂。
2.2 用Protel制圖的基本操作
電路原理圖的設(shè)計(jì)過程一般可以按照?qǐng)D2-1所示的流程圖進(jìn)行
具體說來可以分為以下的步驟:
(1)設(shè)置圖紙:根據(jù)實(shí)際電路的復(fù)雜程度來設(shè)置圖紙的大小,設(shè)置圖紙的過程實(shí)際是一個(gè)建立工作平面的過程。
(2)放置元件:這個(gè)階段,就是用戶根據(jù)實(shí)際電路的需要,從元件庫(kù)里取出所需的元件放置到工作平面上。用戶可以根據(jù)元件之間的走線等聯(lián)系對(duì)元件在工作平面上的位置進(jìn)行調(diào)整、修改,并對(duì)元件的編號(hào)、封裝進(jìn)行定義和設(shè)定等,為下一步工作打好基礎(chǔ)。
(3)原理圖的布線:該過程實(shí)際就是一個(gè)畫圖的過程。用戶利用Protel DXP提供的各種工具、指令進(jìn)行布線,將工作平面上的器件用具有電氣意義的導(dǎo)線、符號(hào)連接起來,構(gòu)成一個(gè)完整的電路原理圖。
(4)編輯與調(diào)整:在這一階段,用戶利用Prote]DXP提供的各種強(qiáng)大功能對(duì)所繪制的原理圖進(jìn)行進(jìn)一步地調(diào)整和修改,以保證原理圖的美觀和正確。這就需要對(duì)元件位置的重新調(diào)整,導(dǎo)線位置的刪除、移動(dòng),更改圖形尺寸、屬性及排列。
(5)進(jìn)一步完善用戶在此階段,可以充分利用Prote]DXP的強(qiáng)大功能來對(duì)原理圖進(jìn)行進(jìn)一步的補(bǔ)充和完善。如利用Protel DXP的繪圖工具繪制一些不具有電氣意義的圖形或者加入一些文字說明等。
(6)原理圖的輸出該部分是對(duì)設(shè)計(jì)完的原理圖進(jìn)行存盤、輸出打印,以供存檔。這個(gè)過程實(shí)際是對(duì)設(shè)計(jì)的圖形文件輸出的管理過程,是一個(gè)設(shè)置打印參數(shù)和打印輸出的過程。
印制電路板設(shè)計(jì)的流程圖(如圖2-2所示)
具體步驟如下:
(1)規(guī)劃電路板:在繪制印制電路板之前,用戶要對(duì)電路板有一個(gè)初步的規(guī)劃,比如說電路板采用多大的物理尺寸,采用幾層電路板,是單面板還是雙面板,各個(gè)器件采用何種封裝形式及其安裝位置等。這是一項(xiàng)極其重要的工作,是確定電路板設(shè)計(jì)的框架。
(2)設(shè)置參數(shù):參數(shù)的設(shè)置是電路板設(shè)計(jì)的非常重要的步驟。設(shè)置參數(shù)主要是設(shè)置元器件的布置參數(shù)、板層參數(shù)、布線參數(shù)等等。一般說來,有些參數(shù)用其默認(rèn)值即可,有些參數(shù)在使用過Protel DXP以后,即第一次設(shè)置后,以后幾乎無須修改。
(3)裝入網(wǎng)絡(luò)表及元件的封裝:網(wǎng)絡(luò)表是電路板自動(dòng)布線的靈魂,也是電路原理圖設(shè)計(jì)系統(tǒng)與印制電路板設(shè)計(jì)系統(tǒng)的接口。這一步也是非常重要的環(huán)節(jié)。只有將網(wǎng)絡(luò)表裝入之后,才可能完成對(duì)電路板的自動(dòng)布線。元器件的封裝就是元器件的外形,對(duì)于每個(gè)裝入的元器件必須有相應(yīng)的外形封裝,才能保證電路板布線的順利進(jìn)行。
(4元器件的布局:元器件的布局可以讓Protel DXP自動(dòng)布局。規(guī)劃好電路板并裝入網(wǎng)絡(luò)表后,用戶可以讓程序自動(dòng)裝入元件,并自動(dòng)將元件布置在電路板邊框內(nèi)。Protel DXP也可以讓用戶手工布局。元件的布局合理,才能進(jìn)行下一步的布線工作。
(5)自動(dòng)布線:Protel DXP采用世界最先進(jìn)的無網(wǎng)絡(luò)、基于形狀的對(duì)角線自動(dòng)布線技術(shù)。只要將有關(guān)的參數(shù)設(shè)置得當(dāng),元件的布局合理,才能進(jìn)行下一步的布線工作。
(6)手工調(diào)整:到目前為止,還沒有一種自動(dòng)布線軟件能夠完美到不需要手工調(diào)整的地步。自動(dòng)布線結(jié)束后,往往存在令人不滿意的地方,需要手工調(diào)整。
(7)文件保存及輸出。完成電路板的布線后,保存完成的電路線路圖文件。然后利用各種圖形輸出設(shè)備,如打印機(jī)或繪圖儀輸出電路板的布線圖。
2.3 系統(tǒng)框圖
圖中,信號(hào)發(fā)生器的主要模塊有計(jì)數(shù)器生成模塊、加減法器生成模塊、鎖存器生成模塊、頻率控制、幅度控制、顯示和鍵盤處理。其中,單片機(jī)用來改變?nèi)遣úㄐ蔚念l率、幅度、占空比參數(shù)值,并由FPGA來實(shí)現(xiàn)波形表的生成和頻率、計(jì)數(shù)和加法的控制,最終構(gòu)成一個(gè)三角波波形的信號(hào)發(fā)生器。
2.4 系統(tǒng)工作原理
利用單片機(jī)與EDA技術(shù)相結(jié)合,來實(shí)現(xiàn)三角波形信號(hào)發(fā)生器的功能。因?yàn)閱纹瑱C(jī)的控制能力強(qiáng),所以采用單片作為控制核心,單片機(jī)部分采用AT89C51,利用匯編語言編程。由于ASIC速度要比單片機(jī)快得多,所以采用FPGA實(shí)現(xiàn)主模塊功能。FPGA部分采用EPFl0K30器件,在MAX+PlusⅡ環(huán)境下利用VHDL語言編程。
本信號(hào)發(fā)生器其主要模塊有計(jì)數(shù)器生成模塊、加減法器生成模塊、鎖存器生成模塊、頻率控制、幅度控制、顯示和鍵盤處理。其中,單片機(jī)用來改變?nèi)遣úㄐ蔚念l率、幅度、占空比參數(shù)值,并由FPGA來實(shí)現(xiàn)頻率、計(jì)數(shù)和加法的控制,最終構(gòu)成一個(gè)三角波波形的信號(hào)發(fā)生器。
具體的實(shí)現(xiàn)過程如下:
由于此次所設(shè)計(jì)的波形發(fā)生器輸出的是三角波波形信號(hào),所以我們通過鍵盤的兩個(gè)按鍵輸入三角波的頻率,另外三個(gè)按鍵負(fù)責(zé)轉(zhuǎn)換、換位、開始,通過單片機(jī)送入到FPGA中。在FPGA中通過分頻器控制,并且由FPGA來實(shí)現(xiàn)波形的生成和頻率、計(jì)數(shù)和加減法的控制。當(dāng)波形信號(hào)的頻率輸入到FPGA中,經(jīng)過鎖存器控制模塊和分頻器控制模塊后,來確定頻率、幅度、占空比,再由D/A轉(zhuǎn)換器將輸入數(shù)據(jù)轉(zhuǎn)換成模擬信號(hào),經(jīng)濾波電路后輸出。其中,三角波波形數(shù)據(jù)由64個(gè)點(diǎn)構(gòu)成,此數(shù)據(jù)經(jīng)DAC0832,并經(jīng)濾波器后,可在示波器上觀察到三角波。(若按精密基準(zhǔn)電壓,可得到更為清晰的三角波形)。
2.5 FPGA頂層文件的具體實(shí)現(xiàn)原哩分析和說明
FPGA的頂層文件(如圖2-4所示)。
2.5.1 鎖存器模塊SHCH42
此次所設(shè)計(jì)實(shí)現(xiàn)的是對(duì)輸入的數(shù)值進(jìn)行鎖存。鎖存器是在某時(shí)刻采樣,輸出端保持采樣結(jié)果的器件,有clock上升沿鎖存,下降沿鎖存兩種。將輸入的頻率(幅度)值經(jīng)鎖存器鎖存,然后將數(shù)據(jù)準(zhǔn)確無誤的送入下一個(gè)模快。
2.5.2 分頻器模塊FPINl50C
此次所設(shè)計(jì)實(shí)現(xiàn)的是分頻功能。對(duì)給定頻率進(jìn)行分頻,以得到所需的頻率。
分頻器所起到的作用就更為明顯。其作用如下:
1 合理地分割各單元的工作頻段;
2 合理地進(jìn)行各單元功率分配;
3 使各單元之間具有恰當(dāng)?shù)南辔魂P(guān)系以減少各單元在工作中出現(xiàn)的信號(hào)失真;
4 利用分頻器的特性以彌補(bǔ)單元在某頻段里的缺陷;
5 將各頻段平順地對(duì)接起來。
2.5.3 鎖存器模塊SHCH4
此次所設(shè)計(jì)實(shí)現(xiàn)的是對(duì)輸入的數(shù)值進(jìn)行鎖存。主要是四位二進(jìn)制數(shù)的鎖存,主要是對(duì)占空比的參數(shù)的鎖存。
2.5.4 分頻器模塊FENPIN
此次所設(shè)計(jì)實(shí)現(xiàn)的是分頻功能。對(duì)給定頻率進(jìn)行分頻,以得到所需的頻率。此模快主要是對(duì)三角波的占空比的調(diào)節(jié)。
2.5.5 分頻器模塊FENPIN2
此次所設(shè)計(jì)實(shí)現(xiàn)的是分頻功能。此模快與上個(gè)模塊有互補(bǔ)的作用,主要是對(duì)三角波的占空比的調(diào)節(jié)。最小比值為1:9,最大比值為9:1。
2.5.6 計(jì)數(shù)器的設(shè)計(jì)COUNT
此次所設(shè)計(jì)實(shí)現(xiàn)的是計(jì)數(shù)的功能。主要實(shí)現(xiàn)兩個(gè)功能:
1 本次三角波的產(chǎn)生由64個(gè)點(diǎn)構(gòu)成,主要對(duì)64個(gè)點(diǎn)進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器計(jì)到63的時(shí),計(jì)數(shù)器重新再重0開始計(jì)數(shù)。再由7478來控制數(shù)的加減范圍,由一個(gè)端口輸入信號(hào),用此信號(hào)來控制計(jì)數(shù)器模塊輸出是加是減。
2 對(duì)占空比參數(shù)的調(diào)節(jié)。使這占空比不能出現(xiàn)錯(cuò)誤,如出現(xiàn)錯(cuò)誤則不能產(chǎn)生三角波。
2.6 主要芯片的選擇和介紹
2.6.1 主控芯片(FPGA)
FPGA是英文Field Programmable Gate Array的縮寫,即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。FPGA框圖如圖2-2所示。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
FPGA采用了邏輯單元陣列LCA(Logie CellArray)這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊CLB(configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Intereonneet)三個(gè)部分。FPGA的基本特點(diǎn)主要有:
(1)采用FPGA設(shè)計(jì)ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。
(3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。
(4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。
(5)FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TFL電平兼容。
可以說,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。
目前FPGA的品種很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。
FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。
加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。
FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程。
2.6.2 數(shù)/模轉(zhuǎn)換器芯片DAC0832
D/A集成芯片是把T型電阻解碼網(wǎng)絡(luò)及二進(jìn)制數(shù)碼控制的開關(guān)集成在一塊芯片上,通過附加一些功能電路可形成各種特性及功能不同的D/A芯片。
如圖2-6是DAC0832的內(nèi)部邏輯框圖,它采用了二次緩沖輸入數(shù)據(jù)方式(輸入寄存器及DAC寄存器)。這樣可以在輸出的同時(shí),采集下一個(gè)數(shù)字量,以提高轉(zhuǎn)換速度。
簡(jiǎn)單解釋一下引腳功能:
D0-D7:8位數(shù)字輸入,DO為最低位。
IOUTl:DAC電流輸出1。它是邏輯電平為1的各位輸出電流之和。
IOUT2:DAC電流輸出2。它是邏輯電平為0的各位輸出電流之和。
Rfb:反饋電阻,該電阻被制作在芯片內(nèi),用作運(yùn)算放大器的反饋電阻。
VREF:基準(zhǔn)電壓輸入,可以超出±10V范圍,芯片用于四象限乘時(shí),為模擬電壓輸入。
VCC:邏輯電源。+5V~+15V,最佳用+15V。
AGND:模擬地。芯片模擬信號(hào)接地點(diǎn)。
DGND:模擬地。芯片數(shù)字信號(hào)接地點(diǎn)。
D/A轉(zhuǎn)換器與微處理器的接口
由于D/A轉(zhuǎn)換器只有數(shù)據(jù)輸入線、選片和寫入控制線與微處理器有關(guān)。因此微處理器的接口比較簡(jiǎn)單,它可不需要應(yīng)答,直接把數(shù)據(jù)輸出給D/A轉(zhuǎn)換器。若D/A轉(zhuǎn)換器芯片內(nèi)帶有鎖存寄存器,微處理器就把D/A芯片當(dāng)作一個(gè)并行輸出端口;若D/A轉(zhuǎn)換器芯片內(nèi)無鎖存寄存器,微處理器就把D/A芯片當(dāng)作一個(gè)并行輸出的外設(shè),二者之間還需增加并行輸出的接口。數(shù)/模轉(zhuǎn)換器接口是通過D/A轉(zhuǎn)換器來實(shí)現(xiàn)模擬輸出,有時(shí)我們簡(jiǎn)稱為“模出”。
微處理器向D/A轉(zhuǎn)換器輸出數(shù)據(jù),是通過數(shù)據(jù)總線進(jìn)行的。由于微處理器要處理各種信息,使得輸給D/A轉(zhuǎn)換器的數(shù)據(jù)在數(shù)據(jù)總線上停留時(shí)間很短,因而在一般情況下需要鎖存器來保存微處理器送給D/A轉(zhuǎn)換器的數(shù)據(jù),直至轉(zhuǎn)換結(jié)束。對(duì)于芯片內(nèi)部有輸入鎖存器的D/A芯片,在微處理器與D/A芯片之間可以不加鎖存器,對(duì)于D/A芯片內(nèi)無鎖存器的,則需加鎖存器,可采用8212、8255、Z80一PIO等接口芯片,也可用SM74100八位雙穩(wěn)態(tài)鎖存器。
2.6.3 控制芯片AT89C51介紹
AT89C5 1是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and ErasableRead Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51引腳圖(如圖2-7所示)。
1 主要特性:
·與MCS-51兼容
·4K字節(jié)可編程閃爍存儲(chǔ)器
·壽命:1000寫/擦循環(huán)
·數(shù)據(jù)保留時(shí)間:10年
·全靜態(tài)工作:0Hz-24Hz
·三級(jí)程序存儲(chǔ)器鎖定
·128×8位內(nèi)部RAM
·32可編程I/O線
·兩個(gè)16位定時(shí)器/計(jì)數(shù)器
·5個(gè)中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時(shí)鐘電路
2 管腳說明:
VCC:供電電壓。
GND:接地。
P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TYL門電流。當(dāng)P1口的管腳第一次寫l時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FLASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TYL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,Pl口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TFL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TYL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(I TJTJ)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2/INT0(外部中斷0)
P3.3/INTl(外部中斷1)
P3.4 T0(記時(shí)器0外部輸入)
P3.5 T1(記時(shí)器1外部輸入)
P3.6/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)
P3.7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置如此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
3 振蕩器特性
XTALl和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。
4 芯片擦除
整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。
2.6.4 LED顯示器的介紹
LED(Light Emitting Diode)是發(fā)光二極管的英文名稱的縮寫。LED顯示器是有發(fā)光二極管構(gòu)成的,所以在顯示器前面冠以“LED”。LED顯示器在單片機(jī)控制系統(tǒng)中應(yīng)用廣泛。
1 LED顯示器的結(jié)構(gòu)。
常用的LED顯示器為8段(或7段,8段比7段多了一個(gè)小數(shù)點(diǎn)“dp”段),每個(gè)對(duì)應(yīng)一個(gè)發(fā)光二極管。這種顯示器有共陰和共陽(yáng)兩種。如圖所示,共陰LED顯示器的發(fā)光二極管陰極連在一起,通常此公共陰極接地。當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮,相應(yīng)的段被顯示。同樣,共陽(yáng)極的LED顯示器的發(fā)光二極管的陽(yáng)極連在一起,通常此公共陽(yáng)極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平時(shí),發(fā)光二極管被點(diǎn)亮,相應(yīng)的段被顯示。為了使LED顯示器不同的字符或數(shù)字,就要把不同段的發(fā)光二極管點(diǎn)亮,這樣就要為L(zhǎng)ED顯示器提供代碼,因?yàn)檫@些代碼可使LED相應(yīng)的段發(fā)光,從而顯示不同的字符,因此該代碼稱之為段碼(或稱為字符段)。
7段發(fā)光二極管,在加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段。因此提供給LED顯示器的段碼(或字型碼)正好是lB。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如圖2-8。
上表只列出了部分段碼,可以根據(jù)實(shí)際情況選用。另外,段碼是相對(duì)的,它由各字段在字節(jié)中所處的位決定。如下表中LED是按格式:而形成的,對(duì)于“0”的段碼為3FH(共陰)。如果將段碼改為下列格式:則字符“0”的段碼變?yōu)椋?EH(共陰)。總之,字型及段碼由設(shè)計(jì)者自己設(shè)定,不必拘于上表。但是一般習(xí)慣還是以“a”段對(duì)應(yīng)的段碼為最低位。
2 LED顯示器有靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。
(1)LED靜態(tài)顯示方式
LED顯示器工作于靜態(tài)顯示方式時(shí),各位的共陰極(或共陽(yáng)極)連接在一起并接地(或+5V);每位的段碼線(a~dp)分別與一個(gè)8位的鎖存器輸出相連。之所以稱為靜態(tài)顯示,是因?yàn)楦鱾€(gè)LED的顯示字符一經(jīng)確定,相應(yīng)的鎖存器鎖存的段碼輸出將維持不變,直到送入另一個(gè)字符的段碼為止。正因?yàn)槿绱耍o態(tài)顯示器的亮度都較高。
如圖2-8:位選線串聯(lián)接入+5V(或接地),每個(gè)LED的段碼線分別接入4個(gè)I/O口,就構(gòu)成了一個(gè)4位靜態(tài)LED顯示器電路。該電路各位可獨(dú)立顯示,只要在該位的段碼線上保持段碼電平,該位就能保持相應(yīng)的顯示字符。由于各位有一個(gè)8位的數(shù)據(jù)輸出口(例如8255A的A、B、C口)控制段碼線,故在同一時(shí)間里,每一位顯示的字符可以各不相同。這種顯示方式接口容易編程,付出的代價(jià)是占用口線太多。如上圖,若用I/O口線接口,則要占用4個(gè)8位的I/O口,若用鎖存器(如74LS373)接口,則需要4片74LS373芯片,如果顯示器的位數(shù)增加,則需要增加鎖存器,因此在顯示位數(shù)較多的情況下,一般都采用動(dòng)態(tài)顯示方式。
(2)LED動(dòng)態(tài)顯示方式
在多位LED顯示時(shí),為簡(jiǎn)化電路,通常將所有位相應(yīng)的段碼線并聯(lián)在一起,由一個(gè)8位I/O口控制,形成段碼線的多路復(fù)用,而各位的共陽(yáng)極或共陰極分別由相應(yīng)的I/O口線控制,形成各位的分時(shí)選通。如上圖所示:位選線由4位的I/O口控制,4個(gè)LED的段碼線并聯(lián)在一起,接入一個(gè)8位的I/O控制線,就組成了一個(gè)4位8段的LED動(dòng)態(tài)顯示器電路。段碼線占用一個(gè)8位的I/O,位選線占用一個(gè)4位的I/O口。由于各位的段碼是并聯(lián)的,8位的I/O口輸出的段碼對(duì)于各個(gè)顯示位來說都是相同的。因此在同一時(shí)刻,只要讓某一位的位選線處于選通狀態(tài)的話,4位LED將顯示相同的字符,若要各位顯示出與本位相應(yīng)的顯示字符,就必須采用動(dòng)態(tài)顯示方式,即在某一時(shí)刻,只要讓某一位的位選線處于選通的狀態(tài),而其它各位的位選線都處于關(guān)閉狀態(tài),同時(shí),段碼線上輸出相應(yīng)位要顯示的字符段碼。這樣,在同一時(shí)刻,4位LED中只有選通的那一位顯示字符,而其它3位是熄滅的。同樣,在同一時(shí)刻,只要讓下一位處于選通的狀態(tài)的話,而其它的位選線都處于關(guān)閉狀態(tài),在段碼線上輸出將要顯示的字符,則在同一時(shí)刻,只有選通位顯示出相應(yīng)的字符,而其它各位是熄滅的。如此循環(huán)下去,就可以使各位顯示出將要顯示的字符。雖然這些字符不在同一時(shí)刻出現(xiàn)的,而在同一時(shí)刻只有一位顯示,其它各位熄滅,但由于LED顯示器的余輝和人眼視覺的暫留作用,只要每位顯示的時(shí)間夠足夠短,則可以造成多位同時(shí)亮的假象,達(dá)到同時(shí)顯示的效果。
LED顯示的時(shí)間間隔應(yīng)根據(jù)實(shí)際情況而定。發(fā)光二極管從導(dǎo)通到發(fā)光有一定的延時(shí),導(dǎo)通時(shí)間太短,則發(fā)光太弱,人眼無法看清;但也不能時(shí)間太長(zhǎng),因?yàn)橐芟抻谂R界閃爍頻率,而且次時(shí)間太長(zhǎng),則占用的CPU時(shí)間太多。另外,顯示位數(shù)增多,也將占用大量的CPU時(shí)間,因此動(dòng)態(tài)顯示的實(shí)質(zhì)是犧牲CPU的時(shí)間來?yè)Q器件的減少。
3.1 總體設(shè)計(jì)思想
本次所設(shè)計(jì)的三角形發(fā)生器,是一種基于軟硬件結(jié)合的,以實(shí)時(shí)處理為目的器件。它是利用單片機(jī)與EDA技術(shù)相結(jié)合,來實(shí)現(xiàn)三角波波形信號(hào)發(fā)生器的功能。單片機(jī)部分采用AT89C51,利用匯編語言編程。FPGA部分采用EPFl0K30器件,在MAX+PlusⅡ環(huán)境下利用VHDL語言編程。所以,軟件編程分為兩個(gè)部分:即通過單片機(jī)編程實(shí)現(xiàn)鍵盤輸入數(shù)據(jù)及數(shù)碼管顯示部分和關(guān)于VHDL語言設(shè)計(jì)的波形生成及輸出部分。
3.2 單片機(jī)部分的設(shè)計(jì)及流程
對(duì)于單片機(jī)部分,我們可以通過鍵盤輸入任意數(shù)據(jù),用兩個(gè)按鍵控制三角波的頻率增加或減少,用一個(gè)鍵來控制三個(gè)參數(shù)即頻率、幅度、占空比的轉(zhuǎn)換,還有一個(gè)鍵是換位鍵,最后一個(gè)就是開始鍵,并且能夠在數(shù)碼管上顯示出所鍵入的數(shù)據(jù)。然后單片機(jī)將接收到的數(shù)據(jù)傳送給控制芯片F(xiàn)PGA,通過FPGA的功能從而實(shí)現(xiàn)三角波波形的輸出。單片機(jī)的設(shè)計(jì)部分包括顯示程序和鍵盤處理程序兩個(gè)部分,流程圖如圖3-1所示。
3.3 VHDL語言的設(shè)計(jì)
3.3.1 八位二進(jìn)制鎖存器的設(shè)計(jì)(sHCH42)
(1)程序如下:
LIBRARY IEEE;
USE IEEE.STD LOGIC 1164.ALL:
ENTTTTY SHCH42 IS
PORT(DIN:IN STD—LOGIC—VECTOR(7 D0wNT0 0);
DOUT:BUFFER
STD LOGIC VECTOR
f7
DOWNT0 01:
S:IN STD LOGIC:
ZT:0UT STD LOGIC 1:
END ENTTTY:
ARCHITECTURE ONE OF SHCH42 IS
BEGIN
PROCESS(S)
BEGIN
IF RISING EDGEfSl THEN
DOUT<=DIN:
ENDIF:
END PROCESS:
ZT<=‘0’WHEN DOUT=”00000000”ELSE
‘1’:
END ONE:
(2)程序說明:
此模塊實(shí)現(xiàn)的是對(duì)輸入的數(shù)值進(jìn)行鎖存。鎖存器是在某時(shí)刻采樣,輸出端保持采樣結(jié)果的器件,有clock上升沿鎖存,下降沿鎖存兩種。將輸入的頻率(幅度)值經(jīng)鎖存器鎖存,然后將數(shù)據(jù)準(zhǔn)確無誤地送入下一個(gè)模快。
(3)波形仿真如圖3—2所示。
3.3.2 分頻器的設(shè)計(jì)(FPINl50c)
(1)程序如下:
LIBRARY IEEE:
USE IEEE.STD LOGIC 1164.ALL:
USE IEEE.STD LOGIC UNSIGNED.ALL:
ENTTTY FPINl50C IS
PORTfCLKI:IN STD LOGIC:
CONST:IN INTEGER RANGE O TO 150:
CLKO:BUFFER STD LOGIC:
END ENTITY:
ARCHrrECTURE 0NE 0F FPINl50C IS
SIGNAL M:INTEGER RANGE O TO 150:
BEGIN
PROCESS(CLKI.CONST)
BEGIN
IF CONST=O THEN
CIJK0<=CLKI:
ELSIF RISING EDGEfCLKn THEN
IF M=CONST THEN CLK0<=‘1’:M<=0:
ELSE M<=M+1:CLK0<=‘0’:
ENDIF:
ENDIF:
END PROCESS:
END ONE:
(2)程序說明:
此次所設(shè)計(jì)實(shí)現(xiàn)的是分頻功能。對(duì)給定頻率進(jìn)行分頻,以得到所需的頻率。
(3)波形仿真如圖3—3所示
3.3.3 四位二進(jìn)制鎖存器的設(shè)計(jì)(sHcH4)
(1)程序如下:
LIBRARY IEEE:
USE IEEE,STD LOGIC 1 164,AIJTJ:
ENTTTY SHCH4 IS
PORT(DIN:IN STD—LOGIC—VECTOR(3 DOWNT0 0);
DOUT:BUFFER
STD LOGIC VECTOR (3DOWNT0 0):
S:IN STD LOGIC:
ZT:OUT STD LOGICl:
END ENTTTY:
ARCHITECTURE ONE OF SHCH4 IS
BEGIN
PROCESS(S)
BEGIN
IF S=‘1’THEN
DOUT<=DIN:
ENDIF:
END PROCESS:
ZT<=‘0’WHEN DOUT=”0000”ELSE
‘1’:
END ONE:
(2)程序說明:
此模塊實(shí)現(xiàn)的是對(duì)輸入的數(shù)值進(jìn)行鎖存。主要是四位二進(jìn)制數(shù)的鎖存,主要是對(duì)占空比的參數(shù)的鎖仔。
(3)波形仿真如圖3—4所示。
3.3.4 分頻器的設(shè)計(jì)(FENPIN)
(1)程序如下:
LIBRARY IEEE:
USE IEEE,STD LOGIC 1164.ALL:
ENTTTY FENPIN IS
PORTfCLK:IN STD LOGIC:
CON:IN INTEGER RANGE 0 TO 9:
CC:OUT STD LOGIC):
END ENTTTY:
ARCHITECTURE ONE OF FENPIN IS
SIGNAL M1:INTEGER RANGE 0 T0 9:
BEGIN
PROCESS(CLK)
BEGIN
IF RISING EDGEfCLKl THEN
IF(M1=CON)THEN CC<=‘1’;M1<=0;
ELSE M1<=Ml+1:CC<=‘0’:
ENDIF:
ENDIF:
END PROCESS:
END ONE:
(2)程序說明:
此模塊計(jì)實(shí)現(xiàn)的是分頻功能。對(duì)給定頻率進(jìn)行分頻,以得到所需的頻率。此模塊主要是對(duì)三角波的占空比的調(diào)節(jié)。
(3)波形仿真如圖3—5所示。
3.3.5 分頻器的設(shè)計(jì)(FENPIN2)
(1)程序如下:
LIBRARY IEEE:
USE IEEE.STD LOGIC 1 164,ALL:
USE IEEE.STD LOGIC UNSIGNED,ALL:
ENTTTY FENPTN2 IS
PORT(CLK)IN STD LOGIC:
CON:IN INTEGER RANGE 0 TO 9:
CC:OUT STD LOGIC):
END ENTITY:
ARCHTEECTURE 0NE 0F FENPIN2 IS
SIGNAL M1:INTEGER RANGE 0 TO 9:
SIGNAL M2:INTEGER RANGE 0 TO 9:
BEGIN
M2<=9-CON:
PROCESS (CLK)
BEGIN
IF RISING EDGE(CLK) THEN
IF(M1=M2)THEN CC<=‘1’;M1<=0;
ELSE M1<=Ml+1:CC<=‘0’:
ENDIF:
ENDIF:
END PROCESS:
END ONE:
(2)程序說明:
此模塊實(shí)現(xiàn)的是分頻功能。此模塊與上個(gè)模塊有互補(bǔ)的作用,主要是對(duì)三角波的占空比的調(diào)節(jié)。最小比值為1:9,最大比值為9:1。
(3)波形仿真如圖3—6所示。
3.3.6 計(jì)數(shù)器的設(shè)計(jì)(COUNT)
(1)程序如下:
LIBRARY IEEE:
USE IEEE.STD LOGIC 1164.ALL:
ENTITY COUNT IS
PORT(CLK),CLK2,CTR0:IN STD—LOGIC;
M:OUT INTEGER RANGE 0 TO 63:
CZ,CF:OUT STD_LOGIC);
ENDENTITY:
ARCHITECTURE ONE OF COUNT IS
SIGNAL M1:INTEGER RANGE 0 TO 63:
SIGNAL CLK:STD LOGIC:
BEGIN PROCESS(CLK,CTRO)
BEGIN
IF RISING EDGE(CLK) THEN
IF CTR0=‘1’THEN CZ<=‘0’:
IF M1=62 THEN CF<=‘1’:
ELSE CF<=‘0’:END IF:
IF M1=63 THEN M1<=0:
ELSE M1<=M1+1:
ENDIF:
ELSE CF<=‘0’:
IF M1=1 THEN CZ<=‘1’:
ELSE CZ<=‘0’:END IF:
IF M1=0 THEN M1<=63:
ELSE M1<=M1—1:
ENDIF:
ENDIF:
ENDIF:
END PROCESS:
M<=M1:
CLK<=CLKI W HEN CTRO=T ELbE
CLK2:
END ONE:
(2)程序說明:
此模塊實(shí)現(xiàn)的是計(jì)數(shù)的功能。主要實(shí)現(xiàn)兩個(gè)功能:
1 本次三角波的產(chǎn)生由64個(gè)點(diǎn)構(gòu)成,主要對(duì)64個(gè)點(diǎn)進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)器計(jì)到63的時(shí),計(jì)數(shù)器重新再重0開始計(jì)數(shù)。再由7478來控制數(shù)的加減范圍,由一個(gè)端口輸入信號(hào),用此信號(hào)來控制計(jì)數(shù)器模塊輸出是加是減。
2 對(duì)占空比參數(shù)的調(diào)節(jié)。使這占空比不能出現(xiàn)錯(cuò)誤,如出現(xiàn)錯(cuò)誤則不能產(chǎn)生三角波。
(3)波形仿真如圖3—7所示。
4.1 硬件調(diào)試
4.1.1 調(diào)試過程
首先將硬件電路板接通電源和示波器,輸入電壓5V,通過四個(gè)按鍵來改變?nèi)遣ǖ念l率、幅度、占空比。其中有一個(gè)鍵是轉(zhuǎn)換鍵,即頻率、幅度、占空比之間的轉(zhuǎn)換,兩個(gè)鍵控制選定參數(shù)值大小,還有一個(gè)為確認(rèn)鍵。選擇要轉(zhuǎn)換的參數(shù),按確認(rèn)鍵選定,再通過兩個(gè)鍵來改變其參數(shù)數(shù)值,然后在示波器上顯示,且三角波形是由64個(gè)點(diǎn)構(gòu)成的一個(gè)三角波形。
4.1.2 注意事項(xiàng):其中注意電源的正負(fù)極性不要接反。
4.2 軟件調(diào)試
4.1.2 調(diào)試過程
1 單片機(jī)部分。
單片機(jī)的設(shè)計(jì)包括顯示程序和鍵盤處理程序兩個(gè)部分。在程序編譯通過后,將程序固化到89C51中,我們可以通過改變硬件電路板上的4個(gè)按鍵,觀察數(shù)碼管上是否有相應(yīng)的顯示,如果正確,說明程序無誤,單片機(jī)已經(jīng)將頻率和相位的數(shù)值送入到FPGA中了。
2 FPGA部分。
FPGA部分是由3個(gè)部分構(gòu)成:分頻器(FPINI50C、FENPIN、FENPIN2)、鎖存器(sHCH42、SHCH4)、計(jì)數(shù)器(cOUNT)。將這個(gè)部分的程序分別在EDA的工作環(huán)境下編譯通過之后,進(jìn)行波形仿真。如果波形仿真正確,說明程序無誤可以實(shí)現(xiàn)正弦波的顯示。然后將程序編譯到FPGA中,通過硬件連接和調(diào)試,從而實(shí)現(xiàn)兩路正弦波的波形輸出。如圖4-1、圖4-2、圖4-3、圖4-4、圖4-5、圖4-6所示分別為分頻器(FPIN150C、FENPIN、FENPIN2)、鎖存器(SHCH42、SHCH4)、計(jì)數(shù)器(COUNT)的編譯結(jié)果。
4.2.2 注意事項(xiàng)
注意在EDA環(huán)境下的波形仿真。如果波形仿真正確,說明程序無誤,可以實(shí)現(xiàn)最后波形的輸出;如果波形仿真錯(cuò)誤,則說明程序不正確,需要改正后再編譯調(diào)試直至正確為止。在示波器上觀察波形,要注意示波器的使用要正確。
5.1 結(jié)論
在邵邴新老師的帶領(lǐng)和幫助下,我取得了較大的成績(jī),首先完成了設(shè)計(jì)題目的基本要求,并實(shí)現(xiàn)了單片機(jī)與FPGA相結(jié)合的三角波的波形信號(hào)發(fā)生器。
通過本次畢業(yè)設(shè)計(jì),使我鞏固了以前所學(xué)的EDA技術(shù)、單片機(jī)、數(shù)字電子、模擬電子的知識(shí),并把理論知識(shí)應(yīng)用到了實(shí)踐中去,這樣大大加強(qiáng)了我的動(dòng)手、動(dòng)腦能力。我認(rèn)為當(dāng)今社會(huì)是信息技術(shù)高速發(fā)展的時(shí)代,優(yōu)勝劣汰也逐漸顯露出來,這就要求我們要有真才實(shí)學(xué),這樣才能在激烈的競(jìng)爭(zhēng)中脫穎而出,展現(xiàn)出你的才華,才能更好的生存,否則將會(huì)被這個(gè)社會(huì)淘汰。
對(duì)于剛畢業(yè)的大學(xué)生來說,要想找到一份稱心的工作,就必須具備扎實(shí)的理論知識(shí)和較強(qiáng)的動(dòng)手能力,而本次設(shè)計(jì)正鍛煉了我這方面的能力,使我學(xué)到了許多知識(shí),我相信這幾個(gè)月的設(shè)計(jì)會(huì)對(duì)我產(chǎn)生巨大的影響,同時(shí)它也激發(fā)了我學(xué)習(xí)的興趣,使我受益匪淺。
5.2 展望
隨著FPGA性能的不斷提高,其速度將越來越快,內(nèi)部集成的門電路越來越多,但是其價(jià)格將呈不斷下降的趨勢(shì)。利用FPGA開發(fā)數(shù)字信號(hào)發(fā)生器已被各大公司采用。預(yù)計(jì)在不遠(yuǎn)的將來會(huì)出現(xiàn)頻率穩(wěn)定度更高、步進(jìn)電壓更大,步進(jìn)頻率更小的任意波形信號(hào)發(fā)生器。
5.2.1 EDA技術(shù)的發(fā)展與應(yīng)用
電子設(shè)計(jì)技術(shù)的核心就是EDA技術(shù),EDA是指以計(jì)算機(jī)為工作平臺(tái),融合應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)最新成果而研制成的電子CAD通用軟件包,主要能輔助進(jìn)行三方面的設(shè)計(jì)工作,即IC設(shè)計(jì)、電子電路設(shè)計(jì)和PCB設(shè)計(jì)。EDA技術(shù)已有30年的發(fā)展歷程,大致可分為三個(gè)階段。20世紀(jì)70年代為計(jì)算機(jī)輔助設(shè)計(jì)(CAD)階段,人們開始用計(jì)算機(jī)輔助進(jìn)行IC版圖編輯、PCB布局布線,取代了手工操作。20世紀(jì)80年代為計(jì)算機(jī)輔助工程(CAE)階段。與CAD相比,CAE除了有純粹的圖形繪制功能外,又增加了電路功能設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實(shí)現(xiàn)了工程設(shè)計(jì)。CAE的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動(dòng)布局布線,PCB后分析。90年代為電子系統(tǒng)設(shè)計(jì)自動(dòng)化(EDA)階段。
5.2.2 EDA技術(shù)的基本特征
EDA代表了當(dāng)今電子設(shè)計(jì)技術(shù)的最新發(fā)展方向,它的基本特征是:設(shè)計(jì)人員按照“自頂向下”的設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成電路(ASIC)實(shí)現(xiàn),然后采用硬件描述語言(HDL)完成系統(tǒng)行為設(shè)計(jì),最后通過綜合器和適配器生成最終的目標(biāo)器件,這樣的設(shè)計(jì)方法被稱為高層次的電子設(shè)計(jì)方法。
5.2.3 EDA技術(shù)的基本設(shè)計(jì)方法
EDA技術(shù)的每一次進(jìn)步,都引起了設(shè)計(jì)層次上的一次飛躍,圖5-1示出EDA技術(shù)設(shè)計(jì)層次的飛躍。物理級(jí)設(shè)計(jì)主要指IC版圖設(shè)計(jì),一般由半導(dǎo)體廠家完成,對(duì)電子工程師沒有太大的意義,因此本文重點(diǎn)介紹電路級(jí)設(shè)計(jì)和系統(tǒng)級(jí)設(shè)計(jì)。
1 電路級(jí)設(shè)計(jì)工作流程如圖5-2所示。電子工程師接受系統(tǒng)設(shè)計(jì)任務(wù)后,首先確定設(shè)計(jì)方案,并選擇能實(shí)現(xiàn)該方案的合適元器件,然后根據(jù)具體的元器件設(shè)計(jì)電路原理圖。接著進(jìn)行第一次仿真,其中包括數(shù)字電路的邏輯模擬、故障分析,模擬電路的交直流分析、瞬態(tài)分析。在進(jìn)行系統(tǒng)仿真時(shí),必須要有元件模型庫(kù)的支持,計(jì)算機(jī)上模擬的輸入輸出波形代替了實(shí)際電路調(diào)試中的信號(hào)源和示波器。這一次仿真主要是檢驗(yàn)設(shè)計(jì)方案在功能方面的正確性。
仿真通過后,根據(jù)原理圖產(chǎn)生的電氣連接網(wǎng)絡(luò)表進(jìn)行PCB板的自動(dòng)布局布線。在制作PCB板之前還可以進(jìn)行PCB后分析,其中包括熱分析、噪聲及竄擾分析、電磁兼容分析、可靠性分析等,并可將分析后的結(jié)果參數(shù)反標(biāo)回電路圖,進(jìn)行第二次仿真,也稱為后仿真。后仿真主要是檢驗(yàn)PCB板在實(shí)際工作環(huán)境中的可行性。
由此可見,電路級(jí)的EDA技術(shù)使電子工程師在實(shí)際的電子系統(tǒng)產(chǎn)生前,就可以全面地了解系統(tǒng)的功能特性和物理特性,從而將開發(fā)風(fēng)險(xiǎn)消滅在設(shè)計(jì)階段,縮短了開發(fā)時(shí)間,降低了開發(fā)成本。
2.4系統(tǒng)級(jí)設(shè)計(jì)進(jìn)入20世紀(jì)90年代以來,電子信息類產(chǎn)品的開發(fā)明顯呈現(xiàn)兩個(gè)特點(diǎn):一是產(chǎn)品復(fù)雜程度提高;二是產(chǎn)品上市時(shí)限緊迫。然而,電路級(jí)設(shè)計(jì)本質(zhì)上是基于門級(jí)描述的單層次設(shè)計(jì),設(shè)計(jì)的所有工作(包括設(shè)計(jì)輸入、仿真和分析、設(shè)計(jì)修改等)都是在基本邏輯門這一層次上進(jìn)行的,顯然這種設(shè)計(jì)方法不能適應(yīng)新的形勢(shì),一種高層次的電子設(shè)計(jì)方法,也即系統(tǒng)級(jí)設(shè)計(jì)方法,應(yīng)運(yùn)而生。
高層次設(shè)計(jì)是一種“概念驅(qū)動(dòng)式”設(shè)計(jì),設(shè)計(jì)人員無須通過門級(jí)原理圖描述電路,而是針對(duì)設(shè)計(jì)目標(biāo)進(jìn)行功能描述。由于擺脫了電路細(xì)節(jié)的束縛,設(shè)計(jì)人員可以把精力集中于創(chuàng)造性的方案與概念的構(gòu)思上,一旦這些概念構(gòu)思以高層次描述的形式輸入計(jì)算機(jī),EDA系統(tǒng)就能以規(guī)則驅(qū)動(dòng)的方式自動(dòng)完成整個(gè)設(shè)計(jì)。這樣,新的概念就能迅速有效地成為產(chǎn)品,大大縮短了產(chǎn)品的研制周期。不僅如此,高層次設(shè)計(jì)只是定義系統(tǒng)的行為特性,可以不涉及實(shí)現(xiàn)工藝,因此還可以在廠家綜合庫(kù)的支持下,利用綜合優(yōu)化工具將高層次描述轉(zhuǎn)換成針對(duì)某種工藝優(yōu)化的網(wǎng)絡(luò)表,使工藝轉(zhuǎn)化變得輕而易舉。首先,工程師按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分。其次,輸入VHDL代碼,這是高層次設(shè)計(jì)中最為普遍的輸入方式。
此外,還可以采用圖形輸入方式(框圖,狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點(diǎn)。第三步是,將以上的設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)的VHDL文件。第四步是進(jìn)行代碼級(jí)的功能仿真,主要是檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性。這一步驟適用大型設(shè)計(jì),因?yàn)閷?duì)于大型設(shè)計(jì)來說,在綜合前對(duì)源代碼仿真,就可以大大減少設(shè)計(jì)重復(fù)的次數(shù)和時(shí)間。一般情況下,這一仿真步驟可略去。第五步是,利用綜合器對(duì)VHDL源代碼進(jìn)行綜合優(yōu)化處理,生成門級(jí)描述的網(wǎng)絡(luò)表文件,這是將高層次描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。綜合優(yōu)化是針對(duì)ASIC芯片供應(yīng)商的某一產(chǎn)品系列進(jìn)行的,所以綜合的過程要在相應(yīng)的廠家綜合庫(kù)支持下才能完成。第六步是,利用產(chǎn)生的網(wǎng)絡(luò)表文件進(jìn)行適配前的時(shí)序仿真,仿真過程不涉及具體器件的硬件特性,是較為粗略的。一般的設(shè)計(jì),也可略去這一仿真步驟。第七步是利用適配器將綜合后的網(wǎng)絡(luò)表文件針對(duì)某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,包括底層器件配置、邏輯分割、邏輯優(yōu)化、布局布線。第八步是在適配完成后,產(chǎn)生多項(xiàng)設(shè)計(jì)結(jié)果:
(1)適配報(bào)告,包括芯片內(nèi)部資源利用情況,設(shè)計(jì)的布爾方程描述情況等;
(2)適配后的仿真模型;
(3)器件編程文件。
根據(jù)適配后的仿真模型,可以進(jìn)行適配后的時(shí)序仿真,因?yàn)橐呀?jīng)得到器件的實(shí)際硬件特性(如時(shí)延特性),所以仿真結(jié)果能比較精確地預(yù)期未來芯片的實(shí)際性能。如果仿真結(jié)果達(dá)不到設(shè)計(jì)要求,就需要修改VHDL源代碼或選擇不同速度和品質(zhì)的器件,直至滿足設(shè)計(jì)要求;最后一步是將適配器產(chǎn)生的器件編程文件通過編程器或下載電纜載入到目標(biāo)芯片F(xiàn)PGA或CPLD中。如果是大批量產(chǎn)品開發(fā),則通過更換相應(yīng)的廠家綜合庫(kù),輕易地轉(zhuǎn)由ASIC形式實(shí)現(xiàn)。
小結(jié):綜上所述,EDA技術(shù)是電子設(shè)計(jì)領(lǐng)域的一場(chǎng)革命,目前正處于高速發(fā)展階段,每年都有新的EDA工具問世。廣大電子工程人員掌握這一先進(jìn)技術(shù),這不僅是提高設(shè)計(jì)效率的需要,更是我國(guó)電子工業(yè)在世界市場(chǎng)占有一席之地的重要技術(shù)手段。