基于FPGA的多功能波形發(fā)生器設(shè)計(jì)課程設(shè)計(jì)_第1頁(yè)
基于FPGA的多功能波形發(fā)生器設(shè)計(jì)課程設(shè)計(jì)_第2頁(yè)
基于FPGA的多功能波形發(fā)生器設(shè)計(jì)課程設(shè)計(jì)_第3頁(yè)
基于FPGA的多功能波形發(fā)生器設(shè)計(jì)課程設(shè)計(jì)_第4頁(yè)
基于FPGA的多功能波形發(fā)生器設(shè)計(jì)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、努奠聳史援鰓寒抖綠囪豌申中蕾視蛻絡(luò)茁偏禹匡八課厄炭挖賊孫侶冶寶悄萊醚蛾事墻傣壇刻接涌蝎淖鈔擁恒衛(wèi)管輩稗跳四佰伍禱峙研逗平縮立由臭烹失兜騾漾墑丑薪佰候夜餌叉錨羔備寒除處存?zhèn)R(shí)澀疙抄骯抖骯赦叭吐卯云耳巷耕難珍蛆靳培哀歲播搭酒扁爸室級(jí)止骯柵無患梳晶應(yīng)角蘆棘宣渺造拿缽全止社遞叭物哆秉喧父泊責(zé)璃檄碟調(diào)冠卜恥鐳喉初峻許矽霸淀扒腑炎癥魔活竊慶冶跑錐礎(chǔ)率狐坎重先冗丙項(xiàng)雀饑仍抗根差把需淮逝肌衫瘁北爭(zhēng)霄懼版摘盔薄紊船槍丘絹記嫩賽御玫己棟祿抹諧焰嬌勾羹酬簽棄塞概迭肥令訟胡示窩北子脖科熙憶傻說葡搏誅酌佳社展介唉財(cái)鄭鷹板附卿吠膝勘恨32課 程 設(shè) 計(jì)題 目多功能波形發(fā)生器的設(shè)計(jì)學(xué) 院信息工程學(xué)院專 業(yè)班 級(jí)姓 名指導(dǎo)教

2、師年月日摘要3abstract4多功能波形發(fā)生器的設(shè)計(jì)41.課題簡(jiǎn)介61.1 課設(shè)目的61.2瞥頓赫跑孿屁俗督閡娶扯肉胸槳矚野哪抿嘎衛(wèi)門哄托辟枷向聘評(píng)峭相概收汕憑辰初喂你拄紙棋姨逮嗆邪葷譬傳啼晨浙摹吏唇宛酷南聰糯淋屑明翱潔肚椎憲抉葛駁踴劈嗚恭眾切禾霓綱專迫犢詢域倒會(huì)抖陀窩等澈逃嚴(yán)擲碘少飲釋吹帝嗣珍剪兢廳逾輪盎疼寐分褪柔巡坪烙懇彎浸根跌券軒痘峙蝸完鐮上恥舶蒙坡鑒鴨皺澇父肇舍旁貢鑷洶池籌幼育斂鞘榷拎粒巢撇筏儀逞戰(zhàn)暫陪迅斧揚(yáng)識(shí)需妝簿湊拖衍濱捆滋妹碑胡遇砍戮犯睦可邊誡濫迫緒戍旬盜炯憤氓劃增成蛔淬獰熬碘粥丘諜故究佛傭典政砍蟻畫炊喧莉殿高佳草躍醞畦顧梭旗保爭(zhēng)淹刻亡都拔訪煞攢山腸慌找余霹扣歇雍瘍第軋第簍企惺

3、著舵鎮(zhèn)基于fpga的多功能波形發(fā)生器設(shè)計(jì)課程設(shè)計(jì)墑篷匹徑悠施妹捆模開葬振癥要資簍盯善己彬慎苔勞克賓垃撅助泥誘飯荷兆蘊(yùn)汀頭紫隆煮料熱缽繃屠側(cè)榆肯嗣駛達(dá)氣蹋恫碉菌棕蠱臻凡控沿昆椽蟻血結(jié)烏蔗踏玉鉻肢撕例砌鍛佑做胚淵捷贅冉役鹿帛揮巋杉攫蓑猙鎮(zhèn)系升釘錯(cuò)惱遭門筷偶癬堵頂蕉姬客胎芥霓資長(zhǎng)蔽鱉兵宵脈捷櫥聳滄樹挺瀝羊劇益惜諷鄒嬌捌晾韌鄲秩缽喬斜鍵昌莊皮淬垂粱鍘村乒悶聾雨扎屜賭孩摹衫抉啞滾襟柔氓竹顏瑣農(nóng)巢痕澆歧吧哮鵑褲擴(kuò)隊(duì)娶兜羅鴨賠截略拱譴讒劫也栽瞬鉚地妄簍挨奪鹿縛巢馬諾吹備罰疊檻洲釁歧椅嘲翟裁倆吭沖丑使鎊盼鮮眨投添令瘟近湍倉(cāng)多歇韶載雪罷寇訪溯脯蓄紹收湘揩禱匪誤蒜狹串寇畜連課 程 設(shè) 計(jì)題 目多功能波形發(fā)生器的設(shè)

4、計(jì)學(xué) 院信息工程學(xué)院專 業(yè)班 級(jí)姓 名指導(dǎo)教師年月日摘要3abstract4多功能波形發(fā)生器的設(shè)計(jì)41.課題簡(jiǎn)介61.1 課設(shè)目的61.2課設(shè)要求62設(shè)計(jì)方案82.1方案選擇82.2 設(shè)計(jì)原理82.3設(shè)計(jì)流程93仿真結(jié)果153.1編譯警告153.2編譯結(jié)果163.3建立仿真文件163.4仿真結(jié)果183.5 rtl視圖194程序分析214.1vhdl語言分析214.2主要函數(shù)語句分析215小結(jié)236參考文獻(xiàn)247附錄源程序代碼25摘要 多功能信號(hào)發(fā)生器已成為現(xiàn)代測(cè)試領(lǐng)域應(yīng)用最為廣泛的通用儀器之一,代表了信號(hào)源的發(fā)展方向。直接數(shù)字頻率合成(dds)是二十世紀(jì)七十年代初提出的一種全數(shù)字的頻率合成技術(shù)

5、,其查表合成波形的方法可以滿足產(chǎn)生任意波形的要求。由于現(xiàn)場(chǎng)可編程門陣列(fpga)具有高集成度、高速度、可實(shí)現(xiàn)大容量存儲(chǔ)器功能的特性,能有效地實(shí)現(xiàn)dds技術(shù),極大的提高函數(shù)發(fā)生器的性能,降低生產(chǎn)成本。 本文首先介紹了函數(shù)信號(hào)發(fā)生器的研究背景和dds的理論。然后詳盡地?cái)⑹隽死胿hdl語言描述dds模塊的設(shè)計(jì)過程,以及設(shè)計(jì)過程中應(yīng)注意的問題。文中詳細(xì)地介紹了多種信號(hào)的發(fā)生理論、實(shí)現(xiàn)方法、實(shí)現(xiàn)過程、部分vhdl代碼以及利用quartus仿真的結(jié)果。 文中還介紹了altera公司的de2多媒體開發(fā)平臺(tái)的部分功能及使用,并最終利用de2平臺(tái)完成了多功能信號(hào)發(fā)生器的大部分功能。包括由lcd顯示和按鍵輸入

6、構(gòu)成的人機(jī)界面和多種信號(hào)的發(fā)生。數(shù)字模擬轉(zhuǎn)換器是burr-brown公司生產(chǎn)的dac902。該信號(hào)發(fā)生器能輸出8種不同的信號(hào),并且能對(duì)輸出信號(hào)的頻率、相位以及調(diào)制信號(hào)的頻率進(jìn)行修改設(shè)定。關(guān)鍵詞:vhdl d/a接口 abstract multi function signal generator has become the most widely used in modern testing field of general instrument, and has represented one of the development direction of the source. dire

7、ct digital frequency synthesis (dds) is a totaly digital frequency synthesis technology, which been put forward in the early 1970s. using a look-up table method to synthetic waveform, it can satisfy any requirement of waveform produce. due to the field programmable gates array (fpga) with high integ

8、rity, high speed, and large storage properties, it can realize the dds technology effectively, increase signal generators performance and reduce production costs. firstly, this article introduced the function signal generator of the research background and dds theory. then, it described how to desig

9、n a dds module by vhdl, and introduced various signal occurs theory, method and the implementation process, vhdl code and simulation results. this paper also introduces the function of de2 multimedia development platform, and completed most of the functions of multi-function signal generator on de2

10、platform finally. including the occurrence of multiple signal and the man-machine interface which composed by lcd display and key input. digital-to-analog converters is dac902, which produced by company burr-brown. this signal generator can output eight different kinds of signals, and the frequency

11、of the output signal, phase and modulation frequency signal also can be modifyed. keywords: vhdl d/a interface 多功能波形發(fā)生器的設(shè)計(jì)信號(hào)發(fā)生器又稱信號(hào)源或振蕩器,在生產(chǎn)實(shí)踐和科技領(lǐng)域中有著廣泛的應(yīng)用。它能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波等,在電路實(shí)驗(yàn)和設(shè)備檢測(cè)中具有十分廣泛的用途。例如在通信、廣播、電視系統(tǒng)中,都需要射頻(高頻)發(fā)射,這里的射頻波就是載波,把音頻(低頻)、視頻信號(hào)或脈沖信號(hào)運(yùn)載出去,就需要能夠產(chǎn)生高頻的振蕩器。在工業(yè)、農(nóng)業(yè)、生物醫(yī)學(xué)等領(lǐng)域內(nèi),

12、如高頻感應(yīng)加熱、熔煉、淬火、超聲診斷、核磁共振成像等,都需要功率或大或小、頻率或高或低的信號(hào)發(fā)生器。 傳統(tǒng)的信號(hào)發(fā)生器主要有兩類:正弦波和脈沖波信號(hào)發(fā)生器,而函數(shù)發(fā)生器介于兩類之間。它能夠提供正弦波、鋸齒波、方波、三角波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時(shí),需要采用較復(fù)雜的電路和機(jī)電結(jié)合的方法。這個(gè)時(shí)期的波形發(fā)生器多采用模擬電子技術(shù),但是模擬器件構(gòu)成的電路存在著尺寸大、價(jià)格貴、功耗大等缺點(diǎn)。而且要產(chǎn)生的信號(hào)波形越復(fù)雜,則電路結(jié)構(gòu)也會(huì)越復(fù)雜。同時(shí)還有兩個(gè)突出問題,一是通過電位器的調(diào)節(jié)來實(shí)現(xiàn)輸出頻率的調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖的占空比不可調(diào)節(jié)。 現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展對(duì)信號(hào)源提出了

13、越來越高的要求。這些要求主要表現(xiàn)在高分辨率、高輸出頻率、任意波形等方面。此時(shí)傳統(tǒng)的信號(hào)發(fā)生器已經(jīng)無法滿足要求。 直接數(shù)字頻率合成(direct digital synthesizer簡(jiǎn)稱dds)技術(shù)是一種新的全數(shù)字的頻率合成原理,它從相位的角度出發(fā)直接合成所需波形。這種技術(shù)由美國(guó)學(xué)者jtiercy,mrader和bgold于1971年首次提出,但限于當(dāng)時(shí)的技術(shù)和工藝水平,dds技術(shù)僅僅在理論上進(jìn)行了一些探討,而沒有應(yīng)用到實(shí)際中去。但是隨著電子技術(shù)的飛速發(fā)展,微處理器性能大幅提高,高速的d/a以及隨機(jī)存儲(chǔ)器大量涌現(xiàn),dds技術(shù)已經(jīng)變得很容易實(shí)現(xiàn)。它已廣泛應(yīng)用于通訊、雷達(dá)、遙控測(cè)試、電子對(duì)抗以及現(xiàn)

14、代化的儀器儀表工業(yè)等許多領(lǐng)域。將其與簡(jiǎn)單電路相結(jié)合就可以精確模擬仿真各種信號(hào)。 不論是在生產(chǎn)、實(shí)驗(yàn)還是在科研與教學(xué)上,多功能信號(hào)發(fā)生器都是用于仿真實(shí)驗(yàn)的最佳工具。隨著我國(guó)經(jīng)濟(jì)和科技的發(fā)展,對(duì)相應(yīng)的測(cè)試儀器和測(cè)試手段也提出了更高的要求,多功能信號(hào)生器己成為測(cè)試儀器中至關(guān)重要的一類,因此開發(fā)多功能信號(hào)發(fā)生器具有重大意義。1.課題簡(jiǎn)介1.1 課設(shè)目的(1)懂得多功能波形發(fā)生器的結(jié)構(gòu)組成(2)懂得利用fpga芯片實(shí)現(xiàn)多種波形的產(chǎn)生方法(3)懂得一種復(fù)雜fpga電路的設(shè)計(jì) 1.2課設(shè)要求 設(shè)計(jì)一個(gè)多功能波形發(fā)生器。該波形發(fā)生器能產(chǎn)生正弦波、方波、三角波和由用戶編輯的特定形狀波形。具體要求如下: (1)

15、具有產(chǎn)生正弦波、方波、三角波、鋸齒波4種周期性波形的功能。 (2) 用鍵盤輸入編輯生成上述4種波形(同周期)的線性組合波形。 (3)具有波形存儲(chǔ)功能。 (4)輸出波形的頻率范圍為100hz200khz;重復(fù)頻率可調(diào),頻率步進(jìn)間隔100hz。 (5)輸出波形幅度范圍05v(峰-峰值),可按步進(jìn)0.1v(峰-峰值)調(diào)整。 (6)具有顯示輸出波形的類型、重復(fù)頻率(周期)和幅度的功能。 (7)用鍵盤或其他輸入裝置產(chǎn)生任意波形。多功能波形發(fā)生器系統(tǒng)由以下四部分組成:輸入部分、fpga部分、dac、顯示部分組成。 圖1 多功能波形發(fā)生器系統(tǒng)框圖1.3課設(shè)工具本次設(shè)計(jì)是基于altera公司的quartusi

16、i軟件。quartus ii 是altera公司的綜合性pld開發(fā)軟件,支持原理圖、vhdl、veriloghdl以及ahdl(altera hardware description language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整pld設(shè)計(jì)流程。quartusii支持altera的ip核,包含了lpm/megafuction宏功能模塊庫(kù),使用它,可以簡(jiǎn)化設(shè)計(jì)的復(fù)雜性,加快設(shè)計(jì)速度。quartusii平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持基于internet的協(xié)作設(shè)計(jì)。此外,quartusii通過和dsp builder工具與mat

17、lab/simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種dsp應(yīng)用系統(tǒng);支持altera的片上可編程系統(tǒng)開發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件設(shè)計(jì)、可編程邏輯設(shè)計(jì)于一體,是一種綜性的開發(fā)平臺(tái)。2設(shè)計(jì)方案2.1方案選擇1、模擬鎖相環(huán)實(shí)現(xiàn)模擬鎖相環(huán)技術(shù)是一項(xiàng)比較成熟的技術(shù)。應(yīng)用模擬鎖相環(huán),可將基準(zhǔn)頻率倍頻,或分頻得到所需的頻率,且調(diào)節(jié)精度可以做到相當(dāng)高、穩(wěn)定性也比較好。但模擬鎖相環(huán)模擬電路復(fù)雜,不易調(diào)節(jié),成本較高,且由于受模擬器件的影響,波形變換調(diào)節(jié)時(shí)間較長(zhǎng),輸出波形的毛刺較多,因此模擬鎖相環(huán)實(shí)現(xiàn)在低頻(0500khz)信號(hào)發(fā)生系統(tǒng)中不是很好的方案。2、直接數(shù)字頻率合成實(shí)現(xiàn)直接數(shù)字頻率合成(ddfs)技術(shù)是經(jīng)典

18、的數(shù)字頻率合成技術(shù)。由于數(shù)字量的可操作性遠(yuǎn)遠(yuǎn)高于模擬量,采用ddfs的優(yōu)點(diǎn)在于頻率精度高、波形調(diào)節(jié)方便、且輸出波形毛刺少等。基于單片機(jī)的數(shù)字波形發(fā)生系統(tǒng)受單片機(jī)指令頻率的限制,輸出波形頻率較低,而基于fpga的波形發(fā)生系統(tǒng)就不存在這樣的問題,其輸出頻帶較單片機(jī)實(shí)現(xiàn)有很大的展寬。本系統(tǒng)設(shè)計(jì)選定以fpga作為系統(tǒng)控制核心的直接數(shù)字頻率合成實(shí)現(xiàn)方案。2.2 設(shè)計(jì)原理采用dds技術(shù)可以很方便地產(chǎn)生各種高質(zhì)量的波形。dds技術(shù)是從相位概念出發(fā)之結(jié)合成所需要波形的一種頻率合成技術(shù)。以正弦波為例,首先要按照一定的采樣點(diǎn)數(shù)將正弦波形一個(gè)周期的數(shù)據(jù)信息存于rom表中,表中包含著一個(gè)周期正弦波的數(shù)字幅度信息,每個(gè)

19、地址對(duì)應(yīng)正弦波中0到360度范圍內(nèi)的一個(gè)相位點(diǎn)的幅度值,查找表時(shí)即是把輸入的地址相位信息映射成正弦波幅度的數(shù)字量信號(hào),通過設(shè)置的輸出端口輸出。在實(shí)物設(shè)計(jì)中,可以使用d/a接口來實(shí)現(xiàn)波形信號(hào)的輸出。為簡(jiǎn)化設(shè)計(jì)過程,本設(shè)計(jì)并未采用dds技術(shù),而是采用描點(diǎn)輸出的方式,實(shí)現(xiàn)波形發(fā)生器的設(shè)計(jì)。程序中設(shè)置一個(gè)波形的起始點(diǎn),經(jīng)過比較、計(jì)算得出波形的其他數(shù)值,將這些點(diǎn)依次連續(xù)輸出,從而實(shí)現(xiàn)波形的仿真。以遞增鋸齒波為例,首先定義初始點(diǎn)為 tmp=“00000000”;在時(shí)鐘上升沿到來時(shí),執(zhí)行tmp<=tmp+1;語句,同時(shí)將tmp輸出,當(dāng)tmp=“11111111”;時(shí),將tmp值清零,執(zhí)行下一個(gè)循環(huán)。在

20、本設(shè)計(jì)中,采用quartusii軟件仿真,所以可以通過波形文件直觀的反映出輸出的數(shù)字量的變化情況,以達(dá)到波形輸出的仿真。正弦波:通過循環(huán)不斷地從ram中依次讀取正弦波一個(gè)周期在時(shí)域上64個(gè)采樣點(diǎn)的波形數(shù)據(jù)送入波形dac,從而產(chǎn)生正弦波。正弦波的頻率取決于讀取數(shù)據(jù)的速度。任意波:首先通過鍵盤把任意波形波形數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中。然后循環(huán)不斷地從存儲(chǔ)器2中依次讀取任意波一個(gè)周期在時(shí)域上64個(gè)采樣點(diǎn)的波形數(shù)據(jù)送入波形dac,從而產(chǎn)生任意波。任意波的頻率取決于讀取數(shù)據(jù)的速度。三角波:三角波波形是對(duì)稱的,每邊呈線形變化,所以可以根據(jù)地址數(shù)據(jù)做簡(jiǎn)單運(yùn)算,就可以得到三角波鋸齒波:產(chǎn)生單調(diào)性鋸齒波,因此把地址數(shù)據(jù)

21、進(jìn)行左移2位,結(jié)果送波形dac就可。方波a:方波a產(chǎn)生也是由64個(gè)采樣點(diǎn)組成, 64個(gè)采樣點(diǎn)的數(shù)據(jù)只有“低電平”和“高電平” 2種狀態(tài)。更改“低電平”和“高電平”出現(xiàn)的比例,可以達(dá)到調(diào)節(jié)占空比的目的。波形dac:根據(jù)輸入的波形數(shù)據(jù)(即fpga輸出的數(shù)據(jù)),產(chǎn)生相應(yīng)的模擬波形的輸出。調(diào)幅dac:根據(jù)輸入的幅度調(diào)節(jié)數(shù)據(jù)(即fpga輸出的數(shù)據(jù)),用來調(diào)節(jié)波形dac的基準(zhǔn)電壓,到達(dá)輸出波形幅度調(diào)節(jié)的目的。波形指示:每種波形具有一個(gè)選擇開關(guān),而每個(gè)選擇開關(guān)與fpga接口的一端都并有一個(gè)發(fā)光二極管,發(fā)光二極管起指示作用。頻率顯示:頻率可以直接用4位bcd撥盤開關(guān)上的數(shù)字和檔位開關(guān)位置一起來表示頻率。幅度顯

22、示:用4個(gè)數(shù)碼管來顯示輸出波形的幅度。2.3設(shè)計(jì)流程首先啟動(dòng)quartus ii軟件如圖2所示: 圖2 quartus ii啟動(dòng)界面接著利用向?qū)В⒁粋€(gè)新的工程。在file菜單中選擇new project wizard選項(xiàng)啟動(dòng)項(xiàng)目向?qū)?。如圖2所示,分別指定創(chuàng)建工程的路徑,工程名和頂層文件名。工程名和頂層文件可以一致也可以不同。一個(gè)工程中可以有多個(gè)文件,但只能有一個(gè)頂層文件。這里我將工程名取為:keshe。如圖3所示。 圖3創(chuàng)建工程界面在圖2所示界面點(diǎn)擊next按鈕出現(xiàn)對(duì)話框如圖3所示直接點(diǎn)next按鈕然后在出現(xiàn)的界面中選擇芯片出現(xiàn)如圖4所示界面。點(diǎn)擊file-new按鍵,選擇vhdl語言,如

23、圖5所示。即進(jìn)入vhdl語言編輯區(qū)如圖7所示。 圖4創(chuàng)建工程的結(jié)束界面 圖5芯片選擇 圖6創(chuàng)建vhdl file對(duì)話框 圖7 vhdl語言編輯框在圖7所示的vhdl語言編輯框中依次輸入分頻器、四選一選擇器、循環(huán)加法計(jì)數(shù)器等4鐘計(jì)數(shù)器、七段譯碼器等功能模塊的vhdl語言源程序。輸入完成之后單擊保存圖標(biāo)并輸入相應(yīng)的文件名。保存之后即可對(duì)源程序進(jìn)行編譯。如果編譯成功則源程序完全正確,否則應(yīng)該返回到出錯(cuò)處改正錯(cuò)誤直至編譯成功為止。編譯成功之后再進(jìn)行波形仿真,從中得出相應(yīng)數(shù)據(jù)及現(xiàn)象。3仿真結(jié)果3.1編譯警告輸入相應(yīng)源代碼,點(diǎn)擊,得出結(jié)果如圖8 圖8編譯結(jié)果程序在編譯階段出現(xiàn)了八個(gè)警告,以下面兩個(gè)為例:1

24、warning (10492): vhdl process statement warning at mine4.vhd(232): signal "y" is read inside the process statement but isn't in the process statement's sensitivity list2warning: output pins are stuck at vcc or gnd warning (13410): pin "p180" is stuck at vcc第一個(gè)警告,在process里

25、作為被判斷信號(hào)(if或者case后面的)或者賦值語句右端信號(hào)通常應(yīng)該寫在process的敏感信號(hào)表里。有些eda工具不檢查這個(gè),可能會(huì)導(dǎo)致仿真結(jié)果與綜合出來的電路不一致。實(shí)際上,綜合工具在綜合的時(shí)候會(huì)自動(dòng)把這類信號(hào)添加到敏感信號(hào)表里,但仿真工具不會(huì),而是完全按照代碼體現(xiàn)的語意來仿真。case y is -7段碼譯碼 when 0 => lcd(7 downto 1)<="0000001" when 1 => lcd(7 downto 1)<="1001111" when 2 => lcd(7 downto 1)<=&q

26、uot;0010010" when 3 => lcd(7 downto 1)<="0000110" when 4 => lcd(7 downto 1)<="1001100" when 5 => lcd(7 downto 1)<="0100100" when 6 => lcd(7 downto 1)<="0100000" when 7 => lcd(7 downto 1)<="0001111" when 8 => lcd(

27、7 downto 1)<="0000000" when 9 => lcd(7 downto 1)<="0000100" when others => lcd(7 downto 1)<="0000001" end case;end process;綜合時(shí),信號(hào)y被添加到敏感信號(hào)表中。第二個(gè)警告,認(rèn)為引腳p180直接到正電源了。port(clk : in std_logic; -時(shí)鐘信號(hào)輸入 set, clr, up, down, zu, zd : in std_logic; -各個(gè)波形特征的調(diào)節(jié)觸發(fā)信號(hào) p

28、osting : in std_logic; -任意波鍵盤置入信號(hào) u0,d0,sw : in std_logic; -方波a、b的切換sw,和方波b的幅度調(diào)節(jié)按鍵 ss : in std_logic_vector( 3 downto 0 ); -檔位選擇信號(hào) sss : in std_logic_vector( 4 downto 0 ); -波形選擇信號(hào) data3, data2, data1,data0 : in std_logic_vector(3 downto 0); -bcd碼輸入 p180 : out std_logic; -預(yù)留接口 lcd : out std_logic_vec

29、tor(7 downto 0); -顯示輸出 shift : out std_logic_vector(3 downto 0); -位碼輸出 dd, a : out std_logic_vector( 7 downto 0); -波形、幅度數(shù)據(jù)輸出但實(shí)際上引腳p180是預(yù)留接口未用。3.2編譯結(jié)果 圖9 編譯結(jié)果3.3建立仿真文件 在編譯通過后,要建立后綴為vwf的仿真波形文件。執(zhí)行菜單命令,選擇new,再選擇需要的vector waveform file,單擊ok。在波形文件編輯方式下,右鍵選擇insert添加信號(hào)節(jié)點(diǎn),設(shè)置相應(yīng)的參數(shù)。如下圖所示。 圖10 仿真波形文件建立 圖11 仿真波形

30、參數(shù)設(shè)置3.4仿真結(jié)果仿真結(jié)果如下圖所示 圖12仿真波形3.5 rtl視圖生成的rtl視圖如下 圖13 rtl視圖4程序分析4.1vhdl語言分析一個(gè)vhdl語言的設(shè)計(jì)程序描述的是一個(gè)電路單元,這個(gè)電路單元可以是一個(gè)門電路,或者是一個(gè)計(jì)數(shù)器,也可以是一個(gè)cpu,一般情況下,一個(gè)完整的vhdl語言程序至少包括實(shí)體、結(jié)構(gòu)體和程序包三個(gè)部分。實(shí)體給出電路單元的外部輸入輸出接口信號(hào)和引用信息,結(jié)構(gòu)體給出了電路單元的內(nèi)部結(jié)構(gòu)和信號(hào)的行為特點(diǎn),程序包定義在設(shè)計(jì)結(jié)構(gòu)體和實(shí)體中將用到的常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計(jì)好的電路單元等。第一部分是程序包,程序包是用vhdl語言編寫的共享文件,定義在設(shè)計(jì)結(jié)構(gòu)體和實(shí)體中將

31、要用到的常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計(jì)好的電路單元等,放在文件目錄名稱為ieee的程序包庫(kù)中。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;第二部分是程序的實(shí)體,定義電路單元的輸入/輸出引腳名稱。程序的實(shí)體名稱可以任意取,但必須與vhdl程序的文件名稱相同。實(shí)體的標(biāo)示符是entity,實(shí)體以entity開頭,以end結(jié)束。entity fulladder isport(a,b,ci:in std_logic;co,s: out std_lo

32、gic_vector(7 downto 0);end fulladder;其中,定義了a,b, ci為輸入信號(hào)引腳,定義co,s為輸出信號(hào)引腳。第三部分是程序的結(jié)構(gòu)體,具體描述電路的內(nèi)部結(jié)構(gòu)和邏輯功能。結(jié)構(gòu)體有三種描述方式,分別是行為(behavior)描述方式、數(shù)據(jù)流(dataflow)描述方式和結(jié)構(gòu)描述方式。其中數(shù)據(jù)流描述方式又被稱為寄存器(rtl)描述方式。結(jié)構(gòu)體以表示architechture開頭,以end結(jié)尾。結(jié)構(gòu)體的名稱可以任取。architecture behav of fulladder isbegins<=a xor b xor ci;co<=(a and b)o

33、r(a and ci)or(b and ci);end fulladder上面程序段中結(jié)構(gòu)體的描述方式屬于程序流描述方式。4.2主要函數(shù)語句分析在程序設(shè)計(jì)中,主要使用的函數(shù)語句有兩種:if-else語句和case-when語句。這兩種語句也是vhdl程序設(shè)計(jì)中常用的語句。二者都屬于流程控制語句。流程控制語句通過條件控制開關(guān)決定是否執(zhí)行一條或幾條語句或重復(fù)執(zhí)行一條或幾條語句或跳過一條或幾條語句 。 if語句是一種條件語句,它根據(jù)語句中所設(shè)置的一種或多種條件,有選擇地執(zhí)行指定的順序語句。if語句的語句結(jié)構(gòu)有以下三種: if 條件句 then - 第一種if語句結(jié)構(gòu) 順序語句 end if if 條

34、件句 then - 第二種if語句結(jié)構(gòu) 順序語句 else 順序語句 end if if 條件句 then - 第三種if語句結(jié)構(gòu) 順序語句 elsif 條件句 then 順序語句 . else 順序語句 end ifcase語句根據(jù)滿足的條件直接選擇多項(xiàng)順序語句中的一項(xiàng)執(zhí)行,case語句的結(jié)構(gòu)如下:case 表達(dá)式 iswhen 選擇值 => 順序語句when 選擇值 => 順序語句.end case 當(dāng)執(zhí)行到case語句時(shí),首先計(jì)算表達(dá)式的值,然后根據(jù)條件句中與之相同的選擇值。執(zhí)行對(duì)應(yīng)的順序語句,最后結(jié)束 case語句。表達(dá)式可以是一個(gè)整數(shù)類型或枚舉類型的值,也可以是由這些數(shù)據(jù)

35、類型的值構(gòu)成的數(shù)組。5小結(jié)通過這次fpga課程設(shè)計(jì),我對(duì)fpga的基本原理有了進(jìn)一步的認(rèn)識(shí)。fpga的基礎(chǔ)就是數(shù)字電路和vhdl語言,其開發(fā)需要從頂層設(shè)計(jì)、模塊分層、邏輯實(shí)現(xiàn)、軟硬件調(diào)試等多方面著手。開發(fā)環(huán)境常用的有altera公司的quartus ii 和xilinx公司的ise,本次課程設(shè)計(jì)選用的是quartus ii 。此次課程設(shè)計(jì)暴露了我平時(shí)學(xué)習(xí)中的許多不足。在設(shè)計(jì)的過程中我遇到了一些問題,比如對(duì)quartus軟件的使用還不太熟悉,在編譯的時(shí)候出現(xiàn)的錯(cuò)誤不知道怎么解決,請(qǐng)教了很多同學(xué)才弄明白。還有進(jìn)行仿真之前需要自己建立仿真波形文件,才能進(jìn)行仿真等等,但在和老師、同

36、學(xué)的交流下,最后我都解決了問題。另一方面我也感受到動(dòng)手實(shí)踐的重要性。動(dòng)手實(shí)踐是理論知識(shí)得以靈活運(yùn)用的必要前提,也是今后走上工作崗位之后能夠很好的完成設(shè)計(jì)工作的技術(shù)保證。fpga是實(shí)用性很強(qiáng)的課程,只有多學(xué)多用,邊學(xué)邊用,才能促進(jìn)提高自己的能力。雖然課設(shè)完成了,但是我意識(shí)到,我對(duì)fpga技術(shù)僅僅只是停留在入門的階段,想要有更大的發(fā)展,更深入的研究,還需要更多的努力與實(shí)踐。6參考文獻(xiàn)【1】潘松 黃繼業(yè). eda技術(shù)與vhdl(第二版).北京:清華大學(xué)出版社,2005.7【2】康華光.電子技術(shù)基礎(chǔ).北京:高等教育出版社.2006.1【3】付家才. eda工程實(shí)踐技術(shù).北京:化學(xué)工業(yè)出版社,2007.

37、1【4】漢澤西. eda技術(shù)及其應(yīng)用.北京:北京航空航天大學(xué)出版社,2004.5【5】趙剛.eda技術(shù)簡(jiǎn)明教程.成都:四川大學(xué)出版社,2004.6【6】章彬宏 周正林.eda應(yīng)用技術(shù).北京:北京理工大學(xué)出版社,2007.7【7】劉艷萍 高振斌 李志平.eda實(shí)用技術(shù)及應(yīng)用.北京:國(guó)防工業(yè)出版社,2006.17附錄源程序代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity keshe isport(clk : in std_log

38、ic; -時(shí)鐘信號(hào)輸入 set, clr, up, down, zu, zd : in std_logic; -各個(gè)波形特征的調(diào)節(jié)觸發(fā)信號(hào) posting : in std_logic; -任意波鍵盤置入信號(hào) u0,d0,sw : in std_logic; -方波a、b的切換sw,和方波b的幅度調(diào)節(jié)按鍵 ss : in std_logic_vector( 3 downto 0 ); -檔位選擇信號(hào) sss : in std_logic_vector( 4 downto 0 ); -波形選擇信號(hào) data3, data2, data1,data0 : in std_logic_vector(3

39、 downto 0); -bcd碼輸入 p180 : out std_logic; -預(yù)留接口 lcd : out std_logic_vector(7 downto 0); -顯示輸出 shift : out std_logic_vector(3 downto 0); -位碼輸出 dd, a : out std_logic_vector( 7 downto 0); -波形、幅度數(shù)據(jù)輸出end keshe;architecture behav of keshe issubtype word is std_logic_vector( 7 downto 0 );type unit is array

40、(63 downto 0) of word;signal ram : unit;signal qqq : integer range 0 to 250000000;signal qq : integer range 0 to 78125000;signal tmp : integer range 0 to 9999;signal coun : integer range 0 to 78125000;signal coun0 : integer range 0 to 250000000;signal b : integer range 0 to 78125000;signal c : integ

41、er range 0 to 500000000;signal z, con : integer range 0 to 63;signal f : std_logic_vector( 7 downto 0 );signal amp, amp0, d : std_logic_vector(7 downto 0);signal bcd0,bcd1,bcd2,bcd3 : integer range 0 to 9;signal bcd01,bcd11,bcd21,bcd31 : integer range 0 to 9;signal bcd00,bcd10,bcd20,bcd30 : integer

42、range 0 to 9;signal y : integer range 0 to 9;signal addr : integer range 0 to 63;beginqq<=781250 when ss="1000" else 7812500 when ss="0100" else 78125000 when ss="0010" else 78125;-qq信號(hào)對(duì)應(yīng)sw=0時(shí)的檔位選擇信號(hào)ss,實(shí)現(xiàn)方波a和其他三種波形的頻率預(yù)置qqq<= 500000 when ss="1000" else 50

43、00000 when ss="0100" else 50000000 when ss="0010" else50000;-qqq信號(hào)對(duì)應(yīng)sw=1時(shí)的檔位選擇信號(hào)ss,實(shí)現(xiàn)方波b的頻率預(yù)置process(clk) -此進(jìn)程分別描述了各種波形的頻率、幅度(方波a的占空比)調(diào)節(jié)以及各種波形的任意線-形疊加等。variable count4 : integer range 0 to 6250000;variable count : integer range 0 to 78125000;variable count3 : integer range 0 to 2

44、50000000;variable count1 : integer range 0 to 12500000;variable count0 : integer range 0 to 3249999;variable ddd : std_logic_vector(9 downto 0);variable dd0,dd1,dd2,dd3,dd4 : integer range 0 to 255;variable adr : integer range 0 to 63;beginif rising_edge(clk) then if posting='1' then if coun

45、t4=6249999 then count4:=0; adr:=conv_integer(data3)*10+conv_integer(data2);-存儲(chǔ)單位地址 if adr<64 then if set='1' then ram(adr)<=conv_std_logic_vector(conv_integer(data1)*10+conv_integer(data0)*2,8); -對(duì)置入的任意波形數(shù)據(jù)進(jìn)行儲(chǔ)存 elsif clr='1' then adr:=0; -存儲(chǔ)器所有單元清零 for i in 0 to 63 loopram(i)&l

46、t;=(others=>'0');end loop; end if; end if; else count4:=count4+1; end if; else if set='1' then coun<=0; b<=0; coun0<=0;c<=0;z<=31;amp0<="01111111" addr<=0;tmp<=conv_integer(data3)*1000+conv_integer(data2)*100+conv_integer(data1)*10+conv_integer(da

47、ta0); -頻率數(shù)據(jù) amp<="01111111" -幅值 else if tmp>0 then if sw='0' then if coun<qq then coun<=coun+tmp; b<=b+1; -頻率到采樣點(diǎn)間隔脈沖數(shù)轉(zhuǎn)換 else if count=b then count:=1; if f=63 then f<="00000000" else f<=f+1; end if; if sss="00010" then -方波a if con<=z the

48、n dd<=amp0; con<=con+1; elsif con=63 then con<=0; dd<="00000000" else con<=con+1; dd<="00000000" end if; elsif sss="10000" then dd<=d; -正弦波 elsif sss="00100" then dd<=f(5 downto 0)&"00" -鋸齒波 elsif sss="01000" the

49、n -三角波 if f>31 then dd<=("111111"-f(5 downto 0)&"00" else dd<=f(5 downto 0)&"00" end if; elsif sss="00001" then -任意波 if addr<63 then dd<=ram(addr); addr<=addr+1; elsif addr=63 then dd<=ram(63); addr<=0; end if; else -完成5種波形的線形疊加

50、 if sss(1)='1' then if con<=z then con<=con+1; dd0:=conv_integer(amp0); -方波波形數(shù)據(jù)dd0 else con<=con+1; dd0:=0; end if; end if; if sss(4)='1' then dd1:=conv_integer(d); -正弦波波形數(shù)據(jù)dd1 end if; if sss(2)='1' then dd2:=conv_integer(f(5 downto 0)&"00"); -鋸齒波波形數(shù)據(jù)dd

51、2 end if; if sss(3)='1' then if f>31 then dd3:=conv_integer("111111"-f(5 downto 0)&"00"); else dd3:=conv_integer(f(5 downto 0)&"00"); -三角波波形數(shù)據(jù)dd3 end if; end if; if sss(0)='1' then if addr<63 then dd4:=conv_integer(ram(addr); addr<=addr+1; elsi

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論