信號(hào)發(fā)生器又叫做函數(shù)信號(hào)發(fā)生器,其主要作用是用于實(shí)驗(yàn)信號(hào)源。關(guān)鍵功能是用來(lái)產(chǎn)生各種各樣的頻率、波形和輸出電平信號(hào)。在電子電路領(lǐng)域的作用愈發(fā)重要,特別是在大型集成電路領(lǐng)域被廣泛應(yīng)用的當(dāng)下,信號(hào)發(fā)生器成了現(xiàn)如今很多電子電路實(shí)驗(yàn)設(shè)計(jì)中最常用的儀器之一。 信號(hào)發(fā)生器又稱之為信號(hào)源或者振蕩器,在生產(chǎn)實(shí)踐和電子科技領(lǐng)域發(fā)揮著極其重要的作用。上世紀(jì)末,DDS技術(shù)出現(xiàn),這種運(yùn)用數(shù)字化方法經(jīng)多種工作來(lái)產(chǎn)生所需頻率信號(hào)的電路設(shè)計(jì)方案,不僅能夠輸出各種各樣目標(biāo)波形,還能產(chǎn)生各種可以任意調(diào)節(jié)的波形信號(hào)。在這種技術(shù)條件下設(shè)計(jì)的信號(hào)發(fā)生器具有以下幾個(gè)優(yōu)點(diǎn)。例如:容易控制、高頻率分辨率、相位連續(xù)、切換速度十分迅速、輸出相位噪聲低和可以產(chǎn)生任意波形。 本課題設(shè)計(jì)的信號(hào)發(fā)生器首先介紹了直接數(shù)字頻率合成技術(shù)的發(fā)展歷史,分析了DDS技術(shù)的基本理論和FPGA的技術(shù)難點(diǎn),采用AT89S52芯片來(lái)完成本次系統(tǒng)的設(shè)計(jì)。還介紹了信號(hào)發(fā)生器的整體設(shè)計(jì),其中硬件模塊包括電源、人機(jī)交互、單片機(jī)控制、AT89S52信號(hào)發(fā)生模塊以及信號(hào)處理模塊等。軟件部分則包含了軟件的整體設(shè)計(jì),AT89S52頻率控制字設(shè)計(jì)、按鍵掃描模塊以及顯示模塊。通過(guò)各個(gè)模塊的相互配合,最終能夠產(chǎn)生正弦波、矩形波、三角波、鋸齒波,輸出信號(hào)的頻率和幅度方便可調(diào),頻率、幅值能夠用LCD予以顯示,能夠設(shè)置直流電平偏移量,具有TTL輸出功能,讓整個(gè)系統(tǒng)的設(shè)計(jì)達(dá)到預(yù)期效果,最后對(duì)整個(gè)論文進(jìn)行總結(jié)修改。
目 錄
摘 要 I Abstract II 目 錄 III 1 緒論 - 1 - 1.1 選題背景 - 1 - 1.2 頻率合成技術(shù)發(fā)展過(guò)程 - 1 - 1.3 DDS技術(shù)的發(fā)展概述 - 2 - 1.4 本文所做的工作 - 3 - 2 信號(hào)發(fā)生器的方案設(shè)計(jì) - 5 - 2.1 設(shè)計(jì)需求和方案的選擇 - 5 - 2.2 系統(tǒng)硬件選擇 - 6 - 2.2.1 單片機(jī)的選擇 - 6 - 2.2.2 FPGA的選型 - 7 - 2.2.3 數(shù)模轉(zhuǎn)換模型的選擇 - 8 - 2.3 AT89S52的功能和結(jié)構(gòu) - 9 - 2.4 系統(tǒng)軟件的總體設(shè)計(jì) - 10 - 3 系統(tǒng)硬件設(shè)計(jì) - 11 - 3.1 DDS的原理以及結(jié)構(gòu) - 11 - 3.1.1 DDS的原理 - 11 - 3.1.2 DDS的結(jié)構(gòu) - 12 - 3.2 FPGA的相關(guān)技術(shù) - 13 - 3.2.1 FPGA的基本原理 - 13 - 3.2.2 FPGA的開發(fā)流程 - 14 - 3.2.3 原理圖設(shè)計(jì)輸入方法的介紹 - 15 - 3.2.4 開發(fā)工具介紹 - 16 - 3.3 DDS波形合成 - 18 - 3.3.1 時(shí)鐘模塊介紹 - 18 - 3.3.2 命令接收模塊介紹 - 22 - 3.3.3 相位累加器介紹 - 25 - 3.3.4 波形ROM模塊 - 26 - 3.3.5 DDS處理模塊 - 26 - 3.3.6 DA轉(zhuǎn)換電路設(shè)計(jì) - 27 - 3.4 人機(jī)交互部分的硬件設(shè)計(jì) - 29 - 4 系統(tǒng)軟件設(shè)計(jì) - 32 - 4.1 C51簡(jiǎn)介 - 32 - 4.2 控制軟件的設(shè)計(jì) - 32 - 4.2.1總體控制模塊 - 32 - 4.2.2 鍵盤掃描和處理模塊 - 33 - 4.2.3 液晶顯示模塊 - 34 - 5 系統(tǒng)調(diào)試與性能測(cè)試 - 36 - 5.1電路調(diào)試 - 36 - 5.1.1 單片機(jī)調(diào)試 - 36 - 5.1.2 鍵盤和LCD的調(diào)試 - 36 - 5.1.3 FPGA的調(diào)試 - 36 - 5.1.4 D/A轉(zhuǎn)換模塊的調(diào)試 - 36 - 5.2 系統(tǒng)測(cè)試 - 37 - 5.2.1 輸出波形的測(cè)試 - 37 - 5.2.2 信號(hào)頻率的測(cè)量 - 38 - 5.2.3 信號(hào)幅度測(cè)量 - 39 - 5.2.4 頻率穩(wěn)定度測(cè)量 - 40 - 5.3 誤差分析 - 40 - 結(jié) 論 - 42 - 致 謝 - 43 - 參 考 文 獻(xiàn) - 44 -
1 緒論
1.1 選題背景基準(zhǔn)信號(hào)通常把信號(hào)源運(yùn)用于電子與通信系統(tǒng)中。函數(shù)信號(hào)發(fā)生器、脈沖信號(hào)發(fā)生器、任意波形發(fā)生器等都是信號(hào)源包括的種類。 信號(hào)源的技術(shù)指標(biāo)可以在一定層面上決定系統(tǒng)性能的好壞,由于信號(hào)源的應(yīng)用愈發(fā)廣泛,使得對(duì)高性能信號(hào)源的需求同樣越來(lái)越高,例如頻帶范圍寬,頻率切換速度快,與此同時(shí)對(duì)于成本、體積、信號(hào)源功率大小的要求也隨之增高。在DDS技術(shù)沒(méi)出來(lái)之前,采用的振蕩器的信號(hào)源產(chǎn)生的波形種類比較少,不僅準(zhǔn)確度、靈活性差,而且精度也不高。 1.2 頻率合成技術(shù)發(fā)展過(guò)程二十世紀(jì)上葉,頻率合成技術(shù)誕生,迄今為止已經(jīng)有近七十年的歷史。頻率合成器在電子設(shè)備領(lǐng)域扮演著十分重要的角色,可以說(shuō)直接決定了系統(tǒng)性能的優(yōu)良,頻率合成器在電子對(duì)抗和雷達(dá)通信,以及廣播電視等多個(gè)領(lǐng)域得到了極其廣泛的應(yīng)用。頻率合成技術(shù)是把一個(gè)或幾個(gè)高精度、高密度的標(biāo)注頻率經(jīng)過(guò)一系列轉(zhuǎn)換,產(chǎn)生出穩(wěn)定度,精度一致的離散頻率的電子技術(shù)。現(xiàn)如今電子技術(shù)發(fā)展迅速,以致于對(duì)頻率合成器的的各方面要求也隨著增高,尤其是以前的合成器頻率精度低、分辨低、帶寬窄、波形種類少,不能很好的達(dá)到設(shè)計(jì)要求,有需要就有提高,這也是該項(xiàng)技術(shù)發(fā)展速度快的原因之一。 頻率合成器是采用具備高精度、高穩(wěn)定度、相位噪聲比較低的頻率源作為初始信息。采用電子技術(shù)領(lǐng)域上的混頻、倍頻或分頻等技術(shù)手段來(lái)處理頻率,再對(duì)它進(jìn)行數(shù)學(xué)領(lǐng)域上的加、減、乘、除運(yùn)算,進(jìn)而產(chǎn)生所生成的每一種頻率都能有同樣的穩(wěn)定性和準(zhǔn)確性。 研究頻率合成理論的發(fā)展歷史及順序,可以將其大致分為三個(gè)主要階段,分別是直接模擬頻率合成技術(shù),間接頻率合成技術(shù)和直接數(shù)字頻率合成技術(shù)。 直接模擬頻率合成技術(shù)是出現(xiàn)的比較早的一種頻率合成技術(shù),該頻率合成的方法大致上是用單個(gè)或者多個(gè)標(biāo)準(zhǔn)頻率源,通過(guò)諧波發(fā)生器產(chǎn)生大量的諧波,然后在用混頻、分頻、倍頻及濾波等技術(shù)手段來(lái)處理離散的頻率。這種技術(shù)的優(yōu)點(diǎn)是轉(zhuǎn)換時(shí)間短、相噪小。不過(guò)這種技術(shù)手段由于采用了大量混頻、分頻、倍頻和濾波等技術(shù),就不可避免的讓合成器的結(jié)構(gòu)變得復(fù)雜,除此還有體積大、成本大、功耗大等等缺點(diǎn)。 間接頻率合成技術(shù)又稱鎖相式頻率合成,是為了解決上述問(wèn)題而產(chǎn)生的第二代頻率合成技術(shù)。把鎖相環(huán)直接固化到其中,不一樣的頻率是運(yùn)用了鎖相環(huán)路的窄帶跟蹤特性而獲得的。最初出現(xiàn)的事模擬鎖相環(huán),之后又出現(xiàn)了數(shù)字式鎖相環(huán),和數(shù);旌湘i相環(huán)。鎖相環(huán)路可以說(shuō)是一個(gè)閉環(huán)的自動(dòng)化控制系統(tǒng),具有自動(dòng)跟蹤輸入信號(hào)相位的功能。之所以其窄帶跟蹤特性優(yōu)良,正是因?yàn)樗淹獠枯斎氲膮⒖夹盘?hào)合理運(yùn)用進(jìn)而控制環(huán)路內(nèi)部振蕩信號(hào)的頻率和相位。鎖相頻率合成的優(yōu)點(diǎn)結(jié)構(gòu)簡(jiǎn)單以及集成簡(jiǎn)單,不僅如此,頻譜也十分純凈,挑選需要的頻率信號(hào)相對(duì)是比較簡(jiǎn)單的,而且可以抵制雜散、降低集成難度。但是也存在一些不好的地方,比如說(shuō):鎖定時(shí)間很長(zhǎng),進(jìn)而導(dǎo)致了頻率轉(zhuǎn)換時(shí)間也較長(zhǎng),在高分辨率和快速轉(zhuǎn)換之間存在一定的相悖,所以所向頻率合成通常只用在步進(jìn)大的頻率合成儀器里。 隨著這些年電子技術(shù)的向前推進(jìn),尤其是出現(xiàn)了大規(guī)模集成電路,以及數(shù)字信號(hào)處理領(lǐng)域技術(shù)的飛速提升。20世紀(jì)70年代,有人第一次發(fā)表了關(guān)于直接數(shù)字頻率合成的想法,這也成為了當(dāng)下最尖端的頻率合成技術(shù)。之所以是最尖端的技術(shù),是因?yàn)樗煌酝,讓在它之前的兩種方法的限制徹徹底底的消失。該技術(shù)把計(jì)算機(jī)數(shù)字處理方面的知識(shí)滲透到頻率合成層面,成就了全新的數(shù)字處理方式,也預(yù)示著第三次頻率合成技術(shù)的革命。通過(guò)DDS技術(shù)生產(chǎn)的信號(hào)源能讓全數(shù)字化控制電路精確的控制DDS輸出波形的頻率、幅度相位等,這樣生成的系統(tǒng)十分穩(wěn)定、可靠。正是因?yàn)檫@些優(yōu)秀的特性使得該技術(shù)在近年間,發(fā)展的十分迅速,也被越來(lái)越普遍的應(yīng)用于各個(gè)領(lǐng)域。但正是由于具有這些優(yōu)點(diǎn),也讓DDS技術(shù)的缺陷被暴露無(wú)遺,就像輸出的信號(hào)頻率不夠純凈,雜散大和帶寬較小等缺點(diǎn)。因此尋找新的發(fā)展方向成了DDS領(lǐng)域最緊要的任務(wù)。 1.3 DDS技術(shù)的發(fā)展概述上世紀(jì)中葉DDS技術(shù)的問(wèn)世使得頻率合成技術(shù)的有了第二次大的飛躍,DDS技術(shù)實(shí)際上是用數(shù)字計(jì)算機(jī)配合數(shù)模轉(zhuǎn)換從而產(chǎn)生信號(hào),此項(xiàng)技術(shù)的應(yīng)運(yùn)而生也掀開了頻率合成技術(shù)發(fā)展的新篇章,預(yù)示著頻率合成技術(shù)來(lái)到了第三代。DDS技術(shù)集成度高、芯片大小適中、穩(wěn)定性還、分辨率高、價(jià)格實(shí)惠等優(yōu)點(diǎn)讓其的受眾面變得越來(lái)越廣。但同時(shí)帶寬比較小,這使得在合成的過(guò)程中產(chǎn)生的一系列無(wú)法避免的誤差,讓信號(hào)的雜散比較大的缺點(diǎn)也被暴露無(wú)疑。但也有解決辦法,就是通過(guò)加大存儲(chǔ)器的字長(zhǎng)來(lái)縮小相位截?cái)喈a(chǎn)生的誤差,進(jìn)而能在一定程度上減小雜散。除此縮小字長(zhǎng)之外,還可以通過(guò)加大D/A轉(zhuǎn)換器的精度來(lái)減小量化誤差。需要著重說(shuō)明的一點(diǎn),目前大部分芯片都使用14位D/A轉(zhuǎn)換器。 由于DDS輸出信號(hào)的頻率低,就出現(xiàn)了一些新的技術(shù),比如可以采用DDS技術(shù)加上PLL相輔相成共同工作的手段,優(yōu)點(diǎn)是能大幅度提升頻率分辨率,還能讓頻譜變得更加純凈。相比來(lái)說(shuō)。另一種采用混頻濾波的方法使用率就不太高。 AD、摩托羅拉和美國(guó)國(guó)家半導(dǎo)體公司,富士通和飛利浦等公司公司都是生產(chǎn)DDS芯片的廠家。目前在售的DDS芯片種類不但非常而且十分齊全,其中 AD9850、AD9851芯片等都是當(dāng)前使用率比較高的芯片,它們有共同的特點(diǎn)就是內(nèi)部都包含頻率控制字、相位累加器、正弦查找表、數(shù)模轉(zhuǎn)換器等決定系統(tǒng)性能的關(guān)鍵器件。除了以上介紹的這些特點(diǎn),在現(xiàn)在的技術(shù)條件下生產(chǎn)制造出的DDS芯片還具有輸出信號(hào)雜散比較小,輸出頻率范圍寬,售價(jià)便宜,高性價(jià)比高等多個(gè)優(yōu)點(diǎn),以致于單片DDS芯片在頻率合成領(lǐng)域被普遍認(rèn)可并得到大規(guī)模應(yīng)用。 在如此多的性能出色的DDS芯片中,AD公司的所制造的AD9854芯片的性能優(yōu)越性就顯得格外突出。一方面,其相位累加器位數(shù)已經(jīng)增加到48位量級(jí),從而也使得它的頻率分辨率達(dá)到了9個(gè)數(shù)量級(jí),進(jìn)而頻率切換速度得到很大提升,達(dá)到了ns量級(jí)。另一方面,DDS芯片從以前只能單一輸出正弦信號(hào)到現(xiàn)在不但可以輸出正弦信號(hào),還可以輸出多種信號(hào)。這樣一來(lái),輸出信號(hào)種類單一的弱點(diǎn)也迎刃而解。操縱手段變得更加靈活,由串行控制與總線控制取代了之前的并行控制。不得不提,在DDS與數(shù)字信號(hào)處理技術(shù)結(jié)合使用之后,讓DDS芯產(chǎn)生出的信號(hào)源更加數(shù)字化、實(shí)用性更好。DDS技術(shù)除了在涉及雷達(dá)的領(lǐng)域?qū)崿F(xiàn)多點(diǎn)調(diào)頻頻率源,也實(shí)現(xiàn)了多種多樣的數(shù)字調(diào)頻?梢钥闯,DDS技術(shù)的研究是一項(xiàng)十分有意義有發(fā)展前景的使命工作,有巨大的潛力,也會(huì)帶來(lái)巨大的經(jīng)濟(jì)效益和社會(huì)效益。 盡管DDS技術(shù)的應(yīng)用已經(jīng)非常廣泛,市面上高性能的信號(hào)發(fā)生器也比較多,但是可供選擇的能產(chǎn)生多種信號(hào)輸出且價(jià)格便宜的信號(hào)發(fā)生器其實(shí)并不多。特別是在校電類專業(yè)學(xué)生平時(shí)實(shí)驗(yàn)過(guò)程中,經(jīng)常要用到信號(hào)發(fā)生器,傳統(tǒng)儀器難以滿足需求。所以,研發(fā)一款低成本、高性能的數(shù)字寬頻信號(hào)發(fā)生器就很有意義。正是如此,本文的主要內(nèi)容就是如何合理地基于DDS技術(shù)研發(fā)出一款結(jié)構(gòu)簡(jiǎn)單、易操作、性能穩(wěn)、價(jià)格低的信號(hào)發(fā)生器。 1.4 本文所做的工作本文主要介紹了DDS技術(shù)的基本原理和對(duì)直接數(shù)字頻率合成技術(shù)做了深入的研究,并在此技術(shù)上用單片機(jī)和FPGA設(shè)計(jì)并制作了一種結(jié)構(gòu)簡(jiǎn)單、實(shí)用的搞穩(wěn)定度信號(hào)發(fā)生器,主要工作包括了以下內(nèi)容: (1)總體方案設(shè)計(jì): 對(duì)DDS信號(hào)發(fā)生器的信號(hào)的產(chǎn)生和控制部分,人機(jī)交互部分以及信號(hào)處理部分進(jìn)行研究分析,分成三個(gè)部分進(jìn)行設(shè)計(jì)。 (2)硬件部分設(shè)計(jì): 完成硬件系統(tǒng)的總體設(shè)計(jì),對(duì)實(shí)現(xiàn)電路進(jìn)行分析測(cè)試以達(dá)到預(yù)期目標(biāo) (3)軟件部分設(shè)計(jì) 軟件系統(tǒng)的具體實(shí)現(xiàn),對(duì)系統(tǒng)按功能模塊進(jìn)行介紹 (4)系統(tǒng)測(cè)試 分別對(duì)系統(tǒng)進(jìn)行功能測(cè)試、調(diào)試步驟和系統(tǒng)的具體操縱方法進(jìn)行闡述,對(duì)不足之處進(jìn)行解釋說(shuō)明。
2 信號(hào)發(fā)生器的方案設(shè)計(jì) 2.1 設(shè)計(jì)需求和方案的選擇本課題為設(shè)計(jì)一款基于DDS技術(shù)的信號(hào)發(fā)生器,目的是通過(guò)系統(tǒng)的控制面板來(lái)實(shí)現(xiàn)讓其輸出正弦波、方波、三角波、鋸齒波等目標(biāo)信號(hào),同時(shí)實(shí)現(xiàn)對(duì)頻率和幅度的任意控制。而該款信號(hào)發(fā)生器的主要性能指標(biāo)以及功能要求如下: 1. 頻率范圍:0.1HZ—20MHZ 2. 頻率分辨率:40mHz 3. 幅度范圍:20mV p-p—20V p-p(高阻,頻率<1MHz) 4. 偏移范圍:±10V(高阻) 分辨率:20mV 5. 幅值分辨率10 bit 6. 矩形波占空比調(diào)整范圍:0-100% 7. 輸出阻抗:50Ω 8. TTL輸出:方波,TTL兼容,低電平<0.3V 高電平>4V 9. 工作電源:AC220V/50HZ 10. 輸出目標(biāo)波形:正弦波、方波、鋸齒波、三角波 根據(jù)系統(tǒng)要求,有兩個(gè)比較可行的方案可供選擇: 1. 采用已有的AD9850數(shù)字頻率合成芯片,讓其數(shù)據(jù)接口來(lái)實(shí)現(xiàn)頻率調(diào)節(jié),其頻率的范圍和步進(jìn)精度都比較高。由于受到芯片功能的限制使得它只能輸出特定的波形,在完成設(shè)計(jì)后,不能進(jìn)一步擴(kuò)展系統(tǒng)的功能,使用率也會(huì)變低。 2. 用單片機(jī)實(shí)現(xiàn)人機(jī)交互操作界面的同時(shí),通過(guò)FPGA技術(shù)手段來(lái)做出DDS軟件系統(tǒng)。從理論知識(shí)方面上講這種方法的靈活性是毋庸置疑的,不但可以輸出和改變?nèi)我獠ㄐ,而且你那個(gè)方便調(diào)節(jié)輸出頻率以及幅度,對(duì)之后產(chǎn)品的更新?lián)Q代很有優(yōu)勢(shì)。 由于本系統(tǒng)對(duì)信號(hào)精度要求較高,通過(guò)上面的分析,第二種方案更好,所以決定采用第二種方案。 頻率合成系統(tǒng)設(shè)計(jì)中的關(guān)鍵是DDS芯片的選擇,加之DDS芯片的性價(jià)比越來(lái)越高,本系統(tǒng)由單片機(jī)AT95S52、Xilinx公司的FPGA芯片為核心,來(lái)實(shí)現(xiàn)DDS數(shù)據(jù)處理,而任意波形的輸出由D/A轉(zhuǎn)換器完成。如下圖2.1所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps683E.tmp.jpg 圖2.1 系統(tǒng)硬件結(jié)構(gòu)框
此系統(tǒng)由兩大部分組成分別為控制電路和數(shù)據(jù)處理電路?刂齐娐钒AD公司的AT98S52單片機(jī)以及一些外部的控制電路,單片機(jī)完成了對(duì)完整系統(tǒng)的統(tǒng)一調(diào)度和操控,再讓鍵盤來(lái)寫入初始信號(hào)的頻率、幅度以及最初的相位值,然后在經(jīng)過(guò)單片機(jī)加工后轉(zhuǎn)變成控制字符在傳輸?shù)?/font>FPGA芯片進(jìn)行DDS波形的加工改造處理,先讓前面的D/A轉(zhuǎn)換器收入波形幅度參數(shù),輸出信號(hào)變成了輸入?yún)⒖茧妷核腿牒笠粋(gè)D/A轉(zhuǎn)換器,從而完成對(duì)輸出波形的控制;完成上述工作流程后再將波形數(shù)據(jù)發(fā)送到后一個(gè)D/A轉(zhuǎn)換器,以實(shí)現(xiàn)任意波形的輸出。 2.2 系統(tǒng)硬件選擇2.2.1 單片機(jī)的選擇 通過(guò)之前的介紹可以看出,接收鍵盤輸入、發(fā)送數(shù)據(jù)以及將控制命令和參數(shù)發(fā)送給FPGA是單片機(jī)的主要工作,而且硬件電路相對(duì)簡(jiǎn)單穩(wěn)定。這些相對(duì)來(lái)說(shuō)不太復(fù)雜的操作并不需要CPU具備優(yōu)異的處理能力,所以選用一款大眾化,能實(shí)現(xiàn)基本功能的廉價(jià)CPU就可以完成系統(tǒng)設(shè)計(jì)任務(wù)。 Ateml公司研發(fā)的AT98S52單片機(jī)是一款能耗少、性能優(yōu)異的8位微處理器,其中系統(tǒng)可編程Flash存儲(chǔ)器有8K,不僅價(jià)格低廉,而且性價(jià)比高,并且能與多種80C51產(chǎn)品引腳和指令集完全兼容。因?yàn)樗钠?/font>Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,所以也就能夠?yàn)楹芏嘞到y(tǒng)提供靈活多變且有效的解決辦法,同時(shí)也適用于許多普遍使用的編程器。 通過(guò)查閱資料發(fā)現(xiàn)AT89S52的功能有這幾點(diǎn):8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)終電路。尤其要特別指出的是,AT89S52可以降頻至0Hz靜態(tài)狀態(tài)運(yùn)行,同時(shí)支持兩種軟件選擇所需要的節(jié)電模式。當(dāng)芯片不承擔(dān)工作任務(wù)的時(shí)候,CPU暫停運(yùn)行,允許RAM、定時(shí)器/計(jì)數(shù)器、串口中斷在CPU停止運(yùn)行的狀態(tài)下繼續(xù)運(yùn)行。 通過(guò)對(duì)其性能的全面分析,選擇AT89S52作為主控CPU。 2.2.2 FPGA的選型此次信號(hào)發(fā)生器設(shè)計(jì)的重點(diǎn)是DDS系統(tǒng),DDS系統(tǒng)的性能優(yōu)異與否直接決定著輸出信號(hào)的質(zhì)量。DDS系統(tǒng)主要組成部分是多個(gè)數(shù)字電路的相互之間的配合,通過(guò)合理運(yùn)用各種規(guī)模不一的通用數(shù)字電路來(lái)實(shí)現(xiàn)DDS在理論上的可能性。不過(guò)此手段除了結(jié)構(gòu)錯(cuò)綜,電路設(shè)計(jì)也有很大難度,同時(shí)伴隨著高頻干擾大,使得電磁兼容性問(wèn)題很大,從而降低了性能,使之難以達(dá)到設(shè)計(jì)要求。 FPGA,即現(xiàn)場(chǎng)可編程門陣列,是近年來(lái)異軍突起快速成熟起來(lái)的一種新型數(shù)字器件,是在它之前多種可編程器件不斷進(jìn)步演化出的產(chǎn)物,它的主要特點(diǎn)有以下幾項(xiàng): (1)采用FPGA集成電路,不用投片生產(chǎn),也能獲得理想芯片。 (2)內(nèi)部有多種觸發(fā)器和I/O引腳。 (3)FPGA可做其他全定制或半定制集成電路的中試樣片。 (4)FPGA采用高速CMOS工藝,低功耗,可以和CMOS、TTL電平兼容。 (5)FPGA是集成電路設(shè)計(jì)中所需時(shí)間最短、資金投入少、安全性最高的器件之一。 如此看來(lái),FPGA芯片是研發(fā)小型軟件實(shí)際提高系統(tǒng)性能的不二選擇。FPGA的出現(xiàn)極大的方便了集成電路的設(shè)計(jì),縮短了電路設(shè)計(jì)周期以及所使用芯片的品種,而且它的靈活性和高穩(wěn)定性,對(duì)于完成DDS系統(tǒng)數(shù)字電路部分有很大的幫助,這也是為什么現(xiàn)在絕大多DDS系統(tǒng)電路都是由FPGA完成的。 目前全球知名的FPGA制造廠家有Altera、Xilinx、Actel、Lattice、Atmel等,經(jīng)幾代人不斷的努力,FPGA形成了種類多,型號(hào)全的從低端到高端等一整套完整的產(chǎn)業(yè)鏈。所以選擇FPGA器件是DDS系統(tǒng)電路設(shè)計(jì)之前首要面對(duì)的極其重要的一環(huán),包括挑選廠家,產(chǎn)品型號(hào)和器件系列,我們的最佳選擇并不是功能最強(qiáng)、性能最好的器件。作為一個(gè)實(shí)際開發(fā)項(xiàng)目,除了性能是否優(yōu)良,成本也是必須要考慮的問(wèn)題,所以就要選擇價(jià)格便宜且能滿足設(shè)計(jì)要求的器件。除此,還有一個(gè)重要的因素是廠商的市場(chǎng)占有率,廠商的口碑關(guān)系到產(chǎn)品使用后的技術(shù)支持和售后問(wèn)題。廠商提供的開發(fā)工具是否方便 Xilinx公司目前是全球頂級(jí)FPGA供應(yīng)商,它們研發(fā)了一款只能用于自己公司研制的芯片的設(shè)計(jì)軟件,ISE。該軟件支持Xilinx FPGA所有熱銷產(chǎn)品。ISE使用可視化編程手段,融合了該公司發(fā)布的所有軟件包,具備所有電路開發(fā)功能,專用的的開發(fā)平臺(tái)為各類使用者提供了極大的方便。這還只是一部分,其多樣的線上幫助信息能及時(shí)輔助開發(fā)者應(yīng)對(duì)設(shè)計(jì)中所遇到的各種問(wèn)題。使用者只需要按照系統(tǒng)的提示和引導(dǎo),就能利用該軟件提供的技術(shù)手段,快速、靈活地完成各種數(shù)字電路設(shè)計(jì)的開發(fā)。 綜上所述,本設(shè)計(jì)的DDS模塊決定采用來(lái)自Xilinx公司的FPGA器件Spartan 3E系列的XC3S250E,該產(chǎn)品集中體現(xiàn)了Xilinx公司低價(jià)產(chǎn)片的優(yōu)良特性,其特點(diǎn)有以下幾點(diǎn): (1)具有25萬(wàn)個(gè)系統(tǒng)門; (2)采用90nm工藝; (3)包含12個(gè)專用乘法器和216kb塊RAM; (4)支持多達(dá)172個(gè)用戶I/O端口; (5)有4個(gè)專屬片上數(shù)字時(shí)鐘管理模塊 2.2.3 數(shù)模轉(zhuǎn)換模型的選擇由于數(shù)字信號(hào)存在不可直接輸出特性,所以從FPGA輸出的幅度控制參數(shù)和波形量化參數(shù)必須再由D/A轉(zhuǎn)換方可完成輸出。 下一級(jí)D/A轉(zhuǎn)換的參考電壓是幅度控制參數(shù)的D/A轉(zhuǎn)換輸出,此項(xiàng)參數(shù)只能到使用者確定了輸出幅度值時(shí)才發(fā)生改變,進(jìn)而對(duì)轉(zhuǎn)換速率的要求不高,僅僅要求大于10Hz就可以。此次設(shè)計(jì)要求的電壓調(diào)節(jié)幅度是500mV-20V,電壓調(diào)節(jié)允許的誤差范圍是50mV,所以可以將整個(gè)調(diào)節(jié)范圍分為400個(gè)等級(jí),把它轉(zhuǎn)換為2進(jìn)制單位則只需要8位就滿足要求。本設(shè)計(jì)選擇TI公司生產(chǎn)的TLC7528,此器件是雙路8位數(shù)模轉(zhuǎn)換器,用于對(duì)幅度的控制足矣。 除此,根據(jù)奈奎斯特采樣定律,設(shè)計(jì)要求的最大輸出頻率是20MHz,這樣一來(lái)采樣頻率必須比40MHz大。但在實(shí)際操作的時(shí)候,信號(hào)的時(shí)鐘頻率是比50MHz大的,在一般情況下DDS的輸出頻率不會(huì)大于0.4f。一般輸出波形是否失真跟采樣頻率有很大的關(guān)系,采樣頻率越高,輸出波形的失真越小。由于這種反比關(guān)系的存在,故而將DDS系統(tǒng)時(shí)鐘設(shè)置成100MHz。同時(shí)選擇存儲(chǔ)位數(shù)為10bit的波形存儲(chǔ)器,使得輸出分辨率可達(dá)約5mV,讓輸出的波形變得細(xì)膩。通過(guò)上述分析,TI公司制造的DAC900基本符合本設(shè)計(jì)的要求,位數(shù)10bit,轉(zhuǎn)換速率高于100MHz。該芯片的性能特點(diǎn)介紹如下: (1)供電電壓范圍: 2.7V - 5V (2)最高轉(zhuǎn)換速率: 165MHz (3)轉(zhuǎn)換精度 : 10bit (4)3V供電時(shí)功耗為45mV : 5V供電時(shí)功耗為175mV (5)差分電流輸出: 滿刻度電流2mA到50mA 2.3 AT89S52的功能和結(jié)構(gòu)AT89S52采用高密度非易失性存儲(chǔ)器技術(shù)制造,兼容51系列單片機(jī)指令和引腳,功耗低、性能好,具有8位微控制器,是目前性價(jià)比較高的控制器。可用常規(guī)編程器對(duì)片內(nèi)Flash進(jìn)行在系統(tǒng)編程。因此單片機(jī)芯片AT89S52被大量地應(yīng)用在嵌入式控制系統(tǒng)中。 AT89S52的功能特性可以簡(jiǎn)單的概括為以下幾點(diǎn): (1)與MCS-51單片機(jī)產(chǎn)品兼容 (2)8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器 (3)1000次擦寫周期 (4)全靜態(tài)操作:0Hz-33MHz (5)三級(jí)加密程序存儲(chǔ)器 (6)32個(gè)可編程I/O口線 (7)三個(gè)16位定時(shí)器/計(jì)數(shù)器 (8)六個(gè)中斷源 (9)全雙工UART串行通道 (10)低功耗空閑和掉電模式 (11)掉電后中斷可喚醒 (12)看門狗定時(shí)器 (13)雙數(shù)據(jù)指針 (14)掉電標(biāo)識(shí)符 AT89S52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)終電路。尤其要特別指出的是,AT89S52可以降頻至0Hz靜態(tài)狀態(tài)運(yùn)行,同時(shí)支持兩種軟件選擇所需要的節(jié)電模式。當(dāng)芯片不承擔(dān)工作任務(wù)的時(shí)候,CPU暫停運(yùn)行,允許RAM、定時(shí)器/計(jì)數(shù)器、串口中斷在CPU停止運(yùn)行的狀態(tài)下繼續(xù)運(yùn)行。
2.4 系統(tǒng)軟件的總體設(shè)計(jì)在本設(shè)計(jì)中,控制軟件的作用是通過(guò)接收具體的輸入數(shù)據(jù)計(jì)算出對(duì)應(yīng)的波形數(shù)據(jù),從而達(dá)到控制輸出波形的目的。LCD液晶顯示在此時(shí)也會(huì)更新,產(chǎn)生新的良好操作界面。其軟件主要由三大部分組成:顯示界面、控制參數(shù)計(jì)算、鍵盤輸入?傮w機(jī)構(gòu)框圖如下:file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps684F.tmp.jpg
圖2.2 系統(tǒng)軟件控制框圖 3 系統(tǒng)硬件設(shè)計(jì)3.1 DDS的原理以及結(jié)構(gòu)3.1.1 DDS的原理DDS(直接數(shù)字頻率合成)從相位著手,利用相位和幅度的相互之間的關(guān)系完成頻率合成。讓多個(gè)采樣點(diǎn)來(lái)取代目的波形,通過(guò)間隔的輸出取樣點(diǎn)的數(shù)值,其手段是再一次進(jìn)行D/A變換從而得到輸出電平。這種采用插值取樣的方法是DDS技術(shù)最常用的。而擁有頻率分辨率、穩(wěn)定性毒、相位連續(xù)、靈活性優(yōu)秀,能輸出多種信號(hào)、頻率轉(zhuǎn)換速率快的等眾多優(yōu)異性能的方法相當(dāng)于采樣保持和D/A轉(zhuǎn)的逆過(guò)程。而頻率的連續(xù)可調(diào)則是通過(guò)控制兩個(gè)取樣點(diǎn)間的時(shí)間間隔以及相位增量來(lái)實(shí)現(xiàn)的。 舉例存在正弦信號(hào)S(x)頻率為f0,那么就有: S(x)=sin(2πfx) (2.1) 由{1}可知,用頻率f1=Mf0/K采樣,能得到一個(gè)離散的采樣序列: S(n)=sin(2πfn/f1)=sin(2nKπ/M) n=1,2,3,4... (2.2) 上述對(duì)應(yīng)的相位序列為Φ(n)=2nKπ/M n=1,2,3,4... 通過(guò)分析上問(wèn)所說(shuō)的采樣序列,便可以發(fā)現(xiàn),相鄰的兩個(gè)值之間的相位差是是一個(gè)不變的恒值,而且只跟K/M有關(guān)系,而K/M又是信號(hào)頻率,換句話說(shuō)就是只跟信號(hào)頻率有關(guān),所以得出相位增量: △Φ=2Kπ/M (2.3) 所以連續(xù)時(shí)間信號(hào)S(x)經(jīng)過(guò)采樣頻率f1之后的離散時(shí)間序列可表達(dá)為: S=sin(n△Φ) n=1,2,3,4... (2.4) 由奈奎斯特采樣定理可知,當(dāng)f1/f0=M/K>2時(shí),經(jīng)過(guò)低通濾波器平滑S(n)可重新回到S(t)。所以,當(dāng)M不變時(shí),一個(gè)變量K將對(duì)應(yīng)一個(gè)單頻模擬正弦信號(hào)S(t) S(t)=sin(2πf1TK/M) (2.5)此信號(hào)的頻率為:f0=Kf1/M 一般情況下常取M=2′,得到 f0=Kf1/2′ (2.6)以上就是DDS的實(shí)際方程,不同的頻率可以輸出通過(guò)固定f1,經(jīng)過(guò)轉(zhuǎn)換從而得出K,K也叫做頻率控制字。DDS的最低頻率,頻率分辨率輸出f為1/2′時(shí)K=1,就是DDS的最低頻率,。由此可見(jiàn)要達(dá)到需要的頻率分辨率和輸出頻率能夠用f1/2′為單位進(jìn)行調(diào)解的話,就要N足夠大。 通過(guò)(2.3)可知,要得到一個(gè)采樣序列就要以采樣頻率f1=f02′對(duì)信號(hào)f0進(jìn)行完整的周期采樣。序列中相鄰兩個(gè)值的相位差是常數(shù)△Φ=2π/2′,由此可得出結(jié)論:這2′個(gè)采樣的點(diǎn)的值可以預(yù)先計(jì)算出來(lái)并保存。在頻率輸出時(shí),假如所需的輸出頻率是f=kf0,并且采樣頻率固定,這時(shí)兩個(gè)相鄰采樣點(diǎn)間的相位差就是△Φ=2kπ/2′。新的的采樣序列其實(shí)是從存儲(chǔ)的采樣序列中每k個(gè)值中隨即選出一個(gè)采樣值,再讓需要的信號(hào)f從這個(gè)新的采樣序列中重新恢復(fù)。 從上面的分析可以看出,要得到一個(gè)頻率f0=Kf1/2′的輸出信號(hào),通過(guò)重新建立新系統(tǒng),它保留了一個(gè)相位差△Φ=2π/2′的采樣序列以一個(gè)恒值頻率輸出一個(gè)相位差的采樣序列。
3.1.2 DDS的結(jié)構(gòu)DDS系統(tǒng)的組成部分大致可以分為四個(gè)主要方面:低通濾波器、波形ROM、D/A轉(zhuǎn)換器、相位累加器,它的結(jié)構(gòu)如下圖3.1所示:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps6860.tmp.jpg
圖3.1 DDS系統(tǒng)結(jié)構(gòu) 相位累加器結(jié)構(gòu),如圖3.2所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps6861.tmp.jpg 圖3.2 相位累加器 系統(tǒng)的工作過(guò)程: (1)寫入頻率控制字K。 (2)讓加法器的輸入端接收前一個(gè)時(shí)鐘的累加結(jié)果,使輸出相位每一個(gè)時(shí)鐘周期都增加K。 (3)單一離散相位相對(duì)的二進(jìn)制數(shù)值就是波形ROM儲(chǔ)存的波形數(shù)據(jù),把相位量化產(chǎn)生出的數(shù)據(jù)當(dāng)做地址查詢波形ROM,這樣就可以得出其所對(duì)應(yīng)的波形量化幅數(shù)據(jù)。 (4)D/A轉(zhuǎn)換器把ROM生成的幅度量化序列信息轉(zhuǎn)換成一對(duì)一的模擬量化信號(hào)嚴(yán)格意義上說(shuō)并不是真正的連續(xù)可變信號(hào),只算得上是階梯模擬信號(hào),在此基礎(chǔ)上還需要通過(guò)低通濾波器的進(jìn)一步處理方能輸出柔順細(xì)膩完美的模擬輸出波形。 3.2 FPGA的相關(guān)技術(shù)3.2.1 FPGA的基本原理近年來(lái)有一種新型可編程集成電路發(fā)展的極為迅速,稱作FPGA,就是我們所說(shuō)的現(xiàn)場(chǎng)可編程門陣列。它是在上世紀(jì)問(wèn)世的大部分可編程器件的基礎(chǔ)上經(jīng)歷多年不斷演化發(fā)展的從而得到的產(chǎn)物,根據(jù)用戶的實(shí)際需求確定芯片的功能,以EEPROM、SRAM、Flash等等編程器件為基礎(chǔ),FPGA的半制定性質(zhì)使得它比起專用電路中定制電路具有較高的靈活性,比起常見(jiàn)的可編程器件中的數(shù)字門電路改善了門數(shù)有限的缺陷。不僅如此,FPGA規(guī)模大、集成資源豐富、速度快等其他芯片不具備的優(yōu)勢(shì)也讓其在數(shù)字信號(hào)處理領(lǐng)域需求量更大。 經(jīng)典FPGA通常由可編程輸入輸出單元、可配置邏輯塊、數(shù)字時(shí)鐘管理模塊、嵌入式塊RAM和豐富的布線資源組成,它的基本結(jié)構(gòu)如下圖3.3所示:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps6871.tmp.jpg 圖3.3 FPGA的基本結(jié)構(gòu)
可編程邏輯是一個(gè)分布在整個(gè)芯片內(nèi)的二維矩陣結(jié)構(gòu),它是FPGA的主要組成部分,通過(guò)使用者多樣的設(shè)計(jì)產(chǎn)生多樣的的邏輯功能,讓配置和聯(lián)接用不同方式連接即可。這些多樣化的邏輯性能,在不同條件下的輸入輸出則是通過(guò)芯片和外部電路之間的接口來(lái)完成的,這些模塊圍繞在每個(gè)單元陣列的周圍。各個(gè)邏輯功能模塊和輸入輸出模塊通過(guò)可編程內(nèi)部互聯(lián)資源中長(zhǎng)度不一的連線線段和種類不一達(dá)到鏈接開關(guān)連接,其構(gòu)成的電路可以實(shí)現(xiàn)特定功能。而FPGA的靈活也體現(xiàn)在其內(nèi)部還包括許多選擇靈活的模塊化工具,例如:內(nèi)嵌存儲(chǔ)器、數(shù)字時(shí)鐘管理、算術(shù)運(yùn)算、多電平標(biāo)準(zhǔn)兼容的I/O接口等單元部分,把不同單元的功能和連接關(guān)系通過(guò)編程修改就可以實(shí)現(xiàn)多樣化邏輯功能。 3.2.2 FPGA的開發(fā)流程 電路研發(fā)、輸入、功能仿真、綜合后仿真、實(shí)現(xiàn)、布線后仿真、下載調(diào)試等是一個(gè)完整的FPGA設(shè)計(jì)開發(fā)必不可少的部分,其流程圖3.4如下所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps6872.tmp.jpg 圖3.4 FPGA開發(fā)流程 在設(shè)計(jì)開發(fā)時(shí),根據(jù)已確定的電路設(shè)計(jì)方案,把預(yù)期電路設(shè)計(jì)與輸入功能在EDA軟件中具體化。這其中原理圖設(shè)計(jì)輸入與硬件描述語(yǔ)言都是普遍采用的寫入手段。 3.2.3 原理圖設(shè)計(jì)輸入方法的介紹按照原有的設(shè)計(jì)規(guī)范要求,通過(guò)挑選合適的零件,畫出原理圖具體化整個(gè)輸入過(guò)程是原理圖設(shè)計(jì)輸入法最常見(jiàn)的手段,在FPGA誕生的早期是比較受歡迎的。原理圖是把已有的符號(hào)用連接線按照需求合理連接形成的,原理圖中的邏輯器件如與門、非門、或門、觸發(fā)器以及各種器件功能都可以是EDA軟件庫(kù)中提前設(shè)置的功能模塊。 其優(yōu)勢(shì)在于元件庫(kù)資源多、易掌握、直觀,用戶不用再去花費(fèi)時(shí)間了解新的知識(shí),其使用過(guò)程易上手,對(duì)于非電氣專業(yè)的使用者來(lái)說(shuō)難度都是很小的 。但是其缺點(diǎn)也在一些對(duì)系統(tǒng)要求比較高的的設(shè)計(jì)項(xiàng)目中暴露無(wú)遺,例如:電路功能原理理解困難,錯(cuò)誤排查困難,后期設(shè)備維穩(wěn)性也差就尤為明顯。除此之外最重要的一點(diǎn)就是當(dāng)需要更換系統(tǒng)芯片時(shí),需要大規(guī)模修改所有原理圖以適應(yīng)新芯片。也是因?yàn)檫@些不可消除的缺點(diǎn),所以HDL設(shè)計(jì)輸入法在高端設(shè)計(jì)的時(shí)候更受光大設(shè)計(jì)師的親賴。而影響力最廣泛的HDL語(yǔ)言是VHDL和Verilog HDL,兩者都采用模塊化設(shè)計(jì)方法,模塊的劃分和復(fù)用使得在器件使用時(shí)變得更加靈活,不用擔(dān)心更換芯片后的系統(tǒng)不兼容,實(shí)用且十分靈活。 在此之外,前仿真也是功能仿真的一種,就是把設(shè)計(jì)完畢的電路輸入后,再用專用的仿真軟件對(duì)系統(tǒng)進(jìn)行功能仿真從而得出結(jié)論,確定電路是不是符合設(shè)計(jì)要求。仿真的作用在于它能及時(shí)發(fā)現(xiàn)設(shè)計(jì)中存在的不完善并加以合理的改善,相比人工操作,更能提高設(shè)計(jì)效率,加快設(shè)計(jì)進(jìn)度。 HDL語(yǔ)言和系統(tǒng)原理圖還有等等一系列高級(jí)抽象化級(jí)別的寫入,是采用綜合進(jìn)一步完善轉(zhuǎn)換成有或門、與門、非門、RAM、寄存器等基本邏輯模塊拼接而成的邏輯連接網(wǎng)表,再根據(jù)約束條件完善邏輯之間連接和輸出文件,綜合優(yōu)化的用處也就體現(xiàn)在這里。而最終的門級(jí)電路還需要將綜合優(yōu)化之后的邏輯網(wǎng)表經(jīng)過(guò)布局布線器運(yùn)用到FPGA芯片上。 開始綜合仿真流程之前還有一項(xiàng)十分重要的工作,就是對(duì)比綜合后結(jié)果與原設(shè)計(jì)預(yù)想是否產(chǎn)生了不一致。仿真時(shí)還要預(yù)設(shè)出門延造成的不好的影響,這就需要把綜合時(shí)出現(xiàn)的標(biāo)準(zhǔn)延時(shí)數(shù)據(jù)反標(biāo)注到綜合仿真模型中。對(duì)比綜合器的綜合優(yōu)化結(jié)果與設(shè)計(jì)意圖的不一致是綜合仿真的主要工作,一旦不能估計(jì)線延時(shí),那么布線后產(chǎn)生的結(jié)果將會(huì)很有可能不是本設(shè)計(jì)需要的。 由與門、非門、或門、觸發(fā)器、RAM等基本邏輯單元組成的邏輯網(wǎng)表綜合時(shí)實(shí)現(xiàn)的結(jié)果嚴(yán)格來(lái)說(shuō)并不是真實(shí)意義上的門級(jí)電路,跟芯片的實(shí)際配置情況還存在一定的不一致性,讓綜合得出的邏輯網(wǎng)表的硬件原始語(yǔ)言和底層單元配置到具體某一個(gè)FPGA上,并用芯片制造商提供的功能軟件完成整個(gè)流程,而這個(gè)流程就叫做實(shí)現(xiàn)。翻譯、映射、布局布線就是實(shí)現(xiàn)的一般構(gòu)成部分。 在布局布線完成后,緊接著要做的就是時(shí)序仿真。通過(guò)把時(shí)序仿真中布局布線的時(shí)延文件反標(biāo)注到系統(tǒng)中,來(lái)驗(yàn)證是不是產(chǎn)生了時(shí)序不正確。時(shí)序仿真有門延時(shí)和延時(shí)信息。相比前面說(shuō)到的各種仿真,時(shí)序仿真準(zhǔn)確度更高。 設(shè)計(jì)開發(fā)FPGA的最后一個(gè)步驟是將所生成的配置信息編入進(jìn)FPGA芯片來(lái)運(yùn)行,檢查系統(tǒng)是否正常運(yùn)行,進(jìn)而完成測(cè)試。不論在調(diào)試過(guò)程的哪一步出錯(cuò),都能及時(shí)的對(duì)錯(cuò)誤進(jìn)行分析處理,然后返回到錯(cuò)誤發(fā)生的環(huán)節(jié)進(jìn)行修改或者重做。 3.2.4 開發(fā)工具介紹(1)綜合工具 把行為與功能級(jí)別所顯現(xiàn)的電子系統(tǒng)變換為低級(jí)別模塊的組合就稱之為綜合。在正常的情況下,綜合是相對(duì)于HDL語(yǔ)言來(lái)說(shuō)的,在xilinx ISE中常用的綜合軟件有XST、和FPGA compilier 2 等等,這些綜合工具有一個(gè)共同之處,就是都是將讓與、或、非門還有RAM、寄存器等基本的邏輯單元組合的邏輯連接網(wǎng)表接收原理圖跟HDL語(yǔ)言等的設(shè)計(jì)輸入,因?yàn)楸疚闹械南到y(tǒng)采用的是xilinx的芯片,綜合工具本文采用的是Xilinx公司轉(zhuǎn)為自己產(chǎn)品研發(fā)出來(lái)的綜合工具,這樣一來(lái)同一廠商的硬件和軟件匹配性就比其他綜合工具要好很多。 (2)仿真工具 現(xiàn)如今最好的HDL語(yǔ)言仿真軟件之一是ModelSim,操作界面視覺(jué)效果好,直觀簡(jiǎn)單。它所使用的直接優(yōu)化編譯技術(shù)等使得編譯仿真的速度變快,精度也得到了提高。不僅如此該軟件編譯出的代碼跟所使用的平臺(tái)沒(méi)有直接任何聯(lián)系,這樣對(duì)于IP核來(lái)說(shuō)那個(gè)得到很好的維護(hù),還有非常新穎的操作界面和接口,強(qiáng)大的性能成了FPGA/ASID、C設(shè)計(jì)用戶的不二選擇。它有以下幾個(gè)方面的特點(diǎn): (1)RTL和門級(jí)優(yōu)化,并采用了本地便以結(jié)構(gòu),仿真速度極快。 (2)支持單內(nèi)核VHDL和Verilog混合仿真。 (3)具有項(xiàng)目管理功能 (4)有C好和Tcl接口。 (5)綜合了波形分析比較、代碼覆蓋、數(shù)據(jù)流、模擬對(duì)象、信號(hào)條件斷點(diǎn)等等很多調(diào)試功能 對(duì)系統(tǒng)級(jí)描述語(yǔ)言有著最全面的支持。 激勵(lì)測(cè)試生成器其實(shí)就是根據(jù)電路設(shè)計(jì)輸入自動(dòng)生成測(cè)試激勵(lì)文件的工具,激勵(lì)測(cè)試生成器。在產(chǎn)生所需要的激勵(lì)文件過(guò)程中,將VHDL和verilog任選一個(gè)作為源代碼跟原理圖等輸入到測(cè)試環(huán)境中,接下來(lái)把在圖形界面編輯的激勵(lì)波形變化成HDL格式,這么一來(lái)產(chǎn)生的激勵(lì)測(cè)試信息就能夠符合ISE中的集成仿真工具所需要的要求。不僅如此,還能得出測(cè)試激勵(lì)覆蓋率,協(xié)助使用者完成整個(gè)系統(tǒng)的測(cè)試調(diào)試。 三、 實(shí)現(xiàn)工具 把綜合輸出邏輯網(wǎng)表翻譯成選中芯片的底層模塊跟硬件語(yǔ)言,這就稱之為實(shí)現(xiàn)。把設(shè)計(jì)映射到每個(gè)具體的器件上。Xilinx ISE中的實(shí)現(xiàn)過(guò)程可以分成三個(gè)步驟,分別是翻譯,映射,布局布線。而這幾個(gè)過(guò)程都是自動(dòng)執(zhí)行的,當(dāng)然也可以進(jìn)行手動(dòng)操作和單獨(dú)操作。而ISE的實(shí)現(xiàn)工具有很多,現(xiàn)對(duì)幾種主要的實(shí)現(xiàn)工具做具體介紹: (1)約束編輯器:顧名思義就是設(shè)計(jì)用戶約束文件。文件中有很豐富的資源,例如:管教位置、寄存器類型、延時(shí)特性、時(shí)鐘屬性、布局布線要求等。 (2)時(shí)序分析器:其作用是通過(guò)分析芯片的結(jié)構(gòu)以及工作效率,分析關(guān)鍵路徑的延時(shí)信息,從而可以看出最后的結(jié)果是否滿足要求。 (3)芯片觀察窗:它的作用是為用戶提供一個(gè)圖像化的界面,以方便查看各種信號(hào)的輸入輸出、管腳鎖定和內(nèi)部宏單元等各方面信息。 3.3 DDS波形合成 整個(gè)DDS信號(hào)發(fā)生器的最主要的方面是數(shù)字波形的合成。通過(guò)分析設(shè)計(jì)要求,加上不斷分析DDS的原理,再聯(lián)系上文,從而得到本設(shè)計(jì)所需的DDS數(shù)字波形合成的具體流程框圖,圖3.5如下所示:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps6883.tmp.jpg 圖3.5 DDS數(shù)字波形合成實(shí)現(xiàn)框圖 3.3.1 時(shí)鐘模塊介紹 本系統(tǒng)設(shè)計(jì)要求輸出波形的最大頻率是20MHz,根據(jù)奈奎斯特定理,采樣頻率選成40MHz最為合適。低通濾波器的性能一般來(lái)說(shuō)很難達(dá)到理想的狀態(tài),而且輸出頻率還應(yīng)該留一定的浮動(dòng)值,因?yàn)樗偸怯幸欢ǖ倪^(guò)渡帶的。實(shí)際操作時(shí)DDS的輸出頻率基本上是不可以大于0.4f,因此f必須高過(guò)50MHz。與此同時(shí),獲得波形的質(zhì)量是跟波形的采樣點(diǎn)數(shù)成正比的,采樣點(diǎn)越多越密集,輸出波形的質(zhì)量就越優(yōu)異。通過(guò)倍頻把本設(shè)計(jì)已經(jīng)有了50MHz的晶振變?yōu)?/font>100MHz,就能產(chǎn)生100MHz的時(shí)鐘,這樣的話就能十分輕松的達(dá)到設(shè)計(jì)要求。 Xilinx的ISE軟件提供了數(shù)字時(shí)鐘管理模塊用于消除時(shí)鐘產(chǎn)生的延時(shí)、頻率合成、時(shí)鐘相位的調(diào)整等系統(tǒng)方面的功能,這些功能對(duì)于整個(gè)系統(tǒng)的完成有很大的幫助,數(shù)字時(shí)鐘管理模塊的優(yōu)點(diǎn)主要由以下兩點(diǎn): 時(shí)鐘能映射到PCB上,作用是來(lái)和外部芯片相配合,這樣一來(lái)對(duì)外部芯片的需求就會(huì)減小,使芯片的內(nèi)外部的時(shí)鐘允許被控,便于系統(tǒng)設(shè)計(jì)。 (2)實(shí)現(xiàn)零偏移,還那個(gè)去掉時(shí)鐘分配時(shí)產(chǎn)生的延時(shí),還能實(shí)現(xiàn)時(shí)鐘閉環(huán)操控。 DCM模塊參數(shù)中最重要的部分就是輸入時(shí)鐘頻率范圍、輸出時(shí)鐘頻率范圍、輸出輸入時(shí)鐘允許抖動(dòng)的范圍等。根據(jù)系統(tǒng)提供的DCM IP核,開始生成時(shí)鐘模塊工作的時(shí)候,只需準(zhǔn)確設(shè)置輸入、輸出,就可以產(chǎn)生所需要的時(shí)鐘。設(shè)置界面如下: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps6884.tmp.jpg 圖3.6 設(shè)置界面
各個(gè)信號(hào)端口的含義: (1)CLKFB:DCM的時(shí)鐘反饋信號(hào) (2)RST:復(fù)位輸入信號(hào),高電平有效 (3)CLKFB:DCM的時(shí)鐘反饋信號(hào) (4)CLKIN:DCM的輸入時(shí)鐘的輸入信號(hào) (5)CLK0/CLK90/CLK180/CLK270:CLKIN相位移動(dòng)0°/90°/180°/270°的輸出信號(hào) (6)CLK2X:2倍頻時(shí)鐘輸出信號(hào) (7)CLK2X180:與CLK2X相位差180°的時(shí)鐘信號(hào) (8)CLKFX:頻率合成時(shí)鐘輸出信號(hào),是CLKIN經(jīng)過(guò)頻率合成后的時(shí)鐘信號(hào) (9)CLKDV:CLKIN的時(shí)鐘分頻輸出信號(hào),分頻系數(shù)由CLKDV-DIVIDE決定 (10)CLKFX180:頻率合成時(shí)鐘相位移動(dòng)180°的輸出信號(hào),該信號(hào)與CLKFX有180°的相位差 (11)LOCKED:DCM鎖定輸出信號(hào),顯示DCM是否鎖定CLKIN。LOCKED為高電平時(shí),DCM的輸出信號(hào)有效 (12)STATUS:狀態(tài)信號(hào),用于顯示DCM的工作狀態(tài)。 全局時(shí)鐘網(wǎng)絡(luò)不僅可以保證輸出的時(shí)鐘信號(hào)達(dá)到各個(gè)目標(biāo)邏輯單元的時(shí)延基本一樣,而且能實(shí)現(xiàn)局部時(shí)鐘信號(hào)的輸出操控,以便于在接下來(lái)的設(shè)計(jì)中相位幅度轉(zhuǎn)換和D/A輸出。以下是時(shí)鐘模塊的實(shí)現(xiàn)代 Module my_dcm(CLKIN_IN, RST_IN, CLKFX_OUT, CLKIN_IBUFG_OUT, CLK0 OUT, LOCKED_OUT);
Input CLKIN_IN; Input RST_IN; Output CLKFX_OUT; Output CLKIN_IBUFG_OUT; Output CLK0_OUT; Output LOCKED_OUT;
Wire CLKFB_IN; Wire CLKFX_BUF; Wire CLKIN_IBUFG; Wire CLK0_BUF; Wire GND_BIT;
Assign GND_BIT=0; Assign CLKIN_IBUFG_OUT = CLKIN_IBUFG; Assign CLK0_OUT = CLKFB_IN; BUFG CLKFX_BUFG_INST (.I(CLKFX_BUF),.0(CLKFX_OUT)); IBUFG CLKFX_BUFG_INST (.I(CLKFX_BUF),.0(CLKFX_OUT)); BUFG CLK0_BUFG_INST (.CLKFB(CLKFB_IN),.CLKIN(CLKIN_IBUFG), .DSSEN(GND_BIT), .PSCLK(GND_BIT), .PSEN(GND_BIT), .PSINCDEC(GND_IT), .RST(RST_IN), .CLKDV( ),.CLKFX(CLKFX_BUF), .CLKFX1 80( ),.CLK0(CLK0_BUF), .CLK2X(), .CLK2X180(), .CLK90(), .CLK180(), .CLK270(), .LOCKED(LOCKED_OUT), .PSDONE(),.STATUS(); defparam DCM_SP_INST.CLK_FEEDBACK = “1”; defparam DCM_SP_INST.CLKDV_DIVIDE = 2.0; defparam DCM_SP_INST.CLKFX_DIVIDE = 1; defparam DCM_SP_INST.CLKFX_MULTIPLY = 2; defparam DCM_SP_INST.CLKIN_DIVIDE_BY_2 = “FALSE”; defparam DCM_SP_INST.CLKIN_PERIOD = 20.000; defparam DCM_SP_INST.CLKOUT_PHASE_SHIFT = “NONE”; defparam DCM_SP_INST.DESKEW_ADJUST = “SYSTEM_SYNCHRONOUS”; defparam DCM_SP_INST.DFS_FREQUENCY_MODE =”LOW”; defparam DCM_SP_INST.DLL_FREQUENCY_MODE =”LOW”; defparam DCM_SP_INST.DUTY_CYCLE_CORRECTION =”TRUE”; defparam DCM_SP_INST.FACTORY_IF = 16’hC080; defparam DCM_SP_INST.PHASE_SHIFT = 0; defparam DCM_SP_INST.STARTUP_WAIT = “FALSE”; END
3.3.2 命令接收模塊介紹
命令接收模塊的作用是將單片機(jī)輸出的頻率控制字、波形和幅度等數(shù)據(jù)進(jìn)行接收。命令接收模塊的邏輯框圖如下圖3.7所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps6895.tmp.jpg 圖3.7 命令接收模塊邏輯框圖
輸入信號(hào): Clk_R: 其作為工作時(shí)鐘的輸入端口,與51同步; En:其作為FPGA使能端口; Datain51:一共有8位(0~7),其作用是定義單片機(jī)輸入的參數(shù)端口; Sele:一共有3位(0~2),其作用是定義單片機(jī)輸入的參數(shù)的類別。 輸出信號(hào): Ans: 其作用是應(yīng)答信號(hào)輸出端口,給后續(xù)動(dòng)作的響應(yīng)。當(dāng)接收數(shù)據(jù)結(jié)束的時(shí)候發(fā)出此信號(hào),告訴在其之后的相位累加器該做怎樣的動(dòng)作; doutF:一共有32位(0~31),其作用是輸出頻率控制字; doutA:一共有8位(0~7),其作用是輸出幅度控制字; waveform:一共有3位(0~2),其作用是輸出波形類型控制字; 此模塊VHDL語(yǔ)言描述: LIBRARY ieee; USE ieee.std_logic_1164.ALL; 包集 USE ieee.std_logic_unsigned.ALL; STD_LOGIC_unsigned包集 ENTITY receive IS PROT(clk_R: IN STD_LOGIC; Datain51: IN STD_LOGIC_VECTOR(7 DOWNTO O); En : IN STD_LOGIC; Sele: IN STD_LOGIC_VECTOR(3 DOWNTO O); doutF: OUT STD_LOGIC_VECTOR(31 DOWNTO O); doutA: OUT STD_LOGIC_VECTOR(7 DOWN 0); ans : OUT STD_LOGIC; waveform:OUT STD_LOGIC_VECTOR(2 DOWNTO O) ); END receive;
ARCHITECTURE bhv OF RECEIVE IS Signal FTEMP:std_logic_vector(31 downto 0); Signal ATEMP:std_logic_vector(15 downto 0);
BEGIN PROCESS(clk_R,en) BEGIN IF (clk_R’event and clk_R =’1’)then IF (en=’1’)THEN
IF SELE=”0001”THEN Waveform<=”000”; ELSIF SELE=”0010”THEN Waveform<=”001”; ELSIF SELE=”0011”THEN Waveform<=”010”; ELSIF SELE=”0100”THEN Waveform<=”011”;
ELSIF SELE=”1001”THEN FTEMP(7 DOWNTO O)<=DATAIN51(7 DOWNTO O); ELSIF SELE=”1010”THEN FTEMP(15 DOWNO 8)<=DATAIN51(7 DOWNO O); ELSIF SELE=”1011”THEN FTEMP(23 DOWN0 16)<=DATAIN51(7 DOWN O); ELSIF SELE=”1100”THEN FTEMP(31 DOWN0 24)<=DATAIN51(7 DOWN O); ELSIF SELE=”1101”THEN
ATEMP(7 DOWNTO O)<=DATAIN51(7 DOWNTO O); END IF DoutF <=FTEMP(31 DOWNTO O); DoutA<=ATEMP(7 DOWNTO O); Ans<=’1’; END IF; END IF; END PROCESS; END; 3.3.3 相位累加器介紹 DDS的性能是否優(yōu)良取決于一個(gè)非常重要的因素就是相位累加器,它由一個(gè)n位寄存器和一個(gè)n位加法器級(jí)聯(lián)構(gòu)成的,具體的結(jié)構(gòu)圖如圖3.8所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68A5.tmp.jpg 圖3.8 相位累加器機(jī)構(gòu)圖
此次所設(shè)計(jì)的信號(hào)發(fā)生器產(chǎn)生出的標(biāo)準(zhǔn)波形的分辨率的是0.1Hz,DDS系統(tǒng)的時(shí)鐘是100MHz,也是因?yàn)檫@兩項(xiàng)數(shù)相位累加器的位數(shù)設(shè)置成30。根據(jù)fMIN=fC/2N=108/230=0.093Hz,不難知道選擇的相位累加器位數(shù)是符合設(shè)計(jì)要求的。相位累加器在時(shí)鐘的影響下不間斷的通過(guò)這種方式完成要求次數(shù)的循環(huán)累加。做完一個(gè)完整流程的動(dòng)作的標(biāo)志是當(dāng)相位累加器發(fā)生了一次相位溢出時(shí),相位累加器用目前所保存的值為基礎(chǔ),繼續(xù)進(jìn)行對(duì)相位累加器相位再一次進(jìn)行相位相加求和。DDS頻率合成信號(hào)的周期說(shuō)白了就是這樣的流程,而此時(shí)此刻該相位累加器的溢出頻率就成了DDS輸出信號(hào)的頻率。盡管該模塊能夠輸出30位的地址參數(shù)數(shù)據(jù),但由于設(shè)計(jì)波形數(shù)據(jù)存儲(chǔ)器深度為1024點(diǎn),存儲(chǔ)的容量十分有限,所以波形ROM的地址只能取高10位。 累加器實(shí)現(xiàn)代碼: Phase_add:process(clk) Begin If(clk’event and clk=’1’)then Phase_adder<=phase_adder+frq_reg; Rom_adder(9 DOWNTO 0)<= phase_adder(29 DOWNTO 20); End if; End prosess; 3.3.4 波形ROM模塊完成從相位到幅度的轉(zhuǎn)換技術(shù)手段有兩種,分別是計(jì)算法與查表法。查表法相對(duì)來(lái)說(shuō)是一種比較普遍的相幅轉(zhuǎn)換手段,它是將相位對(duì)應(yīng)的幅度值提前存在存儲(chǔ)器中,再按照相位進(jìn)行查找。函數(shù)計(jì)算法是通過(guò)數(shù)學(xué)方面的算術(shù)運(yùn)算方法,根據(jù)相位累加器輸出的相位值從而得到相應(yīng)的理想幅度值。通過(guò)認(rèn)真分析這兩種方法的區(qū)別不難發(fā)現(xiàn),計(jì)算法所需要的邏輯資源較大對(duì)資源的要求也高,不僅如此,整個(gè)過(guò)程實(shí)現(xiàn)起來(lái)由于復(fù)雜,隨之速度也變得比較慢;查找表法則需要用到非常大的存儲(chǔ)資源,對(duì)邏輯資源的要求沒(méi)有計(jì)算法那么高,速度比較快。如此看來(lái),查找表的相幅轉(zhuǎn)換方法更加適用于本系統(tǒng)。 3.3.5 DDS處理模塊DDS處理模塊其實(shí)就是把上文所述的模塊綜合起來(lái),從而實(shí)現(xiàn)DDS總體功能,而實(shí)現(xiàn)代碼主要是用到上述的幾個(gè)模塊。將各個(gè)模塊按照設(shè)計(jì)要求進(jìn)行連接,寫入既定程序,再輸出測(cè)試代碼進(jìn)行調(diào)試,就可以構(gòu)成符合實(shí)驗(yàn)要求的DDS處理模塊。 Inst_datal:romsinl PORT MAP(addr=)address, clk=>CLK,dout=>rom_outsinl); Inst_data2:romsqua PORT MAP(addr=)address, clk=>CLK,dout=>rom_outsqua); Inst_data3:romtri PORT MAP(addr=)address, clk=>CLK,dout=>rom_outtri); Inst_data4:romsawth PORT MAP(addr=)address, clk=>CLK,dout=>rom_outsawth); Judgewav:process(clk) Begin If(clk’event and clk=’1’)then If A=”000”then Rom_out<=rom_outsinl; Elsif A=”001” then Rom_out<=rom_outsqua; Elsif A=”010”then Rom_out<=rom_outtri; Elsif A=”011”then Rom_out<=rom_outsawth; End if; End if; End process; 3.3.6 DA轉(zhuǎn)換電路設(shè)計(jì)從波形ROM中讀出的幅度量化數(shù)據(jù)和從命令接收模塊輸出的幅度控制數(shù)據(jù)都只是一個(gè)數(shù)字信號(hào),唯一的辦法是通過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換轉(zhuǎn)換之后就能夠生成最后的輸出信號(hào)。第一點(diǎn),將幅度控制參數(shù)信息轉(zhuǎn)變成電壓信號(hào)來(lái)用于波形D/A轉(zhuǎn)換器的參考電壓輸入到D/A轉(zhuǎn)換器中;第二點(diǎn),在波形ROM之后再想辦法設(shè)計(jì)增加一個(gè)D/A轉(zhuǎn)換電路,把波形采樣參數(shù)信息轉(zhuǎn)換為模擬輸出信號(hào)。再一個(gè)由于D/A轉(zhuǎn)換芯片的品種相當(dāng)多,而且要根據(jù)相當(dāng)多因素來(lái)挑選D/A轉(zhuǎn)換器,在眾多因素當(dāng)中,其中字長(zhǎng)和轉(zhuǎn)換速度是最主要的。波形幅度控制字只是在設(shè)定信號(hào)幅值的時(shí)候才發(fā)生變化,字長(zhǎng)是8位,所以對(duì)于幅值控制A/D轉(zhuǎn)換器本系統(tǒng)決定采用TI公司的TLC7528。不過(guò),因?yàn)槿我?font face="宋體">波形生成器的系統(tǒng)時(shí)鐘已經(jīng)被設(shè)計(jì)固定成為100MHz,所以必須得要選定出一個(gè)轉(zhuǎn)換速率大于100MHz的D/A轉(zhuǎn)換器。結(jié)合上文分析,本系統(tǒng)選用ADC900來(lái)做輸出波形的D/A轉(zhuǎn)換的工作。 TLC7528是一塊工作電源為5~15V,功耗小于15mw的雙路8位數(shù)模轉(zhuǎn)換器。現(xiàn)對(duì)它的特點(diǎn)做如下介紹: (1)片內(nèi)數(shù)據(jù)鎖存 (2)易于與微處理器接口 (3)可與模擬器件AD7528互換 (4)在每個(gè)A/D轉(zhuǎn)換范圍內(nèi)具有單調(diào)性 (5)適用包括與TMS320接口的數(shù)字信號(hào)處理應(yīng)用的快速控制信號(hào) TLC7528的接口電路圖如下圖3.9所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68A6.tmp.jpg 圖3.9 TLC7528接口電路
圖中,DAC900的參考電壓由第一路工作方式為單一極性的OUT-A控制。由于DAC900的外部參考電壓范圍是0.1V~1.25V,為了將參考電壓范圍控制在設(shè)計(jì)目標(biāo)理想值,現(xiàn)加入了一個(gè)反向比例衰減電路。TI公司的ADC900是10位高速數(shù)模轉(zhuǎn)換芯片,它的特點(diǎn)如下: (1)工作電壓:2.7V~5.5V (2)輸出更新速率165MSPS (3)低功耗 (4)無(wú)假信號(hào)動(dòng)態(tài)范圍 (5)低毛刺 (6)可選的外部參考;可任意調(diào)節(jié)的全程范圍 因?yàn)殡娏餍洼敵鲂推骷枰饨舆\(yùn)算放大器將電流信號(hào)轉(zhuǎn)換成電壓信號(hào),所以DAC900的外圍接口電路圖如3.10所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68B7.tmp.jpg 圖3.10 ADC900接口電路
3.4 人機(jī)交互部分的硬件設(shè)計(jì)人機(jī)交互由輸出和輸入兩個(gè)部分組成,在用戶和設(shè)備之間信息交換的時(shí)候起著媒介的作用。輸出部分的作用是顯示操作界面和測(cè)量結(jié)果,輸入部分的作用是寫入具體的某一指令以及參數(shù)。在整個(gè)DDS系統(tǒng)中,輸入模塊使用鍵盤掃描的方法,輸出部分采用了LCD屏顯示。通過(guò)鍵盤輸入來(lái)選擇人機(jī)交互的工作模式,波形參數(shù)值通過(guò)LCD顯示。整體用戶界面以51單片機(jī)為主,鍵盤掃描,顯示刷新,鍵盤輸入為輔,共同進(jìn)行處理工作。 具體的LCD顯示界面如下圖3.11所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68B8.tmp.jpg 圖3.11 系統(tǒng)顯示界面 鍵盤布局如下圖: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68B9.tmp.jpg 圖3.12 鍵盤布局圖 隨便按一下鍵盤上的鍵,LCD便可以顯示出系統(tǒng)菜單。如系統(tǒng)顯示界面圖,將鼠標(biāo)懸在“波形”上,可以運(yùn)用上下箭頭選擇新的菜單,按下“確認(rèn)”后方能進(jìn)入所對(duì)應(yīng)的項(xiàng)目。進(jìn)入菜單之后,再按上下箭頭選擇需要的項(xiàng)目,而在“波形”菜單中來(lái)挑選所需要的波形,也可以在頻率菜單中選擇頻率刪除菜單用來(lái)刪除已輸入的數(shù)據(jù)參數(shù),返回鍵用來(lái)返回上一級(jí)菜單。
4 系統(tǒng)軟件設(shè)計(jì) 4.1 C51簡(jiǎn)介Keil C51是為51系列兼容單片機(jī)C語(yǔ)言軟件專門研發(fā)出來(lái)的的針對(duì)軟件,整個(gè)界面都是微軟系統(tǒng),來(lái)極大的方便用戶操作使用,還配備了種類多樣的庫(kù)函數(shù)和功能十分強(qiáng)勁的集成開發(fā)測(cè)試工具。相比于匯編語(yǔ)言,C語(yǔ)言在功能性、結(jié)構(gòu)性,可讀性、維護(hù)性等等影響系統(tǒng)性能等十分重要的性能方面具有無(wú)法比擬的優(yōu)勢(shì),后期調(diào)試維護(hù)起來(lái)省時(shí)省力,而且學(xué)習(xí)起來(lái)比較容易,掌握起來(lái)也比較容易。 為方便使用,8051微控制器系列專門研發(fā)了Keil C51編譯器,在遵循ANSI標(biāo)準(zhǔn)的同時(shí)在語(yǔ)言上進(jìn)行了大規(guī)模的擴(kuò)展,這也讓使用者能夠享用系統(tǒng)中的所有資源。C51編譯器提供多種數(shù)據(jù)類型,以及專門針對(duì)8051單片機(jī)的多種存儲(chǔ)器類型,加之運(yùn)用合理的方式自動(dòng)分配變量地址,sfr和sbit兩個(gè)關(guān)鍵字提供特殊功能寄存器SFR 的存取,這是使得C51編譯器可以對(duì)8051系列所有資源進(jìn)行充分的利用。在C51中,用關(guān)鍵字來(lái)定義可重入功能。C51提供了許許多多靈活且高效的指針用來(lái)針對(duì)不同的存儲(chǔ)類型,這樣就可以在8051的任何存儲(chǔ)區(qū)內(nèi)存取出想要的任意變量。特殊指針發(fā)出聲明的同時(shí)就已經(jīng)計(jì)劃出了某一特定的存儲(chǔ)區(qū)域的存儲(chǔ)器類型,因?yàn)榈刂沸枰淖止?jié)存儲(chǔ)特別少,所以指針的存儲(chǔ)操作速度非常快。大型軟件開發(fā)時(shí)使用C語(yǔ)言的優(yōu)勢(shì)在于絕大多數(shù)語(yǔ)句都能夠生成非常緊湊的匯編代碼,這使得產(chǎn)生出目標(biāo)代碼的效率相當(dāng)高。 4.2 控制軟件的設(shè)計(jì)4.2.1總體控制模塊此次設(shè)計(jì)采用以鍵盤為主的操作輸入結(jié)構(gòu),軟件部分的設(shè)計(jì)手段采用模塊化程序。用C51編寫主要分為主程序模塊、初始化模塊、顯示模塊、鍵盤掃描模塊、參數(shù)設(shè)計(jì)模塊等,各個(gè)功能模塊的函數(shù)如下所示: Void mian( )主模塊 Void init( )系統(tǒng)初始化模塊 Uchar keyscan( )鍵盤掃描模塊 Void menudisplay( )菜單模塊 Void disp( )顯示更新模塊 主模塊最重要的工作是循環(huán)調(diào)用鍵盤處理和顯示處理兩個(gè)模塊,與此同時(shí)主模塊還有一項(xiàng)不可忽視的作用就是還用來(lái)調(diào)用各子模塊和執(zhí)行系統(tǒng)的主控流程,讓系統(tǒng)按照預(yù)設(shè)方案工作。以下是主模塊的完整源代碼: 主模塊最重要的工作是循環(huán)調(diào)用鍵盤處理和顯示處理兩個(gè)模塊,與此同時(shí)主模塊還有一項(xiàng)不可忽視的作用就是還用來(lái)調(diào)用各子模塊和執(zhí)行系統(tǒng)的主控流程,讓系統(tǒng)按照預(yù)設(shè)方案工作。以下是主模塊的完整源代碼: Main() { Uchar key_temp Uint i,j; Init(); //系統(tǒng)初始化 Cls(): //清屏 Main_paly(); //顯示開機(jī)畫面 For(j=10;j>0;j--) //延時(shí) { For(i=60000;i>0:i--); } Menudispaly(); //顯示主菜單 While(1) //通過(guò)鍵盤掃描來(lái)執(zhí)行程序 { Key_temp=keyscan(); Keyhandle(key_temp); Dis(); //顯示更新 } }
4.2.2 鍵盤掃描和處理模塊本系統(tǒng)的鍵盤采用4×4的矩陣式排列,16個(gè)按鍵。確認(rèn)是否有按鍵輸入,送行碼,讀列碼等任務(wù)是單片機(jī)使用掃描手段來(lái)完成的。此模塊的流程圖如下圖4.1所示:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68C9.tmp.jpg 圖4.1 鍵盤掃描程序流程
4.2.3 液晶顯示模塊液晶顯示模塊的具體工作任務(wù)有兩方面,就是顯示系統(tǒng)菜單以及用戶輸入的數(shù)值,一旦鍵盤接收到新的輸入的時(shí)候,都是用液晶顯示模塊來(lái)更新顯示。液晶顯示模塊的工作流程如圖3.14所示:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68CA.tmp.jpg
圖3.14 液晶顯示流程
5 系統(tǒng)調(diào)試與性能測(cè)試在整個(gè)系統(tǒng)的硬件設(shè)計(jì)部分和軟件設(shè)計(jì)部分完成后,為了確保設(shè)計(jì)中是否還存在一定的不完善,和后期實(shí)際操作時(shí)是否到達(dá)語(yǔ)氣效果,就需要對(duì)系統(tǒng)進(jìn)行全面仔細(xì)的測(cè)試。只要是人工加工的產(chǎn)品都存在一定的誤差,所以例如電路板的焊接存在虛焊等問(wèn)題,都會(huì)破壞整個(gè)設(shè)計(jì)的完整性 。所以系統(tǒng)調(diào)試分析對(duì)于系統(tǒng)十分重要。 5.1電路調(diào)試 5.1.1 單片機(jī)調(diào)試一個(gè)完整系統(tǒng)能夠正常運(yùn)行的核心在于AT89S52單片機(jī),除此之外其他所有模塊的工作都由它來(lái)調(diào)度協(xié)調(diào)分配。在進(jìn)行單片機(jī)調(diào)試工作之前,需要仔細(xì)核查芯片內(nèi)部電源和接地有沒(méi)有正常連接,以及復(fù)位電路是否正常。在嚴(yán)格按照規(guī)定完成一系列檢查工作之后才可以接通電源,然后用示波器查看晶振有沒(méi)有按照設(shè)計(jì)方案正常運(yùn)轉(zhuǎn)。 單片機(jī)本身的驗(yàn)證其實(shí)相對(duì)簡(jiǎn)單,只需要編寫一個(gè)簡(jiǎn)單的波形輸出程序,再檢查示波器的輸出波形是否與輸入程序一致,如果輸出波形與輸入的程序一致則單片機(jī)工作正常。反之,則不正常。 5.1.2 鍵盤和LCD的調(diào)試鍵盤屬于硬件設(shè)備,檢查起來(lái)就比較方便,也比較簡(jiǎn)單。可以用萬(wàn)用便檢查鍵盤各個(gè)部分是否正常通電,有無(wú)短路或斷路即可。 因?yàn)橛袑S玫?/font>LCD調(diào)試程序,所以當(dāng)調(diào)試LCD時(shí)只需要輸入專用程序,再查看屏幕上是否出現(xiàn)相應(yīng)字符即可。 5.1.3 FPGA的調(diào)試FPGA正常運(yùn)行與否在整個(gè)波形生成流程中起著決定性作用,我們那個(gè)夠用ISE編寫一組全新的檢驗(yàn)代碼,來(lái)檢查FPGA器件能不能正常工作,讓引腳50接高電平,引腳60接地。然后用下載電路下載,查看示波器就可以看出兩個(gè)引腳的電平是不是正常,從而也就能分析出FPGA是不是正常運(yùn)轉(zhuǎn) 5.1.4 D/A轉(zhuǎn)換模塊的調(diào)試數(shù)模轉(zhuǎn)換控制由兩部分組成,分別是:幅值控制、波形輸出。 DAC900是一個(gè)采用差分電流輸出的10位高速數(shù)模轉(zhuǎn)換器,因?yàn)樗碾娏鞑荒鼙恢苯訙y(cè)量,所以需要將電流轉(zhuǎn)換成電壓在進(jìn)行測(cè)量。具體方法是在DAC900的輸出端和地之間接一個(gè)50歐姆的電阻進(jìn)行調(diào)試,如此一來(lái)就不存在電流不能被直接測(cè)量的問(wèn)題了。 5.2 系統(tǒng)測(cè)試在硬件部分和軟件部分的調(diào)試都完成之后,那么接下來(lái)就需要進(jìn)行系統(tǒng)的組裝調(diào)試,通過(guò)看系統(tǒng)完成聯(lián)機(jī)后的性能表現(xiàn)來(lái)判斷系統(tǒng)是否正常工作。通過(guò)分析系統(tǒng)要求的各項(xiàng)功能與性能指標(biāo),決定選用一個(gè)雙蹤示波器和一個(gè)頻率計(jì)作為測(cè)試設(shè)備。 5.2.1 輸出波形的測(cè)試通過(guò)給以多樣化的工作命令,讓信號(hào)發(fā)生器遵循指令的要求分別產(chǎn)生出正弦波、方波、三角波、鋸齒波,在信號(hào)發(fā)生器輸出波形的同時(shí)將示波器接到函數(shù)發(fā)生器的BNC上,這樣產(chǎn)生的波形就能一目了然,如下圖5.1所示: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68DB.tmp.jpg 圖5.1 正弦波
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68DC.tmp.jpg 圖5.2方波
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68ED.tmp.jpg 圖5.3 三角波
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps68EE.tmp.jpg 圖5-4 鋸齒波 5.2.2 信號(hào)頻率的測(cè)量進(jìn)行頻率測(cè)量工作的時(shí)候,通過(guò)信號(hào)發(fā)生器的面板將輸出頻率分別設(shè)置成10Hz、1KHz、1MHz、10MHz、20MHz的各種波形參數(shù),使用頻率計(jì)對(duì)其進(jìn)行測(cè)量,就可以進(jìn)行跟設(shè)定值的對(duì)比。具體測(cè)量結(jié)果如表5-1所示。 由于本次設(shè)計(jì)要求的頻率分辨率是0.1Hz,選取任意兩個(gè)相差0.1Hz的頻率,比如取在10Hz與10.1Hz,然后使用頻率計(jì)測(cè)量各種波形的輸出,結(jié)果如表5-2所示。
表5.1 輸出頻率測(cè)試結(jié)果
從表5-1可以看出,本系統(tǒng)能夠產(chǎn)生所有設(shè)計(jì)之初要求的所有波形,而且每個(gè)波形的最高和最低要求都能輸出,符合設(shè)計(jì)要求。
表5.2 頻率穩(wěn)定度測(cè)試結(jié)果
5.2.3 信號(hào)幅度測(cè)量在測(cè)試信號(hào)幅度的時(shí)候,用鍵盤把設(shè)置f=1KHz作為信號(hào)發(fā)生器的輸出頻率,其輸出的正弦波、三角波、方波、鋸齒波的幅值分別是500mV、1V、5V。在用示波器測(cè)量各個(gè)幅度,測(cè)量結(jié)果如下表所示: 表5.3 輸出幅度測(cè)試結(jié)果
從上表能夠看出,輸出的各個(gè)波形的最高最低幅度電壓滿足電壓輸出幅度的要求。 5.2.4 頻率穩(wěn)定度測(cè)量因?yàn)轭惐刃裕x擇具有代表性的正弦波來(lái)測(cè)試系統(tǒng)的頻率穩(wěn)定度,具體結(jié)果如下表所示: 表5.4 頻率穩(wěn)定度測(cè)量結(jié)果
從表中能夠看出,由于被測(cè)的信號(hào)中難免會(huì)混入噪聲,噪聲信號(hào)疊加在被測(cè)信號(hào)上似的在不同的時(shí)間所測(cè)得的頻率值并不完全相等,這也是頻率測(cè)量結(jié)果出現(xiàn)偏差的原因。 5.3 誤差分析 DSS系統(tǒng)需要滿足以下幾個(gè)條件才能得到想要符合要求的輸出頻譜: (1)波形ROM中存儲(chǔ)的波形幅度值用無(wú)限長(zhǎng)度的二進(jìn)制數(shù)來(lái)表示。 (2)累加器的輸出都用來(lái)進(jìn)行ROM尋址。 (3)D/A轉(zhuǎn)換器不僅具備十分理想的數(shù)模轉(zhuǎn)換特質(zhì),而且分辨率無(wú)上限。 不過(guò)在實(shí)際操作當(dāng)中,這幾個(gè)條件基本上都很難滿足。所以我們對(duì)可能會(huì)產(chǎn)生誤差的幾個(gè)方面進(jìn)行進(jìn)一步的研究。 為了使產(chǎn)生的波形具有比較高的頻率分辨率,對(duì)相位控制字的位數(shù)一般都會(huì)取的比較大,根據(jù)△f=fc/2N可得出結(jié)論,N值和頻率分辨率是成正比的,N值越大頻率分辨率就越高,本設(shè)計(jì)中相位累加器的寬度取N=30。想要N位都用于尋址ROM,就要用到很大很大的存儲(chǔ)容量,而如此之大的ROM表容量很難在實(shí)際中實(shí)現(xiàn)。正因?yàn)檫@樣,所以通常人們不采用低的N-M位,而選擇高M位來(lái)尋址。在本設(shè)計(jì)中,尋址方法并沒(méi)有采用低20位,而是偏偏選用了高10位,這樣一來(lái)不好的地方是,會(huì)無(wú)法避免的產(chǎn)生相位截?cái)嗾`差。所以DDS輸出雜散其中一個(gè)原因就是相位在低20位變換的時(shí)候輸出都完全相同。 再通過(guò)二進(jìn)制整數(shù)方式傳給DDS,輸出頻率的偏差就是在這樣的計(jì)算過(guò)程中產(chǎn)生的。 用一系列的離散采樣點(diǎn)來(lái)表示波形存儲(chǔ)表,本設(shè)計(jì)中用10位的二進(jìn)制數(shù)來(lái)表示信號(hào)幅度,顯而易見(jiàn)的是這樣表示方法肯定存在幅度量化誤差。一般情況下ROM表的寬度與其存儲(chǔ)的數(shù)值是成正比的。除此之外,波形存儲(chǔ)表中的相位是以整數(shù)形式表示的一系列有限的離散采樣點(diǎn),這樣的話就無(wú)法避免的產(chǎn)生了相位量化誤差,不過(guò)可以通過(guò)增加采樣點(diǎn)的數(shù)目來(lái)減小誤差 兩個(gè)輸出電平間的暫態(tài)相應(yīng)大小就是DAC的毛刺,通常情況下數(shù)據(jù)位間的時(shí)滯和器件內(nèi)部邏輯電路的傳輸造成了這種暫態(tài)相應(yīng),也就使得短暫的中間態(tài)出現(xiàn)在DAC輸出信號(hào)中。 不光存在以上因素,引起雜散的原因還有系統(tǒng)參考時(shí)鐘泄露、電源引起的噪聲干擾、外來(lái)電磁干擾等。不過(guò)好的一方面是這些引起雜散的原因都可以通過(guò)合理的電路設(shè)計(jì)來(lái)進(jìn)行進(jìn)一步的優(yōu)化。 雖然上文中有很多無(wú)法避免的誤差,但可以通過(guò)各種手段來(lái)減少誤差,比如:選擇更加合理的量化值,擴(kuò)大存儲(chǔ)區(qū)容量和數(shù)據(jù)位數(shù),選用高質(zhì)量的電源,合適的D/A轉(zhuǎn)換器,再加上低通濾波器進(jìn)行輸出平滑,盡可能的減小輸出波形可能存在的誤差。
結(jié) 論
近二十年之間,直接數(shù)字頻率合成技術(shù)發(fā)展的極為迅速,漸漸成為了最先進(jìn)的頻率合成技術(shù)。它的頻率分辨率高和切換速度快以及相位變化連續(xù)等等優(yōu)勢(shì),使得對(duì)它的應(yīng)用也是愈發(fā)廣泛。在性能方面,因?yàn)椴捎昧藬?shù)字合成技術(shù),所以性能相比之前一般的頻率合成有了極大的提升。 本文從信號(hào)發(fā)生器的原理理論等各個(gè)方面,聯(lián)系實(shí)際,對(duì)DDS技術(shù)進(jìn)行了十分全面的分析研究。在設(shè)計(jì)中,不僅對(duì)DDS輸出信號(hào)的頻譜對(duì)了分析,結(jié)合理論分析,最后用FPGA實(shí)現(xiàn)了基于DDS的波形信號(hào)發(fā)生器。在整個(gè)設(shè)計(jì)完成后,最系統(tǒng)的軟件和硬件部分都進(jìn)行了全面的測(cè)試,對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析,表明此次設(shè)計(jì)達(dá)到了最初的設(shè)計(jì)要求。 在完成本次信號(hào)發(fā)生器設(shè)計(jì)工作之后,再一次分析這個(gè)過(guò)程中遇到的難題,能夠清晰的發(fā)現(xiàn)自己在理論知識(shí)方面還有很大的欠缺,并且在實(shí)際操作與理論知識(shí)相結(jié)合時(shí)還是不能游刃有余。在某種意義上來(lái)講,本次設(shè)計(jì)也為自己確立了以后的發(fā)展方向,
|