簡易電壓表設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁
簡易電壓表設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁
簡易電壓表設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁
簡易電壓表設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁
簡易電壓表設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)字電路與邏輯設(shè)計(jì)實(shí)驗(yàn) 實(shí)驗(yàn)報(bào)告課題名稱:簡易數(shù)字電壓表的設(shè)計(jì)學(xué)院:信息與通信工程學(xué)院班級(jí):學(xué)號(hào):班序號(hào): 一.設(shè)計(jì)課題的任務(wù)要求設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡易數(shù)字電壓表,要求使用實(shí)驗(yàn)板上的串行 AD 芯片 ADS7816。1.基本要求:(1) 測量對(duì)象:12 節(jié)干電池。 (2) AD 參考電壓:2.5V。 (3) 用三位數(shù)碼管顯示測量結(jié)果,保留兩位小數(shù)。(4) 被測信號(hào)超過測量圍有溢出顯示并有聲音提示。(5) 按鍵控制測量和復(fù)位。2. 提高要求:(1) 能夠連續(xù)測量。(2)自擬其他功能。二. 系統(tǒng)設(shè)計(jì)(包括設(shè)計(jì)思路、總體框圖、分塊設(shè)計(jì))1.設(shè)計(jì)思路本次實(shí)驗(yàn)利用ADS7816作為電壓采樣端口,F(xiàn)PGA作為

2、系統(tǒng)的核心器件,用LED數(shù)碼管進(jìn)行已測電壓值的顯示,先把讀取的12位串行二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成并行的12位二進(jìn)制數(shù)據(jù),然后再把并行的12位二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成便利于輸出的3位十進(jìn)制BCD碼送給數(shù)碼管,以顯示當(dāng)前測量電壓值。這些工作由ADS7816轉(zhuǎn)換控制模塊、數(shù)據(jù)轉(zhuǎn)換控制模塊、譯碼顯示模塊完成。2. 總體框圖3. 分塊設(shè)計(jì)3.1 ADS7816轉(zhuǎn)換控制模塊 (1)ADS7816工作原理在ADS7816的工作時(shí)序中,串行時(shí)鐘DCLK用于同步數(shù)據(jù)轉(zhuǎn)換,每位轉(zhuǎn)換后的數(shù)據(jù)在DCLK的下降沿開始傳送。因此,從Dout引腳接收數(shù)據(jù)時(shí),可在DCLK的下降沿期間進(jìn)行,也可以在DCLK的上升沿期間進(jìn)行。通常情況下,采用在

3、DCLK的上升沿接收轉(zhuǎn)換后的各位數(shù)據(jù)流。CS的下降沿用于啟動(dòng)轉(zhuǎn)換和數(shù)據(jù)變換,CS有效后的最初1至2個(gè)轉(zhuǎn)換周期,ADS7816采樣輸入信號(hào),此時(shí)輸出引腳Dout呈三態(tài)。DCLK的第2個(gè)下降沿后,Dout使能并輸出一個(gè)時(shí)鐘周期的低電平的無效信號(hào)。在第4個(gè)時(shí)鐘的上升沿,Dout開始輸出轉(zhuǎn)換結(jié)果,其輸出數(shù)據(jù)的格式是最高有效位(B11位)在前。當(dāng)最低有效位(B0位)輸出后,若CS變?yōu)楦唠娢?則一次轉(zhuǎn)換結(jié)束,Dout顯三態(tài)。(2)元件設(shè)計(jì):en:A/D轉(zhuǎn)換啟動(dòng)鍵,輸入。輸入高電平時(shí)開始轉(zhuǎn)換。clk:時(shí)鐘輸入。ad_dat:ADS7816轉(zhuǎn)換結(jié)束后的12位串行二進(jìn)制數(shù)據(jù)輸入端。cs:A/D轉(zhuǎn)換結(jié)束信號(hào),輸出

4、,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。data_out11.0:12位并行二進(jìn)制數(shù)據(jù)輸出端。3.2 數(shù)據(jù)轉(zhuǎn)換控制模塊(1)元件設(shè)計(jì)en:開始測量鍵,輸入。按鍵按下為高電平。reset:復(fù)位鍵,輸入。按鍵按下為高電平。clk:時(shí)鐘輸入。datain11.0:12位并行二進(jìn)制數(shù)據(jù)輸入端。beef:蜂鳴器,高電平有效。d23.0:低四位十進(jìn)制BCD碼輸出端 d33.0:中四位十進(jìn)制BCD碼輸出端d43.0:高四位十進(jìn)制BCD碼輸出端(2)狀態(tài)說明reset,en兩個(gè)按鍵有四個(gè)狀態(tài)組合00,01,10,11,按鍵按下為“1”,狀態(tài)轉(zhuǎn)移圖如下所示,當(dāng)狀態(tài)為01,10時(shí)開始數(shù)據(jù)

5、轉(zhuǎn)換。(3)數(shù)據(jù)處理ADS7816是12位模數(shù)轉(zhuǎn)換器,它的輸出狀態(tài)共有4096種,輸入信號(hào)Ui為02.5V電壓圍,則每兩個(gè)狀態(tài)值為2.5/(4096-1),約為0.0006V,故測量分辨率為0.006V。常用測量方法是:當(dāng)讀取到DB11DB0轉(zhuǎn)換值是XXXH時(shí),電壓測量值為UXXXH0.02V;考慮到直接使用乘法計(jì)算對(duì)應(yīng)的電壓值將耗用大量的FPGA部組件,本設(shè)計(jì)用查表命令來得到正確的電壓值。在讀取到ADS7816的轉(zhuǎn)換數(shù)據(jù)后,先用查表指令算出高,中,低4位的3個(gè)電壓值,并分別用16位BCD碼表示;接著設(shè)計(jì)16位的BCD碼加法,如果每4位相加結(jié)果超過9需進(jìn)行減10進(jìn)1。這樣得到模擬電壓的BCD碼

6、。二進(jìn)制數(shù)據(jù)高4位電壓中4位電壓低4位電壓00000.0000.0000.00000010.1540.0100.00100100.3070.0190.00100110.4610.0290.00201000.6140.0380.00201010.7680.0480.00301100.9220.0580.00401111.0750.0670.00410001.2290.0770.00510011.3820.0860.00510101.5360.0960.00610111.6900.1060.00711001.8430.1150.00711011.9970.1250.00811102.1500.13

7、40.00811112.3040.1440.0093.3譯碼顯示模塊clk1:時(shí)鐘輸入。doo23.0:低四位十進(jìn)制BCD碼輸入端 doo33.0:中四位十進(jìn)制BCD碼輸入端doo43.0:高四位十進(jìn)制BCD碼輸入端CAT5.0: 片選信號(hào),輸出 seg6.0:7段數(shù)碼管顯示,輸出 dp:小數(shù)點(diǎn)顯示,輸出三. 仿真波形與波形分析1. ADS7816轉(zhuǎn)換控制模塊 cs下降沿后的第一個(gè)時(shí)鐘周期上升的計(jì)數(shù)變量t=1,根據(jù)代碼,當(dāng)t=4時(shí)開始接收ADS7816傳進(jìn)來的第一個(gè)數(shù)據(jù)B11到data_out(11);t=5時(shí)開始接收ADS7816傳進(jìn)來的第二個(gè)數(shù)據(jù)B10到data_out(10);直到t=1

8、5時(shí)開始接收ADS7816傳進(jìn)來的第十二個(gè)數(shù)據(jù)B0到data_out(0),然后一次性將并行的12個(gè)數(shù)據(jù)data_out傳給輸出端da_out。2.數(shù)據(jù)轉(zhuǎn)換控制模塊 如圖所示,當(dāng)en有一個(gè)上升沿時(shí),開始數(shù)據(jù)轉(zhuǎn)換。例如從ADS轉(zhuǎn)換控制模塊接收的數(shù)據(jù)為“1”時(shí),查表可知輸出電壓應(yīng)為0.154+0.106+0.008=0.26V,即d4=“0000”,d3=“0010”,d2=“0110”;而當(dāng)reset有一個(gè)下降沿時(shí),d4=“0000”,d3=“0000”,d2=“0000”;以上預(yù)計(jì)結(jié)果與仿真圖輸出一樣,仿真結(jié)果正確。3.譯碼顯示模塊 圖1圖2仿真圖中多個(gè)數(shù)碼管是依次顯示,當(dāng)頻率較高,切換速度足

9、夠快時(shí),觀察到所有數(shù)碼管都是同時(shí)在顯示。如圖2,當(dāng)輸入是“0”時(shí),數(shù)碼管顯示“0.20”,CAT為“111110”時(shí),seg為“1111110”,個(gè)位顯示“0”;CAT為“1111101”時(shí),seg為“1101101”,小數(shù)點(diǎn)第二位顯示“2”。四. 源程序1. ADS7816轉(zhuǎn)換控制模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ads ISPORT( en:in std_logic; clk:in STD_LOGIC;

10、cs:out STD_LOGIC; ad_dat: in std_logic; da_out: out std_logic_vector(11 downto 0);END ads;ARCHITECTURE behave OF ads IS signal oe:integer range 0 to 1; signal en1,en2,f_en:std_logic; signal t:integer range 0 to 16; signal temp_cs:std_logic; signal data_out:std_logic_vector(11 downto 0);BEGINp1:proce

11、ss(clk) -按鍵防抖begin if clkevent and clk=0 thenen2=en1;en1=en;end if;end process;f_en=clk and en1 and (not en2); p2:process(f_en,clk,oe) -begin if (f_enevent and f_en=1 )then -接收到開始測量按鍵的信號(hào)oedata_out(11)data_out(10)data_out(9)data_out(8)data_out(7)data_out(6)data_out(5)data_out(4)data_out(3)data_out(2)

12、data_out(1)data_out(0)=ad_dat; da_outdata_out=0; end case;if t16 then t=t+1; else ttemp_cstemp_csnull; end case;end if;end if; end process;cs=temp_cs;end behave;2. 數(shù)據(jù)轉(zhuǎn)換控制模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY deal IS PORT( clk:

13、in std_logic; datain:IN STD_LOGIC_VECTOR(11 DOWNTO 0); en: in std_logic; reset: in std_logic; beef: OUT STD_LOGIC; d2,d3,d4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END deal;ARCHITECTURE behave OF deal IS SIGNAL data0,data1,data2:STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL sum1,sum2,sum3,sum4,do1,do2,do3,do4:STD_

14、LOGIC_VECTOR(4 DOWNTO 0); SIGNAL c1,c2,c3:STD_LOGIC_VECTOR(4 DOWNTO 0); signal flag:integer range 0 to 1; signal r:integer range 0 to 1; signal en1,en2,f_en:std_logic; signal reset1,reset2,f_reset:std_logic;BEGINp2:process(clk) -按鍵防抖begin if clkevent and clk=0 thenreset2=reset1;reset1=reset;en2=en1;

15、en1=en;end if;end process;f_reset=clk and reset1 and (not reset2);f_en=clk and en1 and (not en2);p3:PROCESS(datain,f_en,f_reset) -reset,en組合的4個(gè)狀態(tài)00,01,10,11轉(zhuǎn)移關(guān)系 BEGIN if (f_enevent and f_en=1) thenif (r=0 and flag=0)or (r=0 and flag=1) thenflag=1;end if;if (r=1 and flag=1)or( r=1 and flag=0 ) thenfl

16、ag=0;end if; end if; if (f_resetevent and f_reset=0) thenif (r=0 and flag=0)or (r=1 and flag=0) thenr=0;end if;if (r=1 and flag=1)or( r=0 and flag=1) thenr data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data2 data1 data1 data1 data1 data1 data1 data1

17、data1 data1 data1 data1 data1 data1 data1 data1 data1 data1 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 data0 = NULL;END CASE;-將高,中,低分別代表的16位BCD(表示為15-0位)進(jìn)行加法運(yùn)算-16位BCD碼中的(3-0位)相加,和大于9進(jìn)1 sum1=(0&data2(3 DOWNTO 0)+(0&data1(3 DOWNTO 0)+(0&data0(3 DOWN

18、TO 0); IF sum101010 THEN c1=00000; ELSE c1=00001; END IF;-16位BCD碼中的(7-4位)相加,和大于9進(jìn)1 sum2=(0&data2(7 DOWNTO 4)+(0&data1(7 DOWNTO 4)+(0&data0(7 DOWNTO 4)+c1; IF sum201010 THEN c2=00000; ELSE c2=00001; END IF;-16位BCD碼中的(11-8位)相加,和大于9進(jìn)1 sum3=(0&data2(11 DOWNTO 8)+(0&data1(11 DOWNTO 8)+(0&data0(11 DOWNTO

19、8)+c2; IF sum301010 THEN c3=00000; ELSE c3=00001; END IF;-16位BCD碼中的(15-12位)相加,和大于9進(jìn)1 sum4=(0&data2(15 DOWNTO 12)+(0&data1(15 DOWNTO 12)+(0&data0(15 DOWNTO 12)+c3; IF sum101010 THEN do1=sum1; -和大于9減10 ELSE do1=sum1-01010; END IF; IF sum201010 THEN do2=sum2; ELSE do2=sum2-01010; END IF; IF sum301010 T

20、HEN do3=sum3; ELSE do3=sum3-01010; END IF; IF sum401010 THEN do4=sum4; ELSE do4=sum4-01010; END IF;d2=do2(3 DOWNTO 0); -輸出十進(jìn)制BCD碼中的低四位d3=do3(3 DOWNTO 0); -輸出十進(jìn)制BCD碼中的中四位d4=0001 and do3(3 DOWNTO 0)=0101 ) THEN beef=1; else beef=0; END IF; else d2=0000; d3=0000; d4=0000; beef=0;end if;END PROCESS;END

21、behave;3. 譯碼顯示模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY display IS PORT( doo2,doo3,doo4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK1: IN STD_LOGIC; CAT: OUT STD_LOGIC_VECTOR(5 DOWNTO 0); dp: OUT STD_LOGIC; seg: OUT STD_LOGIC_VECTOR(6 DOW

22、NTO 0) ); END display; ARCHITECTURE V1 OF display IS SIGNAL TMP : INTEGER RANGE 0 TO 3; BEGIN p1: PROCESS(CLK1) BEGIN IF(CLK1EVENT AND CLK1 = 1 ) THEN IF(TMP = 3) THEN TMP = 1; ELSE TMP CAT = 111011;dp=1; if (doo4=0000) then seg=1111110;elsif (doo4=0001) then seg=0110000;elsif (doo4=0010) then seg=1

23、101101;elsif (doo4=0011) then seg=1111001;elsif (doo4=0100) then seg=0110011;elsif (doo4=0101) then seg=1011011;elsif (doo4=0110) then seg=1011111;elsif (doo4=0111) then seg=1110000;elsif (doo4=1000) then seg=1111111;elsif (doo4=1001) then seg=1111011;else seg CAT = 111101;dp=0; if (doo3=0000) then

24、seg=1111110;elsif (doo3=0001) then seg=0110000;elsif (doo3=0010) then seg=1101101;elsif (doo3=0011) then seg=1111001;elsif (doo3=0100) then seg=0110011;elsif (doo3=0101) then seg=1011011;elsif (doo3=0110) then seg=1011111;elsif (doo3=0111) then seg=1110000;elsif (doo3=1000) then seg=1111111;elsif (d

25、oo3=1001) then seg=1111011;else seg CAT = 111110;dp=0; if (doo2=0000) then seg=1111110;elsif (doo2=0001) then seg=0110000;elsif (doo2=0010) then seg=1101101;elsif (doo2=0011) then seg=1111001;elsif (doo2=0100) then seg=0110011;elsif (doo2=0101) then seg=1011011;elsif (doo2=0110) then seg=1011111;els

26、if (doo2=0111) then seg=1110000;elsif (doo2=1000) then seg=1111111;elsif (doo2=1001) then seg=1111011;else seg seg = 1111110;CAT = 111000; END CASE; END PROCESS; END V1;4. 12分頻模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY div_12 IS PORT( clk: IN STD_LOGIC; clk_out

27、: OUT STD_LOGIC);END div_12;ARCHITECTURE struct OF div_12 IS SIGNAL temp :INTEGER RANGE 0 TO 124; SIGNAL clk_temp: STD_LOGIC; BEGIN PROCESS(clk) BEGIN IF(clkevent AND clk=1) THEN IF temp=11 THEN temp=0;clk_temp=NOT clk_temp; ELSE temp=temp+1; END IF; END IF; END PROCESS; clk_out=clk_temp; END struct

28、;五. 功能說明與資源利用情況1.功能說明en:為開始測量按鍵,連接到BIN6,按下此鍵開始測量。reset:為復(fù)位鍵,連接到BIN5,按下此鍵顯示值變?yōu)椤?00”。beef:為蜂鳴器,當(dāng)量程超過1.5V時(shí)響起。整個(gè)測量過程:將電池電壓接入到實(shí)驗(yàn)板,按下開始測量鍵BIN6。若沒有超過量程,數(shù)碼管顯示當(dāng)前電池的電壓值。若超過量程,蜂鳴器警報(bào)響起,數(shù)碼管顯示溢出值“555”。若按下復(fù)位鍵BIN5,數(shù)碼管顯示“000”。2.資源利用資源利用率:1268/1270=21%六. 故障與問題分析1.剛開始接觸實(shí)驗(yàn)的時(shí)候,對(duì)整個(gè)框架的認(rèn)識(shí)很模糊,沒有弄清楚ADS7816的數(shù)據(jù)的輸入輸出和EPM1270T14

29、4C5的數(shù)據(jù)輸入輸出的關(guān)系。經(jīng)過咨詢同學(xué),得知ADS7816的數(shù)據(jù)輸入是待測量的電壓,輸出的串行12位數(shù)據(jù)是EPM1270T144C5的數(shù)據(jù)輸入。ADS7816是獨(dú)立于EPM1270T144C5之外的模數(shù)轉(zhuǎn)換芯片。2.一開始接觸實(shí)驗(yàn)的時(shí)候,對(duì)ADS7816的時(shí)序圖沒有給予太多的關(guān)注,以至于不了解轉(zhuǎn)換芯片的工作過程。后來發(fā)現(xiàn)時(shí)序圖對(duì)于ADS轉(zhuǎn)換控制模塊極其重要,仔細(xì)閱讀,掌握了ADS7816的時(shí)序圖:采用在DCLK的上升沿接收轉(zhuǎn)換后的各位數(shù)據(jù)流。CS的下降沿用于啟動(dòng)轉(zhuǎn)換和數(shù)據(jù)變換,CS有效后的最初1至2個(gè)轉(zhuǎn)換周期,ADS7816采樣輸入信號(hào),此時(shí)輸出引腳Dout呈三態(tài)。DCLK的第2個(gè)下降沿后,Dout使能并輸出一個(gè)時(shí)鐘周期的低電平的無效信號(hào)。在第4個(gè)時(shí)鐘的上升沿,Dout開始輸出轉(zhuǎn)換結(jié)果,其輸出數(shù)據(jù)的格式是最高有效位(B11位)在前。當(dāng)最低有效位(B0位)輸出后,若CS變?yōu)楦唠娢?則一次轉(zhuǎn)換結(jié)束,Dout顯三態(tài)。當(dāng)理解到這個(gè)原理的時(shí)候,ADS轉(zhuǎn)化控制模塊的編程思路由模糊變?yōu)榍逦?.仿真時(shí)間區(qū)域的設(shè)定與輸入波形周期的設(shè)定一定要協(xié)調(diào),否則得到波形可能不便于觀察或發(fā)生錯(cuò)誤。4.保存波形文件時(shí),文件名必須與工程名一致,因?yàn)樵诙啻螢橐粋€(gè)工程建立波形文件時(shí),一定要注意保存時(shí)文件名要與工程名一致,否則不能得到正確的仿真結(jié)果。七.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論