基于FPGA的多通道采樣系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)論文
《基于FPGA的多通道采樣系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)論文》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于FPGA的多通道采樣系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)論文(22頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 FPGA課程設(shè)計(jì) 題 目:基于FPGA的多通道采樣系統(tǒng)設(shè)計(jì) 院 (系):電氣工程及其自動(dòng)化學(xué)院 專 業(yè):電子信息工程12-01 20 摘 要 本論文介紹了基于FPGA的多通道采樣系統(tǒng)的設(shè)計(jì)。用FPGA設(shè)計(jì)一個(gè)多通道采樣控制器,利用VHDL語(yǔ)言設(shè)計(jì)有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn)對(duì)AD7892的控制。由于FPGA器件的特性是可以實(shí)現(xiàn)高速工作,為此模擬信號(hào)選用音頻信號(hào)。由于音頻信號(hào)的頻率是20Hz-20KHz,這樣就對(duì)AD轉(zhuǎn)換的速率有很高的要求.因?yàn)镕PGA的
2、功能很強(qiáng)大,所以我們把系統(tǒng)的許多功能都集成到FPGA器件中,例如AD通道選擇部分,串并輸出控制模塊,這樣使得整個(gè)系統(tǒng)的外圍電路簡(jiǎn)單、系統(tǒng)的穩(wěn)定性強(qiáng)。FPGA的配置模式選用被動(dòng)串行模式,這樣就增強(qiáng)了系統(tǒng)的可擴(kuò)展性。輸出模式可選擇性使得系統(tǒng)的應(yīng)用相當(dāng)廣泛,串行輸出可以用于通信信號(hào)的采集,方便調(diào)制后發(fā)射到遠(yuǎn)程接受端,遠(yuǎn)程接收端對(duì)采集的數(shù)據(jù)進(jìn)行解調(diào);而并行輸出模式則可以通過(guò)高速存儲(chǔ)器將采集的信號(hào)放到微機(jī)或者其他的處理器上,根據(jù)采集的數(shù)據(jù)進(jìn)行相應(yīng)的控制。此系統(tǒng)的缺點(diǎn)是由于FPGA器件配置是基于SRAM查找表單元,編程的信息是保持在SRAM中,但SRAM在掉電后編程信息立即丟失,所以每次系統(tǒng)上電都需要重新
3、配置芯片,這對(duì)在野外作業(yè)的工作人員很不方便,解決的方法是專用的配置器件來(lái)配置FPGA,在每次系統(tǒng)上電的時(shí)候會(huì)自動(dòng)把編程信息配置到FPGA芯片中。但設(shè)計(jì)中沒(méi)有采用到這種配置方案主要是考慮到專用配置器件的價(jià)格問(wèn)題。 本文開始介紹了多通道系統(tǒng)的組成部分,然后分別介紹了各個(gè)組成部分的原理和設(shè)計(jì)方法,其中重點(diǎn)介紹了FPGA軟件設(shè)計(jì)部分。還對(duì)當(dāng)前十分流行的基于FPGA的設(shè)計(jì)技術(shù)作了簡(jiǎn)單的闡述,最后對(duì)系統(tǒng)的調(diào)試和應(yīng)用作了簡(jiǎn)短的說(shuō)明。 關(guān)鍵詞:音頻放大;濾波器;FPGA;VHDL;AD7892;有限狀態(tài)機(jī); 目 錄 摘要 2 引言3
4、 1 題目來(lái)源3 2 研究意義3 3 多通道采樣系統(tǒng)的組成3 4 方案設(shè)計(jì)4 5 單元電路的設(shè)計(jì)4 5.1音頻放大、濾波部分4 (1)音頻放大部分 4 (2)有源濾波器的設(shè)計(jì) 4 5.2 AD采樣電路5 5.3 FPGA控制部分5 (1)通道選擇模塊 6 (2)延時(shí)模塊的設(shè)計(jì) 6 (3)串并輸出選擇控制 7 5.4 FPGA的硬件設(shè)計(jì) 8 6 軟件介紹 8 7 整機(jī)調(diào)試8 7.1 硬件電路的調(diào)試步驟8 (1)音頻放大部分調(diào)試 8 (2)濾波部分調(diào)試 8 (3)FPGA硬件電路調(diào)試 9 (4)AD采樣模塊調(diào)試 9 (5)
5、 聯(lián)機(jī)調(diào)試9 8 結(jié)論9 參考文獻(xiàn)10 附錄11 引言 FPGA(Field-Programmable Gate Array 現(xiàn)場(chǎng)可編程門陣列)是近年來(lái)廣泛應(yīng)用的超大規(guī)模、超高速的可編程邏輯器件,由于其具有高集成度(單片集成的系統(tǒng)門數(shù)達(dá)上千萬(wàn)門)、高速(200MHz以上)、在線系統(tǒng)可編程等優(yōu)點(diǎn),為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了突破性變革,大大推動(dòng)了數(shù)字系統(tǒng)設(shè)計(jì)的單片化、自動(dòng)化,提高了單片數(shù)字系統(tǒng)的設(shè)計(jì)周期、設(shè)計(jì)靈活性和可靠性。在超高速信號(hào)處理和實(shí)時(shí)測(cè)控方面有非常廣泛
6、的應(yīng)用。 硬件描述語(yǔ)言HDL是一種用形式化方法描述數(shù)字電路和系統(tǒng)的語(yǔ)言。VHDL是硬件描述語(yǔ)言的幾種代表性語(yǔ)言的一種。VHDL(Very High Speed Integrated Circuit Hardware Description Language 即超高速集成電路硬件描述語(yǔ)言)主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,與其它的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了它成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)言。用VHDL設(shè)計(jì)的程序,通過(guò)綜合工具產(chǎn)生網(wǎng)表文件,下載到目標(biāo)器件,從而生成硬件電路。VHDL還是一種仿真語(yǔ)言,包括行為仿真、功能仿真和時(shí)序仿真,給系統(tǒng)設(shè)計(jì)各個(gè)階
7、段的可行性做出了決策。 1 題目來(lái)源 課程設(shè)計(jì)庫(kù) 2 研究意義 數(shù)據(jù)采集在現(xiàn)代工業(yè)生產(chǎn)以及科學(xué)研究中的重要地位日益突出,并且實(shí)時(shí)高速數(shù)據(jù)采集的要求也不斷提高,在信號(hào)測(cè)量、圖像處理,音頻信號(hào)處理等一些高速、高精度的測(cè)量中,都需要進(jìn)行高速數(shù)據(jù)采集。本次設(shè)計(jì)就是用FPGA實(shí)現(xiàn)采樣系統(tǒng),來(lái)實(shí)現(xiàn)音頻信號(hào)的數(shù)據(jù)采集。 3 多通道采樣系統(tǒng)的組成 本系統(tǒng)硬件電路包括FPGA設(shè)計(jì)的多通道采樣控制器和相應(yīng)的通道選擇電路,A/D轉(zhuǎn)換電路,由于采樣音頻信號(hào),所以需要設(shè)計(jì)音頻的放大和濾波電路。系統(tǒng)組成部分如圖2.1所示: 通道選擇部分 音頻放大、濾波部分 信號(hào)1
8、 模擬信號(hào)輸入 信號(hào)2 AD轉(zhuǎn)換部分 控制 FPGA控制的通道選擇和AD控制部分 信號(hào)7 控制采樣
9、 信號(hào)8 數(shù)字信號(hào)存儲(chǔ) 輸出 圖2.1 多通道系統(tǒng)的組成 4 方案設(shè)計(jì) 用FPGA實(shí)現(xiàn)一個(gè)3位8進(jìn)制的計(jì)數(shù)器,記數(shù)脈沖是FPGA鎖存AD轉(zhuǎn)換數(shù)據(jù)的鎖存信號(hào),計(jì)數(shù)器的輸出作為數(shù)據(jù)開關(guān)CD4051的地址。用有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn)對(duì)AD7892的控制,這樣電路實(shí)現(xiàn)比較簡(jiǎn)單,而且AD7892的采樣速率可以達(dá)到500KHz,可以實(shí)現(xiàn)8個(gè)通道同時(shí)8路音頻信號(hào)采集。同時(shí)采用FIFO模塊,讓數(shù)字?jǐn)?shù)據(jù)先存到隊(duì)列中,一邊往隊(duì)列中寫數(shù)據(jù),一邊從隊(duì)列中讀數(shù)據(jù),這樣就對(duì)數(shù)字?jǐn)?shù)據(jù)起了一個(gè)高速緩存的作用,更加快了整個(gè)系統(tǒng)的運(yùn)行速度。 5 單元電路的設(shè)計(jì) 系統(tǒng)
10、可以分為4個(gè)大部分,分別是音頻放大、濾波部分,F(xiàn)PGA控制部分,AD采樣電路,F(xiàn)PGA硬件電路的設(shè)計(jì)。其中以FPGA控制部分為主體部分,它涉及到AD采樣控制,通道選擇控制,串并輸出模式選擇模塊,延時(shí)模塊以及FIFO模塊介紹。這些模塊的實(shí)現(xiàn)是系統(tǒng)實(shí)現(xiàn)的關(guān)鍵。下面分別對(duì)系統(tǒng)的這些單元電路做詳細(xì)的闡述。 5.1 音頻放大、濾波部分 (1)音頻放大部分 音源采用普通CD輸出的音頻信號(hào),它產(chǎn)生輸出的信號(hào)的幅度約有300mV左右,根據(jù)設(shè)計(jì)AD7892的輸入電壓是10V,選擇放大器的放大倍數(shù)在10-30之間,通過(guò)一個(gè)精密可調(diào)電阻來(lái)調(diào)節(jié)放大倍數(shù)。音頻放大芯片NE5532特性是雙運(yùn)放、寬頻帶、低噪聲、轉(zhuǎn)換
11、速率大、電源范圍廣。 (2)有源濾波器的設(shè)計(jì) 在一個(gè)實(shí)際的電子系統(tǒng)中,輸入信號(hào)往往因受干擾等原因而含有一些不必要的成份,應(yīng)設(shè)法將干擾衰減到足夠小的程度。在其他一些情況,我們需要的信號(hào)和干擾信號(hào)混在一起,如果這兩個(gè)信號(hào)在頻率成分上有較大的差別,就可以用濾波的方法將所需要的信號(hào)濾出。為了解決上述問(wèn)題,可采用濾波電路。濾波器包括電抗性元件L、C構(gòu)成的無(wú)源濾波器、由集成運(yùn)算放大器組成的有源濾波器、以及晶體濾波器等。本次設(shè)計(jì)需要的通帶頻率范圍是20Hz-20KHz,如果用有源帶通濾波器來(lái)實(shí)現(xiàn),考慮到該帶通濾波器的上下截止頻率之比20000/20=1000,大于一個(gè)倍頻程,為一個(gè)寬帶濾波器,所以采用一
12、個(gè)低通濾波器和一個(gè)高通濾波器級(jí)聯(lián)來(lái)實(shí)現(xiàn)帶通濾波。 有源帶通濾波電路分成兩個(gè)部分,高通部分和低通部分,圖4.2是20HZ的高通濾波器,圖5.3是20KHZ的低通濾波器。 圖5.2 低通濾波器電路圖 圖5.3 高通濾波器電路圖 音頻信號(hào)經(jīng)過(guò)音頻放大電路放大后就進(jìn)入了上圖的電路。經(jīng)過(guò)20HZ-20KHZ的帶通濾波電路進(jìn)行濾波。 5.2 AD采樣電路 由于人的耳朵能識(shí)別的音頻的頻率范圍是20Hz-20KHz,根據(jù)奈魁斯特(NYQUIST)采樣定理知道,要使采樣后的數(shù)字信號(hào)能恢復(fù)成模擬信號(hào),采樣的頻率必須是模擬信號(hào)的頻率的兩倍,即本次采樣系統(tǒng)的采樣頻率最低要設(shè)計(jì)在40KHz,而一般C
13、D格式的音頻信號(hào)的采樣頻率是44.1KHz,由于是8路通道的采樣,所以AD芯片的最低采樣頻率應(yīng)該是44.1KHz8=352.8KHz,所以選擇采樣頻率為500KHz的AD7892。這樣我們每個(gè)通道的采樣頻率就是500KHz/8=62.5KHz。 5.3 FPGA控制部分 (1)通道選擇模塊 通道選擇部分是一個(gè)二進(jìn)制模8的計(jì)數(shù)器,計(jì)數(shù)器的時(shí)鐘是AD數(shù)字信號(hào)的鎖存信號(hào),每次鎖存數(shù)據(jù)后,計(jì)數(shù)器就會(huì)一次進(jìn)行加一操作,CD4051選擇下一個(gè)通道的音頻信號(hào)進(jìn)行采集。在MAX+PlusⅡ中用VHDL語(yǔ)言設(shè)計(jì)圖形如下圖5.8所示: 圖5.8 通道選擇部分 通過(guò)CNT[0]到CNT[2]來(lái)選擇相應(yīng)
14、的通道,CD4051的輸出就是最后要進(jìn)行AD采樣的音頻信號(hào)。例如:若CNT[0]CNT[1]CNT[2]=“000”,則選擇第一通道音頻信號(hào)進(jìn)行AD采樣。這個(gè)部分實(shí)現(xiàn)的重點(diǎn)是對(duì)數(shù)字鎖存信號(hào)記數(shù),計(jì)數(shù)器的輸出作為CD4051的通道選擇地址。 通道選擇部分的主體程序如下: 二進(jìn)制模8計(jì)數(shù)器 signal q:std_logic_vector(2 downto 0); begin counter:process(clk) begin if(clkevent and clk=1) then if q="111" then
15、 q<="000"; else q<=q+1; end if; end if; cnt<=q; end process; 通道選擇模塊的仿真圖如圖5.9所示: 圖5.9 通道模塊仿真圖 (2)延時(shí)模塊的設(shè)計(jì) 在采樣控制部分的狀態(tài)機(jī)中也加入了輸出數(shù)據(jù)編碼部分,因?yàn)槭茄h(huán)采集8路的模擬信號(hào),而輸出為一路輸出,這樣就需要對(duì)輸出信號(hào)進(jìn)行標(biāo)志,方法就是把12位數(shù)據(jù)轉(zhuǎn)換為16位數(shù)據(jù),第一位是0,第二位到第四位是標(biāo)志位,標(biāo)志是哪一通道數(shù)字信號(hào),如果是串行輸出的時(shí)候可以讓接受方知道是第幾通道的數(shù)據(jù)。又因?yàn)閿?shù)字信
16、號(hào)數(shù)據(jù)鎖存信號(hào)是比通道選擇信號(hào)早一個(gè)周期,所以要加一個(gè)延時(shí)模塊,這樣就可以實(shí)現(xiàn)每次鎖存了通道的標(biāo)志位和采樣的數(shù)據(jù)。通過(guò)程序來(lái)實(shí)現(xiàn)對(duì)通道選擇信號(hào)的延時(shí)。如果當(dāng)前選擇第3個(gè)通道采樣,那么通道選擇信號(hào)就是“011”,在這個(gè)通道信號(hào)采集完畢后鎖存信號(hào)就會(huì)使計(jì)數(shù)器進(jìn)行加1操作,這樣通道選擇信號(hào)就是“100”,而這個(gè)時(shí)候鎖存的數(shù)據(jù)需要“011”,所以將標(biāo)志位信號(hào)通過(guò)“100”的延時(shí)一個(gè)時(shí)鐘周期變成“011”即可。VHDL完成可以勝任。 延時(shí)模塊程序主體部分 process(in1,in2,in3) begin comin<=in3&in2&in1; case comin is
17、 when "000"=> comout<="111"; when "001"=> comout<="000"; when "010"=> comout<="001"; when "011"=> comout<="010"; when "100"=> comout<="011"; when "101"=> comout<="100"; when "110"=> comout<="101"; when "111"=> comout<="110
18、"; when others=>comout<="ZZZ"; end case; out1<=comout(0);out2<=comout(1);out3<=comout(2); end process; (3)串并輸出選擇控制 從AD控制模塊輸出的數(shù)據(jù)是并行16位數(shù)據(jù)。串行輸出的原理是:通過(guò)一個(gè)16選1的數(shù)據(jù)選擇器連續(xù)選擇輸出的并行16位數(shù)據(jù),數(shù)據(jù)選擇器的選擇信號(hào)是一個(gè)對(duì)系統(tǒng)時(shí)鐘記數(shù)的二進(jìn)制模16的計(jì)數(shù)器輸出,這樣就可以實(shí)現(xiàn)將并行16位數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)。通過(guò)外部輸入信號(hào)P/S可以實(shí)現(xiàn)是串行輸出還是并行輸出,如果P/S是低電平,就選通16選
19、1的選擇器,禁止16個(gè)與門的輸出,此時(shí)為串行輸出;如果P/S為高電平,則禁止16選1的選擇器,同時(shí)打開16個(gè)與門,此時(shí)為并行16位輸出。輸出模式可選擇性使得系統(tǒng)的應(yīng)用相當(dāng)廣泛,串行輸出可以用于通信信號(hào)的采集,方便調(diào)制后發(fā)射到遠(yuǎn)程接受端,遠(yuǎn)程接收端對(duì)采集的數(shù)據(jù)進(jìn)行解調(diào);而并行輸出模式則可以通過(guò)高速存儲(chǔ)器將采集的信號(hào)放到微機(jī)或者其他的處理器上,根據(jù)采集的數(shù)據(jù)進(jìn)行相應(yīng)的控制。 5.4 FPGA的硬件設(shè)計(jì) 本次設(shè)計(jì)選用的FPGA芯片是ALTERA公司的ACEX1K系列的EP1K30TC144-3。由于它的高密度和易于在設(shè)計(jì)中實(shí)現(xiàn)復(fù)雜宏函數(shù)和存儲(chǔ)器,因此可以把一個(gè)子系統(tǒng)集成在單一芯片上,EP1K30
20、包括一個(gè)嵌入式陣列,這為設(shè)計(jì)人員提供了有效的嵌入式門陣列和靈活的可編程邏輯。嵌入式陣列是由一系列嵌入式陣列塊(EAB)組成的,它能夠用來(lái)實(shí)現(xiàn)各種存儲(chǔ)器和復(fù)雜邏輯功能;該器件也提供多電壓I/O接口操作。它允許器件橋架在不同電壓工作的系統(tǒng)中。比如本次系統(tǒng)設(shè)計(jì)器件的I/O輸出就是2.5V,這樣不但使FPGA芯片工作安全,也可以讓AD7892能工作安全狀態(tài)。 6 軟件介紹 在實(shí)驗(yàn)中主要使用了MAX+PlusⅡ、EWB、以及Protel99se三種軟件,其中,Max PlusⅡ主要完成對(duì)FPGA芯片的編程,仿真,芯片引腳鎖定以及編程在線配置等操作,EWB主要用于對(duì)放大、濾波電路作分析與設(shè)計(jì),并以分
21、析為主,尤其是EWB能提供一個(gè)虛擬的實(shí)驗(yàn)室,可以對(duì)電路和系統(tǒng)進(jìn)行十分逼真的模擬;Protel99se則是整個(gè)電路設(shè)計(jì)PCB的重要工具?,F(xiàn)分別對(duì)這三種軟件進(jìn)行介紹,其中重點(diǎn)介紹使用MAX+PlusⅡ的常用基本設(shè)計(jì)方法。 7 整機(jī)調(diào)試 7.1硬件電路的調(diào)試步驟 在硬件電路中用到了音頻放大、濾波電路,電源穩(wěn)壓電路,AD采樣電路,F(xiàn)PGA控制等主要部分,由于電路連線較多而且復(fù)雜,采用的方法是分塊調(diào)試,這樣比較容易發(fā)現(xiàn)問(wèn)題和解決問(wèn)題。這種硬件調(diào)試方法在實(shí)際應(yīng)用是比較普遍的。 在進(jìn)行硬件調(diào)試之前,首先要檢查電路板,看看電路板上的線路是否有短路、虛焊或者是斷路的情況,如果有則要修正它,如果沒(méi)有就可
22、以進(jìn)行各個(gè)模塊的調(diào)試。 (1)音頻放大部分調(diào)試 對(duì)音頻放大部分調(diào)試需要一個(gè)函數(shù)信號(hào)發(fā)生源,一個(gè)示波器,一個(gè)萬(wàn)用表和提供放大器電源的直流穩(wěn)壓電源。首先,給NE5532加上+12V的電源,使之工作起來(lái),用萬(wàn)用表檢查NE5532除了正負(fù)電源引腳的電壓,電壓接近為零,這表明放大器正常工作,在輸入端輸入頻率為1KHz,幅度為300mV的正弦波,用示波器觀察輸出端的波形,可以看到輸出幅度為5.3V的正弦波,正弦波中包含了很多高頻干擾,這是由于周圍的干擾在放大器的放大作用,使得干擾成為一個(gè)明顯波形出現(xiàn)在示波器上,通過(guò)濾波器后可以濾掉這些干擾。調(diào)節(jié)可調(diào)電阻,可以觀察到輸出波形的幅度變化。接上音源,可以看到
23、示波器有不規(guī)則波形輸出,增大音源的音量可以看到輸出波形的幅度也隨之增大,只是這不規(guī)則波形中混有很多的干擾,通過(guò)濾波器后可以濾掉這些干擾。這表明音頻放大部分工作正常,達(dá)到設(shè)計(jì)要求。 (2)濾波部分調(diào)試 對(duì)濾波部分調(diào)試需要一個(gè)函數(shù)信號(hào)發(fā)生源,一個(gè)示波器,一個(gè)萬(wàn)用表和提供放大器電源的直流穩(wěn)壓電源。首先,給LM324加上+12V的電源,使之工作起來(lái),用萬(wàn)用表檢查L(zhǎng)M324除了正負(fù)電源引腳的電壓,電壓接近為零,這表明濾波器的放大器正常工作。輸入1KHZ,300mv的正弦波信號(hào),經(jīng)過(guò)音頻放大電路放大后得到的1KHZ,5.3V的正弦波信號(hào)從輸入點(diǎn)進(jìn)入濾波電路。調(diào)試過(guò)程中發(fā)現(xiàn)示波器中的波形一直有一定高頻和
24、低頻的干擾,檢查電路沒(méi)有錯(cuò)誤,最后判斷是電源的干擾,在電源輸入端加上一個(gè)大電容和一個(gè)小電容分別濾掉電源的高頻干擾和低頻干擾,再調(diào)試可以看到完整的正弦波波形。減少輸入信號(hào)的頻率到10HZ,可以看到當(dāng)頻率減到20HZ的時(shí)候,輸出信號(hào)的幅度逐漸變小,這表明高通濾波部分已實(shí)現(xiàn)其功能,濾掉小于20HZ的低頻干擾;然后慢慢增加輸入信號(hào)的頻率到30KZ左右,可以看當(dāng)頻率大于18KHZ的時(shí)候,輸出信號(hào)的幅度開始減小,達(dá)到20KHZ,輸出信號(hào)幅度衰減到通帶內(nèi)的幅度的75%,大于20KZ后,輸出幅度小于通帶內(nèi)幅度一半,達(dá)到衰減的目的,這表明低通濾波器也實(shí)現(xiàn)了其功能。整個(gè)濾波器部分調(diào)試完畢,達(dá)到設(shè)計(jì)要求。 (
25、3)FPGA硬件電路調(diào)試 這部分調(diào)試是整個(gè)調(diào)試的主體,包括對(duì)有源晶振的調(diào)試,配置電路的調(diào)試。 (4)AD采樣模塊調(diào)試 將實(shí)現(xiàn)AD采樣的狀態(tài)機(jī)程序單獨(dú)寫成一個(gè)文件,選擇器件和鎖定引腳后,配置到FPGA芯片中,模擬信號(hào)采用+5V電源,在調(diào)試過(guò)程中,發(fā)現(xiàn)AD采樣在工作若干次后,就會(huì)出現(xiàn)“死機(jī)”現(xiàn)象,分析知道,在采樣過(guò)程中會(huì)出現(xiàn)控制AD開始采樣的CONV信號(hào)丟失現(xiàn)象,導(dǎo)致AD無(wú)限期等待采樣開始信號(hào)CONV,而狀態(tài)機(jī)又無(wú)限期等待采樣結(jié)束信號(hào)EOC,這樣就使得狀態(tài)機(jī)進(jìn)入“死機(jī)”狀態(tài)。解決的方法是加入一段“看門狗”程序,當(dāng)狀態(tài)機(jī)進(jìn)入死機(jī)狀態(tài)后,用一個(gè)變量判斷狀態(tài)機(jī)是否等待超過(guò)一個(gè)采樣周期,如果超過(guò),就
26、復(fù)位狀態(tài)機(jī),使?fàn)顟B(tài)機(jī)重新進(jìn)入開始狀態(tài)。這樣就可以解決狀態(tài)機(jī)的“死機(jī)”現(xiàn)象了。加入“看門狗”程序后,通過(guò)示波器可以看到12位數(shù)據(jù)的任何一位的電平信號(hào)。這樣AD采樣部分就調(diào)試完畢。 (5)聯(lián)機(jī)調(diào)試 聯(lián)機(jī)調(diào)試需要實(shí)驗(yàn)工具有:示波器,穩(wěn)壓電源,EDA實(shí)驗(yàn)臺(tái),PC機(jī),ByteBlaster(MV)下載電纜。按照?qǐng)D2.1中各模塊連接順序連接好整個(gè)采樣系統(tǒng),分別接上12V的放大器工作電壓,+5V的AD采樣電壓和+2.5V的FPGA芯片工作電壓,把串并選擇端口選擇串行輸出,也即將短路帽短路,這樣輸入到器件是低電平。將示波器連接到串行輸出口,用EDA實(shí)驗(yàn)臺(tái)上的下載電路連接PC機(jī)上的打印并行口和硬件電路板上的
27、下載口,可以看到示波器有高低的電平輸出。將串并選擇端口選為并行輸出,也即將短路帽斷開,這樣輸入到器件是高電平,任意選擇一位連接到示波器,也可以看到有高低電平輸出。通過(guò)調(diào)試可以證實(shí)整個(gè)高速多通道采樣系統(tǒng)基本實(shí)現(xiàn),聯(lián)機(jī)調(diào)試完畢。 8 結(jié)論 本次設(shè)計(jì)采用FPGA實(shí)現(xiàn)采樣系統(tǒng),從而系統(tǒng)具有高速、穩(wěn)定、低功耗等特點(diǎn),音頻模擬信號(hào)經(jīng)放大器NE5532放大后,經(jīng)過(guò)8路選擇后,進(jìn)入濾波器進(jìn)行濾波,濾掉高頻干擾信號(hào)和低頻干擾信號(hào)的干擾,然后進(jìn)入AD7892進(jìn)行AD采樣,采樣后的12位數(shù)據(jù)通過(guò)一個(gè)FIFO隊(duì)列存儲(chǔ),最后從FIFO中讀出數(shù)字信號(hào),在串并輸出模式的選擇下在示波器上顯示出來(lái)。 本系統(tǒng)基本
28、達(dá)到了預(yù)期的設(shè)計(jì),但還有一些不足之處,例如:在對(duì)FIFO隊(duì)列的讀寫操作中是通過(guò)狀態(tài)機(jī)來(lái)實(shí)現(xiàn)的,但這樣FIFO隊(duì)列就只起了一個(gè)緩存的作用。由于本人水平有限,無(wú)法實(shí)現(xiàn)其存儲(chǔ)后再進(jìn)行讀寫的操作,懇請(qǐng)各位老師多多批評(píng)指教。 多通道采樣系統(tǒng)應(yīng)用十分廣泛,特別是在控制系統(tǒng)上的應(yīng)用,比如說(shuō)溫度,濕度等,通過(guò)傳感器把模擬信號(hào)采集到微機(jī)或者控制部分,根據(jù)采集的數(shù)據(jù)來(lái)對(duì)系統(tǒng)進(jìn)行相應(yīng)的控制,同時(shí)基于FPGA的多通道采樣系統(tǒng)的實(shí)現(xiàn),為一些特殊領(lǐng)域的實(shí)時(shí)測(cè)控提供了一個(gè)簡(jiǎn)單、靈活、可靠的方案. 參考文獻(xiàn) [1] 張亦華.數(shù)字電路EDA入門—VHDL程序?qū)嵗痆M].北京:北京郵電大學(xué)出版社,2003.
29、3 [2] 李洋.EDA技術(shù)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2004.7 [3] 肖蕙蕙.傅曉林.數(shù)字電子技術(shù)基礎(chǔ)[M].重慶:重慶大學(xué)出版社,2002.10 [4] 張凱.VHDL實(shí)例剖析[M].北京:國(guó)防工業(yè)出版社,2004.1 [5] 姜立東.VHDL語(yǔ)言程序設(shè)計(jì)及應(yīng)用(第2版)[M].北京:北京郵電大學(xué)出版社,2004.6 附 錄 1 各模塊程序 (1)通道選擇模塊 library ieee; use ieee
30、.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count is port(clk:in std_logic; --cnt:out integer range 0 to 7; cnt : out std_logic_vector(2 downto 0)); --oc : out std_logic); end count; architecture archcount of count is signal q:std_logic_vector(2 down
31、to 0); begin counter:process(clk) begin if(clkevent and clk=1) then if q="111" then q<="000";--oc<=1; else q<=q+1;--oc<=0; end if; end if; cnt<=q; end process; end archcount; (2)延時(shí)模塊 library ieee; use ieee.std_logi
32、c_1164.all; entity delay is port(in1,in2,in3:in std_logic; out1,out2,out3:out std_logic); end delay; architecture behav of delay is signal comin:std_logic_vector(2 downto 0); signal comout:std_logic_vector(2 downto 0); begin process(in1,in2,in3) begin comin<=in3&in2&in1; case comin
33、is when "000"=> comout<="111"; when "001"=> comout<="000"; when "010"=> comout<="001"; when "011"=> comout<="010"; when "100"=> comout<="011"; when "101"=> comout<="100"; when "110"=> comout<="101"; when "111"=>
34、comout<="110"; when others=>comout<="ZZZ"; end case; out1<=comout(0);out2<=comout(1);out3<=comout(2); end process; end behav; (3)AD采樣控制模塊 library ieee; use ieee.std_logic_1164.all; entity adcontrol is port(D : in std_logic_vector(11 downto 0); clk,eoc : in std_logic;
35、 b0,b1,b2:in std_logic; wr_en,rd_en : out std_logic; lock0,conv,rd,cs: out std_logic; Q : out std_logic_vector(15 downto 0)); end entity; architecture behav of adcontrol is type states is(st1,st2,st3,st4,st5,st6,st7,st8); signal current_state,nex
36、t_state:states:=st1; signal regl1 : std_logic_vector(11 downto 0); signal regl : std_logic_vector(15 downto 0); signal lock : std_logic; begin lock0 <= lock; com1:process(current_state,eoc) begin case current_state is when st1 => next_state <= st2; when st2 => next_stat
37、e <= st3; when st3 => next_state <= st4; when st4 => if (eoc=1) then next_state <= st4; else next_state <= st5; end if; when st5 => if (eoc=0) then next_state <= st5; else next_state <=st6;
38、 end if; when st6 => next_state <= st7; when st7 => next_state <= st8; when st8 => next_state <= st1; when others => next_state<=st1; end case; end process com1; com2:process(current_state) begin case current_sta
39、te is when st1 => conv<=1;cs<=1;rd<=1;lock<=0;wr_en<=0;rd_en<=0; when st2 => conv<=0;cs<=1;rd<=1;lock<=0;wr_en<=0;rd_en<=0; when st3 => conv<=1;cs<=1;rd<=1;lock<=0;wr_en<=0;rd_en<=0; when st4 => conv<=1;cs<=1;rd<=1;lock<=0;wr_en<=0;rd_en<=0;
40、 when st5 => conv<=1;cs<=1;rd<=1;lock<=0; wr_en<=0;rd_en<=0; when st6 => conv<=1;cs<=0;rd<=0;lock<=1; wr_en<=1;rd_en<=0; when st7 => conv<=1;cs<=1;rd<=1;lock<=0; wr_en<=0;rd_en<=1; when st8 => conv<=1;cs<=1;rd<=1;lock<=0;wr_en<=0;rd_en<=0; when others => co
41、nv<=1;cs<=1;rd<=1;lock<=0;wr_en<=0;rd_en<=0; end case; end process com2; com3:process(clk) variable dog_count:integer range 0 to 64; variable com3_num_count:integer range 0 to 16553500; begin if(clkevent and clk=1) then current_state<=next_state; --看門狗 if
42、(current_state=st4) then m_watchdog <= s0; end if; if(current_state=st6) then m_watchdog <= s1; dog_count:=0; end if; if(m_watchdog=s0) then dog_count:=dog_count+1; if(dog_count>40) then current_state<=st1; dog_count:=0; end if;
43、 end if; --看門狗 end if; end process com3; latch1:process(lock) begin if lock=1 and lockevent then regl1<=D; end if; end process latch1; regl<=0&b2&b1&b0®l1; Q<=regl1; end behav; (4)串并轉(zhuǎn)換模塊部分程序 library ieee; use ieee.std_logic_1164.all;
44、 use ieee.std_logic_unsigned.all; entity counter4 is port(clk:in std_logic; cnt4 : out std_logic_vector(3 downto 0) ); end counter4; architecture archcount of counter4 is signal q:std_logic_vector(3 downto 0); begin counter:process(clk) begin if(clkevent and clk=1) then if q="1111" then q<="0000"; else q<=q+1; end if; end if; cnt4<=q; end process; end archcount; 1 FPGA頂層設(shè)計(jì)圖 3 電路設(shè)計(jì)圖 (1)音頻放大 (2)濾波器 (3)AD7892電路
- 溫馨提示:
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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 110中國(guó)人民警察節(jié)(筑牢忠誠(chéng)警魂感受別樣警彩)
- 2025正字當(dāng)頭廉字入心爭(zhēng)當(dāng)公安隊(duì)伍鐵軍
- XX國(guó)企干部警示教育片觀后感筑牢信仰之基堅(jiān)守廉潔底線
- 2025做擔(dān)當(dāng)時(shí)代大任的中國(guó)青年P(guān)PT青年思想教育微黨課
- 2025新年工作部署會(huì)圍繞六個(gè)干字提要求
- XX地區(qū)中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 支部書記上黨課筑牢清廉信念為高質(zhì)量發(fā)展?fàn)I造風(fēng)清氣正的環(huán)境
- 冬季消防安全知識(shí)培訓(xùn)冬季用電防火安全
- 2025加強(qiáng)政治引領(lǐng)(政治引領(lǐng)是現(xiàn)代政黨的重要功能)
- 主播直播培訓(xùn)直播技巧與方法
- 2025六廉六進(jìn)持續(xù)涵養(yǎng)良好政治生態(tài)
- 員工職業(yè)生涯規(guī)劃方案制定個(gè)人職業(yè)生涯規(guī)劃
- 2024年XX地區(qū)黨建引領(lǐng)鄉(xiāng)村振興工作總結(jié)
- XX中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 幼兒園期末家長(zhǎng)會(huì)長(zhǎng)長(zhǎng)的路慢慢地走