版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2010屆學(xué)士學(xué)位論文 基于FPGA的程控濾波器的設(shè)計(jì)學(xué)院、專業(yè) 物理與電子信息學(xué)院電子信息科學(xué)與技術(shù)研 究方 向FPGA控制學(xué) 生姓 名學(xué) 號(hào)指導(dǎo)教師姓名指導(dǎo)教師職稱2010年04月29日基于FPGA的程控濾波器的設(shè)計(jì)淮北煤炭師范學(xué)院物理與電子信息學(xué)院 235000摘要本文研究的主要目的是設(shè)計(jì)一個(gè)由現(xiàn)場(chǎng)可編程門陣列(FPGA)控制的濾波器。首先設(shè)計(jì)一個(gè)利用模擬開關(guān)CD4051來(lái)實(shí)現(xiàn)增益可控的前置放大電路,然后用模擬開關(guān)CD4052設(shè)計(jì)截止頻率可控的低通濾波電路和高通濾波電路,最后利用FPGA編程實(shí)現(xiàn)放大器的放大倍數(shù)和濾波器的截止頻率的控制以及通過數(shù)碼管實(shí)現(xiàn)放大倍數(shù)和截止頻率等參數(shù)的顯示。從而
2、設(shè)計(jì)出基于FPGA的程控濾波器,基于FPGA技術(shù),使得該系統(tǒng)具有參數(shù)可程控,抗干擾能力強(qiáng),可靠性好等優(yōu)點(diǎn)。關(guān)鍵詞 FPGA;程控;濾波器;放大器The Design of Programmable Filter Based on FPGASchool of Physics and Electronic Information, Huaibei Coal Industuy Terachers College, 235000Abstract The main purpose of this study is to design a filter controlled by Field-Progra
3、mmable Gate Array(FPGA). First of all, use analog switches CD4051 to designa gain-controlled pre-amplifier circuit, and then use analog switches CD4052 to design low-pass filter circuit and high-pass filter circuit and their cut-off frequency is controllable, finally use FPGA by programming to reali
4、ze the control of the amplifier magnification and cut-off frequency as well as through the digital tube to achieve the display of magnification and cut-off frequency and other parameters, so as to achieve the design of programmable filter based on FPGA. Base on FPGA technology, thestrong anti-interf
5、erence ability andreliability would be owned by the given-controlled programmer.Keywords FPGA; Program-controlled; Filter; Amplifier目錄1 引言12 系統(tǒng)設(shè)計(jì)22.1 設(shè)計(jì)要求22.2 總體方案設(shè)計(jì)22.3 方案論證與選擇33 單元模塊設(shè)計(jì)與實(shí)現(xiàn)43.1 程控放大電路模塊43.2 程控濾波器電路模塊53.3 程控濾波器的FPGA控制模塊104 系統(tǒng)仿真測(cè)試154.1 測(cè)試過程及結(jié)果154.2 誤差分析16結(jié)論17參考文獻(xiàn)18附錄19致謝401 引言濾波器其實(shí)就是選
6、頻電路,可允許部分頻率的信號(hào)順利通過,而另一部分頻率的信號(hào)受到較大抑制。在近代電信裝備和各類控制系統(tǒng)中,濾波器應(yīng)用極為廣泛。模擬濾波器在測(cè)試系統(tǒng)或?qū)S脙x器儀表中是一種常用的變換裝置。濾波器的優(yōu)劣直接影響產(chǎn)品的性能,所以對(duì)濾波器的研究和生產(chǎn)歷來(lái)為各國(guó)所重視。其中,RC有源濾波器的應(yīng)用比較廣泛,以它為原型的各類變種有源濾波器去掉了電感器,體積小,Q 值可達(dá)1000,克服了RLC無(wú)源濾波器體積大、Q 值小的缺點(diǎn)1。設(shè)計(jì)截止頻率參數(shù)可設(shè)置的程控濾波器對(duì)提高濾波器的指標(biāo)精度有著重要的意義和實(shí)用價(jià)值。在傳統(tǒng)RC有源濾波器的基礎(chǔ)上,利用FPGA編程實(shí)現(xiàn)對(duì)濾波器截止頻率的控制,力求功能的多樣和成本的低廉。 2
7、 系統(tǒng)設(shè)計(jì)2.1 設(shè)計(jì)要求本文要設(shè)計(jì)的程控濾波器力求滿足以下要求:1. 放大器輸入正弦信號(hào)電壓振幅為,電壓增益為,增益步進(jìn)可調(diào),通頻帶為,放大器輸出電壓無(wú)明顯失真。2. 濾波器可設(shè)置為低通濾波器,其截止頻率在范圍內(nèi)可調(diào),調(diào)節(jié)的頻率步進(jìn)為,處放大器與濾波器的總電壓增益不大于,。3. 濾波器可設(shè)置為高通濾波器,其截止頻率在范圍內(nèi)可調(diào),調(diào)節(jié)的頻率步進(jìn)為,處放大器與濾波器的總電壓增益不大于,。4. 電壓增益與截止頻率的誤差均不大于10%,有設(shè)置參數(shù)顯示功能。2.2 總體方案設(shè)計(jì)根據(jù)設(shè)計(jì)要求可以確定一個(gè)總體設(shè)計(jì)方案。該程控濾波器基本上可以由FPGA控制模塊、鍵盤模塊、放大器模塊、低通濾波器模塊、高通濾波
8、器模塊以及顯示模塊組成。由FPGA來(lái)控制各模擬開關(guān)實(shí)現(xiàn)檔位切換,從而實(shí)現(xiàn)放大器增益、低通和高通濾波器截止頻率等參數(shù)可控,濾波部分通過多組不同阻值的電阻組合切換分別實(shí)現(xiàn)高通和低通濾波電路中的截止頻率步進(jìn)可調(diào)。通過集成在FPGA模塊中的鍵盤來(lái)設(shè)置參數(shù),顯示部分由LED數(shù)碼管顯示參數(shù)??傮w方案設(shè)計(jì)如圖1所示。圖1 系統(tǒng)總體設(shè)計(jì)框圖2.3 方案論證與選擇2.3.1 程控放大器電路的選擇改變程控放大器的增益一般有兩種途徑2,一種是改變反相端的輸入電阻阻值,另一種是改變負(fù)反饋電阻阻值,設(shè)計(jì)程控放大器有如下兩種方案。方案1: 采用數(shù)字電位器3,通過軟件控制寫入到電位器相關(guān)寄存器的數(shù)值來(lái)改變電阻值。但精度較低
9、、檔位有限,很難實(shí)現(xiàn)增益的精確控制,同時(shí)受信號(hào)的帶寬限制,在運(yùn)放環(huán)路中會(huì)影響整個(gè)系統(tǒng)的通頻帶寬。方案2: 通過模擬開關(guān)芯片CD4051來(lái)切換不同阻值的固定電阻來(lái)改變反饋電阻,從而改變電路的增益,各固定電阻可根據(jù)指標(biāo)要求理論計(jì)算并經(jīng)調(diào)試后確定。這種方案通俗易懂,價(jià)格低廉,能夠達(dá)到很高的精度。綜上所述,選擇方案2。2.3.2 程控濾波器電路的選擇程控濾波器有如下兩種方案可供選擇。方案1: 采用專門的開關(guān)電容濾波芯片4,雖然集成度高,但價(jià)格昂貴,且不易于掌握。方案2: 采用有源的RC濾波電路,通過模擬開關(guān)芯片CD4052來(lái)切換不同阻值的固定電阻來(lái)改變電阻阻值,從而改變截止頻率,各固定電阻可根據(jù)指標(biāo)要
10、求計(jì)算和仿真后確定,此種方案具有電路簡(jiǎn)單、價(jià)格低廉、易掌握、易實(shí)現(xiàn)等優(yōu)點(diǎn)。綜上所述,選擇方案2。2.3.3 控制模塊的選擇程序控制模塊負(fù)責(zé)調(diào)整放大器的增益和濾波器的截止頻率,有如下兩種方案。方案1:可以采用單片機(jī)控制電路,但是單片機(jī)資源有限,電路中芯片使用較多,鏈接復(fù)雜。方案2:用FPGA實(shí)現(xiàn)控制5,集成度高、運(yùn)行速度快,資源豐富,易于進(jìn)行功能擴(kuò)展。系統(tǒng)的多個(gè)部件如模擬開關(guān)控制電路,鍵盤控制電路,顯示控制等都可以集成到一塊芯片上,大大減小了系統(tǒng)的體積,并且提高了系統(tǒng)的穩(wěn)定性和抗干擾能力。綜上所述,選用方案2。3 單元模塊設(shè)計(jì)與實(shí)現(xiàn)3.1 程控放大電路模塊為保證放大器的放大倍數(shù)最高為100倍且程
11、控放大器通頻為6,采用三級(jí)放大,為了保證輸出無(wú)明顯的失真和干擾,選用低噪聲放大器OP07。由模擬開關(guān)CD4051組成可調(diào)的電阻網(wǎng)絡(luò)。程控放大器電路如圖2所示,利用Mutisim仿真軟件仿真得到如表1所示的電阻網(wǎng)絡(luò)電阻阻值,由表1中數(shù)據(jù)可畫出如圖2所示的電阻網(wǎng)絡(luò),放大電路的第一級(jí)放大倍數(shù),第二級(jí)放大倍數(shù),第三級(jí)放大倍數(shù)??偟姆糯蟊稊?shù),其中的單位為。圖2 程控放大器電路表1 電阻網(wǎng)絡(luò)的電阻仿真數(shù)值開關(guān)通道電阻網(wǎng)絡(luò)增益/放大倍數(shù)0000X0100010001X1316100010X21K20100011X3300100X41040100圖3 由模擬開關(guān)CD4051組成的電阻網(wǎng)絡(luò)3.2 程控濾波器電路
12、模塊 程控低通濾波器低通濾波器其截止頻率在范圍內(nèi)可調(diào)7,調(diào)節(jié)的頻率步進(jìn)為,處放大器與濾波器的總電壓增益不大于,。根據(jù)設(shè)計(jì)要求,用改變電阻的方法實(shí)現(xiàn)截止頻率可調(diào);并用CD4052實(shí)現(xiàn)電阻網(wǎng)絡(luò)控制,達(dá)到調(diào)節(jié)的頻率步進(jìn)為;為了達(dá)到處放大器與濾波器的總電壓增益不大于,采用二階低通濾波器并加上適當(dāng)?shù)乃p,程控低通濾波器電路如圖4所示,二階RC低通濾波器的傳輸函數(shù)為(3-1)式中: 電壓增益 低通濾波器截止角頻率 品質(zhì)因數(shù)由此公式來(lái)確定RC值是非常困難的,可以先通過查表法,先將電容C大小先確定下來(lái),查表得C=10,再通過改變電阻阻值使得電壓增益=1,以便于用Mutisim仿真軟件進(jìn)行仿真讀數(shù),從而確定電阻
13、網(wǎng)絡(luò)阻值,仿真后得到如表2所示的電阻網(wǎng)絡(luò)的電阻阻值,由表2中數(shù)據(jù)可畫出由CD4052夠成的電阻網(wǎng)絡(luò)如圖5所示。圖4 程控低通濾波器電路表2 電阻網(wǎng)絡(luò)的電阻仿真數(shù)值截止頻率電阻網(wǎng)絡(luò)阻值截止頻率電阻網(wǎng)絡(luò)阻值1627384951011169621217907131885114198111520772圖5由模擬開關(guān)CD4052組成的低通濾波器電阻網(wǎng)絡(luò) 程控高通濾波器高通濾波器其截止頻率在范圍內(nèi)可調(diào),調(diào)節(jié)的頻率步進(jìn)為,處放大器與濾波器的總電壓增益不大于,。根據(jù)設(shè)計(jì)要求,用改變電阻的方法實(shí)現(xiàn)截止頻率可調(diào);并用CD4052實(shí)現(xiàn)電阻網(wǎng)絡(luò)控制,達(dá)到調(diào)節(jié)的頻率步進(jìn)為;為了達(dá)到處放大器與濾波器的總電壓增益不大于,采
14、用二階低通濾波器并加上適當(dāng)?shù)乃p,程控高通濾波器電路如圖6所示。二階RC高通濾波器的傳輸函數(shù)為(3-2)式中: 電壓增益 高通濾波器截止角頻率 品質(zhì)因數(shù)由此公式來(lái)確定RC值是非常困難的,可以先通過查表法,先將電容C大小先確定下來(lái),查表得C=10,再通過改變電阻阻值使得電壓增益=1,以便于用Mutisim仿真軟件進(jìn)行仿真讀數(shù),從而確定電阻網(wǎng)絡(luò)阻值,仿真后得到如表所示的電阻網(wǎng)絡(luò),由表3中數(shù)據(jù)可畫出由CD4052夠成的電阻網(wǎng)絡(luò)如圖7所示。圖6程控高通濾波器電路表3 電阻網(wǎng)絡(luò)的電阻仿真數(shù)值截止頻率電阻網(wǎng)絡(luò)截止頻率電阻網(wǎng)絡(luò)111212313414870515800表3 (續(xù))截止頻率電阻網(wǎng)絡(luò)截止頻率電阻
15、網(wǎng)絡(luò)62.35 K1675072K177008186509196001020550圖7由模擬開關(guān)CD4052組成的高通濾波器電阻網(wǎng)絡(luò)3.3 程控濾波器的FPGA控制模塊根據(jù)設(shè)計(jì)要求可畫出FPGA控制模塊的框圖如圖8所示。圖8 FPGA控制模塊框圖根據(jù)FPGA控制模塊的框圖可設(shè)計(jì)出如圖9所示的FPGA控制核心模塊連接圖,程序見附錄。其中,輸入端clk接50MHz晶振電路;輸入端接高低電平,00時(shí)鍵盤控制低通濾波器,01時(shí)鍵盤控制高通濾波器,10時(shí)鍵盤控制的程控濾波器;輸入端接鍵盤。輸出端start接發(fā)光二極管,有鍵值輸出時(shí)發(fā)光二極管顯示;輸出端接鍵盤;輸出端接數(shù)碼管a、b、c、d、e、f、g、h
16、;輸出端分別接四個(gè)共陰極數(shù)碼管。KEYBOARD是鍵盤模塊,用于設(shè)置放大倍數(shù)和截止頻率;CONTROL是控制模塊,用于控制低通濾波器、高通濾波器和程控放大器是否工作,并傳送鍵盤數(shù)據(jù);CONTROL1、CONTROL2、CONTROL3模塊分別用于控制低通濾波器、高通濾波器的截止頻率和放大器的放大倍數(shù)。圖9 控濾波器的FPGA控制核心模塊連接圖 分頻器模塊根據(jù)設(shè)計(jì)要求可畫出分頻器模塊的框圖如圖10所示。圖10 分頻器模塊框圖該模塊將的晶振進(jìn)行25000和625分頻,得到兩個(gè)不同頻率的時(shí)鐘信號(hào),分別為,其中時(shí)鐘用來(lái)為鍵盤模塊提供時(shí)鐘信號(hào),而時(shí)鐘用來(lái)為鍵盤模塊和低通濾波器控制模塊、高通濾波器控制模塊
17、和放大器控制模塊提供時(shí)鐘信號(hào)。 鍵盤模塊根據(jù)設(shè)計(jì)要求可畫出鍵盤模塊的框圖如圖11所示。圖11 鍵盤模塊框圖在時(shí)鐘信號(hào)和作用下,用行列式鍵盤來(lái)產(chǎn)生所需的鍵值,用作為控制信號(hào),當(dāng)其值為或者時(shí),用鍵盤C鍵來(lái)加1實(shí)現(xiàn)高通濾波器和低通濾波器的截止頻率的步進(jìn),用D鍵來(lái)實(shí)現(xiàn)減1操作;當(dāng)其值為時(shí),用鍵盤C鍵來(lái)加10實(shí)現(xiàn)放大器增益步進(jìn),用D鍵來(lái)實(shí)現(xiàn)減10操作。從而實(shí)現(xiàn)放大倍數(shù)和截止頻率的調(diào)節(jié)。同時(shí)將輸入的數(shù)據(jù)用數(shù)碼管進(jìn)行顯示。信號(hào)從端口輸出。 控制模塊根據(jù)設(shè)計(jì)要求可畫出控制模塊的框圖如圖12所示。圖12 控制模塊框圖通過由鍵盤輸入的控制信號(hào)來(lái)控制低通濾波器、高通濾波器和放大器是否工作。當(dāng)其值為時(shí),選通低通濾波器
18、,同時(shí)通過來(lái)傳送鍵盤數(shù)據(jù);當(dāng)其值為時(shí),選通高通濾波器器,同時(shí)通過來(lái)傳送鍵盤數(shù)據(jù);當(dāng)其值為時(shí),選通放大器,同時(shí)通過傳送鍵盤數(shù)據(jù)。控制模塊如圖11所示。 低通濾波器控制模塊根據(jù)設(shè)計(jì)要求可畫出低通濾波器模塊的框圖如圖13所示。圖13 低通濾波器模塊框圖在時(shí)鐘信號(hào)的作用下,將傳送來(lái)的鍵盤數(shù)據(jù)轉(zhuǎn)化成十進(jìn)制數(shù),然后與預(yù)先設(shè)置好的數(shù)值進(jìn)行比較得到選通的頻率,從而通過,輸出二進(jìn)制代碼,進(jìn)而輸入到模擬開關(guān),最后選通相應(yīng)的開關(guān),從而實(shí)現(xiàn)截止頻率的控制。低通濾波器控制模塊如圖12所示。 高通濾波器控制模塊根據(jù)設(shè)計(jì)要求可畫出高通濾波器模塊的框圖如圖14所示。圖14 高通濾波器模塊框圖在時(shí)鐘信號(hào)的作用下,將傳送來(lái)的鍵盤
19、數(shù)據(jù)轉(zhuǎn)化成十進(jìn)制數(shù),然后與預(yù)先設(shè)置好的數(shù)值進(jìn)行比較得到選通的頻率,從而通過,輸出二進(jìn)制代碼,進(jìn)而輸入到模擬開關(guān),最后選通相應(yīng)的開關(guān),從而實(shí)現(xiàn)截止頻率的控制。 程控放大器模塊根據(jù)設(shè)計(jì)要求可畫出放大器模塊的框圖如圖14所示。圖15 放大器模塊框圖在時(shí)鐘信號(hào)的作用下,將傳送來(lái)的鍵盤數(shù)據(jù)轉(zhuǎn)化成十進(jìn)制數(shù),然后與預(yù)先設(shè)置好的數(shù)值進(jìn)行比較得到選通的頻率,從而通過輸出二進(jìn)制代碼,進(jìn)而輸入到模擬開關(guān),最后選通相應(yīng)的開關(guān),從而實(shí)現(xiàn)截止頻率的控制。程控放大器控制模塊如圖14所示4 系統(tǒng)仿真測(cè)試4.1 測(cè)試過程及結(jié)果1. 程控放大器測(cè)試輸入電壓振幅為10,設(shè)置放大倍數(shù)在不同頻率下利用Mulisim仿真軟件測(cè)試輸出電壓
20、,測(cè)得數(shù)據(jù)如表4所示。表4 程控低通放大器測(cè)試預(yù)測(cè)放大倍數(shù)輸出電壓100輸出電壓1輸出電壓10輸出電壓20輸出電壓40實(shí)際放大倍數(shù)所測(cè)放大倍數(shù)誤差0dB10%10dB0.38%20dB100.80%30dB3123123123123121.33%40dB9969969969969961000.40%2. 程控濾波器的測(cè)試輸入電壓振幅為1,設(shè)置好截止頻率,調(diào)節(jié)輸入信號(hào)頻率時(shí)的平率,即為-3截止頻率,測(cè)得低通濾波器數(shù)據(jù)如表5所示,高通濾波器數(shù)據(jù)如表6所示。表5 程控低通濾波器測(cè)試截止頻率/1234567測(cè)量值/誤差/%6截止頻率/891011121314測(cè)量值/誤差/%表5(續(xù))截止頻率/1516
21、17181920測(cè)量值/誤差/%表6 程控高通濾波器測(cè)試截止頻率/1234567測(cè)量值/誤差/%截止頻率/891011121314測(cè)量值/誤差/%截止頻率/151617181920測(cè)量值/誤差/%4.2 誤差分析仿真所產(chǎn)生的誤差的原因在于利用軟件Mltisim仿真時(shí),克服了阻值可能不能滿足的要求,但是同樣由于人為操作示波器時(shí),讀數(shù)有一定的誤差。倘若用實(shí)物連接電路測(cè)試,由于反饋電阻的阻值不一定在市場(chǎng)能購(gòu)買,所以必然會(huì)有誤差,可以采取以下措施減少誤差:1. 采用多種不同額定阻值的電阻,將阻值大小不同的電阻相串聯(lián)或者并聯(lián)來(lái)滿足對(duì)阻值有效位數(shù)的需要,從而提高參數(shù)的精度。2. 選用足夠高分辨力的電阻和電
22、容,這取決于元件制造工藝的發(fā)展。結(jié) 論本系統(tǒng)采用FPGA設(shè)計(jì)的程控濾波器能夠較好地適應(yīng)120的信號(hào)。與其它采用方法相比,由于采用了FPGA作為控制單元,使得電路的設(shè)計(jì)復(fù)雜度降低。采用模擬開關(guān)元件實(shí)現(xiàn)的程控放大器和濾波器精度高,而且實(shí)現(xiàn)的電路噪聲小,具有良好的穩(wěn)定性。滿足了設(shè)計(jì)的基本要求,并且具有電路簡(jiǎn)單、人機(jī)界面友好、控制方便、成本低廉等優(yōu)點(diǎn)。從仿真結(jié)果來(lái)看,系統(tǒng)的指標(biāo)精度較高,具有一定的實(shí)用價(jià)值。由于時(shí)間和條件的限制以及個(gè)人能力有限,本文所做的工作還有很多的不足,在今后的工作中對(duì)以下幾個(gè)方面的問題進(jìn)行進(jìn)一步的研究:1. 如何實(shí)現(xiàn)更高帶寬和更小步進(jìn)頻率的放大器。2. 如何實(shí)現(xiàn)更高帶寬和更小步進(jìn)
23、頻率的濾波器。3. 如何用液晶來(lái)顯示參數(shù)。在整個(gè)畢業(yè)設(shè)計(jì)中,包含了多項(xiàng)關(guān)鍵技術(shù)方面的問題,為此我查閱了一些文獻(xiàn)資料,進(jìn)一步鞏固了我的專業(yè)知識(shí),并提高了學(xué)習(xí)能力,為今后的學(xué)習(xí)與工作打下了良好的基礎(chǔ)。參考文獻(xiàn)1 北方交通大學(xué)電信系.有源濾波器.北京:人民鐵道出版社,19792 謝嘉奎.電子線路線性部分(第四版).北京:高等教育出出版社3 劉暢生,張耀進(jìn),宣宗強(qiáng),于建國(guó).新型集成電路簡(jiǎn)明手冊(cè)及典型應(yīng)用(上冊(cè)).西安:西安電子科技大學(xué)出版社,20054 陸明達(dá).開關(guān)電容濾波器的原理與設(shè)計(jì).北京:科學(xué)出版社,19865 (第二版).北京:清華大學(xué)出版社,20076 黃智偉.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽電路設(shè)計(jì)
24、.北京:北京航空航天大學(xué)出版社,2006,141-1437 謝自美.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試.武漢:華中科技大學(xué)出版社,2006,145-154附 錄1. 分頻器模塊源程序如下。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity FEN is port(clk:in std_logic; clk1,clk0:out std_logic);end FEN;architecture arch of FEN is s
25、ignal clk_mid0,clk_mid:std_logic;beginprocess(clk)variable data:integer range 0 to 25000;beginif clk'event and clk='1' then if data=25000 then data:=0; clk_mid0<=not clk_mid0; else data:=data+1; end if;end if;clk0<=clk_mid0;end process;process(clk)variable data:integer range 0 to 6
26、25;begin if clk'event and clk='1'then if data=625 then data:=0; clk_mid<=not clk_mid; else data:=data+1; end if;end if;clk1<=clk_mid;end process;end arch;2. 鍵盤模塊源程序如下。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity KEYBOA
27、RD isport(control:in std_logic_vector(1 downto 0); control_out:out std_logic_vector(1 downto 0); clk_1k:in std_logic; clk_40k:in std_logic; key_lie:in std_logic_vector(3 downto 0); start:out std_logic; key_hang:out std_logic_vector(3 downto 0); data_p:out std_logic_vector(7 downto 0); disp_data:out
28、std_logic_vector(7 downto 0); disp_sel:out std_logic_vector(3 downto 0) );end;architecture arch of KEYBOARD is signal int:std_logic;signal clk_sel:std_logic;signal start_reg:std_logic;signal disp_sel_reg:std_logic_vector(3 downto 0);signal data_l,data_h:std_logic_vector(3 downto 0);signal data_tmp:s
29、td_logic_vector(3 downto 0);signal key_hang_tmp:std_logic_vector(3 downto 0);signal disp_data_reg:std_logic_vector(3 downto 0);signal key_code:std_logic_vector(7 downto 0);signal data_p_reg:std_logic_vector(7 downto 0);begin control_out<=control;key_code<=key_hang_tmp&key_lie;data_p<=da
30、ta_p_reg;start<=start_reg;key_hang<=key_hang_tmp;disp_sel<=disp_sel_reg;clk_sel<=clk_1k and (not int);process(clk_sel,clk_40k,int)variable state:integer range 0 to 3;begin if rising_edge(clk_40k)then int <=not(key_lie(3)and key_lie(2)and key_lie(1)and key_lie(0);end if;if rising_edge(
31、clk_sel)thencase state is when 0=>key_hang_tmp<="1110" state:=1; when 1=>key_hang_tmp<="1101" state:=2; when 2=>key_hang_tmp<="1011" state:=3; when 3=>key_hang_tmp<="0111" state:=0;end case;end if;end process;process(clk_40k,int)variabl
32、e state:integer range 0 to 3;variable counter:integer range 0 to 99999;beginif int='0' then state:=0; counter:=0;elsif rising_edge(clk_40k) then case state is when 0=> data_tmp<=data_l; state:=1; when 1=> case key_code is when "01110111"=> data_l<="0001" da
33、ta_h<=data_tmp; state:=2; when "01111011"=> data_l<="0010" data_h<=data_tmp; state:=2; when "01111101"=> data_l<="0011" data_h<=data_tmp; state:=2; when "01111110"=> data_l<="0100"-4 data_h<=data_tmp; state:=2;
34、 when "10110111"=> data_l<="0101" data_h<=data_tmp; state:=2; when "10111011"=> data_l<="0110" data_h<=data_tmp; state:=2; when "10111101"=> data_l<="0111"-7 data_h<=data_tmp; state:=2; when "10110110"=&
35、gt; data_l<="1000" data_h<=data_tmp; state:=2; when "11010111"=> data_l<="1001" data_h<=data_tmp; state:=2; when "11011011"=> data_l<="0000"-0 data_h<=data_tmp; state:=2; when "11100111"=>-C if control="10&qu
36、ot;then-+10 if data_h="1001" then data_h<="1001" else data_h<=data_h+1; end if; elsif control="00"or control="01" then -+1 if data_h="1001"then if data_l="1001"then data_h<="1001" data_l<="1001" else data_l&l
37、t;=data_l+1; end if; elsif data_l="1001"then data_l<="1000" data_h<=data_h+1; else data_l<=data_l+1; data_h<=data_h; end if; end if; state:=2; when "11101011"=>-D if control="10"then-10 if data_h="0000" then data_h<="0000"
38、 else data_h<=data_h-1; end if; elsif control="00"or control="01" then -1 if data_l="0000"and data_h="0000"then data_l<="0000" data_h<="0000" elsif data_l="0000"then data_l<="1001" data_h<=data_h-1; else d
39、ata_l<=data_l-1; data_h<=data_h; end if; end if; state:=2; when "11101101"=>-E data_l<="0000" data_l<="0000" state:=2; when "11101110"=>-F data_l<=data_l; data_h<=data_h; data_p_reg<=data_h&data_l; start_reg<='1' state
40、:=2; when others=> state:=2; end case; when 2=> if counter=99999 then counter:=0; state:=3; else counter:=counter+1; state:=2; end if; when 3=> start_reg<='0' state:=3; end case;end if;end process;process(clk_1k,data_l,data_h)variable state:integer range 0 to 3;begin if rising_ed
41、ge(clk_1k) then case state is when 0=> disp_sel_reg<="1011" disp_data_reg<=data_l; state:=1; when 1=> disp_sel_reg<="0111" disp_data_reg<=data_h; state:=2; when 2=> disp_sel_reg<="1110" if control="00"or control="01" then disp
42、_data_reg<="1100"-k elsif control="10"then disp_data_reg<="1010"-b end if; state:=3; when 3=> disp_sel_reg<="1101" if control="00"or control="01" then disp_data_reg<="1101"-h elsif control="10"then disp_da
43、ta_reg<="1011"-d end if; state:=0; end case;end if;end process;process(clk_1k,disp_data_reg)begin if rising_edge(clk_1k)then case disp_data_reg is when "0000"=> disp_data<="11111100"-0 when "0001"=> disp_data<="01100000"-1 when "0
44、010"=> disp_data<="11011010"-2 when "0011"=> disp_data<="11110010"-3 when "0100"=> disp_data<="01100110"-4 when "0101"=> disp_data<="10110110"-5 when "0110"=> disp_data<="10111110&
45、quot;-6 when "0111"=> disp_data<="11100000"-7 when "1000"=> disp_data<="11111110"-8 when "1001"=> disp_data<="11110110"-9 when "1010"=> disp_data<="00111110"-b when "1011"=> disp_data
46、<="01111010"-d when "1100"=> disp_data<="00001110"-k when "1101"=> disp_data<="01101110"-h when others=> disp_data<="00000000" end case;end if;end process;end;3. 控制模塊源程序如下。library ieee;use ieee.std_logic_1164.all;use ie
47、ee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity CONTROL is port(control_in:in std_logic_vector(1 downto 0); data:in std_logic_vector(7 downto 0); road1,road2,road3:out std_logic; data_out1,data_out2,data_out3:out std_logic_vector(7 downto 0) );end CONTROL;architecture arch of CONTROL i
48、sbeginprocess(data,control_in)begincase control_in is when "00"=> road1<='1' road2<='0' road3<='0' data_out1<=data(7 downto 0); when "01"=> road1<='0' road2<='1' road3<='0' data_out2<=data(7 downto 0); when "10"=> road1<='0' road2<='0' road3<='1' data_out3<=data(7 downto 0); when others=>null;end case;end p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度賓館酒店客房租賃及收益分成及品牌授權(quán)合同2篇
- 二零二五年房產(chǎn)租賃押金返還與住房按揭貸款保全合同3篇
- 二零二五年環(huán)保產(chǎn)業(yè)投資合作合同范本集2篇
- 二零二五年度綠色建筑安裝工程合同范本2篇
- 二零二五版教育局教師幼兒園勞動(dòng)合同履行評(píng)估標(biāo)準(zhǔn)3篇
- 二零二五年度板材行業(yè)風(fēng)險(xiǎn)管理與保險(xiǎn)合同2篇
- 展會(huì)參展商信息收集合同(2篇)
- 2025年度浙江房產(chǎn)市場(chǎng)風(fēng)險(xiǎn)防范7月1日實(shí)施合同3篇
- 二零二五版工業(yè)項(xiàng)目總承包監(jiān)理服務(wù)合同范本3篇
- 二零二五版混凝土工程數(shù)字化管理與優(yōu)化合同3篇
- 北京市朝陽(yáng)區(qū)2024-2025學(xué)年高二上學(xué)期期末考試生物試卷(含答案)
- 2025年西藏拉薩市柳梧新區(qū)城市投資建設(shè)發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年部編版一年級(jí)語(yǔ)文上冊(cè)期末復(fù)習(xí)計(jì)劃
- 2024年新高考II卷數(shù)學(xué)高考試卷(原卷+答案)
- 儲(chǔ)罐維護(hù)檢修施工方案
- 地理2024-2025學(xué)年人教版七年級(jí)上冊(cè)地理知識(shí)點(diǎn)
- 2024 消化內(nèi)科專業(yè) 藥物臨床試驗(yàn)GCP管理制度操作規(guī)程設(shè)計(jì)規(guī)范應(yīng)急預(yù)案
- 2024-2030年中國(guó)電子郵箱行業(yè)市場(chǎng)運(yùn)營(yíng)模式及投資前景預(yù)測(cè)報(bào)告
- 基礎(chǔ)設(shè)施零星維修 投標(biāo)方案(技術(shù)方案)
- 人力資源 -人效評(píng)估指導(dǎo)手冊(cè)
- 大疆80分鐘在線測(cè)評(píng)題
評(píng)論
0/150
提交評(píng)論