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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

(優(yōu)選)基于的數字電壓表設計現(xiàn)在是1頁\一共有23頁\編輯于星期二實驗設計思路數字電壓表設計核心:FPGA設計,F(xiàn)PGA負責ADC0809的啟動以及轉換數據的讀取,再將讀取的8位二進制數據進行變換,形成便于輸出的3位LED段碼送給LED數碼管,顯示被測電壓值。FPGA的設計主要包括幾個部分:

ADC0809轉換控制模塊實現(xiàn)ADC0809的啟動以及轉換數據的讀??;數據處理模塊實現(xiàn)ADC08094位數字量對應BCD碼的變換和處理;顯示控制模塊實現(xiàn)LED段碼譯碼輸出?,F(xiàn)在是2頁\一共有23頁\編輯于星期二ADC0809與FPGA接口電路

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

現(xiàn)在是3頁\一共有23頁\編輯于星期二FPGA與ADC0809接口電路原理圖

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

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

現(xiàn)在是9頁\一共有23頁\編輯于星期二ADC0809采樣控制狀態(tài)圖

FPGA器件可以根據其采樣時序用狀態(tài)機來描述采樣控制過程,其狀態(tài)轉換關系如左圖所示?,F(xiàn)在是10頁\一共有23頁\編輯于星期二ADC0809VHDL采樣控制程序

現(xiàn)在是11頁\一共有23頁\編輯于星期二ADC0809采樣控制程序電路符號

現(xiàn)在是12頁\一共有23頁\編輯于星期二程序的端口信號與中間信號entityADC0809isport(d:instd_logic_vector(7downto0);--ADC0809輸出的采樣數據

clk,eoc:instd_logic;--clk為系統(tǒng)時鐘,eoc為ADC0809轉換結束信號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個并排數碼管信號endADC0809;architecturebehavofADC0809istypestatesis(st0,st1,st2,st3,st4,st5,st6);--定義各狀態(tài)的子類型signalcurrent_state,next_state:states:=st0;signalregl:std_logic_vector(7downto0);--中間數據寄存信號signalqq:std_logic_vector(7downto0);begin現(xiàn)在是13頁\一共有23頁\編輯于星期二狀態(tài)轉換模塊(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;現(xiàn)在是14頁\一共有23頁\編輯于星期二分頻模塊(clock)clock:process(clk)--對系統(tǒng)時鐘進行分頻,得到ADC0809轉換工作時鐘beginifclk'eventandclk='1'thenqq<=qq+1;--在clk1的上升沿,轉換至下一狀態(tài)ifQQ="01111111"THENclk1<='1';current_state<=next_state;elsifqq<="01111111"thenclk1<='0'; endif;endif;endprocess;q<=regl;abc_out<=abc_in;endbehav;現(xiàn)在是15頁\一共有23頁\編輯于星期二

顯示模塊

現(xiàn)在是16頁\一共有23頁\編輯于星期二顯示模塊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);--小數點后第2位 b:outstd_logic_vector(6downto0);--小數點后第1位 c:outstd_logic_vector(6downto0));--個位

endvalconv;現(xiàn)在是17頁\一共有23頁\編輯于星期二顯示模塊architecturebhvofvalconvis signalvar1,var2,var3:integer;--分別對應將二進制數據轉化為十進制beginprocess(q)--數據讀出時轉化成十進制并顯示beginvar1<=50*CONV_INTEGER(q)/2550;--計算個位var2<=50*CONV_INTEGER(q)/255rem10;--計算小數點后第一位var3<=500*CONV_INTEGER(q)/255rem10;--計算小數點后第二位現(xiàn)在是18頁\一共有23頁\編輯于星期二顯示模塊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;現(xiàn)在是19頁\一共有23頁\編輯于星期二顯示模塊casevar2is--對小數點后第一位譯碼

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;現(xiàn)在是20頁\一共有23頁\編輯于星期二顯示模塊casevar3is--對小數點后第二位譯碼

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

溫馨提示

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

評論

0/150

提交評論