基于ARM核心的STM32F103VCT6微控制器設計的簡易數(shù)碼相機_第1頁
基于ARM核心的STM32F103VCT6微控制器設計的簡易數(shù)碼相機_第2頁
基于ARM核心的STM32F103VCT6微控制器設計的簡易數(shù)碼相機_第3頁
基于ARM核心的STM32F103VCT6微控制器設計的簡易數(shù)碼相機_第4頁
基于ARM核心的STM32F103VCT6微控制器設計的簡易數(shù)碼相機_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

PulseIntervalModulation–DualHeader(PIM-DH)引言在通信系統(tǒng)的科研實驗中,常常需要用到多種不同頻率和相位的信號,如正弦波、三角波、方波和鋸齒波等,因此多波形信號發(fā)生器的應用十分廣泛。傳統(tǒng)的波形發(fā)生器多采用模擬分立元件實現(xiàn),產(chǎn)生的波形種類要受到電路硬件的限制,體積大,靈活性和穩(wěn)定性也相對較差。近年來,以數(shù)字技術為基礎的波形發(fā)生器得到了飛速的發(fā)展,性能指標都達到了一個新的水平?,F(xiàn)場可編程門陣列器件具有容量大、運算速度快、現(xiàn)場可編程等優(yōu)點,使得許多復雜的電路有了新的實現(xiàn)途徑,越來越被廣泛地應用到實際系統(tǒng)中。本文參考直接數(shù)字頻率合成原理,利用Max-PIUSII軟件和Matlab數(shù)學工具,基于FPGA配合相應外圍器件實現(xiàn)多波形信號發(fā)生器,電路結構簡單、易于擴展,具有極大的靈活性和方便性。實現(xiàn)的多波形發(fā)生器可產(chǎn)生正弦波、三角波、鋸齒波和方波等信號,輸出信號頻率在0Hz一100KHz范圍內(nèi)可調(diào)。1設計任務設計一基于FPGA的多波形發(fā)生器。設計目標為,可以實現(xiàn)穩(wěn)定的正弦波、三角波、方波的輸出,輸出頻率范圍:1Hz~100KHz,且頻率可調(diào)(步進1Hz)。2設計思路及原理DDS的工作原理是以數(shù)控振蕩器的方式產(chǎn)生頻率、相位可控制的正弦波。電路一般包括基準時鐘、頻率累加器、相位累加器、幅度/相位轉換電路、D/A轉換器和低通濾波器(LPF)。頻率累加器對輸入信號進行累加運算,產(chǎn)生頻率控制數(shù)據(jù)X(frequencydata或相位步進量)。相位累加器由N位全加器和N位累加寄存器級聯(lián)而成,對代表頻率的2進制碼進行累加運算,是典型的反饋電路,產(chǎn)生累加結果Y。幅度/相位轉換電路實質上是一個波形寄存器,以供查表使用。讀出的數(shù)據(jù)送入D/A轉換器和低通濾波器。市場上目前專用的DDS芯片種類比較多,雖然他們的輸出頻率高、輸出波形好,但是輸出波形比較單一,一般只有正弦(余弦)波和方波;另外專用DDS芯片的輸入已經(jīng)固定,當需要一個變化靈活的頻率或相位時,可能無法通過這些輸入信息達到要求;這些都限制了專用DDS芯片的使用范圍。而用FPGA實現(xiàn)的DDS電路則不一樣,由于波形信息存儲在RoM中,可以通過改變RoM中的存儲內(nèi)容達到實現(xiàn)不同波形的要求。同樣波形是和頻率、相位有關系的,因此也可以通過修改ROM中的波形數(shù)據(jù)來實現(xiàn)比較靈活的頻率和相位要求。另外專用DDS芯片的功耗大,價格高,相比而言用FPGA實現(xiàn)的電路在這些方面同樣具有很大的優(yōu)勢。而且由于FPGA自身的特點,能夠很容易在FPGA內(nèi)部生成多個基本模塊,從而開發(fā)出功能強大的芯片。另外FLEX1OK器件還提供了可供選擇的時鐘鎖定和時鐘自舉電路,這兩種電路中均含有用來提高設計速度和減少資源占用的鎖相環(huán),可以支持高速設計。通過MAX+PLUSI或者QUARTUS軟件可以調(diào)用FPGA的內(nèi)部模塊或者VHDL語言設計電路,使電路的設計、修改變得簡單方便2.1DDS工作原理及原理框圖直接數(shù)字頻率合成(DDS)技術是60年代末出現(xiàn)的第三代頻率合成技術,以Nyquist時域采樣定理為基礎,在時域中進行頻率合成。DDS具有相對帶寬很寬,頻率轉換時間極短(可小于20ns),頻率分辨率可以做到很高(典型值為0.001Hz)等優(yōu)點;另外,全數(shù)字化結構便于集成,輸出相位連續(xù),頻率、相位、幅度都可以實現(xiàn)程控,通過更換波形數(shù)據(jù)可以輕易實現(xiàn)任意波形功能??偟膩碚f,新一代的直接數(shù)字頻率合成器采用全數(shù)字的方式實現(xiàn)頻率合成,與傳統(tǒng)的頻率合成技術相比,具有以下特點:(1)頻率轉換快。直接數(shù)字頻率合成是一個開環(huán)系統(tǒng),無任何反饋環(huán)節(jié),其頻率轉換時間主要由頻率控制字狀態(tài)改變所需的時間及各電路的延時時間所決定,轉換時間很短。(2)頻率分辨率高、頻點數(shù)多。DDS輸出頻率的分辨率和頻點數(shù)隨機位累加器的位數(shù)的增長而呈指數(shù)增長。分辨率高達μHz。(3)相位連續(xù)。DDS在改變頻率時只需改變頻率控制字(即累加器累加步長),而不需改變原有的累加值,故改變頻率時相位是連續(xù)的。(4)相位噪聲小。DDS的相位噪聲主要取決于參考源的相位噪聲。(5)控制容易、穩(wěn)定可靠。高集成度、高速和高可靠是FPGA/CPLD最明顯的特點,其時鐘延遲可達納秒級,結合其并行工作方式,在超高速應用領域和實時測控方面有非常廣闊的應用前景。在高可靠應用領域,如果設計得當,將不會存在類似于MCU的復位不可靠和PC可能跑飛等問題。CPLD/FPGA的高可靠性還表現(xiàn)在,幾乎可將整個系統(tǒng)下載于同一芯片中,實現(xiàn)所謂片上系統(tǒng),從而大大縮小了體積,易于管理和屏蔽。所以,采用FPGA來實現(xiàn)DDS有明顯的好處。2.2具體工作過程圖2-1DDS結構上圖所示是一個基于的DDS電路的工作原理框圖DDS的工作原理是以數(shù)控振蕩器的方式產(chǎn)生頻率、相位可控制的正弦波。電路一般包括基準時鐘、頻率累加器、相位累加器、幅度/相位轉換電路、D/A轉換器和低通濾波器(LPF)。頻率累加器對輸入信號進行累加運算,產(chǎn)生頻率控制數(shù)據(jù)X(frequencydata或相位步進量)。相位累加器由N位全加器和N位累加寄存器級聯(lián)而成,對代表頻率的2進制碼進行累加運算,是典型的反饋電路,產(chǎn)生累加結果Y。幅度/相位轉換電路實質上是一個波形寄存器,以供查表使用。讀出的數(shù)據(jù)送入D/A轉換器和低通濾波器。每來一個時鐘脈沖Fclk,N位加法器將頻率控制數(shù)據(jù)X與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結果Y送至累加寄存器的輸入端。累加寄存器一方面將在上一時鐘周期作用后所產(chǎn)生的新的相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一時鐘的作用下繼續(xù)與頻率控制數(shù)據(jù)X相加;另一方面將這個值作為取樣地址值送入幅度/相位轉換電路,幅度/相位轉換電路根據(jù)這個地址輸出相應的波形數(shù)據(jù)。最后經(jīng)D/A轉換器和低通濾波器將波形數(shù)據(jù)轉換成所需要的模擬波形。相位累加器在基準時鐘的作用下,進行線性相位累加,當相位累加器加滿量時就會產(chǎn)生一次溢出,這樣就完成了一個周期,這個周期也就是DDS信號的頻率周期。DDS輸出信號的頻率由下式給定:(2-1)假定基準時鐘為,累加器為24位,則再假定X=1000000Mhz,則可見,通過設定相位累加器位數(shù)、頻率控制字X和基準時鐘的值,就可以產(chǎn)生任意頻率的輸出。DDS的頻率分辨率定義為:Fout=Fclk/Y(2-2)由于基準時鐘一般固定,因此相位累加器的位數(shù)就決定了頻率分辨率。如上面的例子,相位累加器為24位,那么頻率分辨率就可以認為是24位。位數(shù)越多,分頻率越高。3系統(tǒng)電路的設計及原理3.1系統(tǒng)原理用FPGA實現(xiàn)多波形信號發(fā)生器基于直接數(shù)字頻率合成技術。圖1以正弦輸出為例,概括了直接數(shù)字頻率合成器的結構和原理。圖1中頻率控制字和相位控制字分別控制DDS輸出波形的頻率和相位。DDS系統(tǒng)的核心是Nbit相位累加器。相位累加器以頻率控制字為步長進行地址抽取,以參考時鐘周期為采樣率,產(chǎn)生待合成信號的數(shù)字化相位取樣值。隨后通過查表變換,數(shù)字相位取樣值被轉化為信號波形的數(shù)字幅度序列,再由數(shù)/模變換器(DAC)將代表波形幅度的數(shù)字序列轉化為模擬電壓,最后經(jīng)由低通濾波器將DAC輸出的階梯狀波形平滑為所需的連續(xù)波形。若頻率控制字設為K,相位累加器為N位,參考時鐘頻率fc,則輸出頻率為(3-1)最小頻率分辨率為(3-2)DDS的輸出頻率下限對應于頻率控制字K=0的情形,即fout=0根據(jù)奈奎斯特抽樣定律,DDS的輸出上限頻率為時鐘頻率的1/2,即(3-3)但由于實際輸出低通濾波器的非理想特性,工程上可實現(xiàn)的頻率上限為(3-4)即若參考頻率為fc,DDS的輸出頻率范圍是0~2/5fc。由于DDS的模塊化結構,其輸出波形由波形查找表中的數(shù)據(jù)來決定,因此,只需改變查找表中的數(shù)據(jù),即可以方便地利用DDS產(chǎn)生出正弦波之外的其他波形,如余弦波、方波、三角波、鋸齒波甚至調(diào)頻、調(diào)相波以及帶限的噪聲信號。系統(tǒng)總框圖如(圖3-1)所示。圖3-1系統(tǒng)整體框圖3.2各模塊具體實現(xiàn)原理分析和說明3.2.1外圍電路FPGA的外圍電路如(圖3-2)所示圖3-2FPGA的外圍電路單片機是用來控制整個電路的,他負責輸入FPGA的頻率、相位信息,對鍵盤和顯示模塊的控制。鍵盤用來輸入需要的頻率和相位信息,經(jīng)單片機再輸入FPGA。顯示模塊用來顯示輸入的頻率、相位信息以及輸出頻率等狀態(tài)。DAC用來將FPGA輸出的數(shù)字信息轉換成模擬信息。LPF濾除不必要的頻率,使波形更加平滑。3.2.2頻率控制模塊這一模塊是由FPGA實現(xiàn)的,F(xiàn)PGA完成相位累加器的功能,而頻率控制字X是由外部撥碼開關給出的。 相位累加器(見圖3-3)是實現(xiàn)DDS的核心,它由一個N位字長的二進制加法器和一個固定時鐘脈沖取樣的N位相位寄存器組成。相位寄存器的輸出與加法器的一個輸入端在fcN位相位寄存器N位加法器N位相位寄存器N位加法器頻率控制字X輸出序列N圖3-3相位累加器結構內(nèi)部相連,加法器的另一個輸入端是外部輸入的頻率控制字X。這樣,在每個時鐘到達時,相位寄存器采樣上個時鐘周期內(nèi)相位寄存器的值與頻率控制字X之和,并作為相位累加器在這一時鐘周期的輸出。頻率控制字X決定了相應的相位增量,相位累加器則不斷地對該相位增量進行線性累加,當相位累加器積滿兩時就會產(chǎn)生一次溢出,從而完成一個周期性的動作,這個動作周期即是DDS合成信號的一個頻率周期。于是,輸出信號波形的頻率表示式為(3-5)由該式可知,輸出信號頻率主要取決于頻率控制字X,當X增大時,可以不斷的增高,由抽樣定理,最高輸出頻率不得大于/2,而根據(jù)實驗所得,實際工作頻率小于/3時較為合適。由于受到FPGA芯片資源限制,所能達到的頻率不是很高,范圍也不是很廣。根據(jù)設計目標,決定取=51200Hz,選取4.096MHz有源晶振,經(jīng)過80分頻,得到基準頻率為51200Hz。N為9位。這樣,頻率分辨率為可以達到的最高最佳頻率為51200/3≈17KHz。另外Altera還在它們公司的VHDL設計平臺MAX+PLUS上提供了LPM_ADD_SUB核和LPM_DFF核,利用MAX+PLUS綜合可以自動編譯包含LPM_ADD_SUB和LPM_DFF元件的文件,本設計利用LPM_ADD_SUB核以及LPM_DFF核在FPGA上實現(xiàn)相位累加器。3.2.3ROM查找表設計FPGA的結構是由基于半定制門陳列的設計思想而得到的。從本質上講,FPGA是一種比半定制還方便的ASIC設計技術。FPGA的結構主要分為三部分:可編程邏輯塊、可編程I?O模塊、可編程內(nèi)部連線??删幊踢壿媺K的構造主要有兩種類型:即基于查找表的結構類型和基于乘積項的結構類型。查找表型FPGA的可編程邏輯單元是由功能為查找表的SRAM構成邏輯函數(shù)發(fā)生器,實現(xiàn)與其它功能塊的可編程連接。在此,選用FLEX10K系列FPGA作為目標芯片,FLEX10K系列是Altera公司于1995年推出的產(chǎn)品,它的集成度達到了10萬門,而且在FPGA中首次集成了嵌入式存儲器塊的芯片。它是查找表型FPGA,由輸入-輸出控制模塊(IOC)、嵌入式陣列塊(EAB)、邏輯陣列塊(LAB)和快速通道(FASTTRACK)構成。其中EAB是一種輸入輸出端帶有寄存器的非常靈活的RAM,它既可以用來作為存儲器使用,也可以用來實現(xiàn)邏輯功能。每一個EAB有容量為2048位的RAM,可配置為存儲器或邏輯函數(shù),FLEX10K系列中不同型號的芯片其中包含的EAB的數(shù)目不同,FLEX10K10有3個EAB。另外Altera還在它們公司的VHDL設計平臺MAX+PLUS上提供了LPMROM核,利用MAX+PLUS綜合可以自動編譯包含LPMROM元件的文件,在FLEX10K10的EAB上產(chǎn)生ROM功能。本設計利用LPMROM核預置正弦查找表在FPGA上。LPM2ROM核簡介:輸入端口:address[]~ROM的地址信號;輸出端口:q[]~ROM的輸出數(shù)據(jù)。具體參數(shù):LPM_WIDTH:輸出數(shù)據(jù)的寬度(1~64任選);LPM_WIDTHAD:輸入地址的寬度(1~12任選);LPM_FILE:存儲器初始化文件名(.mifor.hex)。本設計中各參數(shù)設置如下:LPM_WIDTH:=>8;LPM_WIDTHAD=>9;LPM_OUTDATA=>”UNREGISTERED”;LPM_ADDRESS_CONTROL=>"UNREGISTERED";其中LPM_FILE的“.mif”中存放正弦的值,可由文本形式生成,也可由高級語言如C語言生成。ROM查找表在整個設計中是一個比較重要的部分。為了保證波形的平滑,設計時可將一個周期分為512個點。但是,點數(shù)太多時,用文本方式輸入可能有很多困難。因此,應當用C語言描述正弦方程式,最后再將其轉化為所需的mif文件。下面是用TC來在512.mif文件里產(chǎn)生512個點的正弦波數(shù)據(jù)的源程序:#include<stdio.h>#include"math.h"intmain(){ints; inti; FILE*fp; fp=fopen("512.mif","r+");fprintf(fp,"--MAX+plusII-generatedMemoryInitializationFile\n");fprintf(fp,"--By00022809\n\n\n\n\n"); fprintf(fp,"WIDTH=8;\n\n");fprintf(fp,"DEPTH=512;\n\n"); fprintf(fp,"ADDRESS_RADIX=HEX;\n\n"); fprintf(fp,"DATA_RADIX=HEX;\n\n"); fprintf(fp,"CONTENTBEGIN\n"); for(i=0;i<512;i++) {s=abs(sin(atan(1.0)*8/512*i)*255); fprintf(fp,"%x\t:\t%x;\n",i,s); } fprintf(fp,"END;\n"); fclose(fp);}這樣就可以得到一個周期512個點的波形數(shù)據(jù)。ROM存儲器是設計人員在許多設計電路中不可缺少的關鍵部件,特別是在一些特殊的運算場合,設計人員通常利用ROM改造出各種各樣的查找表,以簡化電路,提高電路的處理速度和穩(wěn)定性。在FPGA器件中實現(xiàn)存儲器功能,需要占用芯片的存儲單元,而這種資源是十分有限的,如何在FPGA器件的存儲單元和邏輯單元的使用效率上取得最佳折衷是設計人員必須細心考慮的問題。一個好的設計應該是速度、可靠性和資源利用率三者的最佳結合。對于鋸齒波、三角波、方波等相位/幅度對應關系比較簡單的信號,則可以通過直接計算得到幅度數(shù)據(jù),無需占用有限的ROM資源。這一部分相位/幅度轉換采用VerilogHDL語言完成。3.2.4數(shù)模轉換模塊數(shù)模轉換。本來欲打算采用轉換速度為85ns,帶寬為10MHz的8位單調(diào)高速乘法器ADDAC08或者是DAC0800。但由于都購買不到,而改為使用轉換速度為1us帶寬為1MHz的DAC0832,這樣最高頻率就不是很高。DAC0832為電流輸出型D/A轉換器,需要外接運算放大器進行電流電壓變換才能得到模擬電壓輸出。輸出方式為單極性輸出方式的時候,輸出級接一低電壓溫漂運放op07作為電壓電流轉換器,在運算放大器的輸出端就可以得到單極性模擬電壓:(3-6)3.2.5濾波輸出電路模塊D/A輸出后,通過濾波電路,使信號平滑。濾波器在通帶內(nèi)的平坦程度對我們而言,比其衰減更為重要,而且,巴特沃斯濾波器的元件值也較合乎實際情況,不像絕大多數(shù)其他類型濾波器對元件值要求那么苛刻。在截止頻率附近,頻率響應鈍化可能使這些濾波器在要求銳截止的地方不合要求。二階巴特沃斯有源低通濾波器設計(圖3-4):正弦波的輸出頻率小于10KHz,為保證10KHz頻帶內(nèi)輸出幅度平坦,又要盡可能抑制諧波和高頻噪聲,綜合考慮取R1=1KΩ,R2=1KΩ,C1=100pF,C=100pF圖3-4有源低通濾波器設計3.3設計所用關鍵元器件的介紹3.3.1FLEX10K系列FPGA概述。FLEX10K是工業(yè)界第一個嵌入式的可編程邏輯器件,采用可重構的CMOSSRAM工藝,把連續(xù)的快速通道互連與獨特的嵌入式陣列結構相結合,同時也結合了眾多可編程器件的優(yōu)點來完成普通門陣列的宏功能。由于其具有高密度、低成本、低功率等特點,所以脫穎而出成為當今AlteraPLD中應用最好的器件系列。其集成度已達到25萬門。它能讓設計人員輕松地開發(fā)出集存儲器、數(shù)字信號處理器及特殊邏輯包括32位多總線系統(tǒng)等強大功能于一身的芯片。到目前為止,已經(jīng)推出了FLEX10K、FLEX10KA、FLEX10KV、FLEX10KE等分支系列。FLEX10K結構類似于嵌入式門陣列,是門陣列市場中成長最快的器件。像標準門陣列一樣,嵌入式門陣列采用一般的門海(seaofgates)結構實現(xiàn)普通邏輯,因此,在實現(xiàn)大的特殊邏輯時會有潛在死區(qū)。與標準門陣列相比,嵌入式門陣列通過在硅片中嵌入邏輯塊的方法來減少死區(qū),提高速度。然而,典型的嵌入式宏功能模塊通常是不能改變的,這就限制了設計人員的選擇。相反,F(xiàn)LEX10K器件是可編程的,在調(diào)試時它允許設計人員全面控制嵌入式宏功能模塊和一般的邏輯,可以方便地反復修改設計。 每個FLEX10K器件包含一個嵌入式陣列和一個邏輯陣列。嵌入式陣列用來實現(xiàn)各種存儲器及復雜的邏輯功能,如數(shù)字信號處理、微控制器、數(shù)據(jù)傳輸?shù)?。邏輯陣列用來實現(xiàn)普通邏輯功能,如計數(shù)器、加法器、狀態(tài)機、多路選擇器等。嵌入式陣列和邏輯陣列結合而成的嵌入式門陣列的高性能和高密度特性,使得設計人員可在單個器件中實現(xiàn)一個完整的系統(tǒng)。 FLEX10K器件的配置通常是在系統(tǒng)上電時,通過存儲于一個串行PROM中的配置數(shù)據(jù)或者由系統(tǒng)控制器提供的配置數(shù)據(jù)來完成。Altera提供EPC1、EPC2、EPC16和EPC1441等配置用的PROM器件,配置數(shù)據(jù)也能從系統(tǒng)RAM和BitBlaster串行下載電纜或ByteBlasterMV并行下載電纜獲得。對于配置過的器件,可以通過重新復位器件、加載新數(shù)據(jù)的方法實現(xiàn)在線可配置(ICR,In-CircuitReconfigurability)。由于重新配置要求少于320ms,因此可在系統(tǒng)工作時實時改變配置。FLEX10K器件由MAX+PLUSII開發(fā)軟件支持。(2)FLEX10K器件系列的特點。①FLEX10K是工業(yè)界第一種嵌入式的PLD器件系列,具有實現(xiàn)宏功能的嵌入式陣列(例如實現(xiàn)高效存儲器和特殊的邏輯功能)和實現(xiàn)普通功能的邏輯陣列,可提供可編程單芯片系統(tǒng)(SOPC)集成。②高密度:1萬~25萬個可用門。高達40960位內(nèi)部RAM(每個EAB有2048位),所有這些都可在不減少邏輯能力的情況下使用。③系統(tǒng)級特點:支持多電壓接口;在FLEX10KA器件中允許輸入的引腳電壓為5.0V,在FLEX10KB器件中允許輸入的引腳電壓為3.3V和5.0V;低功耗(維持狀態(tài)小于0.5mA);遵守PCI總線規(guī)定;內(nèi)帶JTAG邊界掃描測試電路;邊界掃描測試電路;器件采用先進的工藝制造并可在2.5V、3.3V、5.0V電源電壓下工作。所有器件都100%經(jīng)過功能測試。④靈活的內(nèi)部連接:快速、可預測連線延時的快速通道(FastTrack)連續(xù)式布線結構;實現(xiàn)快速加法器、計數(shù)器和比較器的專用進位鏈;實現(xiàn)高速、多輸入邏輯函數(shù)的專用級聯(lián)鏈;實現(xiàn)內(nèi)部三態(tài)總線的三態(tài)模擬;多達六個全局時鐘信號和四個全局清除信號。⑤強大的I/O引腳功能:每個引腳都有一個獨立的三態(tài)輸出使能控制及漏極開路配置選項(Open-drainoption);可編程輸出電壓的擺率控制,可有減少開關噪聲。FLEX10KA、FLEX10KE、FLEX10KS器件支持熱拔插。⑥多種封裝方式:用戶可任意選擇84~600引腳的各種封裝。封裝形式有PLCC、TQFP、PQFP、RQFP、PGA、BGA等,同一種封裝中的各種FLEX10K系列器件的引腳相兼容。 FLEX10K還包括了一個優(yōu)化界面,允許微處理器以串行方式或并行方式、同步方式或異步方式對FLEX10K器件進行配置。 FLEX10K的這些特點使得FLEX10K器件成為替代傳統(tǒng)門陣列專用的理想選擇,其使用非常廣泛;又由于FLEX10K系列的芯片都帶有JTAG口(JointTestActionGroup—聯(lián)合測試行動組),能夠使用JTAGPROGRAM指令進行配置;為了盡量簡化電路,所以本設計采用FLEX10K系列產(chǎn)品中的FLEX10K器件,該型號芯片采用PLCC封裝,有84個管腳,其中I/O引腳個數(shù)為59。FLEX10K的主要引腳和引腳名稱的對應關系如(表3-1)所示。表3-1FLEX10K10的主要引腳和引腳名稱引腳名稱輸出引腳引腳名稱輸出引腳MSEL0(2)31MSEL1(2)32nSTATUS(2)55nCONFIG(2)34DCLK(2)13CONF-DONE(2)76INIT-DONE(3)69nCE(2)14nCEO(2)75nWS(4)80nRS(4)81nCS(4)78CS(4)79RDYnBSY(4)70CLKUSR(4)73DATA7(4)5DATA6(4)6DATA5(4)7DATA4(4)8DATA3(4)9DATA2(4)10DATA1(4)11DATA0(2),(5)12TDI(2)15TDO(2)74TCK(2)77TMS(2)57TRST(2)56DedicatedInput2,42,44,84DedicatedClockPins1,43DEVB-CLRn(3)3DEV-OE(3)83VCCINT4,20,33,40,45,63GNDINT26,41,46,68,82TotalUserI/OPins59注: ⑴沒有列出所有的用戶I/O引腳。 ⑵該引腳為專用引腳,不能用作用戶I/O引腳。 ⑶該引腳如果沒有用于器件配置功能,則它可用作用戶I/O引腳。 ⑷該引腳在器件配置后可用作用戶I/O引腳。 ⑸該引腳在用戶模式中是三態(tài)。 ⑹用戶I/O引腳數(shù)包括專用輸入引腳、專用時鐘引腳和所有I/O引腳。(3)FPGA結構與原理①查找表(Look-Up-Table)的原理與結構采用這種結構的PLD芯片我們也可以稱之為FPGA:如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。查找表(Look-Up-Table)簡稱為LUT,LUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的16x1的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發(fā)軟件會自動計算邏輯電路的所有可能的結果,并把結果事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應的內(nèi)容,然后輸出即可。(表3-2)是一個4輸入與門的例子,表3-2實際邏輯電路LUT的實現(xiàn)方式a,b,c,d輸入邏輯輸出地址RAM中存儲的內(nèi)容00000000000001000010....0...01111111111②基于查找表(LUT)的FPGA的結構

我們看一看xilinxSpartan-II的內(nèi)部結構,如下圖:圖3-5xilinxSpartan-II的內(nèi)部結構Spartan-II主要包括CLBs,I/O塊,RAM塊和可編程連線(未表示出)。在spartan-II中,一個CLB包括2個Slices,每個slices包括兩個LUT,兩個觸發(fā)器和相關邏輯。Slices可以看成是SpartanII實現(xiàn)邏輯的最基本結構(xilinx其他系列,如SpartanXL,Virtex的結構與此稍有不同,具體請參閱數(shù)據(jù)手冊)altera的FLEX/ACEX等芯片的結構如下圖:圖3-6alteraFLEX/ACEX芯片的內(nèi)部結構圖3-7邏輯單元(LE)內(nèi)部結構FLEX/ACEX的結構主要包括LAB,I/O塊,RAM塊(未表示出)和可編程行/列連線。在FLEX/ACEX中,一個LAB包括8個邏輯單元(LE),每個LE包括一個LUT,一個觸發(fā)器和相關的相關邏輯。LE是FLEX/ACEX芯片實現(xiàn)邏輯的最基本結構(altera其他系列,如APEX的結構與此基本相同,具體請參閱數(shù)據(jù)手冊)③查找表結構的FPGA邏輯實現(xiàn)原理我們還是以這個電路的為例:圖3-8A,B,C,D由FPGA芯片的管腳輸入后進入可編程連線,然后作為地址線連到到LUT,LUT中已經(jīng)事先寫入了所有可能的邏輯結果,通過地址查找到相應的數(shù)據(jù)然后輸出,這樣組合邏輯就實現(xiàn)了。該電路中D觸發(fā)器是直接利用LUT后面D觸發(fā)器來實現(xiàn)。時鐘信號CLK由I/O腳輸入后進入芯片內(nèi)部的時鐘專用通道,直接連接到觸發(fā)器的時鐘端。觸發(fā)器的輸出與I/O腳相連,把結果輸出到芯片管腳。這樣PLD就完成了圖3所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預)這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發(fā)器就可以完成。對于一個LUT無法完成的的電路,就需要通過進位邏輯將多個單元相連,這樣FPGA就可以實現(xiàn)復雜的邏輯。由于LUT主要適合SRAM工藝生產(chǎn),所以目前大部分FPGA都是基于SRAM工藝的,而SRAM工藝的芯片在掉電后信息就會丟失,一定需要外加一片專用配置芯片,在上電的時候,由這個專用配置芯片把數(shù)據(jù)加載到FPGA中,然后FPGA就可以正常工作,由于配置時間很短,不會影響系統(tǒng)正常工作。也有少數(shù)FPGA采用反熔絲或Flash工藝,對這種FPGA,就不需要外加專用的配置芯片。④其他類型的FPGA和PLD

隨著技術的發(fā)展,在2004年以后,一些廠家推出了一些新的PLD和FPGA,這些產(chǎn)品模糊了PLD和FPGA的區(qū)別。例如Altera最新的MAXII系列PLD,這是一種基于FPGA(LUT)結構,集成配置芯片的PLD,在本質上它就是一種在內(nèi)部集成了配置芯片的FPGA,但由于配置時間極短,上電就可以工作,所以對用戶來說,感覺不到配置過程,可以傳統(tǒng)的PLD一樣使用,加上容量和傳統(tǒng)PLD類似,所以altera把它歸作PLD。還有像Lattice的XP系列FPGA,也是使用了同樣的原理,將外部配置芯片集成到內(nèi)部,在使用方法上和PLD類似,但是因為容量大,性能和傳統(tǒng)FPGA相同,也是LUT架構,所以Lattice仍把它歸為FPGA。⑤選擇PLD還是FPGA?根據(jù)上一篇PLD的結構和原理可以知道,PLD分解組合邏輯的功能很強,一個宏單元就可以分解十幾個甚至20-30多個組合邏輯輸入。而FPGA的一個LUT只能處理4輸入的組合邏輯,因此,PLD適合用于設計譯碼等復雜組合邏輯。但FPGA的制造工藝確定了FPGA芯片中包含的LUT和觸發(fā)器的數(shù)量非常多,往往都是幾千上萬,PLD一般只能做到512個邏輯單元,而且如果用芯片價格除以邏輯單元數(shù)量,F(xiàn)PGA的平均邏輯單元成本大大低于PLD。所以如果設計中使用到大量觸發(fā)器,例如設計一個復雜的時序邏輯,那么使用FPGA就是一個很好選擇。同時PLD擁有上電即可工作的特性,而大部分FPGA需要一個加載過程,所以,如果系統(tǒng)要可編程邏輯器件上電就要工作,那么就應該選擇PLD3.3.2AT89S51芯片介紹(1)AT89S51簡介AT89S51是一個低功耗,高性能CMOS8位單片機,片內(nèi)含4kBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。

AT89S51具有如下特點:40個引腳,4kBytesFlash片內(nèi)程序存儲器,128bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。此外,AT89S51設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產(chǎn)品的需求。圖3-9AT89S51引腳圖主要功能特性:兼容MCS-51指令系統(tǒng)32個雙向I/O口2個16位可編程定時/計數(shù)器全雙工UART串行中斷口線2個外部中斷源中斷喚醒省電模式看門狗(WDT)電路靈活的ISP字節(jié)和分頁編程4k可反復擦寫(>1000次)ISPFlashROM4.5-5.5V工作電壓時鐘頻率0-33MHz128x8bit內(nèi)部RAM低功耗空閑和省電模式3級加密位軟件設置空閑和省電功能雙數(shù)據(jù)寄存器指針(2)管腳說明:

VCC:供電電壓。

GND:接地。

P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。

P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。

P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:

口管腳備選功能

P3.0RXD(串行輸入口)

P3.1TXD(串行輸出口)

P3.2/INT0(外部中斷0)

P3.3/INT1(外部中斷1)

P3.4T0(記時器0外部輸入)

P3.5T1(記時器1外部輸入)

P3.6/WR(外部數(shù)據(jù)存儲器寫選通)

P3.7/RD(外部數(shù)據(jù)存儲器讀選通)

P3口同時為閃爍編程和編程校驗接收一些控制信號。

RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。

ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。

/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。

/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。

XTAL2:來自反向振蕩器的輸出。(3)振蕩器特性

XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2應不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。(4)芯片擦除

整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。

此外,AT89C51設有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止。3.3.3DAC0832芯片介紹(1)芯片簡介。DAC0832是NSC公司(美國國家半導體公司)生產(chǎn)的8位DAC芯片,可直接與多種CPU總線連接而不必增加任何附加邏輯。DAC0830、DAC0831與它兼容,可以完全相互代換。DAC0832由兩級數(shù)據(jù)緩沖器和D/A轉換器組成,第一級數(shù)據(jù)緩沖器稱為輸入寄存器,第二級稱為DAC寄存器,如(圖3-10)所示。圖3-10DAC0832內(nèi)部結構DAC0832各引腳的定義如下:◆D7~D0——8位數(shù)據(jù)輸入端。◆ILE——允許輸入鎖存(輸入),高電平有效?!簟x(輸入),低電平有效?!簟獙懶盘?(輸入),低電平有效。ILE、、為輸入寄存器的選通信號,當ILE、、全部有效,LE1為高電平時,選通輸入寄存器,數(shù)據(jù)總線D7~D0上的輸入數(shù)據(jù)進入輸入寄存器;當ILE、、不同時有效,LE1為低電平時,輸入寄存器中原有數(shù)據(jù)被鎖存?!簟獋魉涂刂菩盘枺ㄝ斎耄?,低電平有效?!簟獙懶盘?(輸入),輸入低電平有效。、為DAC寄存器的選通信號,當、同時有效時,LE2為高電平,選通DAC寄存器,輸入寄存器中鎖存的數(shù)據(jù)進入DAC寄存器;、不同時有效時,LE2為低電平,DAC寄存器中原有數(shù)據(jù)被鎖存?!簟M電流輸出端1,它是邏輯電平為1的各位輸出電流之和?!簟M電流輸出端2,它是邏輯電平為0的各位輸出電流之和。+=常數(shù)?!簟鶞孰妷狠斎?,+10V~-10V,此電壓越穩(wěn)定模擬輸出精度越高。◆——反饋電阻引出端,DAC0832內(nèi)部此端與端之間已集成一反饋內(nèi)阻,其值為15KΩ,所以可以直接接到外部運算放大器的輸出端?!簟娫措妷?,+5V~+15V?!鬉GND——模擬地,芯片模擬信號接地點?!鬌GND——數(shù)字地,芯片數(shù)字信號接地點。必須注意的是:在使用DAC芯片和ADC芯片的電路中,必須正確處理地線和連接問題。電路中有兩種芯片:一種是模擬電路芯片,如DAC、ADC、運算放大器等;另一種是數(shù)字電路芯片,如CPU、譯碼器、寄存器等。這兩種芯片應由兩個獨立的電源分別供電。模擬地線和數(shù)字地線應該分開、模擬地和數(shù)字地應分別連接到系統(tǒng)的模擬地線和數(shù)字地線。在整個系統(tǒng)中僅有一個共地點,避免造成回路,防止數(shù)字信號通過數(shù)字地線干擾微弱的模擬信號。(2)DAC0832的工作方式。DAC0832有兩級鎖存器,因此有3種工作方式:雙緩沖工作方式、單緩沖工作方式和直通工作方式。雙緩沖工作方式,就是把DAC0832的輸入寄存器和DAC寄存器都接成受控方式。CPU對DAC芯片的寫操作分兩步進行:第一步把數(shù)據(jù)寫進輸入寄存器,第二步把輸入寄存器的內(nèi)容寫入DAC寄存器。雙緩沖工作方式的優(yōu)點是DAC0832的數(shù)據(jù)接收和啟動轉換異步進行。于是,可在D/A轉換的同時進行下一數(shù)據(jù)的接收,可實現(xiàn)多個轉換器的同時輸出。單緩沖工作方式,就是使兩個寄存器中一個處于直通狀態(tài),而另一個處于受控狀態(tài)。這種方式可以減少一條輸出指令,在不要求多個DAC同時進行D/A轉換時普遍采用此種方式。當、、和引腳全部接數(shù)字地,ILE引腳為高電平時,芯片就處于直通工作狀態(tài)。8位數(shù)字量一旦達到D7~D0輸入端,便立即進行D/A轉換。此種方式下,DAC0832不能直接和CPU的數(shù)據(jù)總線相連,故很少采用。由于本設計要求數(shù)據(jù)一到立即轉換,因此,采用了此種工作方式。(3)DAC0832的輸出方式。DAC0832為電流輸出型D/A轉換器,需要外接運算放大器進行電流電壓變換才能得到模擬電壓輸出。輸出方式有兩種:單極性輸出和雙極性輸出。單極性電壓輸出方式輸出的電壓極性是單一的,而雙極性輸出方式輸出的電壓極性是可變的,即有正有負。單極性輸出時,在運算放大器的輸出端就可以得到單極性模擬電壓:(3-7)若參考電壓為+5V,則當數(shù)字量從00H~FFH變化時,對應的模擬電壓輸出范圍是0V~-5V。雙極性電壓輸出方式需要兩級運算放大器級聯(lián)輸出電壓,輸出電壓與及第一級運算放大器輸出的關系是:=—(2+)(3-8)這時,當數(shù)字量從00H~FFH變化時,對應的模擬電壓輸出范圍是—5V~+5V,顯然,其分辨率較單極性輸出降低一倍。根據(jù)設計目標需要,本設計采用單極性電壓輸出方式。3.3.4其他的主要芯片兩片DAC0832的電流-電壓轉換都采用了低溫漂電壓的運算放大器op07,OP07是一種高精度單片運算放大器,具有很低的輸入失調(diào)電壓和漂移。OP07的優(yōu)良特性使它特別適合作前級放大器,放大微弱信號。使用OP07一般不用考慮調(diào)零和頻率問題就能滿足要求。主要特點:◆

低輸入失調(diào)電壓:75uV(最大)◆

低失調(diào)電壓溫漂:1.3uV/℃(最大)◆

低失調(diào)電壓時漂:1.5uV/月(最大)◆

低噪聲:0.6uVP-P(最大)◆

寬輸入電壓范圍:±14V◆

寬電源電壓范圍:3V~18V4FPGA部分VHDL仿真及說明FPGA部分電路是整個電路設計系統(tǒng)中最主要的部分,所以其能否正常工作對整個系統(tǒng)的工作起關鍵作用。FPGA部分仿真主要是觀察波形數(shù)據(jù)的值的輸出是否正確和值輸出的頻率是否和預置的頻率控制字相對應,在MAX+plusII的仿真文件.scf里對FPGA部分的電路進行了驗證。由于外部有源晶振的頻率為4.096MHz,故將.scf的option里的Gridsize設置為244.1ns,即周期差不多是4.096MHz。運行仿真,得到的結果跟理論的結果幾乎一樣,因此,可以確定整個FPGA部分電路可以正常運行。仿真部分波形如(圖4-1)所示。圖4-1DDS部分電路的仿真結果從圖8的波形仿真結果中很難直觀地看出DDS輸出正弦波的情況。為了便于調(diào)試設計電路,我們可以利用計算機高級語言將MAX+plusII波形仿真結果轉換為波形曲線,這就需要借助于MAX+plusII的表格文件(.tbl文件)。MAX+plusII的設計軟件中的.tbl文件是純文本文件,它包含了.scf文件或.wdf文件中的所有信息。.tbl文件的生成很簡單,在MAX+plusII波形仿真結束后,打開.scf文件,然后從“File”菜單中選擇“CreateTableFile”選項,就可產(chǎn)生.tbl文件。.tbl文件的基本結構可分為四大部分,其中第三部分和第四部分是最關鍵的,可從中獲取仿真波形數(shù)據(jù),并利用計算機高級語言處理這些數(shù)據(jù),將其轉換為直觀的波形曲線。需要注意的是,每做一次MAX+plusII波形仿真,都要重新生成一次.tbl文件,以更新.tbl文件內(nèi)的數(shù)據(jù)。經(jīng)過MaxplusII的綜合與仿真,結果表明,能夠實現(xiàn)多波形發(fā)生器的各個波形功能及不同精度要求。波形仿真后,在軟件中觀察.scf文件可以得到輸出波形的數(shù)字幅度序列數(shù)據(jù)。為了直觀的觀察到輸出波形,仍然借助Matlab工具,將仿真結果轉換為波形曲線。在MaxplusIl中將仿真結果生成表格文件(.tbl文件)。在Matlab工具中,通過編寫的一段m文件程序,讀取表格文件中的相應數(shù)據(jù)信息,繪出電路的仿真波形曲線。以下給出具體的m文件(假設tbl文件的位置在d:\dmax2work\下):clearall;fid=fopen('d:\max2work\example.tbl','r');data=fscanf(fid,‘%s');fclose(fid);b=find(data==‘=’);number:=length(b);j=0;fori=1:numberifdata(b(i)-1)==’0'j=j+1;out_hex(j,l)=data(b(i)+1);out_hex(j,2)=data(b(i)+2);out_hex(j,3)=data(b(i)+3);endendout_dec=hex2dec(out_hex);plot(out_hec);(圖4-2)是用這一程序繪出的電路仿真波形曲線(仍以輸出正弦波為例)。圖4-2仿真波形5工程設計EDA是電子設計自動化(ElectronicDesignAutomation)的縮寫,是90年代初,從CAD(計算機輔助設計)、CAM(計算機輔助制造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發(fā)展而來的。本設計主要使用了兩個EDA工具,MAX+plusII和Protel99SE,以下就分別對這兩個工具在本設計中的應用進行簡單的說明。5.1MAX+plusII的使用以及VHDL程序的編寫FPGA部分電路的VHDL程序主要是依靠MAX+plusII來處理。VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,誕生與1982年。1987年底,VHDL被IEEE(TheInstituteofElectricalandElectronicsEngineers)和美國國防部確認為標準硬件描述語言。自IEEE公布了VHDL的標準版本(IEEE-1076)以后,各EDA公司相繼推出了自己的VHDL設計環(huán)境,或宣布自己的設計工具可以和VHDL接口。此后VHDL在電子設計領域得到了廣泛的接受,并逐步取代了原有的非標準硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本。現(xiàn)在,VHDL和Verilog語言將承擔起幾乎全部的數(shù)字系統(tǒng)設計任務。VHDL主要用于描述數(shù)字系統(tǒng)的結構、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風格與句法十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件、一個電路模體的內(nèi)部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其它的設計就可以直接調(diào)用這個實體。這種將設計實體部分分成內(nèi)外部分的概念是VHDL系統(tǒng)設計的基本點。應用VHDL進行工程設計的優(yōu)點是多方面的,具體如下:5.1.1VHDL進行工程設計的優(yōu)點(1)與其它的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了它成為系統(tǒng)設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規(guī)模電子系統(tǒng)的重要保證。就目前流行的EDA工具和VHDL綜合器而言,將基于抽象的行為描述風格的VHDL程序綜合成為具體的FPGA和CPLD等目標器件的網(wǎng)表文件已不成問題,只是在綜合與優(yōu)化效率上略有差異。(2)VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設計早期(即尚未完成),就能查驗設計系統(tǒng)的功能可行性,隨時可對設計進行仿真模擬。即在遠離門級的高層次上進行模擬,使設計者對整個工程設計的結構和功能的可行性作出決策。(3)VHDL語句的行為描述能力和程序結構決定了它具有支持大規(guī)模設計的分解和已有設計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效、高速的完成必須由多人甚至多個開發(fā)組共同并行工作才能實現(xiàn)。VHDL中設計實體的概念、程序包的概念、設計庫的概念為設計的分解和并行工作提供了有力的支持。(4)對于用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動地把VHDL描述設計轉變成門級網(wǎng)表(根據(jù)不同的實現(xiàn)芯片)。這種方式突破了門級設計的瓶頸,極大地減少了電路設計的時間和可能發(fā)生的錯誤,降低了開發(fā)成本。應用EDA工具的邏輯優(yōu)化功能,可以自動地把一個綜合后的設計變成一個更小、更高速的電路系統(tǒng)。反過來,設計者還可以容易地從綜合和優(yōu)化后的電路獲得設計信息,反回去更新修改VHDL設計描述,使之更為完善。(5)VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管最終設計實現(xiàn)的目標器件是什么,而進行獨立的設計。正因為VHDL的硬件描述與具體的工藝技術和硬件結構無關,VHDL設計程序的硬件實現(xiàn)目標器件有廣闊的選擇范圍,其中包括各系列的CPLD、FPGA及各種門陣列器件。(6)由于VHDL具有類屬描述語句和子程序調(diào)用等功能,對于已完成的設計,在不改變源程序的條件下,只需改變類屬參量或函數(shù),就能輕易地改變設計的規(guī)模和結構。MAX+plusII界面友好,使用便捷,被譽為業(yè)界最易用易學的EDA軟件。MAX+plusII支持原理圖、AHDL、VHDL和Verilog語言文本文件、以及波形與EDIF等格式的文件作為設計輸出,并支持這些文件的任意混合設計。MAX+plusII具有門級仿真器,可以進行功能仿真和時序仿真,能夠產(chǎn)生精確的仿真結果。在適配之后,MAX+plusII生成供時序仿真用的EDIF、VHDL和Verilog三種不同格式的網(wǎng)表文件。5.1.2MAX+plusII的過程MAX+plusII支持主流的第三方EDA工具,如Synopsys、Cadence、Synplicity、Mentor、Viewlogic、Exemplar和ModelTechnology等。MAX+plusII支持除APEX20K系列之外的所有AlteraFPGA/CPLD大規(guī)模邏輯器件。本設計使用Altera公司的EDA軟件MAX+plusII的過程大概如下所述。本設計分二個模塊,即freqdiv80.vhd和TOP.GDF。其中freqdiv80.vhd是用VHDL編寫的,TOP.GDF則是原理圖,是本例以原理圖方式表示的頂層設計文件。圖中將是用freqdiv80.vhd作為元件進行調(diào)用。freqdiv160.vhd是一個80分頻器;頂層文件TOP.GDF則將freqdiv80.vhd、MAX+plusII自帶的LPM_ADD_SUB、LPM_DFF以及LPM_ROM模塊組裝起來構成一完整的設計實體。首先為工程建立一目錄,然后進入MAX+plusII集成環(huán)境。(1)創(chuàng)建源程序freqdiv80.vhd選擇菜單“File”→“New…”,出現(xiàn)一個對話框,在框中選中“TextEditorfile”,按“OK”按鈕,即選中了文本編輯方式。在出現(xiàn)的“Untitled-TextEditor”文本編輯窗口中輸入程序。輸入完畢后,選擇菜單“File→Save”,即出現(xiàn)如圖12所示的對話框。首先在“Directories”目錄中選擇存放本文件的目錄,然后在“FileName”框中輸入文件名freqdiv80.vhd,然后按“OK”按鈕,即把輸入的文件放在“Directories”目錄中了。文件的后綴名將決定使用的語言形式,在MAX+plusII中,后綴為.VHD表示VHDL文件;后綴為.TDF表示AHDL文件;后綴為.V表示Verilog文件。文件存盤后,為了能在圖形編輯器中調(diào)用freqdiv160,需要為freqdiv160創(chuàng)建一個元件圖形符號。選擇菜單“File”→“CreatDefaultSymbol”,MAX+plusII出現(xiàn)一個對話框,詢問是否將當前工程設為freqdiv80,可按下“確定”按鈕。這時MAX+plusII調(diào)出編譯器對freqdiv80.vhd進行編譯,編譯后生成freqdiv80的圖形符號。如果源程序有錯,要對源程序進行修改,重復上面的步驟,知道此元件符號創(chuàng)建成功。成功后出現(xiàn)元件符號創(chuàng)建成功的對話框。退出編譯器,再退出編譯器,回到主窗口。(2)創(chuàng)建源文件TOP.GDFTOP.GDF是本項示例的最頂層的圖形設計文件,調(diào)用了前面創(chuàng)建的功能文件,將Freqdiv80.vhd、LPM_ADD_SUB、LPM_DFF以及LPM_ROM幾個模塊組裝起來,成為一個完整的設計。選擇菜單File→New,在對話框中選擇“GraphicEditorFile”,按“OK”按鈕,即出現(xiàn)圖形編輯器窗口GraphicEditor?,F(xiàn)按照以下給出的方法在“GraphicEditor”中繪出原理圖。①往圖中添加元件將freqdiv80.vhd、LPM_ADD_SUB、LPM_DFF以及LPM_ROM調(diào)入原理圖編輯器。排好它們的位置。并設置好LPM_ADD_SUB、LPM_DFF以及LPM_ROM這幾個模塊的參數(shù)。輸入輸出接口符號名為“INPUT”和“OUTPUT”。②在符號之間進行連線先放好輸入/輸出元件符號,再將鼠標箭頭移到符號的輸入/輸出引腳上,鼠標箭頭形狀會變成“+”字型,然后可以按著鼠標左鍵并拖動鼠標,繪出一條線,送開鼠標鍵完成一次操作。細線表示單根線,粗線表示總線,它的根數(shù)可從元件符號的標示上看得出。③設置輸入/輸出引腳名在INPUT或OUTPUT符號的引腳上雙擊鼠標左鍵,可以在端口上輸入新的引腳名。TOP.GDF中有兩個輸入引腳“CLK”和“FREQ[7..0]”及8位總線輸出引腳“Q[7..0]”,分別輸入端口符號。FREQ[7..0]在VHDL中是一個數(shù)組,表示由信號FREQ7~FREQ0組成的總線信號。實際上這里有8個輸入引腳。Q[7..0]也是同樣的道理。最后選擇File→Save菜單,將此頂層原理圖文件取名為TOP.GDF,并寫入“FileName”中,存入同一目錄中。④編譯TOP.GDF在編譯TOP.GDF之前,需要設置此文件為頂層文件(最上層文件),或稱工程文件:Project。選擇菜單File→Project→SetProjecttoCurrentFile,當前的工程即被設為TOP。然后選擇用于編程的目標芯片和確定引腳。全部設定結束后,按“OK”鍵。最后開始編譯和綜合。選擇“MAX+plusII”→“Compiler”菜單,可運行編譯器。最后在Compiler窗口中按下“Start”按鈕,啟動編譯過程,直到編譯結束。如果源程序有錯誤,用鼠標雙擊紅色的錯誤信息即可返回圖形或文本編輯器進行修改,然后再次編譯,直到通過。⑤仿真頂層設計TOPMAX+plusII支持功能仿真和時序仿真兩種仿真形式。功能仿真用于大型設計編譯適配之前的仿真,而時序仿真則是在編譯適配生成時序信息文件之后進行的仿真。仿真首先要建立波形文件。將所有的信號全部選中到波形編輯器中。設置好各信號后,按下“Simulator”子窗口中的“Start”按鈕,即刻進行仿真運算。波形觀察窗左排按鈕是用于設置輸入信號的,十分方便。使用時先用鼠標在輸入波形上拖一需要改變的黑色區(qū)域,然后點左排按鈕,其中“0”、“1”、“X”、“Z”、“INV”、“G”分別表示低電平、高電平、任意、高阻態(tài)、反相和總線數(shù)據(jù)設置。⑥將設計文件TOP編程下載到芯片中去選擇“MAX+plusII”→“Programmer”菜單,可調(diào)出編程器(Programmer)窗口。在將設計文件編程配置進硬件芯片前,需連接好硬件測試系統(tǒng)。本設計使用FLEX10K系列的10K10器件,一切連接就緒后,方可按下編程器窗口中的“Configure”按鈕,若一切無誤,即可將所設計的內(nèi)容下載到10K10芯片中。下載成功后將在一彈出的小窗中顯示“ConfigureComplete”。如果在安裝MAX+plusII軟件之后第一次調(diào)用編程器子窗口,則MAX+plusII將彈出對話框選擇編程器型號,以便調(diào)用正確的編程器驅動程序。如果用FLEX或ISP型MAX系列器件,通常選擇“ByteBlaster”編程器?!癇yteBlaster”實際上是指連接在并行打印口使用的下載電纜。編程器型號的選擇方法是啟動“Programmer”,選菜單“Options”→“HardwareSetup”,在HardwareType下拉欄中選ByteBlaster,按“OK”即可。5.2Protel99SE的使用在進行電路板及PCB設計時,采用的是Protel99SE軟件。這是一個目前被普遍使用的軟件,在介紹具體的電路板及PCB設計前,有必要對這個軟件進行一定的簡介。電路及PCB設計是EDA技術中的一個重要內(nèi)容,而EDA技術是現(xiàn)代電子工程領域的一門新技術,它提供了基于計算機和信息技術的電路系統(tǒng)設計方法。Protel是其中比較杰出的一個軟件,在國內(nèi)流行最早、應用面最寬。其最新版的Protel99SE較以前的Protel功能更為強大,它是桌面環(huán)境下以設計管理和協(xié)作技術(PDM)為核心的一個優(yōu)秀的印刷電路板設計系統(tǒng)。它在先前的Protel的基礎上新增加了3項技術,它們分別是SmarTDoc、SmartTeam和SmartTool,這些功能增加了人與工具之間的交互功能。Protel99SE軟件包主要包含以下幾個模塊:原理圖設計軟件ProtelAdvancedSchimatic99SE、電路板設計軟件ProtelAdvancedPCB99SE、用于PCB自動布線的ProtelAdcancedRoute99SE、可編程邏輯器件設計的ProtelAdvancedPLD99SE、用于電路仿真的AdvancedSIM99和信號完整性分析的AdvancedIntegrity99,可謂是功能齊全。上面簡單介紹了Protel99SE的情況,下面就簡述設計方法過程。首先構思電路模塊。在著手繪制具體的電路之前,將本設計的整個系統(tǒng)進行了模塊化設計。將設計的整個系統(tǒng)分為二個模塊。它們分別是D/A、幅度控制以及濾波輸出這個主模塊和FPGA程序加載模塊。分別對這二個模塊繪制電路圖,最后通過長腳插針,將FPGA程序加載模塊插在主模塊上。接下來就是設計電路原理圖。在這部分是利用Protel99SE的原理圖設計系統(tǒng)繪制我所需要的電路原理圖。在這一過程中,要充分利用各種原理圖繪制工具和編輯功能。在完成原理圖設計后,利用Tools中的ERC命令,檢查繪制原理圖時是否出現(xiàn)一些簡單的基本錯誤,如連線錯誤、標號錯誤等。接下來產(chǎn)生SPICEnetlist。這是電路原理圖設計(Sch)與印制電路板設計(PCB)之間的一座橋梁,是電路板自動布線的核心。設計印制板的過程是整個設計中的核心部分,如果印制板沒有設計好,將會影響整個后期的調(diào)試,甚至會影響電路板的效果。下面就簡單介紹設計印制電路板時可能會出現(xiàn)的一些問題以及解決方法。在將報表網(wǎng)絡調(diào)入時,常常會出現(xiàn)一種情況:在原理圖中相連的兩個元件被調(diào)入后并沒有連在一起。解決的方法是在PCB圖中進行手動連接。在PCB的庫文件中,常常沒有適合實際中的一些電器件。比如四腳開關、撥碼開關等;還有些場合下,庫中已經(jīng)存在的元件,其引腳的排列順序不符合圖紙的要求,必須修改。解決這兩種情況的辦法都是利用Protel的編輯功能和修改功能。在布板時,有手動布板和自動布板兩種方法。這兩種方法各有各的的優(yōu)點,在時間允許的情況下推薦采用手動布板。這里有幾個原因,一是自動布板不利于進行電路檢查;二是自動布板比手動布板復雜,它會出現(xiàn)一些重復和不合實際情況的布線。比如出現(xiàn)直角會對高頻電路產(chǎn)生影響,而折線對高頻電路的影響將會小的多;另外地線應該較其它線條粗,可以防止干擾;信號線應該短一些,這樣也可以防止信號之間的串擾,避免主要信號中串入太多干擾信號。最后在附錄里附上電路的PCB圖。6制作工藝PCB設計的一般原則要使電子電路獲得最佳性能,元器件的布且及導線的布設是很重要的。本設計由于頻率不高,因此對電路板的工藝以及布線的要求不高,但是需要注意的是,信號最好不要拉得太長,以免引入太多干擾信號,影響波形的效果。為了設計質量好、造價低的PCB。應遵循以下一般原則:(1)布局首先,要考慮PCB尺寸大小。PCB尺寸過大時,印制線條長,阻抗增加,抗噪聲能力下降,成本也增加;過小,則散熱不好,且鄰近線條易受干擾。在確定PCB尺寸后.再確定特殊元件的位置。最后,根據(jù)電路的功能單元,對電路的全部元器件進行布局。在確定特殊元件的位置時要遵守以下原則:①盡可能縮短高頻元器件之間的連線,設法減少它們的分布參數(shù)和相互間的電磁干擾。易受干擾的元器件不能相互挨得太近,輸入和輸出元件應盡量遠離。②某些元器件或導線之間可能有較高的電位差,應加大它們之間的距離,以免放電引出意外短路。帶高電壓的元器件應盡量布置在調(diào)試時手不易觸及的地方。③重量超過15g的元器件、應當用支架加以固定,然后焊接。那些又大又重、發(fā)熱量多的元器件,不宜裝在印制板上,而應裝在整機的機箱底板上,且應考慮散熱問題。熱敏元件應遠離發(fā)熱元件。④對于電位器、可調(diào)電感線圈、可變電容器、微動開關等可調(diào)元件的布局應考慮整機的結構要求。若是機內(nèi)調(diào)節(jié),應放在印制板上方便于調(diào)節(jié)的地方;若是機外調(diào)節(jié),其位置要與調(diào)節(jié)旋鈕在機箱面板上的位置相適應。⑤應留出印制扳定位孔及固定支架所占用的位置。根據(jù)電路的功能單元.對電路的全部元器件進行布局時,要符合以下原則:①按照電路的流程安排各個功能電路單元的位置,使布局便于信號流通,并使信號盡可能保持一致的方向。②以每個功能電路的核心元件為中心,圍繞它來進行布局。元器件應均勻、整齊、緊湊地排列在PCB上.盡量減少和縮短各元器件之間的引線和連接。③在高頻下工作的電路,要考慮元器件之間的分布參數(shù)。一般電路應盡可能使元器件平行排列。這樣,不但美觀.而且裝焊容易.易于批量生產(chǎn)。④位于電路板邊緣的元器件,離電路板邊緣一般不小于2mm。電路板的最佳形狀為矩形。長寬比為3:2成4:3。電路板面尺寸大于200x150mm時.應考慮電路板所受的機械強度。(2)布線布線的原則如下:①輸入輸出端用的導線應盡量避免相鄰平行。最好加線間地線,以免發(fā)生反饋藕合。②印制攝導線的最小寬度主要由導線與絕緣基扳間的粘附強度和流過它們的電流值決定。當銅箔厚度為0.05mm、寬度為1~15mm時.通過2A的電流,溫度不會高于3℃,因此.導線寬度為1.5mm可滿足要求。對于集成電路,尤其是數(shù)字電路,通常選0.02~0.3mm導線寬度。當然,只要允許,還是盡可能用寬線.尤其是電源線和地線。導線的最小間距主要由最壞情況下的線間絕緣電阻和擊穿電壓決定。對于集成電路,尤其是數(shù)字電路,只要工藝允許,可使間距小至5~8mm。③印制導線拐彎處一般取圓弧形,而直角或夾角在高頻電路中會影響電氣性能。此外,盡量避免使用大面積銅箔,否則.長時間受熱時,易發(fā)生銅箔膨脹和脫落現(xiàn)象。必須用大面積銅箔時,最好用柵格狀.這樣有利于排除銅箔與基板間粘合劑受熱產(chǎn)生的揮發(fā)性氣體。(3)焊盤焊盤中心孔要比器件引線直徑稍大一些。焊盤太大易形成虛焊。焊盤外徑D一般不小于(d+1.2)mm,其中d為引線孔徑。對高密度的數(shù)字電路,焊盤最小直徑可取(d+1.0)mm。此外,還應注意以下兩點:①在印制板中有接觸器、繼電器、按鈕等元件時.操作它們時均會產(chǎn)生較大火花放電,必須采用RC電路來吸收放電電流。一般R取1~2K,C取2.2~47uF。②CMOS的輸入阻抗很高,且易受感應,因此在使用時對不用端要接地或接正電源。7調(diào)試測試以及對結果的分析根據(jù)方案設計的要求,測試過程共分三大部分:硬件調(diào)試、軟件調(diào)試和軟硬件聯(lián)調(diào)。電路按模塊調(diào)試,各模塊逐個調(diào)試通過后再聯(lián)調(diào)。FPGA部分的VHDL程序先在GW48EDA實驗開發(fā)系統(tǒng)上測試通過,再與硬件系統(tǒng)聯(lián)調(diào)。7.1測試儀器SS-7802A雙蹤示波器SS1792可跟蹤直流穩(wěn)壓電源5V電源 UT2004數(shù)字萬用表7.2系統(tǒng)指標測試測試數(shù)據(jù)如下表:表7-1輸出波形頻率測試預置頻率/Hz實際輸出頻率/Hz10.98109.7610097.551000975.54100009755.442000019510.893000029266.32由表可以看出,在頻率穩(wěn)定度方面,輸出頻率穩(wěn)定度和晶振穩(wěn)定度在同一個數(shù)量級。7.3測試結果分析(1)本設計的輸出在較高頻率時由于運算放大器、D/A的帶寬限制,輸出幅度有所下降,頻率穩(wěn)定度不夠好。(2)本設計對波形一個周期存放512個數(shù)據(jù)點,有效防止了奈奎斯特混疊,故輸出波形失真較小。8總結本設計研究了有關利用FPGA實現(xiàn)DDS的方法,主要內(nèi)容如下: (1)通過對有關DDS現(xiàn)有技術的大量文獻的調(diào)研,打下了設計DDS的理論基礎,分析了影響DDS性能的主要因素。(2)根據(jù)理論研究,確定了DDS的設計目標,以AlteraMAX+plusII上的宏函數(shù)LPM_ADD_SUB和LPM_DFF進行了累加器的VHDL設計,得到了預期的結果。(3)以AlteraMAX+plusII上的宏函數(shù)LPM_ROM為存儲單元設計出了用于DDS的相位-幅度變換器。(4)該系統(tǒng)利用MAX+plusII軟件在AlteraFLEX10K10芯片上進行了邏輯綜合、仿真和硬件實現(xiàn),證實了設計的正確性和可行性。本設計的不足之處及以后的研究方向:本設計中沒有深入地分析了DDS的主要誤差來源和輸出頻譜之間的關系。而且,沒有能夠利用高級語言來模擬DDS波形的輸出。最大的缺陷是由于準備不充分和元件的缺少,不能夠將系統(tǒng)的頻率做得很高,頻率分辨率比較低,有關DDS的理論研究和工程技術可以說已經(jīng)成熟了,但是正確地去理解現(xiàn)有的理論和技術而且導入到實踐上也是個大的課題。致謝本次課程設計之所以能夠順利完成,首先要感謝四年來精心授課的各位老師,沒有他們的辛勤施教,就不會有我現(xiàn)在的成功。與此同時,我要特別感謝我的指導老師姜天松老師和鄧德迎老師,是他的細心指導使我順利地完成了課程設計,并取得了良好的成績。其次,我要感謝各種參考資料的編寫者,正是他們的智慧結晶使我對電子世界有了更多更深的了解。我還要感謝一起做課程設計的同學們,他們的關心給了我很大的幫助。最后,我想再次對所有給予我?guī)椭睦蠋熀屯瑢W表示衷心的感謝!參考文獻[1]J.Tierey,C.Rader,andB.Gold.ADigitalFrequencySynthesizer.IEEETrans.AudioandElectroacoust.VoLAU-19,1971,48:57.[2]J.Vankka,M.Waltarietal.DirectDigitalSynthesizerwithon-ChipD/A-Converter.IEEEJ.ofSCC,VoL33,1998,218

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論