FPGA Verilog HDL實(shí)現(xiàn)AD轉(zhuǎn)換,代碼超詳細(xì)!
一直以來,AD轉(zhuǎn)換都是大家的關(guān)注焦點(diǎn)之一。因此針對(duì)大家的興趣點(diǎn)所在,小編將為大家?guī)?a href="/tags/FPGA" target="_blank">FPGA Verilog HDL實(shí)現(xiàn)AD轉(zhuǎn)換的實(shí)例設(shè)計(jì)的相關(guān)介紹,詳細(xì)內(nèi)容請看下文。
一、AD轉(zhuǎn)換原理
AD轉(zhuǎn)換的基本原理包括取樣定理、量化和編碼、以及取樣-保持電路。
1、取樣定理:為了保證能從取樣信號(hào)恢復(fù)原來的被取樣信號(hào),必須滿足取樣頻率大于等于2倍的輸入模擬信號(hào)的最高頻率分量的頻率。這是因?yàn)檗D(zhuǎn)換是在取樣后的保持時(shí)間內(nèi)完成的,所以轉(zhuǎn)換結(jié)果所對(duì)應(yīng)的模擬電壓是每次取樣結(jié)束時(shí)的值。
2、量化和編碼:數(shù)字信號(hào)在時(shí)間上是離散的,數(shù)值的大小變化也是不連續(xù)的。A/D轉(zhuǎn)換時(shí),必須將取樣電壓表示為某個(gè)規(guī)定的最小單位的整倍數(shù),這個(gè)過程稱為量化。所取的最小數(shù)量單位是量化單位。數(shù)字信號(hào)的最低有效位(LSB)的1所表示的數(shù)量大小就等于量化單位。將量化的結(jié)果用代碼(二進(jìn)制等)表示出來稱為編碼。量化誤差是量化過程中引入的誤差。
3、取樣-保持電路:在取樣過程中,電容上的電壓達(dá)到穩(wěn)態(tài)值所需要的時(shí)間稱為獲取時(shí)間。保持階段輸出電壓的下降率△V0/△T是衡量取樣-保持電路的重要指標(biāo)。
此外,AD轉(zhuǎn)換器的工作過程還包括采樣、保持、量化、編碼、輸出等幾個(gè)環(huán)節(jié)。按照其變換原理可以分為逐次比較式、并行式A/D轉(zhuǎn)換器、子區(qū)式A/D轉(zhuǎn)換器、∑-?AD轉(zhuǎn)換器等。逐次比較式ADC采用了四舍五入的量化方式,其優(yōu)點(diǎn)是轉(zhuǎn)換原理直觀、電路簡單、成本低、轉(zhuǎn)換精度較高,適用于高精度、中速以下的場合。并行式A/D轉(zhuǎn)換器模擬信號(hào)同時(shí)輸入到帶鎖存的比較器中,每個(gè)比較器的參考電壓都比下一個(gè)的參考電壓高出一個(gè)LSB所代表的電壓值,輸出結(jié)果送往譯碼邏輯處理,輸出最終的二進(jìn)制結(jié)果。子區(qū)式A/D轉(zhuǎn)換器用第一片并行式A/D轉(zhuǎn)換器數(shù)字化輸出高四位,將這四位送至D/A轉(zhuǎn)換器進(jìn)行模數(shù)變換,輸入的模擬信號(hào)與D/A的輸出信號(hào)相減,差值送給第二片并行式A/D轉(zhuǎn)換器。兩片A/D轉(zhuǎn)換器的輸出合并在一起,構(gòu)成了8位的A/D輸出。∑-?AD轉(zhuǎn)換器是一種過采樣量化器,利用過采樣、噪聲整形、數(shù)字濾波等手段來提高數(shù)字化性能,適用于通信信號(hào)對(duì)靈敏度、動(dòng)態(tài)范圍要求高的情況。
二、FPGA Verilog HDL系列實(shí)例—AD轉(zhuǎn)換
(一)ADC0809
ADC0809 8通道8位a/d轉(zhuǎn)換器,ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開關(guān)以及微處理機(jī)兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機(jī)直接接口。ADC0809由一個(gè)8路模擬開關(guān)、一個(gè)地址鎖存與譯碼器、一個(gè)A/D轉(zhuǎn)換器和一個(gè)三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時(shí),才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。如圖3.1所示。
圖3.1 ADC0809的內(nèi)部結(jié)構(gòu)和引腳定義
下面我們將看看是如何根據(jù)它的時(shí)序圖完成對(duì)芯片的驅(qū)動(dòng)的。
圖3.2 ADC0809時(shí)序圖
(二)Verilog HDL實(shí)現(xiàn)
實(shí)現(xiàn)步驟請參照 【連載】 FPGA Verilog HDL 系列實(shí)例--------8-3編碼器。這里就不再贅述。
設(shè)計(jì)文件輸入Verilog HDL代碼。
上面一長串代碼,剛接觸的人一看可能會(huì)頭大,但要是仔細(xì)分析一下,就會(huì)很好理解了。本實(shí)現(xiàn)有三部分組成:
1.第44行~第59行:時(shí)鐘分頻,系統(tǒng)時(shí)鐘為50MHZ,ADC0809的驅(qū)動(dòng)頻率不需要這么快,所以需要分頻。一般在500KHZ左右,實(shí)例中用的是750KHz。
2.第67行~第128行:對(duì)ADC0809時(shí)序的實(shí)現(xiàn)。自己好好理解下哦。一次模數(shù)轉(zhuǎn)換經(jīng)過6個(gè)步驟完成。第3步和第4步需要查看EOC的狀態(tài)來確定是否將模擬數(shù)據(jù)轉(zhuǎn)換完畢。
3.第137行~第183行:將模擬數(shù)據(jù)轉(zhuǎn)化到的數(shù)字?jǐn)?shù)據(jù)輸出到2個(gè)數(shù)碼管上。圖3.3是ADC0809的外部接口。
圖3.3 ADC0809的外部接口
分配引腳:
clk接系統(tǒng)時(shí)鐘,rst接復(fù)位信號(hào),abc_in[2..0]接三個(gè)按鍵,seven_seg[15..0]接2個(gè)七段數(shù)碼管,其余的是ADC0809上的型號(hào),這是由硬件連線決定的,只要搞清楚它們是輸入還是輸出就行了。
以上所有內(nèi)容便是小編此次為大家?guī)淼乃薪榻B,如果你想了解更多有關(guān)它的內(nèi)容,不妨在我們網(wǎng)站或者百度、google進(jìn)行探索哦。