




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)字(shz)電壓表設(shè)計何賓2008.11共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-本章概要 本章給出了PLD器件在數(shù)字和模擬系統(tǒng)的典型應(yīng)用-數(shù)字電壓表的設(shè)計。數(shù)字電壓表實際上是一個模擬和數(shù)字混合系統(tǒng),該設(shè)計通過(tnggu)A/D轉(zhuǎn)換器將模擬信號轉(zhuǎn)換成離散的數(shù)字量,通過可編程邏輯器件PLD進(jìn)行處理,最后通過7段數(shù)碼管顯示測量值。 該章首先介紹了數(shù)字電壓表的功能要求和整體結(jié)構(gòu);隨后具體介紹了數(shù)字電壓表的模塊設(shè)計,其中包括數(shù)字電壓表的控制信號、ADC轉(zhuǎn)換原理和控制模塊的具體結(jié)構(gòu)。本章最后詳細(xì)描述了設(shè)計的具體實現(xiàn)過程,具體包括ADC控制模塊的原理及實現(xiàn)、顯示控制模塊原理及實現(xiàn)、頂層模塊的設(shè)計。
2、共四十三頁第13章 數(shù)字電壓表設(shè)計-數(shù)字電壓表的功能(gngnng)要求 數(shù)字電壓表是一個模擬和數(shù)字混合系統(tǒng),該數(shù)字電壓表完成模擬直流信號的測試,并將結(jié)果在數(shù)碼管上顯示。數(shù)字電壓表主要(zhyo)有以下幾個功能: 1、模擬信號通過ADC0809轉(zhuǎn)換為離散的數(shù)字量,設(shè)計模塊和ADC0809通過并口連接,并且向ADC0809發(fā)出控制信號; 2、數(shù)字電壓表設(shè)計模塊,將外部的時鐘信號分頻后得到合適的采樣時鐘送給ADC0809; 3、每當(dāng)ADC0809完成一次模/數(shù)轉(zhuǎn)換過程后,設(shè)計模塊對采樣數(shù)據(jù)進(jìn)行處理,并通過3個7段數(shù)碼管顯示測量的直流電壓值。共四十三頁第13章 數(shù)字電壓表設(shè)計-數(shù)字電壓表的整體(zh
3、ngt)結(jié)構(gòu) 共四十三頁第13章 數(shù)字電壓表設(shè)計-數(shù)字電壓表的整體(zhngt)結(jié)構(gòu) 從圖中可以看出,實驗平臺上,在PLD和ADC0809之間加入了ADC控制模塊,由于該模塊的加入使PLD產(chǎn)生ADC控制模塊可以識別(shbi)的信號,然后送到ADC0809。圖中的PLD的設(shè)計部分和ADC控制模塊、7段數(shù)碼管、外部時鐘信號、按鍵進(jìn)行連接。共四十三頁第13章 數(shù)字電壓表設(shè)計-數(shù)字電壓表控制(kngzh)信號 該數(shù)字電壓表的控制邏輯由PLD完成,該模塊的輸入和輸出接口由下面信號組成(z chn): 1、輸入信號 外部時鐘信號(clk_in) 外部復(fù)位信號(reset) ADC轉(zhuǎn)換后的數(shù)字信號(din
4、) ADC轉(zhuǎn)換完的中斷信號(INTR)共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-數(shù)字電壓表控制信號 2、輸出信號 ADC片選信號(ncs) ADC讀信號(nrd) ADC寫信號(nwr) ADC通道選擇信號(nadd) ADC時鐘信號(nclock) LED選擇信號(led_select) LED數(shù)碼顯示(xinsh)控制信號(seg)共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-ADC轉(zhuǎn)換原理 ADC0809是CMOS的8位A/D轉(zhuǎn)換器,片內(nèi)有8路模擬開關(guān),可控制8個模擬量中的一個進(jìn)入轉(zhuǎn)換器中。ADC0809的分辨率為8位,轉(zhuǎn)換時間約100us,含鎖存控制的8路多路開關(guān),輸出有三態(tài)緩沖器
5、控制,單5V電源(dinyun)供電。共四十三頁第13章 數(shù)字電壓表設(shè)計-ADC轉(zhuǎn)換(zhunhun)原理共四十三頁第13章 數(shù)字電壓表設(shè)計-控制模塊(m kui)結(jié)構(gòu)共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-控制模塊結(jié)構(gòu) 1、ADC控制模塊 ADC控制模塊產(chǎn)生ADC控制模塊需要的控制信號,同時讀取ADC轉(zhuǎn)換后的中斷信號和數(shù)據(jù)信號。 該設(shè)計采用了教學(xué)實驗系統(tǒng),該系統(tǒng)的ADC控制模塊接收ncs,nrd,nwr和nintr信號。圖13.4給出了該模塊的控制信號時序(sh x)關(guān)系。共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-控制模塊結(jié)構(gòu) 2、顯示(xinsh)控制模塊 顯示控制模塊產(chǎn)生LED
6、顯示所需要的LED選擇信號和LED數(shù)碼控制信號。 3、采樣時鐘生成模塊 采樣時鐘生成模塊對外部輸入的1MHz信號進(jìn)行分頻后,為ADC0809產(chǎn)生合適的采樣時鐘信號。 4、掃描時鐘生成模塊 掃描時鐘生成模塊對外部輸入的1MHz信號進(jìn)行分頻后,為LED正確顯示測量值產(chǎn)生合適的掃描時鐘信號。共四十三頁第13章 數(shù)字電壓表設(shè)計-主要控制信號(xnho)說明 1、START是轉(zhuǎn)換(zhunhun)啟動信號,高電平有效; 2、ALE是3位通道選擇地址(ADDC、ADDB、ADDA)信號的鎖存信號。當(dāng)模擬量送至某一輸入端(如IN1或IN2等),由3位地址信號選擇,而地址信號由ALE鎖存; 共四十三頁第13章
7、 數(shù)字電壓表設(shè)計-主要控制信號(xnho)說明 3、EOC是轉(zhuǎn)換情況狀態(tài)信號,當(dāng)啟動轉(zhuǎn)換約100us后,EOC產(chǎn)生一個負(fù)脈沖,以示轉(zhuǎn)換結(jié)束;在EOC的上升沿后,若使輸出使能信號OE為高電平,則控制打開三態(tài)緩沖器,把轉(zhuǎn)換好的8位數(shù)據(jù)結(jié)果(ji gu)輸出至數(shù)據(jù)總線。至此ADC0809的一次轉(zhuǎn)換結(jié)束了。 共四十三頁第13章 數(shù)字電壓表設(shè)計-控制(kngzh)時序說明共四十三頁第13章 數(shù)字電壓表設(shè)計-實驗(shyn)箱控制信號 在實驗儀器中CS與WR相與后接在了ALE和START端,CS與RD相與后接在了OE端,通過對時序和電路的綜合考慮,建議使用如下(rxi)的AD控制時序。共四十三頁第13章
8、數(shù)字(shz)電壓表設(shè)計-FSM的設(shè)計 可以將整個控制分成4個步驟狀態(tài):S0、S1、S2、S3,各狀態(tài)的動作方式如下: 1、狀態(tài)S0:CS=1、WR=1、RD=0(由控制器發(fā)出信號要求ADC0809開始進(jìn)行模/數(shù)信號的轉(zhuǎn)換)。 2、狀態(tài)S1:CS=0、WR=0、RD=0 (ADC0809進(jìn)行轉(zhuǎn)換動作,轉(zhuǎn)換完畢后INT將低電位(din wi)升至高電位(din wi)。 3、狀態(tài)S2: CS=1、WR=0、RD=1(由控制器發(fā)出信號以讀取ADC0809的轉(zhuǎn)換數(shù)據(jù))。 4、狀態(tài)S3: CS=0、WR=0、RD=0(由控制器讀取數(shù)據(jù)總線上的數(shù)字轉(zhuǎn)換數(shù)據(jù))。共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計
9、-FSM的狀態(tài)圖描述S1S2S3S4共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-FSM的設(shè)計 由上述的四個狀態(tài)(zhungti)可以歸納出整個控制器的動作功能有: 1、負(fù)責(zé)在每個步驟送出所需的CS、WR、RD控制信號。 2、在狀態(tài)S1時,監(jiān)控INT信號是否由低變高,如此以便了解轉(zhuǎn)換動作結(jié)束與否。 3、在狀態(tài)S3,讀取轉(zhuǎn)換的數(shù)字量。共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-編碼轉(zhuǎn)換電路 計算(j sun)轉(zhuǎn)換后的數(shù)字電壓信號與BCD碼的對應(yīng)關(guān)系: 對8位的ADC0809而言,它的輸出準(zhǔn)位共有2*8=256種,即它的分辨率是1/256。 VIN= 輸入到 ADC0808的電壓 Vfs= 滿量
10、程電壓 VZ= 0電壓 DX= 輸出的數(shù)字量 DMAX= 最大數(shù)字量 DMIN= 最小數(shù)字量 共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-編碼轉(zhuǎn)換電路 假設(shè)輸入信號為05V電壓(diny)范圍,參考電壓(diny)(Vref/2)為2.56V時,則它最小輸出電壓是5V/256=0.01953V,這代表ADC0809所能轉(zhuǎn)換的最小電壓值,我們在該實驗中取最小電壓準(zhǔn)位為0.02V。當(dāng)ADC0809收到的信號是01110110(76H),則其對應(yīng)的電壓值為: 76H0.02V = 2.36V共四十三頁第13章 數(shù)字電壓表設(shè)計-編碼轉(zhuǎn)換(zhunhun)電路 要實現(xiàn)電壓(diny)值與BCD碼的對應(yīng)
11、關(guān)系用多種方法(如查表法、比較法等)。查表法需要寫大量的數(shù)據(jù),比較麻煩,在示例程序中使用了比較法。共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-具體算法例如:10100101表示(biosh)165*2=330=101001010165/255*5=3.26,用三個七段數(shù)碼管顯示,分離3 2 6 =0011 ,0010,0110將1010高四位,0101低四位分離.0101表示0000,0000,1010, BCD碼11010表示0010,1100,0000, BCD碼2下面就是BCD碼1+BCD碼2共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-具體算法 0000,0000,1010 + 00
12、10,1100,0000, 0010,1100,1010 0000,0011,0000 比如:9+1=10, 6+7=13, BCD碼的加法實際上就是10進(jìn)制的加法 判斷: 由于BCD碼顯示0-9,所以加法運(yùn)算要符合(fh)BCD碼的運(yùn)算 當(dāng)9時,BCD+6,并且+1進(jìn)位 否則9,BCD=BCD+1共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-VHDL描述library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;library work; use w
13、ork.disp_driver.all;entity disp_controller isport(rst : in std_logic;scan_clk : in std_logic;din : in std_logic_vector(7 downto 0);sel : out std_logic_vector(1 downto 0);seg : out std_logic_vector(6 downto 0);dp : out std_logic);end disp_controller;共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-VHDL描述 architecture Behavior
14、al of disp_controller is signal vol_value : std_logic_vector(7 downto 0); signal bcd_value : std_logic_vector(11 downto 0); signal bcd_h,bcd_l : std_logic_vector(11 downto 0); signal scan_out : std_logic_vector(1 downto 0); begin共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-VHDL描述process(rst,scan_clk)begin if(rst=0)then v
15、ol_value=00000000; bcd_value=000000000000; elsif(rising_edge(scan_clk)then vol_value=din; bcd_h=bin_bcd(vol_value(7 downto 4),1); bcd_l=bin_bcd(vol_value(3 downto 0),0); bcd_value1001)then bcd_value1001)then bcd_value=bcd_value+000001100000; end if; end if;end process;共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-VHDL描述pr
16、ocess(scan_clk)begin if(rising_edge(scan_clk)then if(scan_out=10)then scan_out=00; else scan_out seg=display(bcd_value(3 downto 0);sel=00;dp seg=display(bcd_value(7 downto 4); sel=01;dp seg=display(bcd_value(11 downto 8);sel=10;dp seg=display(1111);sel=11;dp bcd_x:=000000000000; when 0001 = bcd_x:=0
17、00000000010;when 0010 = bcd_x:=000000000100;when 0011= bcd_x:=000000000110;when 0100= bcd_x:=000000001000;when 0101= bcd_x:=000000001010;when 0110= bcd_x:=000000001100;when 0111= bcd_x:=000000001110;when 1000= bcd_x:=000000010000;when 1001= bcd_x:=000000010010;when 1010= bcd_x:=000000100000;when 101
18、1= bcd_x:=000000100010;when 1100= bcd_x:=000000100100;when 1101= bcd_x:=000000100110;when 1110= bcd_x:=000000101000;when 1111= bcd_x:=000000110000;when others = bcd_x:=111111111111;end case;elsif(flag=1)then共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-程序包的設(shè)計case bin iswhen 0000 = bcd_x:=000000000000;when 0001 = bcd_x:=00
19、0000110010;when 0010 = bcd_x:=000001100100;when 0011= bcd_x:=000010010110;when 0100= bcd_x:=000100101000;when 0101= bcd_x:=000101100000;when 0110= bcd_x:=000110010010;when 0111= bcd_x:=001000100100;when 1000= bcd_x:=001001010110;when 1001= bcd_x:=001010001000;when 1010= bcd_x:=001100110010;when 1011
20、= bcd_x:=001101010010;when 1100= bcd_x:=001110000100;when 1101= bcd_x:=010000010110;when 1110= bcd_x:=010001001000;when 1111= bcd_x:=010010000000;when others = bcd_x:=111111111111;end case;end if;return bcd_x;end bin_bcd;共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-程序包的設(shè)計function display (a : std_logic_vector ) return st
21、d_logic_vector isvariable r : std_logic_vector(6 downto 0);begincase a iswhen 0000 = r:=0111111;when 0001 = r:=0000110;when 0010 = r:=1011011;when 0011 = r:=1001111;when 0100 = r:=1100110;when 0101 = r:=1101101;when 0110 = r:=1111101;when 0111 = r:=0000111;when 1000 = r:=1111111;when 1001 = r:=11011
22、11;when others = r:=1111111;end case;return r;end display;end disp_driver;共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-頂層模塊library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isport( rst : in std_logic;clk : in std_logic;int : in std_logic;cs : out std_logic;wr
23、 : out std_logic;rd : out std_logic;din : in std_logic_vector(7 downto 0);sel : out std_logic_vector(1 downto 0);seg : out std_logic_vector(6 downto 0);dp : out std_logic);end top;共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-頂層模塊architecture Behavioral of top issignal d : std_logic_vector(7 downto 0);component adc0809_co
24、ntrollerport(clk : in std_logic;rst : in std_logic;int : in std_logic;cs : out std_logic;wr : out std_logic;rd : out std_logic;din : in std_logic_vector(7 downto 0);dout : out std_logic_vector(7 downto 0);end component;共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-頂層模塊component disp_controllerport(rst : in std_logic;scan_
25、clk : in std_logic;din : in std_logic_vector(7 downto 0);sel : out std_logic_vector(1 downto 0);seg : out std_logic_vector(6 downto 0);dp : out std_logic);end component;共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-頂層模塊Inst_adc0809_controller1: adc0809_controller port map(clk =clk,rst =rst,int =int, cs =cs,wr =wr, rd =rd,
26、 din =din,dout =d);共四十三頁第13章 數(shù)字電壓表設(shè)計(shj)-頂層模塊Inst_disp_controller1:disp_controllerport map(rst=rst,scan_clk=clk,din=d,sel =sel,seg =seg,dp =dp);end Behavioral;共四十三頁第13章 數(shù)字(shz)電壓表設(shè)計-頂層約束 該設(shè)計在基于xilinx的SPARTAN3的xc3s400pqg208-4c器件上實現(xiàn),在百科融創(chuàng)的EDA-IV實驗平臺上測試完成,在驗證前,要進(jìn)行設(shè)計約束,在這里只對管腳進(jìn)行約束。該約束文件的格式是Xilinx的用戶約束文件UCF的格式。采用(ciyng)不同的EDA平臺時,需要使用不同的用戶約束文件格式。下面的約束僅供讀者參考。共四十三頁第13章 數(shù)字電壓表設(shè)計-頂層(dn cn)約束#PACE: Start of Constraints generated by PACE#PACE: Start of PACE I/O Pin AssignmentsNET clk LOC = p72 ; NET cs LOC = p68 ; NET din LOC = p65 ; NET din LOC = p63 ; NET din LOC =
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫分塊合同范本
- 單位購買要合同范本
- 凈水器購銷合同范本
- 加工中心加工合同范本
- 單位解聘合同范本寫
- 勞務(wù)合同范本ins
- 買二手房合同范本
- 個人入伙合同范本
- 關(guān)于公路工程合同范本
- 勞務(wù)對接工地合同范本
- 2024-2025學(xué)年中小學(xué)校第二學(xué)期師德師風(fēng)工作計劃:必看!新學(xué)期師德師風(fēng)建設(shè)秘籍大公開(附2月-7月工作安排表)
- xxx項目財務(wù)評價報告
- 《急性心力衰竭的急救處理》課件
- 萬兆小區(qū)方案及實施路徑
- 2025年高壓電工作業(yè)考試國家總局題庫及答案(共280題)
- 初中圖書室閱覽室建設(shè)實施方案范文(2篇)
- 印刷公司生產(chǎn)部2025年年度工作總結(jié)及2025年工作計劃
- 2025年中考語文一輪復(fù)習(xí):八年級下冊知識點梳理
- 小班孵雞蛋課程設(shè)計
- 糖尿病的麻醉管理
- 《商務(wù)溝通-策略、方法與案例》課件 第四章 非言語溝通
評論
0/150
提交評論