基于FPGA的m序列發(fā)生器_第1頁
基于FPGA的m序列發(fā)生器_第2頁
基于FPGA的m序列發(fā)生器_第3頁
基于FPGA的m序列發(fā)生器_第4頁
基于FPGA的m序列發(fā)生器_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于FPGA的序列發(fā)生器基于FPGA的序列發(fā)生器摘要序列廣泛應(yīng)用于密碼學(xué)、通信、雷達、導(dǎo)航等多個領(lǐng)域,本文提出了一種基于FPGA的偽隨機序列產(chǎn)生方法,應(yīng)用移位寄存器理論從序列的本原多項式出發(fā),獲得產(chǎn)生該序列的移位寄存器反饋邏輯式,結(jié)合FPGA芯片結(jié)構(gòu)特點,在序列算法實現(xiàn)中采用元件例化語句。算法運用VHDL語言編程,以A1tera的Quartus軟件為開發(fā)平臺,給出了序列的仿真波形。序列的統(tǒng)計特性分析表明:該方法產(chǎn)生的序列符合序列的偽隨機特性,驗證了算法的正確性。關(guān)鍵詞:序列;移位寄存器理論;VHDL語言1 m序列m序列是偽隨機序列的一種 ,結(jié)構(gòu)簡單 ,實現(xiàn)方便。在現(xiàn)代工程實踐中 , m 序列在

2、通訊、導(dǎo)航、雷達、通信系統(tǒng)性能的測量等領(lǐng)域中有著廣泛的應(yīng)用。例如 , 在連續(xù)波雷達中可用作測距信號 , 在遙控系統(tǒng)中可用作遙控信號 , 在多址通信中可用作地址信號 , 在數(shù)字通信中可用作群同步信號 ,還可用作噪聲源及在保密通信中起加密作用等。偽噪聲發(fā)生器在測距、通信等領(lǐng)域的應(yīng)用日益受到人們重視。目前,m序列產(chǎn)生實現(xiàn)方法主要有3種:(1)門電路實現(xiàn)該方法設(shè)計簡單,但隨移位寄存器級數(shù)的增長,電路裝調(diào)困難,且占用的印制板面積較大。(2)DSP編程實現(xiàn)該方法專業(yè)性過強,不適合一般用戶。(3)VHDL與CPLD實現(xiàn)由于CPLD的高集成度,而且VHDL語言編程較為方便,故可以大大減少電路的裝調(diào)的困難。文章

3、提出VHDL語言實現(xiàn),l序列電路是周期、初相位可編程變化的,其應(yīng)用較為靈活,通過微處理器對其進行適當?shù)某跏蓟纯僧a(chǎn)生用戶所需周期、初相位的m序列輸出。用軟件方式構(gòu)成的特點是采用靈活的數(shù)據(jù)查詢方式可以獲得任意級數(shù) n 的本原多項式系數(shù) ,從而實現(xiàn) m 序列的產(chǎn)生 , 但速度受到單片機工作速度的限制。而 FPGA 具有硬件電路實現(xiàn)的優(yōu)點 , 又具有設(shè)計上的靈活性 , 并且由于 FPGA 便于實現(xiàn)大規(guī)模的數(shù)字系統(tǒng) 。1.1 理論基礎(chǔ) m 序列是最長線性反饋移位寄存器序列的簡稱,它是由帶線性反饋的移位寄存器產(chǎn)生的周期最長的一種序列。m 序列發(fā)生器的結(jié)構(gòu)主要分為兩類,一類稱為簡單型碼序列發(fā)生器,另一類

4、稱為模塊型碼序列發(fā)生器。原理圖如圖 1 所示。 圖1-1 m列原理圖擾碼的目的是使短周期輸入序列變?yōu)殚L周期的信道序列。從原則上看,就可以用將一個長周期序列疊加在輸入序列上的方法來實現(xiàn),并且疊加序列的周期越長越好。從理論上說,一個真正的隨機(二進制)序列的“周期”是無限長的,但是,采用這種序列時在接收端將無法產(chǎn)生相同的序列與之同步。所以,人們就不得不企圖用簡單電路來產(chǎn)生盡量長的序列。同時隨機噪聲在通信技術(shù)中,首先是作為有損通信質(zhì)量的因素受到人們重視的。信道中存在的隨機噪聲會使模擬信號產(chǎn)生失真,或使數(shù)字信號解調(diào)后出現(xiàn)誤碼;同時,它還是限制信道容量的一個重要因素。因此,最早人們是企圖設(shè)計消除或減小通

5、信系統(tǒng)的隨機噪聲,但是,有時人們也希望獲得隨機噪聲。例如,在實驗室中對通信設(shè)備或系統(tǒng)進行測試時,有時要故意加入一定的隨機噪聲,這時則需要產(chǎn)生它。20世紀40年代末,隨著通信理論的發(fā)展,仙農(nóng)(Shannon)就曾指出,在某種情況下,為了實現(xiàn)最有效的通信,應(yīng)采用具有白噪聲的統(tǒng)計特性的信號。另外,為了實現(xiàn)高可靠的保密通信,也希望利用隨機噪聲。然而,利用隨機噪聲的最大困難是它難以產(chǎn)生和處理。直到60年代,偽隨機噪聲的出現(xiàn)才使上述困難得到解決。偽隨機噪聲具有類是與隨機噪聲的一些統(tǒng)計特性,同時又便于重復(fù)產(chǎn)生和處理。由于它具有隨機噪聲的優(yōu)點,又避免了它的缺點,因此獲得了日益廣泛的實際應(yīng)用。目前廣泛應(yīng)用的偽隨

6、機噪聲都是由數(shù)字電路產(chǎn)生的周期序列(即濾波等處理后)得到的。今后我們將這種周期序列稱為偽隨機序列。通常產(chǎn)生偽隨機序列的電路為一反饋移存器。他又可分為線性反饋移存器和非線性反饋遺存器兩類。由線性反饋遺存器產(chǎn)生出的周期最長的二進制數(shù)字序列,稱為最大長度線性反饋遺存器序列,通常簡稱為m序列。由于它的理論比較成熟,實現(xiàn)比較簡便,實際應(yīng)用也比較廣泛7。m序列是最長線性反饋移存器序列的簡稱,它是由帶線性反饋的移存器產(chǎn)生的周期最長的一種序列 。圖2-2中示出了n級移位寄存器,其中有若干級經(jīng)模2加法器反饋到第1級。不難看出,在任何一個時刻去觀察移位寄存器的狀態(tài),必然是個狀態(tài)之一,其中每一狀態(tài)代表一個n位的二進

7、制數(shù)字;但是,必須把全0排斥在外,因為如果一個進入全0,不論反饋線多少或在哪些級,這種狀態(tài)就不會再改變。所以,寄存器的狀態(tài)可以是非全0的狀態(tài)之一。這個電路的輸出序列是從寄存器移出的,盡管移位寄存器的狀態(tài)每一移位節(jié)拍改變一次,但無疑地是循環(huán)的。如果反饋線所分布的級次是恰當?shù)模敲?,移位寄存器的狀態(tài)必然各態(tài)歷經(jīng)后才會循環(huán)。這里所謂“各態(tài)歷經(jīng)”就是所有個狀態(tài)都經(jīng)過了。由此可見,應(yīng)用n級移位寄存器所產(chǎn)生的序列的周期最長是。同時由于這種序列雖然是周期的,但當n足夠大時周期可以很長,在一個周期內(nèi)0和1的排列有很多不同方式,對每一位來說是0還是1,看來好像是隨機的,所以又稱為偽隨機碼;又因為它的某一些性質(zhì)和

8、隨機噪聲很相似,所以又稱為偽噪聲碼(PN碼)。1.1.1 線性反饋移位寄存器圖1-2 線性移位寄存器由于帶有反饋,因此在移位脈沖作用下,移位寄存器各級的狀態(tài)將不斷變化,通常移位寄存器的最后一級做輸出,輸出序列為 輸出序列是一個周期序列。其特性由移位寄存器的級數(shù)、初始狀態(tài)、反饋邏輯以及時鐘速率(決定著輸出碼元的寬度)所決定。當移位寄存器的級數(shù)及時鐘一定時,輸出序列就由移位寄存器的初始狀態(tài)及反饋邏輯完全確定。當初始狀態(tài)為全零狀態(tài)時,移位寄存器輸出全 0 序列。為了避免這種情況,需設(shè)置全 0 排除電路。 (1)線性反饋移位寄存器的遞推關(guān)系式 遞推關(guān)系式又稱為反饋邏輯函數(shù)或遞推方程。設(shè)圖10-1 所示

9、的線性反饋移位寄存器的初始狀態(tài)為(a0 a1 an-2 an-1), 經(jīng)一次移位線性反饋,移位寄存器左端第一級的輸入為 若經(jīng)k次移位,則第一級的輸入為 其中,l=n+k-1n, k=1,2,3, (2)線性反饋移位寄存器的特征多項式 用多項式f(x)來描述線性反饋移位寄存器的反饋連接狀態(tài):若一個n次多項式f(x)滿足下列條件 = 1 * GB3 f(x)為既約多項式(即不能分解因式的多項式); = 2 * GB3 f(x)可整除(xp+1), p=2n-1; = 3 * GB3 f(x)除不盡(xq+1), qp。則稱f(x)為本原多項式。 2 m序列的性質(zhì)2.1 均衡性 在一個周期中,m 序

10、列中“1”的個數(shù)比“0”的個數(shù)多一個。N級移位寄存器有2n狀態(tài),這些狀態(tài)對應(yīng)二進制有一半為偶數(shù)(即末位數(shù)為0),另一半為奇數(shù)(即末尾數(shù)為1)。m序列一個周期經(jīng)歷2n-1個狀態(tài),少一個全0狀態(tài)(屬于偶數(shù)狀態(tài)),因此在一個周期中“1”的個數(shù)比“0”的個數(shù)多一個。例如,級數(shù)n=3,碼序列周期P=23-1=7時,起始狀態(tài)為“111”,Ci=(13)8=(1011)2,即C0=1、C1=0、C2=1、C3=1。產(chǎn)生的m序列為1110010,其中碼元為“1”的有4個,碼元為“0”的有3個,即在一個周期中“1”的個數(shù)比“0”多一個。2.2游程特性長度為k的游程數(shù)占游程總數(shù)的1/2k。一個周期中長度為1的游程

11、數(shù)占游程總數(shù)的1/2;長度為2的游程數(shù)占游程總數(shù)的1/4;其中1=k=n-1。2.3 移位相加特性一個m序列與其循環(huán)移位逐次比較,相同碼的位數(shù)與不同碼的位數(shù)相差1位。例如原序列Xi=1110010,那么右移2位的序列Xi-2=0011101.2.4 自相關(guān)特性m序列具有非常重要的自相關(guān)特性。在m序列中,常常用+1代表 0,用-1代表 1。 此時定義:設(shè)長為 p的m序列, 記作 經(jīng)過j次移位后,m序列為 其中ai+p=ai(以 p 為周期),以上兩序列的對應(yīng)項相乘然后相加, 利用所得的總和 來衡量一個m序列與它的j次移位序列之間的相關(guān)程度,并把它叫做m序列(a1,a2,a3,ap)的自相關(guān)函數(shù)。

12、記作 經(jīng)過j次移位后,m序列為 其中ai+p=ai(以 p 為周期),以上兩序列的對應(yīng)項相乘然后相加, 利用所得的總和 來衡量一個m序列與它的j次移位序列之間的相關(guān)程度,并把它叫做m序列(a1,a2,a3,ap)的自相關(guān)函數(shù)。記作 當采用二進制數(shù)字 0 和 1 代表碼元的可能取值時 由移位相加特性可知,仍是m序列中的元素, 所以式(10-7)分子就等于m序列中一個周期中 0 的數(shù)目與 1 的數(shù)目之差。 另外由m序列的均衡性可知, 在一個周期中 0 比 1 的個數(shù)少一個, 故得A-D=-1(j為非零整數(shù)時)或p(j為零時)。 因此得m序列的自相關(guān)函數(shù)只有兩種取值(1和-1/p)。R(j)是一個周

13、期函數(shù),即 式中,k=1,2, p=(2n-1)為周期。 而且R(j)是偶函數(shù), 即 圖2-1 m序列自相關(guān)函數(shù)2.5 偽噪聲特性如果我們對一個正態(tài)分布白噪聲取樣, 若取樣值為正, 記為+1,取樣值為負,記為-1,將每次取樣所得極性排成序列, 可以寫成+1,-1,+1,+1,+1,-1,-1,+1,-1, 這是一個隨機序列,它具有如下基本性質(zhì):(1) 序列中+1 和-1 出現(xiàn)的概率相等;2) 序列中長度為 1 的游程約占 1/2, 長度為 2 的游程約占 1/4,長度為 3 的游程約占 1/8, 一般地, 長度為k的游程約占1/2k,而且+1, -1 游程的數(shù)目各占一半;(3) 由于白噪聲的功

14、率譜為常數(shù),因此其自相關(guān)函數(shù)為一沖擊函數(shù)()。 3 m序列的應(yīng)用3.1 擴展頻譜通信擴展頻譜通信(Spread Spectrum Communication)是將待傳送的信息數(shù)據(jù)被偽隨機編碼(擴頻序列:Spread Sequence)調(diào)制,實現(xiàn)頻譜擴展后再傳輸,接收端則采用同樣的編碼進行解調(diào)及相關(guān)處理,恢復(fù)原始信息數(shù)據(jù)。顯然,這種通信方式與一般常見的窄帶通信方式相反,是在擴展頻譜后,寬帶通信,再相關(guān)處理恢復(fù)成窄帶后解調(diào)數(shù)據(jù)。擴展頻譜通信方式有許多優(yōu)點,如抗干擾、抗噪音、抗多徑衰落、低功率譜密度下工作、有保密性、可多址復(fù)用和任意選址、高精度測量等。擴展頻譜通信作為新型通信方式,特別引人注目,得到

15、了迅速發(fā)展,如今在移動通信、衛(wèi)星通信、宇宙通信、雷達、導(dǎo)航以及測距等領(lǐng)域得到越來越廣泛的應(yīng)用。擴頻通信的優(yōu)勢主要來自于偽隨機碼具有白噪聲的統(tǒng)計特性。而隨著擴頻速率的不斷提高,擴頻碼的長度急劇增加,利用計算機設(shè)計并驗證擴頻碼的各項指標能大大提高效率。m序列是偽隨機序列中最重要的序列中的一種,是最長的線性移位寄存器序列。既然,m序列在擴頻通信中占據(jù)著極其重要的位置,而對于m序列的產(chǎn)生及仿真的研究,自然也就有很大的必要性。在雷達信號設(shè)計中的應(yīng)用 近年興起的擴展頻譜雷達所采用的信號是已調(diào)制的具有類似噪聲性質(zhì)的偽隨機序列,它具有很高的距離分辨力和速度分辨力。這種雷達的接收機采用相關(guān)解調(diào)的方式工作,能夠在

16、低信噪比的條件下工作,同時具有很強的抗干擾能力。該型雷達實質(zhì)上是一種連續(xù)波雷達,具有低截獲概率性,是一種體制新、性能高、適應(yīng)現(xiàn)代高技術(shù)戰(zhàn)爭需要的雷達。采用偽隨機序列作為發(fā)射信號的雷達系統(tǒng)具有許多突出的優(yōu)點。首先,它是一種連續(xù)波雷達,可以較好地利用發(fā)射機的功率。其次,它在一定的信噪比時,能夠達到很好的測量精度,保證測量的單值性,比單脈沖雷達具有更高的距離分辨力和速度分辨力。最后,它具有較強的抗干擾能力,敵方要干擾這種寬帶雷達信號,將比干擾普通的雷達信號困難得多。在通信系統(tǒng)中的應(yīng)用1 偽隨機序列是一種貌似隨機,實際上是有規(guī)律的周期性二進制序列,具有類似噪聲序列的性質(zhì),在CDMA中,地址碼都是從偽隨

17、機序列中選取的,在CDMA中使用一種最易實現(xiàn)的偽隨機序列:m序列,利用m序列不同相位來區(qū)分不同用戶;為了數(shù)據(jù)安全,在CDMA的尋呼信道和正向業(yè)務(wù)信道中使用了數(shù)據(jù)掩碼(即數(shù)據(jù)擾亂)技術(shù),其方法是用長度為2的42次方減1的m序列用于對業(yè)務(wù)信道進行擾碼(注意不是擴頻),它在分組交織器輸出的調(diào)制字符上進行,通過交織器輸出字符與長碼PN碼片的二進制模工相加而完成。 擴展頻譜技術(shù)的理論基礎(chǔ)是山農(nóng)公式。對于加性白高斯噪聲的連續(xù)信道,其信道容量C與信道傳輸帶寬B及信噪比S/N之間的關(guān)系可以用下式表示 這個公式表明,在保持信息傳輸速率不變的條件下,信噪比和帶寬之間具有互換關(guān)系。就是說,可以用擴展信號的頻譜作為代

18、價, 換取用很低信噪比傳送信號,同樣可以得到很低的差錯率。擴頻系統(tǒng)有以下特點:(1) 具有選擇地址能力;(2) 信號的功率譜密度很低, 有利于信號的隱蔽;(3) 有利于加密, 防止竊聽;(4) 抗干擾性強;(5) 抗衰落能力強;(6) 可以進行高分辨率的測距。 擴頻通信系統(tǒng)的工作方式有:直接序列擴頻、跳變頻率擴頻、 跳變時間擴頻和混合式擴頻。3.2 通信加密 圖 3-1 m序列加密m序列自相關(guān)性較好,容易產(chǎn)生和復(fù)制,而且具有偽隨機性,利用m序列加密數(shù)字信號使加密后的信號在攜帶原始信息的同時具有偽噪聲的特點,以達到在信號傳輸?shù)倪^程中隱藏信息的目的;在信號接收端,再次利用m序列加以解密,恢復(fù)出原始

19、信號。4 開發(fā)工具簡介4.1 Quartus II簡介Quartus II design 是最高級和復(fù)雜的,用于system-on-a-programmable-chip (SOPC)的設(shè)計環(huán)境。 QuartusII design 提供完善的 timing closure 和 LogicLock 基于塊的設(shè)計流程。QuartusII design是唯一一個包括以timing closure 和 基于塊的設(shè)計流為基本特征的programmable logic device (PLD)的軟件。 Quartus II 設(shè)計軟件改進了性能、提升了功能性、解決了潛在的設(shè)計延遲等,在工業(yè)領(lǐng)域率先提供FPG

20、A與mask-programmed devices開發(fā)的統(tǒng)一工作流程。Altera Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。當前官方提供下載的最新版本是v12.1。Altera Quartus II (3.0和更高版本)設(shè)計軟件是業(yè)界唯一提供FPGA和固定功能HardCopy器件統(tǒng)一設(shè)計流程的設(shè)計工具。工程師使用同樣的低價位工具對 Stratix FPGA進行功能驗證和原型設(shè)計,又可以設(shè)計HardCopy Stratix器件用于批量成品。系統(tǒng)設(shè)計者現(xiàn)在能夠用Quartus II軟件評估HardCopy Stra

21、tix器件的性能和功耗,相應(yīng)地進行最大吞吐量設(shè)計。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺。該平臺支持一個工作組環(huán)境下的設(shè)計要求,其中包括支持基于Internet的協(xié)作設(shè)計。Quartus平臺與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開發(fā)工具相兼容。改進了軟件的LogicLock模塊設(shè)計功能,增添 了FastFit編譯選項,推進了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。該軟件有如下幾個顯著的特點:1、Quartus II 的優(yōu)點該軟件界面友好,使用便捷,功能強大,是一個完全集成化

22、的可編程邏輯設(shè)計環(huán)境,是先進的EDA工具軟件。該軟件具有開放性、與結(jié)構(gòu)無關(guān)、多平臺、完全集成化、豐富的設(shè)計庫、模塊化工具等特點,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。2、Quartus II對器件的支持Quartus II支

23、持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘積項器件。支持MAX II CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含了LPM/MegaFunction宏功能模塊庫,用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,

24、可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。3、Quartus II對第三方EDA工具的支持對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三放EDA工具。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺。該平臺支持一個工作組環(huán)境下的設(shè)計要求,其中包括支持基于Internet的協(xié)作設(shè)計。Quartus平臺與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商

25、的開發(fā)工具相兼容。改進了軟件的LogicLock模塊設(shè)計功能,增添 了FastFit編譯選項,推進了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。4.2 數(shù)字系統(tǒng)開發(fā)流程(1)設(shè)計輸入:包括原理圖輸入、HDL文本輸入、EDIF網(wǎng)表輸入、波形輸入等幾種方式。(2)編譯:先根據(jù)設(shè)計要求設(shè)定編譯方式和編譯策略,如器件的選擇、邏輯綜合方式的選擇等;然后根據(jù)設(shè)定的參數(shù)和策略對設(shè)計項目進行網(wǎng)表提取、邏輯綜合、器件適配,并產(chǎn)生報告文件、延時信息文件及編程文件,供分析、仿真和編程使用。(3)仿真與定時分析:仿真和定時分析均屬于設(shè)計校驗,其作用是測試設(shè)計的邏輯功能和延時特性。仿真包括功能仿真和時序仿真。定時分析器可通過三種

26、不同的分析模式分別對傳播延時、時序邏輯性能和建立/保持時間進行分析。(4)編程與驗證:用得到的編程文件通過編程電纜配置PLD,加入實際激勵,進行在線測試。在設(shè)計過程中,如果出現(xiàn)錯誤,則需重新回到設(shè)計輸入階段,改正錯誤或調(diào)整電路后重新測試。4.2 FPGA簡介FPGA(FieldProgrammable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。目前以硬件描述語言(Verilog 或 VHDL)所完

27、成的電路設(shè)計,可以經(jīng)過簡 單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flipflop)或者其他更加完整的記憶塊。 系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計者而改變,所以FPGA可以完成所需要的邏輯功能。 FPGA一般來說比ASIC(專用

28、集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計,而且消耗更多的電能。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些芯片有比較差的可編輯能力,所以這些設(shè)計的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計轉(zhuǎn)移到一個類似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)。CPLD與FPGA的關(guān)系早在1980年代中期,F(xiàn)PGA已經(jīng)在PLD設(shè)備中扎根。CPLD和FPGA包括了一些相對大數(shù)量的可以編輯邏輯單元。CPLD邏輯門的密度在幾千到幾萬個邏輯單元之間,而FPGA通常是在幾萬到幾百萬。 CPLD和FP

29、GA的主要區(qū)別是他們的系統(tǒng)結(jié)構(gòu)。CPLD是一個有點限制性的結(jié)構(gòu)。這個結(jié)構(gòu)由一個或者多個可編輯的結(jié)果之和的邏輯組列和一些相對少量的鎖定的寄存器。這樣的結(jié)果是缺乏編輯靈活性,但是卻有可以預(yù)計的延遲時間和邏輯單元對連接單元高比率的優(yōu)點。而FPGA卻是有很多的連接單元,這樣雖然讓它可以更加靈活的編輯,但是結(jié)構(gòu)卻復(fù)雜的多。 CPLD和FPGA另外一個區(qū)別是大多數(shù)的FPGA含有高層次的內(nèi)置模塊(比如加法器和乘法器)和內(nèi)置的記憶體。一個因此有關(guān)的重要區(qū)別是很多新的FPGA支持完全的或者部分的系統(tǒng)內(nèi)重新配置。允許他們的設(shè)計隨著系統(tǒng)升級或者動態(tài)重新配置而改變。一些FPGA可以讓設(shè)備的一部分重新編輯而其他部分繼續(xù)

30、正常運行。FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。 一、采用FPGA設(shè)計ASIC電路(特定用途集成電路),用戶不需要投片生產(chǎn),就能得到合用的芯片。 二、FPGA可做其它全定制或半定制ASIC電路的中試樣片。 三、FPGA內(nèi)部有豐富的觸發(fā)器和IO引腳。 四、FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。 五、FPGA采用高速CHMOS工藝,功耗

31、低,可以與CMOS、TTL電平兼容。 可以說,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。 FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時需要對片內(nèi)的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。 加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可

32、以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。 FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對其編程。 如何實現(xiàn)快速的時序收斂、降低功耗和成本、優(yōu)化時鐘管理并降低FPGA與PCB并行設(shè)計的復(fù)雜性等問題,一直是采用FPGA的系統(tǒng)設(shè)計工程師需要考慮的關(guān)鍵問題。如今,隨著FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向發(fā)展,系統(tǒng)設(shè)計工程師在從這些優(yōu)異性能獲益的同時,不得不面對由于FPGA前所未有的性能和能力水平而帶來的

33、新的設(shè)計挑戰(zhàn)。 例如,領(lǐng)先FPGA廠商Xilinx最近推出的Virtex-5系列采用65nm工藝,可提供高達33萬個邏輯單元、1,200個I/O和大量硬IP塊。超大容量和密度使復(fù)雜的布線變得更加不可預(yù)測,由此帶來更嚴重的時序收斂問題。此外,針對不同應(yīng)用而集成的更多數(shù)量的邏輯功能、DSP、嵌入式處理和接口模塊,也讓時鐘管理和電壓分配問題變得更加困難。 幸運地是,F(xiàn)PGA廠商、EDA工具供應(yīng)商正在通力合作解決65nm FPGA獨特的設(shè)計挑戰(zhàn)。不久以前,Synplicity與Xilinx宣布成立超大容量時序收斂聯(lián)合工作小組,旨在最大程度地幫助系統(tǒng)設(shè)計工程師以更快、更高效的方式應(yīng)用65nm FPGA器

34、件。設(shè)計軟件供應(yīng)商Magma推出的綜合工具Blast FPGA能幫助建立優(yōu)化的布局,加快時序的收斂。 最近FPGA的配置方式已經(jīng)多元化! FPGA主要生產(chǎn)廠商1、Altera 2、Xilinx 3、Actel 4、Lattice 其中Altera和Xilinx主要生產(chǎn)一般用途FPGA,其主要產(chǎn)品采用RAM工藝。Actel主要提供非易失性FPGA,產(chǎn)品主要基于反熔絲工藝和FLASH工藝。FPGA設(shè)計的注意事項:不管你是一名邏輯設(shè)計師、硬件工程師或系統(tǒng)工程師,甚或擁有所有這些頭銜,只要你在任何一種高速和多協(xié)議的復(fù)雜系統(tǒng)中使用了FPGA,你就很可能需要努力解決好器件配置、電源管理、IP集成、信號完整

35、性和其他的一些關(guān)鍵設(shè)計問題。不過,你不必獨自面對這些挑戰(zhàn),因為在當前業(yè)內(nèi)領(lǐng)先的FPGA公司里工作的應(yīng)用工程師每天都會面對這些問題,而且他們已經(jīng)提出了一些將令你的設(shè)計工作變得更輕松的設(shè)計指導(dǎo)原則和解決方案。I/O信號分配可提供最多的多功能引腳、I/O標準、端接方案和差分對的FPGA在信號分配方面也具有最復(fù)雜的設(shè)計指導(dǎo)原則。盡管Altera的FPGA器件沒有設(shè)計指導(dǎo)原則(因為它實現(xiàn)起來比較容易),但賽靈思的FPGA設(shè)計指導(dǎo)原則卻很復(fù)雜。但不管是哪一種情況,在為I/O引腳分配信號時,都有一些需要牢記的共同步驟: 1. 使用一個電子數(shù)據(jù)表列出所有計劃的信號分配,以及它們的重要屬性,例如I/O標準、電壓

36、、需要的端接方法和相關(guān)的時鐘。 2. 檢查制造商的塊/區(qū)域兼容性準則。 3. 考慮使用第二個電子數(shù)據(jù)表制訂FPGA的布局,以確定哪些管腳是通用的、哪些是專用的、哪些支持差分信號對和全局及局部時鐘、哪些需要參考電壓。 4. 利用以上兩個電子數(shù)據(jù)表的信息和區(qū)域兼容性準則,先分配受限制程度最大的信號到引腳上,最后分配受限制最小的。例如,你可能需要先分配串行總線和時鐘信號,因為它們通常只分配到一些特定引腳。 5. 按照受限制程度重新分配信號總線。在這個階段,可能需要仔細權(quán)衡同時開關(guān)輸出(SSO)和不兼容I/O標準等設(shè)計問題,尤其是當你具有很多個高速輸出或使用了好幾個不同的I/O標準時。如果你的設(shè)計需要

37、局部/區(qū)域時鐘,你將可能需要使用高速總線附近的管腳,最好提前記住這個要求,以免最后無法為其安排最合適的引腳。如果某個特定塊所選擇的I/O標準需要參考電壓信號,記住先不要分配這些引腳。差分信號的分配始終要先于單端信號。如果某個FPGA提供了片內(nèi)端接,那么它也可能適用于其他兼容性規(guī)則。 6. 在合適的地方分配剩余的信號。 在這個階段,考慮寫一個只包含端口分配的HDL文件。然后通過使用供應(yīng)商提供的工具或使用一個文本編輯器手動創(chuàng)建一個限制文件,為I/O標準和SSO等增加必要的支持信息。準備好這些基本文件后,你可以運行布局布線工具來確認是否忽視了一些準則或者做了一個錯誤的分配。 這將使你在設(shè)計的初始階段

38、就和布局工程師一起工作,共同規(guī)劃PCB的走線、冗余規(guī)劃、散熱問題和信號完整性。FPGA工具可能可以在這些方面提供幫助,并協(xié)助你解決這些問題,因此你必須確保了解你的工具包的功能。 你咨詢一位布局專家的時間越晚,你就越有可能需要去處理一些復(fù)雜的問題和設(shè)計反復(fù),而這些可能可以通過一些前期分析加以避免。一旦你實現(xiàn)了滿意的信號分配,你就要用限制文件鎖定它們。 - 基于CMOS的設(shè)計主要消耗三類功率:內(nèi)部的(短路)、漏電的(靜態(tài)的)以及開關(guān)的(電容)。當門電路瞬變時,VDD與地之間短路連接消耗內(nèi)部功率。漏電功耗是CMOS工藝普遍存在的寄生效應(yīng)引起的。而開關(guān)功耗則是自負載電容,放電造成的。開關(guān)功耗與短路功耗

39、合在一起稱為動態(tài)功耗。下面介紹降低靜態(tài)功耗和動態(tài)功耗的設(shè)計技巧。電路設(shè)計中FPGA的應(yīng)用:連接邏輯,控制邏輯是FPGA早期發(fā)揮作用比較大的領(lǐng)域也是FPGA應(yīng)用的基石事實上在電路設(shè)計中應(yīng)用FPGA的難度還是比較大的這要求開發(fā)者要具備相應(yīng)的硬件知識(電路知識)和軟件應(yīng)用能力(開發(fā)工具)這方面的人才總是緊缺的,往往都從事新技術(shù),新產(chǎn)品的開發(fā)成功的產(chǎn)品將變成市場主流基礎(chǔ)產(chǎn)品供產(chǎn)品設(shè)計者應(yīng)用在不遠的將來,通用和專用IP的設(shè)計將成為一個熱門行業(yè)!搞電路設(shè)計的前提是必須要具備一定的硬件知識在這個層面,干重于學(xué),當然,快速入門是很重要的,越好的位子越不等人電路開發(fā)是黃金飯碗產(chǎn)品設(shè)計:把相對成熟的技術(shù)應(yīng)用到某些

40、特定領(lǐng)域如通訊,視頻,信息處理等等開發(fā)出滿足行業(yè)需要并能被行業(yè)客戶接受的產(chǎn)品這方面主要是FPGA技術(shù)和專業(yè)技術(shù)的結(jié)合問題,另外還有就是與專業(yè)客戶的界面問題產(chǎn)品設(shè)計還包括專業(yè)工具類產(chǎn)品及民用產(chǎn)品,前者重點在性能,后者對價格敏感產(chǎn)品設(shè)計以實現(xiàn)產(chǎn)品功能為主要目的,F(xiàn)PGA技術(shù)是一個實現(xiàn)手段在這個領(lǐng)域,F(xiàn)PGA因為具備接口,控制,功能IP,內(nèi)嵌CPU等特點有條件實現(xiàn)一個構(gòu)造簡單,固化程度高,功能全面的系統(tǒng)產(chǎn)品設(shè)計將是FPGA技術(shù)應(yīng)用最廣大的市場,具有極大的爆發(fā)性的需求空間產(chǎn)品設(shè)計對技術(shù)人員的要求比較高,路途也比較漫長不過現(xiàn)在整個行業(yè)正處在組建首發(fā)團隊的狀態(tài),只要加入,前途光明產(chǎn)品設(shè)計是一種職業(yè)發(fā)展方向

41、定位,不是簡單的愛好就能做到的!產(chǎn)品設(shè)計領(lǐng)域會造就大量的企業(yè)和企業(yè)家,是一個近期的發(fā)展熱點和機遇。系統(tǒng)級的應(yīng)用是FPGA與傳統(tǒng)的計算機技術(shù)結(jié)合,實現(xiàn)一種FPGA版的計算機系統(tǒng)如用XilinxV-4, V-5系列的FPGA,實現(xiàn)內(nèi)嵌POWERPCCPU, 然后再配合各種外圍功能,實現(xiàn)一個基本環(huán)境,在這個平臺上跑LINUX等系統(tǒng)這個系統(tǒng)也就支持各種標準外設(shè)和功能接口(如圖象接口)了這對于快速構(gòu)成FPGA大型系統(tǒng)來講是很有幫助的。這種山寨味很濃的系統(tǒng)早期優(yōu)勢不一定很明顯,類似ARM系統(tǒng)的境況但若能慢慢發(fā)揮出FPGA的優(yōu)勢,逐漸實現(xiàn)一些特色系統(tǒng)也是一種發(fā)展方向。若在系統(tǒng)級應(yīng)用中,開發(fā)人員不具備系統(tǒng)的擴

42、充開發(fā)能力,只是搞搞編程是沒什么意義的,當然設(shè)備驅(qū)動程序的開發(fā)是另一種情況,搞系統(tǒng)級應(yīng)用看似起點高,但不具備深層開發(fā)能力,很可能會變成愛好者,就如很多人會做網(wǎng)頁但不能稱做會編程類似以上是幾點個人開發(fā),希望能幫助想學(xué)FPGA但很茫然無措的人理一理思路。這是一個不錯的行業(yè),有很好的個人成功機會。但也肯定是一個競爭很激烈的行業(yè),關(guān)鍵看的就是速度和深度當然還有市場適應(yīng)能力。5 m序列生成器仿真分析圖 5-1 m序列生成器框圖5.1 反饋系數(shù)表存儲器設(shè)計反饋系數(shù)表存儲器設(shè)計 設(shè)計Galois型反饋系數(shù)表存儲器結(jié)構(gòu)如圖5-2所示。該結(jié)構(gòu)由FPGA中內(nèi)嵌的E2PROM構(gòu)成,只要圖3 Galois型反饋系數(shù)表

43、存儲器結(jié)構(gòu)圖給定n,經(jīng)過級數(shù)調(diào)整模塊運算得到其相應(yīng)地址addr,即可從E2PROM的輸出端feedfactor輸出其相應(yīng)的反饋系數(shù)。故存儲器中要存儲27組反饋系數(shù)值,若設(shè)計級數(shù)的最小級數(shù)為ns,最大級數(shù)為ne,則E2PROM的地址空間范圍是從0至ne-ns。將這27組反饋系數(shù)值做成一個ROM表,則需要一個5位二進制數(shù)字作為地址輸入來提取與之相應(yīng)的反饋系數(shù)值。 該模塊的VHDL程序如下entity rom is port (rst : in std _ logic; addr : in std _ logic _ vector (4 downto 0); feedfactor : out std

44、 _ logic _ vector (0 to 27); end rom; architecture feedTable of rom is type memory is array (0 to 26) of std _ logic _ vector (0 to 27); signal data1 : memory: = (/10000000000000000000000000000, /10000000000000000000000000000, /01000000000000000000000000000); signal addr1 : integer range 0 to 26; be

45、gin addr1=conv _ integer (addr); process (rst, addr1, addr, data1) begin if rst=-1.then feedfactor =data1 (addr1); else feedfactor -Z.); end if; end process; end feedTable;5.2 移位存儲器設(shè)計 為實現(xiàn)級數(shù)n值在329可調(diào)的m序列,先生成一個29級的Galois型移位寄存器,該結(jié)構(gòu)的第29位D觸發(fā)器的輸出是否反饋取決于級數(shù)n??捎靡粋€信號X來表征相應(yīng)級數(shù)的Galois型結(jié)構(gòu)中的反饋特征,X在移位寄存器狀態(tài)輸出(S(1), S

46、(28)中取值。通過輸入5位二進制信號addr 4, 0來確定末位反饋信號X的取值。如當輸入addr 4, 0為00000時,反饋信號X=S(1),這樣就生成了一個3級的m序列發(fā)生器;當輸入addr 4, 0為00001時,反饋信號X= S(2),這樣就生成了一個4級的m序列發(fā)生器;依此類推。該模塊的VHDL程序 PROCESS (clk, rst, addr) BEGIN IF (rst =-0.) THEN S-1.); ELSIF (CLKevent and CLK=-1.) THEN CASE addr IS WHEN/000000=XXXX=-0.; END CASE; Q=X; e

47、xa: FOR i IN n-1 DOWNTO 1 LOOP if (G (i-1) = (-0.) then S (i) =S (i-1); else S (i) =S (i-1) XOR (G (i-1) AND X); end if; END LOOP exa; S (0) =X; END IF; END PROCESS;該模塊有4個輸入(clk, rst, addr 4, 0,G0, 27)、1個輸出(Q)和1個緩沖口(S n-1,0)。clk為器件的工作時鐘; rst為器件的控制信號,為/10時器件工作;G0, 27是位于地址addr 4, 0的反饋系數(shù)表存儲器中輸出的反饋系數(shù);Q為

48、n級的m序列信號的輸出。5.3 仿真分析在Quartus = 2 * ROMAN II上對級數(shù)n分別為329的m序列發(fā)生器進行了仿真,給出了級數(shù)n分別為3和29的m序列發(fā)生器的仿真結(jié)果(圖5-1),并對系統(tǒng)的延時進行分析。為便于分析,筆者對系統(tǒng)中各寄存器的初始狀態(tài)都設(shè)定為/10,所以m序列的輸出應(yīng)該從/10開始。由圖4可知,m序列的每一位的寬度均為一個時鐘周期;m序列輸出的起始位置為rst置/10后的第一個時鐘上升沿是在35ns處。圖5-1中m序列在571599ns開始輸出,系統(tǒng)延時221599ns;圖5-2中m序列在571472ns開始輸出,系統(tǒng)延時221472ns。由此可見,系統(tǒng)延時受級數(shù)

49、n的影響較小。用VHDL語言描述復(fù)雜的數(shù)字系統(tǒng)設(shè)計效率顯著提高,對于任意級數(shù)的m序列發(fā)生器,充分利用FPGA芯片內(nèi)置的ROM構(gòu)建任意級數(shù)的Galois型反饋系數(shù)表,極大地簡化了快速m序列發(fā)生器的實現(xiàn)過程。由于其產(chǎn)生的速率快,且基本不受級數(shù)n的影響,因而該m序列產(chǎn)生方法具有較強的適應(yīng)性和較廣的應(yīng)用范圍,尤其適用于級數(shù)n可變的應(yīng)用場合。圖5-1 n=3圖5-2 n=29參考文獻1周潤景.基于Quartus的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計實例M.電子工業(yè)出版社.2007,82邢建平,曾繁泰.VHDL程序設(shè)計教程(第3版)M.北京:清華大學(xué)出版社,20053蒲海,陳自力,胡玫榮1基于CPLD的高速m序

50、列碼發(fā)生器的設(shè)計J1微計算機信息, 2005, 21 (4): 17217314束禮寶,宋克柱1偽隨機數(shù)發(fā)生器的FPGA實現(xiàn)與研究J1電路與系統(tǒng)學(xué)報, 2003, 8 (3): 12112415鄒學(xué)玉,易國華1一類基于FPGA的m序列發(fā)生器的設(shè)計J1長江大學(xué)學(xué)報(自然科學(xué)版), 2006, 3 (3): 848616林可祥,汪一飛1偽隨機碼的原理與應(yīng)用M1北京:人民郵電出版社, 199817梅文華,楊義先1跳頻通信地址編碼理論M1北京:國防工業(yè)出版社, 199618段穎妮,呂虹基于全狀態(tài)偽隨機序列的BIST設(shè)計J電子器件,2006,(4):126312669樊昌信通信原理(第五版)M北京:國防

51、工業(yè)出版社,2001附 錄圖5-1 n=3圖5-2 n=29附錄資料:不需要的可以自行刪除C語言編譯環(huán)境中的調(diào)試功能及常見錯誤提示調(diào)試功能1常用健 : 激活系統(tǒng)菜單: 將光標在編輯窗口和、信息窗口之間切換: 加載一個文件+: 查看程序運行結(jié)果: 得到有關(guān)編輯器在線幫助+: 得到有關(guān)C語言的在線幫助+: 終止正在運行的程序2塊操作 KB: 定義塊首 KK: 定義塊尾 KV: 塊移動 KC: 塊復(fù)制 KY: 塊刪除 KH: 取消塊定義3查找、替換和刪除操作 QF: 查找字符串 QA: 查找并替換字符串 Option: G(全程), B(向文件頭), N(直接替換) Y : 刪除一行 QY: 刪除從

52、光標位置到行末的所有字符編譯中的常見錯誤例析(1)警告類錯誤 XXXdeclare but never used 變量XXX已定義但從未用過。 XXXis assigned a value which is never used 變量XXX已賦值但從未用過。 Code has no effect 程序中含有沒有實際作用的代碼。 Non-portable pointer conversion 不適當?shù)闹羔樲D(zhuǎn)換,可能是在應(yīng)該使用指針的地方用了一個非0的數(shù)值。 Possible use of XXXbefore definition 表達式中使用了未賦值的變量 Redeclaration of ma

53、in 一個程序文件中主函數(shù)main不止一個。 Suspicious pointer conversion 可疑的指針轉(zhuǎn)換。通常是使用了基本類型不匹配的指針。 Unreachable code 程序含有不能執(zhí)行到的代碼。(2)錯誤或致命錯誤 Compound statement missing in function main 程序結(jié)尾缺少括號。 “”expected; “(”expected等 復(fù)合語句或數(shù)組初始化的結(jié)尾缺少“)”;“(”。 Case outside of switch case 不屬于Switch結(jié)構(gòu),多由于switch結(jié)構(gòu)中的花括號不配對所致。 Case statement

54、 missing : switch結(jié)構(gòu)中的某個case之后缺少冒號。 Constant expression required 定義數(shù)組時指定的數(shù)組長度不是常量表達式。 Declaration syntax error 結(jié)構(gòu)體或聯(lián)合類型的定義后缺少分號。 Declaration was expected 缺少說明,通常是因為缺少分界符如逗號、分號、右圓括號等所引起的。 Default outside switch Default部分放到了switch結(jié)構(gòu)之外,一般是因為花括號不匹配而引起的。 do statement must have while do語句中缺少相應(yīng)的while部分。 Exp

55、ression syntax 表達式語法錯。如表達式中含有兩個連續(xù)的運算符 Extra parameter in call fun 調(diào)用函數(shù)fun時給出了多余的實參。 Function should return a value 函數(shù)應(yīng)該返回一個值,否則與定義時的說明類型不匹配。 Illegal use of pointer 指針被非法引用,一般是使用了非法的指針運算。 Invalid pointer addition 指針相加非法。一個指針(地址)可以和一個整數(shù)相加,但兩個指針不能相加。 Lvalue required 賦值運算的左邊是不能尋址的表達式。 Misplaced else 程序遇

56、到了沒有配對的else No matching 表達式中的括號不配對。 Pointer required on left side of_ 在“_”運算的左邊只能允許一個指針而不能是一個一般的結(jié)構(gòu)體變量或聯(lián)合類型的變量。 Statement missing; 程序遇到了后面沒有分號的語句。 Too few parameters in call 調(diào)用某個函數(shù)時實參數(shù)目不夠。 Unable to open include file XXXXXXXXXXX 頭文件找不到。 Unexpected 或:或 在不希望的地方使用了或:。 Undefined symbol Xin function fun 函

57、數(shù)fun中的變量X沒有定義。5.連接中的常見錯誤主要錯誤類似于“undefined symbol _print in modula xxx”(print沒有定義),通常是函數(shù)名書寫錯誤。6.運行中的常見錯誤Abnormal program termination 程序異常終止。通常是由于內(nèi)存使用不當所致。Floating point error : Domain 或Divide by 0 運算結(jié)果不是一個數(shù)或被0 除Null pointer assignment 對未初始化的指針賦值,程序有嚴重錯誤。User break 在運行程序時終止。7.程序的跟蹤調(diào)試利用Run菜單可以進行程序的跟蹤調(diào)試

58、(1)GO to Cursor ()選擇該選項使程序執(zhí)行到光標所在行首先將光標移到某行(一般為可執(zhí)行),選擇該功能項,則程序執(zhí)行到該行的前一行暫停。此時程序處于跟蹤調(diào)試狀態(tài),并有亮條顯示在暫停處,此時可以查詢變量或表達式的值。(2)Trace into ()執(zhí)行一條語句或一行暫停此時程序處于跟蹤調(diào)試狀態(tài),并有亮條顯示在暫停處。該選項可跟蹤到被調(diào)函數(shù)的內(nèi)部。(3)Step over ()執(zhí)行一條語句或一行暫停此時程序處于跟蹤調(diào)試狀態(tài),并有亮條顯示在暫停處。該選項將自定義函數(shù)當作一個語句執(zhí)行,不跟蹤到函程序的內(nèi)部。(4)Debug 菜單程序處于跟蹤狀態(tài)時,可使用該菜單的選項。其主要是使用Evalu

59、ate目的是查詢或更新變量或表達式的值。選擇Evaluate功能后,系統(tǒng)彈出一個對話框。該對話框包含三個選項區(qū)域:Evaluate域可以輸入一個含有目前代碼中(程序暫停區(qū)的作用域)正在使用的變量名、或含變量的表達式、或常量表達式。按回車鍵后,在Result域中顯示變量或表達式的值。還可以用New value域進行調(diào)試。如果調(diào)試程序時發(fā)現(xiàn)Result域顯示的某變量或表達式的值不正確,并能估計出該變量或表達式的值,則可以將該值輸入到New value域,繼續(xù)執(zhí)行程序,其目的是肯定錯誤發(fā)生處是否在當前位置之前。如果輸入這個正確的值并將程序繼續(xù)執(zhí)行完畢而結(jié)果正確,說明在目前暫停處之前已經(jīng)發(fā)生錯誤而之后

60、無錯誤。(5)Break/Watch用于設(shè)置斷點和監(jiān)視表達式。選擇Add Watch功能選項,系統(tǒng)將彈出一個菜單,在Add Watch框中輸入變量名或表達式,按回車鍵后,系統(tǒng)在屏幕底部開辟一個窗口并顯示 該變量或表達式的值?!境R婂e誤信息語句索引】Ambiguous operators need parentheses:不明確的運算需要用括號括起 Ambiguous symbol xxx :不明確的符號 Argument list syntax error:參數(shù)表語法錯誤 Array bounds missing in function main 缺少數(shù)組界限符 Array bounds mi

溫馨提示

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

評論

0/150

提交評論