




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于EDA的數(shù)字電壓表設(shè)計基于EDA的數(shù)字電壓表設(shè)計實(shí)驗(yàn)要求
FPGA連接A/D轉(zhuǎn)換硬件電路,將ADC單元中提供的0V~5V信號源作為ADC0809的模擬輸入量,通過IN0進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)果在數(shù)碼上進(jìn)行顯示。通過調(diào)節(jié)電位器使數(shù)碼管顯示實(shí)時采集電壓值。
實(shí)驗(yàn)要求FPGA連接A/D轉(zhuǎn)換硬件電路,將ADC單元中實(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段碼譯碼輸出。實(shí)驗(yàn)設(shè)計思路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電源供電。
ADC0809與FPGA接口電路ADC0809是CMOS的FPGA與ADC0809接口電路原理圖
FPGA與ADC0809接口電路原理圖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)的模擬輸入通道;接下頁ADC0809與FPGA接口電路設(shè)計IO_B13、B4、B1IO_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-:參考電壓輸入端口;IO_B6為ADC0809提供輸出允許控制信號ENABLE:ADC0809VHDL采樣控制程序設(shè)計ADC0809VHDL采樣控制程序設(shè)計ADC0809的工作時序圖
ADC0809的工作時序圖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é)束
START是轉(zhuǎn)換啟動信號,一個正脈沖過后A/D開始轉(zhuǎn)換;ALADC0809采樣控制狀態(tài)圖
FPGA器件可以根據(jù)其采樣時序用狀態(tài)機(jī)來描述采樣控制過程,其狀態(tài)轉(zhuǎn)換關(guān)系如左圖所示。ADC0809采樣控制狀態(tài)圖FPGA器件可以根據(jù)其采樣時ADC0809VHDL采樣控制程序
ADC0809VHDL采樣控制程序ADC0809采樣控制程序電路符號
ADC0809采樣控制程序電路符號程序的端口信號與中間信號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程序的端口信號與中間信號entityADC0809is狀態(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;狀態(tài)轉(zhuǎn)換模塊(com)casecurrent_state分頻模塊(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;分頻模塊(clock)clock:process(clk)
顯示模塊
顯示模塊顯示模塊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;顯示模塊libraryieee;顯示模塊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)后第二位顯示模塊architecturebhvofvalcon顯示模塊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;顯示模塊casevar1is--對個位譯碼顯示模塊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;顯示模塊casevar2is--對小數(shù)點(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=>a<="0000010"; --6 when7=>a<="1111000"; --7 when8=>a<="0000000"; --8 when9=>a<="0010000"; --9 whenothers=>a<="1111111";endcase;endprocess;endbhv;顯示模塊casevar3is--對小數(shù)點(diǎn)后第二位譯碼管腳約束(AD模塊)管腳約束(AD模塊)管腳約束(數(shù)碼管)管腳約束(數(shù)碼管)實(shí)驗(yàn)結(jié)果及程序擴(kuò)展運(yùn)行測試將程序下載到目標(biāo)芯片中,觀察數(shù)碼管的輸出,其輸出隨著輸入電壓的變化而變化,當(dāng)輸入電壓變?yōu)?時,數(shù)碼管的輸出為0,輸入為5V時數(shù)碼管輸出也為5.00V,運(yùn)行結(jié)果正確。程序擴(kuò)展該設(shè)計還可以進(jìn)行相應(yīng)的擴(kuò)展,例如增加兩個功能按鍵用于設(shè)定電壓上下限值,當(dāng)測量電壓超出上下限值時,進(jìn)行聲音報警等,感興趣的可以試著做數(shù)字電壓表的各種擴(kuò)展功能。實(shí)驗(yàn)結(jié)果及程序擴(kuò)展運(yùn)行測試基于EDA的數(shù)字電壓表設(shè)計基于EDA的數(shù)字電壓表設(shè)計實(shí)驗(yàn)要求
FPGA連接A/D轉(zhuǎn)換硬件電路,將ADC單元中提供的0V~5V信號源作為ADC0809的模擬輸入量,通過IN0進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)果在數(shù)碼上進(jìn)行顯示。通過調(diào)節(jié)電位器使數(shù)碼管顯示實(shí)時采集電壓值。
實(shí)驗(yàn)要求FPGA連接A/D轉(zhuǎn)換硬件電路,將ADC單元中實(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段碼譯碼輸出。實(shí)驗(yàn)設(shè)計思路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電源供電。
ADC0809與FPGA接口電路ADC0809是CMOS的FPGA與ADC0809接口電路原理圖
FPGA與ADC0809接口電路原理圖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)的模擬輸入通道;接下頁ADC0809與FPGA接口電路設(shè)計IO_B13、B4、B1IO_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-:參考電壓輸入端口;IO_B6為ADC0809提供輸出允許控制信號ENABLE:ADC0809VHDL采樣控制程序設(shè)計ADC0809VHDL采樣控制程序設(shè)計ADC0809的工作時序圖
ADC0809的工作時序圖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é)束
START是轉(zhuǎn)換啟動信號,一個正脈沖過后A/D開始轉(zhuǎn)換;ALADC0809采樣控制狀態(tài)圖
FPGA器件可以根據(jù)其采樣時序用狀態(tài)機(jī)來描述采樣控制過程,其狀態(tài)轉(zhuǎn)換關(guān)系如左圖所示。ADC0809采樣控制狀態(tài)圖FPGA器件可以根據(jù)其采樣時ADC0809VHDL采樣控制程序
ADC0809VHDL采樣控制程序ADC0809采樣控制程序電路符號
ADC0809采樣控制程序電路符號程序的端口信號與中間信號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程序的端口信號與中間信號entityADC0809is狀態(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;狀態(tài)轉(zhuǎn)換模塊(com)casecurrent_state分頻模塊(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;分頻模塊(clock)clock:process(clk)
顯示模塊
顯示模塊顯示模塊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;顯示模塊libraryieee;顯示模塊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)后第二位顯示模塊architecturebhvofvalcon顯示模塊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 whenot
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省安康市2024-2025學(xué)年高三下學(xué)期第二次質(zhì)量考試(二模)地理試題(含答案)
- 企業(yè)對外溝通與合作記錄表
- 鄉(xiāng)村旅游規(guī)劃設(shè)計服務(wù)協(xié)議
- 產(chǎn)品保密與知識產(chǎn)權(quán)保護(hù)契約書
- 倒裝句的構(gòu)成與識別:英語語法知識鞏固教案
- 鄉(xiāng)村土地承包經(jīng)營獎補(bǔ)資金使用協(xié)議
- 二手房買賣過戶網(wǎng)簽協(xié)議
- 健康飲食品牌推廣合同書
- 本季度銷售業(yè)績匯報與展望
- 高體三教授治療眩暈病學(xué)術(shù)思想研究
- 《元德秀字紫芝》2019年山東濰坊中考文言文閱讀真題(含答案與翻譯)
- 建設(shè)“三型三化551”財務(wù)體系加快財務(wù)轉(zhuǎn)型創(chuàng)建一流財務(wù)指導(dǎo)意見
- 語言領(lǐng)域核心經(jīng)驗(yàn)《學(xué)前兒童語言學(xué)習(xí)與發(fā)展核心經(jīng)驗(yàn)》
- 湖北省華中師大一附中2020-2021高一物理期中檢測試卷【含答案】
- 2021年合肥職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測試試題及答案解析
- 2022年三年級美術(shù)下冊教案課題美化教室一角
- 初中物理公式MicrosoftWord文檔
- 詐騙案件授課PPT課件
- 弗洛姆異化理論
- 碳納米管_ppt課件
- 【課件】第2課如何鑒賞美術(shù)作品課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
評論
0/150
提交評論