基于的數(shù)字電壓表設(shè)計_第1頁
基于的數(shù)字電壓表設(shè)計_第2頁
基于的數(shù)字電壓表設(shè)計_第3頁
基于的數(shù)字電壓表設(shè)計_第4頁
基于的數(shù)字電壓表設(shè)計_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

(優(yōu)選)基于的數(shù)字電壓表設(shè)計當(dāng)前第1頁\共有23頁\編于星期日\21點(diǎn)實(shí)驗(yàn)設(shè)計思路數(shù)字電壓表設(shè)計核心:FPGA設(shè)計,F(xiàn)PGA負(fù)責(zé)ADC0809的啟動以及轉(zhuǎn)換數(shù)據(jù)的讀取,再將讀取的8位二進(jìn)制數(shù)據(jù)進(jìn)行變換,形成便于輸出的3位LED段碼送給LED數(shù)碼管,顯示被測電壓值。FPGA的設(shè)計主要包括幾個部分:

ADC0809轉(zhuǎn)換控制模塊實(shí)現(xiàn)ADC0809的啟動以及轉(zhuǎn)換數(shù)據(jù)的讀取;數(shù)據(jù)處理模塊實(shí)現(xiàn)ADC08094位數(shù)字量對應(yīng)BCD碼的變換和處理;顯示控制模塊實(shí)現(xiàn)LED段碼譯碼輸出。當(dāng)前第2頁\共有23頁\編于星期日\21點(diǎn)ADC0809與FPGA接口電路

ADC0809是CMOS的8位A/D轉(zhuǎn)換器,片內(nèi)有8路模擬開關(guān),可控制8個模擬量中的一個進(jìn)入轉(zhuǎn)換器中。ADC0809的精度是8位,轉(zhuǎn)換時間約為100μs,含鎖存控制的8路開關(guān),輸出有三態(tài)緩沖控制,單5V電源供電。

當(dāng)前第3頁\共有23頁\編于星期日\21點(diǎn)FPGA與ADC0809接口電路原理圖

當(dāng)前第4頁\共有23頁\編于星期日\21點(diǎn)ADC0809與FPGA接口電路設(shè)計IO_B13、B4、B12、B7、B14、B15、B16、B17接收ADC08098位數(shù)數(shù)據(jù);IO_B10接收ADC0809轉(zhuǎn)換結(jié)束信號EOC;IO_B21、B20、B19為ADC0809提供8路模擬信號開關(guān)的3位地址選通信號(ADD-A~C);IO_B18為ADC0809提供地址鎖存控制信號ALE:高電平時把三個地址信號送入地址鎖存器,并經(jīng)譯碼器得到地址輸出,以選擇相應(yīng)的模擬輸入通道;接下頁當(dāng)前第5頁\共有23頁\編于星期日\21點(diǎn)IO_B6為ADC0809提供輸出允許控制信號ENABLE:電平由低變高時,打開輸出鎖存器,將轉(zhuǎn)換結(jié)果的數(shù)字量送到數(shù)據(jù)總線上;IO_B11為ADC0809提供啟動控制信號START:一個正脈沖過后A/D開始轉(zhuǎn)換;IO_B5為ADC0809提供時鐘信號信號CLOCK;IN0~IN7:8路模擬信號輸入端口;Vref+和Vref-:參考電壓輸入端口;當(dāng)前第6頁\共有23頁\編于星期日\21點(diǎn)ADC0809VHDL采樣控制程序設(shè)計當(dāng)前第7頁\共有23頁\編于星期日\21點(diǎn)ADC0809的工作時序圖

當(dāng)前第8頁\共有23頁\編于星期日\21點(diǎn)START是轉(zhuǎn)換啟動信號,一個正脈沖過后A/D開始轉(zhuǎn)換;ALE是3位通道選擇地址(ADDC、ADDB、ADDA)信號鎖存信號。當(dāng)模擬量送至某一輸入端(如IN-0或IN-1)等,由3位地址信號選擇,而地址信號由ALE鎖存。EOC是轉(zhuǎn)換情況狀態(tài)信號,當(dāng)啟動轉(zhuǎn)換約100μs后,EOC產(chǎn)生一個負(fù)脈沖,以示轉(zhuǎn)換結(jié)束。在EOC的上升沿后,且輸出使能信號ENABLE為高電平,則控制打開三態(tài)緩沖器,把轉(zhuǎn)換好的8位數(shù)據(jù)送至數(shù)據(jù)總線。至此ADC0809的一次轉(zhuǎn)換結(jié)束

當(dāng)前第9頁\共有23頁\編于星期日\21點(diǎn)ADC0809采樣控制狀態(tài)圖

FPGA器件可以根據(jù)其采樣時序用狀態(tài)機(jī)來描述采樣控制過程,其狀態(tài)轉(zhuǎn)換關(guān)系如左圖所示。當(dāng)前第10頁\共有23頁\編于星期日\21點(diǎn)ADC0809VHDL采樣控制程序

當(dāng)前第11頁\共有23頁\編于星期日\21點(diǎn)ADC0809采樣控制程序電路符號

當(dāng)前第12頁\共有23頁\編于星期日\21點(diǎn)程序的端口信號與中間信號entityADC0809isport(d:instd_logic_vector(7downto0);--ADC0809輸出的采樣數(shù)據(jù)

clk,eoc:instd_logic;--clk為系統(tǒng)時鐘,eoc為ADC0809轉(zhuǎn)換結(jié)束信號clk1,start,ale,en:outstd_logic;--ADC0809控制信號

abc_in:instd_logic_vector(2downto0);--模擬選通信號abc_out:outstd_logic_vector(2downto0);--ADC0809模擬信號選通信號

q:outstd_logic_vector(7downto0));--送至8個并排數(shù)碼管信號endADC0809;architecturebehavofADC0809istypestatesis(st0,st1,st2,st3,st4,st5,st6);--定義各狀態(tài)的子類型signalcurrent_state,next_state:states:=st0;signalregl:std_logic_vector(7downto0);--中間數(shù)據(jù)寄存信號signalqq:std_logic_vector(7downto0);begin當(dāng)前第13頁\共有23頁\編于星期日\21點(diǎn)狀態(tài)轉(zhuǎn)換模塊(com)casecurrent_stateiswhenst0=>next_state<=st1;ale<='0';start<='0';en<='0';whenst1=>next_state<=st2;ale<='1';start<='0';en<='0';whenst2=>next_state<=st3;ale<='0';start<='1';en<='0';whenst3=>ale<='0';start<='0';en<='0';ifeoc='1'thennext_state<=st3;--檢測EOC的下降沿

elsenext_state<=st4;endif;whenst4=>ale<='0';start<='0';en<='0';ifeoc='0'thennext_state<=st4;--檢測EOC的上升沿

elsenext_state<=st5;endif;whenst5=>next_state<=st6;ale<='0';start<='0';en<='1';whenst6=>next_state<=st0;ale<='0';start<='0';en<='1';regl<=d;whenothers=>next_state<=st0;ale<='0';start<='0';en<='0';endcase;當(dāng)前第14頁\共有23頁\編于星期日\21點(diǎn)分頻模塊(clock)clock:process(clk)--對系統(tǒng)時鐘進(jìn)行分頻,得到ADC0809轉(zhuǎn)換工作時鐘beginifclk'eventandclk='1'thenqq<=qq+1;--在clk1的上升沿,轉(zhuǎn)換至下一狀態(tài)ifQQ="01111111"THENclk1<='1';current_state<=next_state;elsifqq<="01111111"thenclk1<='0'; endif;endif;endprocess;q<=regl;abc_out<=abc_in;endbehav;當(dāng)前第15頁\共有23頁\編于星期日\21點(diǎn)

顯示模塊

當(dāng)前第16頁\共有23頁\編于星期日\21點(diǎn)顯示模塊libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityvalconvisport( q:instd_logic_vector(7downto0);--ad a:outstd_logic_vector(6downto0);--小數(shù)點(diǎn)后第2位 b:outstd_logic_vector(6downto0);--小數(shù)點(diǎn)后第1位 c:outstd_logic_vector(6downto0));--個位

endvalconv;當(dāng)前第17頁\共有23頁\編于星期日\21點(diǎn)顯示模塊architecturebhvofvalconvis signalvar1,var2,var3:integer;--分別對應(yīng)將二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為十進(jìn)制beginprocess(q)--數(shù)據(jù)讀出時轉(zhuǎn)化成十進(jìn)制并顯示beginvar1<=50*CONV_INTEGER(q)/2550;--計算個位var2<=50*CONV_INTEGER(q)/255rem10;--計算小數(shù)點(diǎn)后第一位var3<=500*CONV_INTEGER(q)/255rem10;--計算小數(shù)點(diǎn)后第二位當(dāng)前第18頁\共有23頁\編于星期日\21點(diǎn)顯示模塊casevar1is--對個位譯碼

when0=>c<="1000000";--0 when1=>c<="1111001";--1 when2=>c<="0100100";--2 when3=>c<="0110000";--3 when4=>c<="0011001";--4 when5=>c<="0010010";--5 when6=>c<="0000010";--6 when7=>c<="1111000";--7 when8=>c<="0000000";--8 when9=>c<="0010000";--9 whenothers=>c<="1111111";endcase;當(dāng)前第19頁\共有23頁\編于星期日\21點(diǎn)顯示模塊casevar2is--對小數(shù)點(diǎn)后第一位譯碼

when0=>b<="1000000"; when1=>b<="1111001"; when2=>b<="0100100"; --2 when3=>b<="0110000"; --3 when4=>b<="0011001"; --4 when5=>b<="0010010"; --5 when6=>b<="0000010"; --6 when7=>b<="1111000"; --7 when8=>b<="0000000"; --8 when9=>b<="0010000"; --9 whenothers=>b<="1111111";endcase;當(dāng)前第20頁\共有23頁\編于星期日\21點(diǎn)顯示模塊casevar3is--對小數(shù)點(diǎn)后第二位譯碼

when0=>a<="1000000"; when1=>a<="1111001"; when2=>a<="0100100"; --2 when3=>a<="0110000"; --3 when4=>a<="0011001"; --4 when5=>a<="0010010"; --5 when6=

溫馨提示

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

最新文檔

評論

0/150

提交評論