- 數字通信同步技術的MATLAB與FPGA實現:Altera/Verilog版(第2版)
- 杜勇編著
- 6450字
- 2024-01-19 15:29:43
第1版前言
為什么要寫這本書
為什么要寫這本書呢?或者說為什么要寫數字通信技術的MATLAB與FPGA實現相關內容的書呢?記得在電子工業出版社出版《數字濾波器的MATLAB與FPGA實現》時,我在前言中提到寫作的原因主要有三條:其一是FPGA在電子通信領域得到了越來越廣泛的應用,并已逐漸成為電子產品實現的首選方案;其二是國內市場上專門討論如何采用FPGA實現數字通信技術的書籍相對欠缺;其三是數字通信技術本身十分復雜,關鍵技術較多,在一本書中全面介紹數字通信技術的FPGA實現時難免有所遺漏,且內容難以翔實。因此,根據自己從業經驗,將數字通信的關鍵技術大致分為濾波器技術、同步技術和調制解調技術三種,并嘗試著先寫濾波器技術,再逐步完成其他兩種技術的寫作。在廣大讀者的支持和鼓勵下,先后又出版了《數字通信同步技術的MATLAB與FPGA實現》和《數字調制解調技術的MATLAB與FPGA實現》。這樣,關于數字通信技術的MATLAB與FPGA實現的系列著作總算得以完成,多年前的構想總算成為現實!
自數字通信技術的MATLAB與FPGA實現的系列著作出版后,陸續通過郵件或博客的方式收到廣大讀者的反饋意見。一些讀者直接通過郵件告知書中的內容對工作的幫助;一些讀者提出了很多中肯的、有建設性的意見和建議;更多的讀者通過郵件交流書中的相關設計問題。《數字濾波器的MATLAB與FPGA實現》采用Xilinx公司的FPGA和VHDL作為開發平臺(Xilinx/VHDL版),該書出版后,不少讀者建議出版采用Verilog HDL作為開發平臺的版本。這是個很好的建議。在Xilinx/VHDL版順利出版之后,終于可以開始Altera/Verilog版的寫作了,以滿足不同讀者的需求。
本書的內容安排
第1章對數字通信同步技術的概念及FPGA基礎知識進行簡要介紹。通信技術的實現方法和平臺很多。其中,FPGA因其強大的運算能力,以及靈活方便的應用特性,在現代通信、數字信號處理等領域得到越來越廣泛的應用,并大有替代DSP等傳統數字信號處理平臺的趨勢。為了更好地理解本書后續章節的內容,本章簡要介紹了Altera公司的FPGA,以及Quartus II開發環境、MATLAB軟件等內容。如果讀者已經具備一定的FPGA設計經驗,也可以跳過本章,直接閱讀后續章節的內容。
第2章介紹FPGA中數的表示方法、數的運算、有限字長效應及常用的數字信號處理模塊。在FPGA等硬件系統中實現數字信號時,因受寄存器長度的限制,不可避免地會產生有效字長效應。工程師必須了解字長效應對數字系統可能帶來的影響,并在實際設計中通過仿真來確定最終的量化位寬、寄存器長度等內容。本章還對幾種常用的運算模塊IP核進行介紹,詳細闡述各IP核控制參數的設置方法。IP核在FPGA設計中應用得十分普遍,尤其在數字信號處理領域,采用設計工具提供的IP核進行設計,不僅可以提高設計效率,還可以保證設計的性能。因此,在進行FPGA設計時,工程師可以先瀏覽一下選定的目標器件所能提供的IP核,以便通過使用IP核來減少設計的工作量并提高系統的性能。當然,工程師也可以從設計需要出發,根據是否具有相應的IP核來選擇目標器件。本章介紹的都是一些非常基礎的知識,但正因為基礎,所以顯得尤其重要。其中有效數據位運算,以及有效字長效應等內容在后續的工程實例講解中都會多次涉及,建議讀者不要急于閱讀后續章節的工程實例講解,先切實練好基本功,才可以達到事半功倍的效果。
第3章主要討論鎖相環技術的基本理論,這也是本書閱讀起來最為乏味的章節。本章有一大堆理論和公式,很容易讓人感到厭煩。對于數字通信技術來說,鎖相環技術的工作原理大概是最難以弄清的知識點之一。但是,要想設計出完美的同步環路,對理論的透徹理解是必須具備的能力,而且一旦理解透了,在工程設計時就會有得心應手的感覺。本章從工程應用的角度,全面介紹鎖相環的原理、組成及工程應用中需要經常使用的公式和參數設計方法。建議讀者先耐心地對本章所介紹的內容進行深入的推敲理解,因為在后續章節講解同步技術的FPGA實現時,可能會需要反復翻閱本章的內容。通過在工程設計實踐中反復體會鎖相環技術的原理及工作過程,當讀者真正理解鎖相環技術的基本理論及分析方法后,就會發現設計出性能優良的鎖相環也不是一件多么困難的事。
第4章討論載波同步技術的FPGA實現。這一章仍然有一些概念及工作原理的介紹,主要目的是講清楚數字化載波鎖相環的參數設計及計算方法。實現數字鎖相環的關鍵步驟在于構造合適的數字化實現結構及模型。本章以一個完整的載波同步環工程設計實例,詳細講解數字載波鎖相環系統的設計步驟、方法,并進行全面的性能仿真測試。載波同步環的數字化設計與實現比較復雜,初學者往往難以理解數字化模型與模擬電路之間的對應關系。數字化實現方法中各組成部件、參數的設計比較靈活。本章最后對載波同步環的一般設計步驟、環路參數對系統性能的影響進行歸納整理。讀者可以完全按照本章所討論的流程進行系統的設計及仿真,并反復理解載波同步技術的數字化實現方法,以及Verilog HDL編程的思路,必要時可以重復閱讀第3章的內容,切實掌握鎖相環技術的工作原理及實現過程。同時,本章用較大的篇幅詳細講解工程設計時的仿真測試步驟,讀者尤其要切實掌握Quartus II與MATLAB聯合應用的方法,以便提高設計效率。
第5章首先簡要介紹三種抑制載波同步環的工作原理,隨后對三種同步環的FPGA設計方法、結構、仿真測試過程進行詳細討論。從抑制載波同步環的FPGA實現過程中可以看出,設計三種同步環時所采用的環路模型、參數設計方式均十分相似,其中的環路濾波器只需簡單修改即可通用。平方環與同相正交環的性能是等價的,但同相正交環(Costas環)在解調BPSK等抑制載波調制信號時更具優勢。判決反饋環比其他兩種環路的噪聲性能更好,環路鎖定后的穩態相差更小,但載波同步環需要以位同步作為前提條件,位同步會影響環路的穩定性。因此,對于抑制載波調制信號來講,工程上通常采用同相正交環來實現信號的載波同步及數字解調。
第6章首先介紹自動頻率控制的基本概念,然后分別對最大似然頻差估計及基于FFT載波頻率估計兩種算法的原理、MATLAB仿真進行討論,并詳細闡述基于FFT載波頻率估計算法的FPGA實現方法。FSK是數字通信中常用的一種調制方式,本章對頻率調制的原理及信號特征進行介紹,并采用MATLAB對FSK信號進行仿真。FSK信號的解調方法很多,非相干解調法因為實現簡單,性能優良而得到更為廣泛的應用。為了便于讀者更好地理解鎖相環與AFC環的差別,本章將對常規二階鎖相環無法實現FSK信號解調的原因進行分析,并采用與鎖相環類似的分析方法,對AFC環的模型進行討論。這也進一步說明,讀者在進行FPGA工程設計之前,必須充分理解系統的工作原理等理論知識,才能更好地把握FPGA實現過程中的參數設計、數據截位、時序控制等工程設計細節。本章最后詳細闡述采用相乘微分型AFC環實現FSK解調的原理、方法、步驟及仿真測試過程。
第7章主要討論采用數字鎖相環實現位同步的原理、方法、步驟及仿真測試過程。數字鎖相法實現位同步是數字通信中使用最為廣泛的方法,其基本工作原理與載波同步環類似,均是通過鑒相器提取輸入信號與本地位同步信號的相差,并據此對本地同步信號的相位進行調整。微分型位同步環是最簡單的數字鎖相環,其他位同步環均是在其基礎上進行改進和完善的,以增加抗干擾性能及穩定性能。本章以工程實例講解的方法,對微分型、積分型和改進型位同步環的各個功能部件進行詳細的討論,尤其對環路各節點的信號波形進行了說明。讀者在閱讀本章時,需要切實弄清各環路、各節點波形的時序關系。當完全理解環路的工作過程及實現方法后,采用Verilog HDL進行實現就比較容易了。讀者可以將本章所討論的實例作為獨立的模塊嵌入前面章節的實例中,以完成基帶信號解調后的位同步功能。
第8章首先介紹同步傳輸及異步傳輸的概念,并對兩種傳輸方式的同步原理、方法、步驟及仿真測試過程進行詳細討論。異步傳輸的速率及效率都比較低,典型的應用是串口通信。本章對RS-232-C串口傳輸進行FPGA實現,RS-232-C串口傳輸協議定義了較多的握手信號,有興趣的讀者可以在例8-1的基礎上對串口通信進行完善。本章的重點是幀同步系統的FPGA實現,完整的幀同步包括搜索、校核和同步等狀態。一個看似復雜的系統,只要合理劃分功能模塊,在編寫程序之前厘清編程思路,最終的代碼實現反而會變得比較簡單。讀者在閱讀幀同步系統的程序代碼時,重點在于理解各模塊之間的接口關系,以及接口信號之間的時序關系,進而深刻理解程序的編寫思路和方法,以提高復雜系統的Verilog HDL的編程水平。
本書的目標
作為一名電子通信領域的技術人員,在從業之初都會遇到類似的困惑:如何將教材中所學的理論與實際中的工程設計結合起來?如何能夠將這些教材中的理論轉換成實際的應用?絕大多數數字通信類教材對通信的原理講解得十分透徹,但理論與實踐之間顯然需要有一座可以順利通過的橋梁。一個常用的方法是通過MATLAB等進行仿真來加深對理論的理解,但更好的方法是直接參與工程的設計與實現。FPGA因其快速的并行運算能力,以及獨特的組成結構,在電子通信領域已成為必不可少的實現平臺之一。本書的目的正是架起這樣一座橋梁,通過具體的設計實例,詳細講解從理論到工程實現的方法、步驟和過程,以便于工程技術人員盡快掌握和利用FPGA平臺實現數字通信同步技術的方法。
目前,市場上已有很多介紹ISE、QuartusⅡ等FPGA開發環境,以及VHDL、Verilog HDL等硬件描述語言的書籍。如果僅僅使用FPGA來實現一些數字邏輯電路,或者理論性不強的控制電路設計,那么掌握FPGA開發工具及Verilog HDL的語法就可以工作了。數字通信同步技術的理論性要強得多,采用FPGA平臺實現數字通信同步技術的前提條件是對理論知識要有深刻的理解。在理解理論知識的基礎上,關鍵的問題是根據這些理論知識,利用FPGA的特點,找到合適的算法,厘清工程實現的思路,并采用Verilog HDL等硬件描述語言進行正確的實現。顯然,要想讀懂本書,掌握FPGA實現數字通信同步技術的知識和技能,讀者還需要對FPGA的開發環境和設計語言有一定的了解。
在寫作過程中,本書兼顧數字通信同步技術的理論,以及工程設計過程的完整性,重點突出FPGA設計方法、結構、實現細節,以及仿真測試方法。在講解理論知識時,重點從工程應用的角度介紹工程設計時必須掌握和理解的知識點,并且結合FPGA的特點進行討論,以便讀者盡快地找到理論與工程實現之間的結合點。在講解實例的FPGA實現時,絕大多數實例都給出了完整的Verilog HDL實現代碼,從思路和結構上對每段代碼進行了詳細的分析和說明。作者針對一些似是而非的概念,結合工程實例的仿真測試加以闡述,希望能夠對讀者提供更多有用的參考。相信讀者在按照書中講解的步驟完成一個個工程實例時,會逐步感覺到理論與工程實現之間完美結合的暢快。隨著讀者掌握的工程實現技能的提高,對理論知識的理解也必將越來越深刻。如果重新閱讀以前學過的理論知識,就會比較容易構建起理論與工程實現之間的橋梁。
關于FPGA開發環境的說明
眾所周知,目前兩大廠商Xilinx和Altera的產品占據了全球約90%的FPGA市場。可以說,在一定程度上正是由于兩家FPGA公司相互競爭的態勢,才有力地推動了FPGA的不斷發展。雖然HDL的編譯及綜合環境可以采用第三方公司所開發的產品,如ModelSim、Synplify等,但FPGA的物理實現必須采用各自公司開發的軟件平臺,無法通用。Xilinx公司目前的主流開發平臺是ISE,Altera公司目前的主流開發平臺是QuartusⅡ。與FPGA開發平臺類似,HDL也存在兩種難以取舍的選擇,即VHDL和Verilog HDL。
如何選擇開發平臺以及HDL呢?其實,對于有志于從事FPGA技術開發的技術人員,選擇哪種平臺及HDL語言并不重要,因為兩種平臺具有很多相似的地方,精通一種HDL后,再學習另一種HDL也不是一件困難的事。通常來講,可以根據周圍同事、朋友、同學或公司的主要使用情況進行選擇,這樣在學習的過程中就可以很方便地找到能夠給你指點迷津的專業人士,從而加快學習的進度。
本書采用Altera公司的FPGA作為開發平臺,采用Quartus II 12.1作為開發環境,采用Verilog HDL作為實現手段。由于Verilog HDL并不依賴于某家公司的FPGA,因此本書的Verilog HDL程序可以很方便地移植到Xilinx公司的FPGA上。如果程序中應用了IP核,兩家公司的IP核通常是不能通用的,這就需要根據IP核的功能參數,在另外一個平臺上重新生成IP核,或編寫Verilog HDL代碼來實現。
如何使用本書
本書討論的是數字通信同步技術的MATLAB與FPGA實現。相信大部分工科院校的學生和電子通信領域的從業人員對MATLAB都有一個基本的了解。由于MATLAB的易用性及強大的功能,已經成為數學分析、信號仿真、數字處理必不可少的工具。MATLAB具有大量專門針對數字信號處理的函數,如濾波器函數、傅里葉分析函數等,這些函數十分有利于對一些通信的概念及信號進行功能性仿真,因此,在具體講解某個實例時,通常會采用MATLAB作為仿真驗證工具。雖然書中的MATLAB程序相對比較簡單,主要應用一些數字信號處理函數進行仿真驗證,但如果讀者沒有MATLAB的基礎知識,還是要先簡單學習一下MATLAB的編程概念及基本語法。
在講解具體的FPGA工程應用實例時,通常會先采用MATLAB對所設計的工程進行仿真,一方面仿真算法過程及結果,另一方面生成FPGA仿真所需要的測試數據。然后在Quartus II上編寫Verilog HDL代碼對實例進行設計和實現。為了便于講述,通常會先討論程序的設計思路,或者先給出程序清單,再對程序代碼進行分析說明。完成程序編寫后,還需要編寫TestBench文件,根據所需產生輸入信號的種類,可以直接在TestBench文件中編寫代碼來產生輸入信號,也可以通過讀取外部文本文件的方式來產生輸入信號。最后采用ModelSim工具對Verilog VHDL程序進行時序或行為仿真,查看ModelSim仿真波形結果,并根據需要將仿真數據寫入外部文本文件中,通常還會對仿真波形進行分析,分析仿真結果是否滿足要求;如果ModelSim波形不便于精確分析測試結果,則需要再次編寫MATLAB程序,對ModelSim仿真結果數據進行分析處理,最終驗證FPGA設計的正確性。
本書主要以工程實例的方式講解數字通信同步技術的原理及FPGA實現方法和步驟。本書的大部分工程實例均給出了完整的程序清單,但限于篇幅,不同工程實例中的一些重復或相似的代碼沒有完全列出,本書配套資料中收錄了本書所有工程實例的源程序及工程設計資源,并按章節序號存放。本書在編寫工程實例時,程序文件均放置在“D:\SyncPrograms”文件夾下,讀者可以先在本地硬盤下建立“D:\SyncPrograms”文件夾,而后將本書配套資料中的程序壓縮包解壓至該文件夾下,大部分程序均可直接運行。需要說明的是,在大部分工程實例中,需要由MATLAB產生FPGA測試所需的數據文件,或者由MATLAB讀取外部文件進行數據分析,同時FPGA仿真所需的TestBench文件通常也需要從指定的路徑下讀取,或將仿真結果輸出到指定的路徑下。文本文件的路徑均指定為絕對路徑,如“fid=fopen('D:\SyncPrograms\ Chapter_4\E4_1_DirectCarrier\Sn0dB_in.txt','w')”,因此讀者運行實例程序時,需要將程序文件中指定文件絕對路徑的代碼進行修改,以確保仿真測試程序在正確的路徑下對文件進行讀/寫操作。
致謝
有人說,每個人都有他存在的使命,如果他迷失自己的使命,就失去了存在的價值。不只是每個人,每件物品也都有其存在的使命。對于一本書來講,其存在的使命就是被閱讀,并給閱讀者帶來收獲。數字通信的MATLAB與FPGA設計系列圖書,能夠對讀者在工作及學習中有所幫助,是作者莫大的欣慰。
作者在寫作本書的過程中查閱了大量的資料,在此對資料的作者及提供者表示衷心的感謝。由于寫作本書的緣故,作者在重新閱讀一些經典的數字通信理論著作時,再次深刻感受到了前輩們嚴謹的治學態度和細致的寫作作風。
在此,感謝父母,幾年來一直陪伴在我的身邊,由于他們的默默支持,才讓我能夠在家里專心致志地寫作。感謝我的妻子劉帝英女士,她不僅是一位盡心盡職的母親,也是一位嚴謹細致的科技工作者,同時也是本書的第一位讀者,在工作之余對本書進行了詳盡而細致的校對。時間過得很快,我的女兒已經上小學四年級了,她最愛看書和畫畫,最近迷上了《西游記》,以前的兒童簡化版已滿足不了她的要求了,周末陪她去書店買了一本原著,她常常被書中的情節逗得哈哈大笑,還常常要推薦給我看一些精彩的章節。
FPGA技術博大精深,數字通信技術種類繁多且實現難度大,雖然本書盡量詳細討論了數字通信同步技術的FPGA實現相關內容,仍感覺到難以詳盡敘述工程實現的所有細節。相信讀者在實際工程應用中經過不斷實踐、思考及總結,一定可以快速掌握數字通信同步技術的工程設計方法,提高FPGA的工程設計能力。
由于作者水平有限,不足之處在所難免,敬請讀者批評指正。歡迎大家就相關技術問題進行交流,或對本書提出改進意見及建議。請讀者訪問網址http://duyongcn.blog.163.com以獲得與本書相關的資料及信息,也可以發郵件至duyongcn@sina.cn與作者進行交流。
杜勇
2015年3月