近年來(lái),隨著經(jīng)濟(jì)的高速增長(zhǎng),無(wú)線通信得到了飛速地發(fā)展。由于擴(kuò)展頻譜信號(hào)具有抗干擾、保密、抗偵破和抗衰落等特點(diǎn),擴(kuò)頻通信在軍事無(wú)線通信領(lǐng)域(如測(cè)控通信)中被廣泛應(yīng)用;隨著技術(shù)的成熟及成本的降低,其在民用通信市場(chǎng)上具有更廣大的發(fā)展前景。 本文首先介紹了FPGA的設(shè)計(jì)思想及流程,然后以一種擴(kuò)頻通信調(diào)制器為例,描述了如何實(shí)現(xiàn)自頂向下的設(shè)計(jì):包括調(diào)制器的頂層設(shè)計(jì)、劃分的下一層基本單元的設(shè)計(jì)等,并重點(diǎn)分析了基本單元之一的PN碼產(chǎn)生器的設(shè)計(jì)實(shí)現(xiàn)及仿真驗(yàn)證過(guò)程。 FPGA設(shè)計(jì)方法簡(jiǎn)介 FPGA技術(shù)的飛速發(fā)展,對(duì)國(guó)內(nèi)的電子設(shè)計(jì)工程師提出了嚴(yán)峻的挑戰(zhàn),以往傳統(tǒng)的設(shè)計(jì)方法,如單純的原理圖輸入方法,已很難滿足目前的要求。設(shè)計(jì)人員必須采用高水準(zhǔn)的設(shè)計(jì)工具,如硬件描述語(yǔ)言(Verilog HDL)或語(yǔ)言與原理圖結(jié)合來(lái)進(jìn)行設(shè)計(jì)。 1 FPGA的設(shè)計(jì)思想 FPGA的設(shè)計(jì)思想一般采用自頂向下(Top-down)的設(shè)計(jì),自頂向下的設(shè)計(jì)是從系統(tǒng)級(jí)開始的,把系統(tǒng)化分為基本單元,然后再把每個(gè)單元?jiǎng)澐譃橄乱粚哟蔚幕締卧恢边@樣做下去,直到可以直接用EDA元件庫(kù)里的元件來(lái)實(shí)現(xiàn)為止。 2 FPGA的設(shè)計(jì)流程 FPGA器件的設(shè)計(jì)一般可分為設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)和編程三個(gè)設(shè)計(jì)步驟及相應(yīng)的功能仿真、時(shí)序仿真和器件測(cè)試三個(gè)設(shè)計(jì)驗(yàn)證過(guò)程。 設(shè)計(jì)輸入:設(shè)計(jì)輸入有多種方式,目前最常用的有電路圖和硬件描述語(yǔ)言兩種。對(duì)于簡(jiǎn)單的設(shè)計(jì),可采用原理圖或ABEL語(yǔ)言設(shè)計(jì)。對(duì)于復(fù)雜的設(shè)計(jì),可采用原理圖或行為描述語(yǔ)言(如VHDL語(yǔ)言),或者兩者混用,采用層次化設(shè)計(jì)方法,分模塊、分層次的進(jìn)行描述。軟件在設(shè)計(jì)輸入時(shí),會(huì)檢查語(yǔ)法錯(cuò)誤,生成網(wǎng)表文件,供設(shè)計(jì)實(shí)現(xiàn)和設(shè)計(jì)校驗(yàn)用。 設(shè)計(jì)實(shí)現(xiàn):設(shè)計(jì)實(shí)現(xiàn)是指從設(shè)計(jì)輸入文件到位流文件的編譯過(guò)程。在該過(guò)程中,編譯軟件自動(dòng)地對(duì)設(shè)計(jì)文件進(jìn)行綜合、優(yōu)化,并針對(duì)所選中的器件進(jìn)行映射、布局、布線,產(chǎn)生相應(yīng)的位流數(shù)據(jù)文件。 器件編程:器件編程就是將位流數(shù)據(jù)文件配置到相應(yīng)的FPGA器件中。 設(shè)計(jì)校驗(yàn):對(duì)應(yīng)于設(shè)計(jì)輸入、設(shè)計(jì)實(shí)現(xiàn)和器件編程的功能仿真、時(shí)序仿真、器件測(cè)試組成設(shè)計(jì)驗(yàn)證的三個(gè)部分。功能仿真驗(yàn)證設(shè)計(jì)的功能邏輯,在設(shè)計(jì)輸入過(guò)程中,對(duì)部分功能或整個(gè)設(shè)計(jì)均可進(jìn)行仿真。完成設(shè)計(jì)實(shí)現(xiàn)后進(jìn)行時(shí)序仿真,針對(duì)器件的布局、布線方案進(jìn)行時(shí)延仿真,分析定時(shí)關(guān)系。器件測(cè)試是在器件編程完成后進(jìn)行,通過(guò)實(shí)驗(yàn)或借助于測(cè)試工具,測(cè)試器件最終功能和性能指標(biāo)。 擴(kuò)頻調(diào)制器的FPGA設(shè)計(jì) 本文介紹的一種擴(kuò)頻調(diào)制器,常應(yīng)用于測(cè)控通信領(lǐng)域。其信號(hào)形式是I、Q兩路正交信道上分別傳送擴(kuò)頻指令和測(cè)距碼,采用UQPSK調(diào)制,I、Q兩路的功率比為10:1,其信號(hào)的數(shù)學(xué)表達(dá)式如下: (1) 式中:ω為載波頻率; PT為信號(hào)總功率;c(t)為指令碼;PNI為指令信道PN碼;PNQ為測(cè)距信道PN碼。PNI是碼長(zhǎng)為210-1=1023的Gold碼,短碼;PNQ是碼長(zhǎng)為218-28=261 888的18級(jí)截短碼,長(zhǎng)碼;長(zhǎng)短碼長(zhǎng)之比為256。要求兩種碼起始同步,即當(dāng)長(zhǎng)碼發(fā)生器經(jīng)過(guò)全“1”狀態(tài)時(shí),短碼發(fā)生器也經(jīng)過(guò)它的全“1”狀態(tài)。 1 擴(kuò)頻調(diào)制器的頂層設(shè)計(jì) 擴(kuò)頻調(diào)制器的實(shí)現(xiàn)如圖1所示。FPGA的頂層設(shè)計(jì)見圖1的虛框部分,包括信息碼產(chǎn)生器及寄存器、碼鐘及PN碼產(chǎn)生器、載波產(chǎn)生器、0/π調(diào)制模塊等基本單元。下面以PN碼產(chǎn)生器為例介紹基本單元的設(shè)計(jì)。 圖1 擴(kuò)頻調(diào)制器實(shí)現(xiàn)框圖 2 基本單元的設(shè)計(jì) PN碼產(chǎn)生器包括兩種:碼長(zhǎng)分別為1023位的碼產(chǎn)生器及261 888位的截短碼產(chǎn)生器,初步的設(shè)計(jì)如圖2所示,PNMZ為碼鐘,產(chǎn)生RESET信號(hào)同時(shí)復(fù)位長(zhǎng)、短碼產(chǎn)生器。 圖2 兩路PN碼的初步設(shè)計(jì)圖 Gold碼由兩路小M序列異或組成,下面介紹210-1位碼產(chǎn)生器的設(shè)計(jì): PN碼的本原多項(xiàng)式為: (2) (3) 初相 A:0010011100 B:1001001000 210-1位PN碼產(chǎn)生器的FPGA設(shè)計(jì)如圖3所示。pnmz為碼鐘輸入端;pnm_reset為PN碼的復(fù)位端;pnm為碼輸出端;q1為碼全“1”信號(hào)輸出端。當(dāng)復(fù)位脈沖信號(hào)來(lái)到后,移位寄存器在碼鐘推動(dòng)下從設(shè)定的初值開始左移,左移移位寄存器的高位先出,產(chǎn)生小M序列。兩路小M序列異或產(chǎn)生PN碼。兩路比較器產(chǎn)生的信號(hào)相與后輸出全“1”信號(hào)。PN碼產(chǎn)生器劃分成的下一級(jí)基本單元,包括移位寄存器、比較器、與門、異或門,都可以直接用EDA元件庫(kù)里的元件。 圖3 210-1位PN碼發(fā)生器的FPGA設(shè)計(jì)圖 擴(kuò)頻調(diào)制器的FPGA仿真 工程上,F(xiàn)PGA的仿真類型可分為功能仿真和時(shí)序仿真(或稱前仿真和后仿真)。功能仿真是未經(jīng)布線和適配之前,使用原始設(shè)計(jì)綜合之后的文件進(jìn)行仿真。時(shí)序仿真,即將FPGA設(shè)計(jì)綜合之后,再由FPGA適配器(完成芯片內(nèi)自動(dòng)布線等功能)映射于具體芯片后得到的文件進(jìn)行仿真。 本文選用QuartusII3.0集成的仿真工具進(jìn)行波形仿真。對(duì)設(shè)計(jì)的主要模塊在通過(guò)綜合之后,首先進(jìn)行功能仿真,驗(yàn)證原始設(shè)計(jì)的正確性,驗(yàn)證設(shè)計(jì)結(jié)果的邏輯功能是否符合原始規(guī)定的邏輯功能。通過(guò)功能仿真之后,在設(shè)計(jì)中考慮器件延時(shí)后,再進(jìn)行布局布線后的仿真,通過(guò)觀察波形和數(shù)據(jù),可驗(yàn)證是否能滿足時(shí)序要求,是否能得到預(yù)期的值。 在設(shè)計(jì)過(guò)程中,作者針對(duì)主要的電路模塊進(jìn)行了仿真,包括:PN碼產(chǎn)生器、信息注入電路、并/串轉(zhuǎn)換電路等。下面介紹擴(kuò)頻調(diào)制器兩路PN碼產(chǎn)生器的仿真及設(shè)計(jì)改進(jìn)過(guò)程。 1 PN碼產(chǎn)生器的功能仿真 擴(kuò)頻調(diào)制器的兩路PN碼產(chǎn)生器,I路短碼的初相是“10,1101,0100”,Q路長(zhǎng)碼的初相“00,0010,0000,1010,0100”(碼初相指兩路小M序列初相異或后的初值)。初始的設(shè)計(jì)見圖3。對(duì)設(shè)計(jì)綜合過(guò)后,進(jìn)行功能仿真。仿真結(jié)果說(shuō)明:兩路PN碼起始同步,PNI起始相位:10,1101,0100;PNQ起始相位:00,0010,0000,1010,0100。原始設(shè)計(jì)符合要求。仿真結(jié)果如圖4所示。(PNMZ為碼鐘;RESET為復(fù)位信號(hào);PNI、PNQ為I、Q兩路PN碼;QUANI、QIANQ為I、Q兩路PN碼全“1”信號(hào)。) 圖4 兩路PN碼的功能仿真圖 2 PN碼產(chǎn)生器的時(shí)序仿真 通過(guò)功能仿真之后,對(duì)設(shè)計(jì)進(jìn)行布局布線編譯,然后進(jìn)行時(shí)序仿真。發(fā)現(xiàn)可能會(huì)在PN碼序列中產(chǎn)生毛刺信號(hào),并通過(guò)多次仿真發(fā)現(xiàn)復(fù)位信號(hào)也可能產(chǎn)生毛刺信號(hào),導(dǎo)致I、Q兩路信號(hào)起始不同步,如圖5所示。 圖5 兩路PN碼的時(shí)序仿真圖 作者對(duì)電路進(jìn)行改進(jìn),將復(fù)位信號(hào)、PN碼信號(hào)、全“1”信號(hào)上加上D觸發(fā)器,用碼鐘打一次,消除電路毛刺。改進(jìn)后的電路如圖6所示。 圖6 改進(jìn)后的兩路PN碼設(shè)計(jì)圖 再次進(jìn)行時(shí)序仿真,發(fā)現(xiàn)毛刺消除,PN碼產(chǎn)生正常,說(shuō)明兩路PN碼電路設(shè)計(jì)正確,可以作為經(jīng)驗(yàn)證的基本單元加入擴(kuò)頻調(diào)制器的FPGA設(shè)計(jì)。 圖7 改進(jìn)后的PN碼時(shí)序仿真圖 結(jié)束語(yǔ) 本文介紹了一種擴(kuò)頻通信調(diào)制器的FPGA設(shè)計(jì)實(shí)現(xiàn)方法,著重說(shuō)明了PN碼產(chǎn)生器的設(shè)計(jì)仿真過(guò)程,形象地闡述了FPGA自頂向下的設(shè)計(jì)思想及詳盡的設(shè)計(jì)流程。FPGA在無(wú)線通信工程領(lǐng)域的應(yīng)用已非常普遍,掌握一種好的設(shè)計(jì)方法對(duì)電子設(shè)計(jì)師們很重要,希望本文對(duì)讀者有所幫助。 |