第13章 數字電壓表設計實驗_第1頁
第13章 數字電壓表設計實驗_第2頁
第13章 數字電壓表設計實驗_第3頁
第13章 數字電壓表設計實驗_第4頁
第13章 數字電壓表設計實驗_第5頁
已閱讀5頁,還剩38頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、數字(shz)電壓表設計何賓2008.11共四十三頁第13章 數字電壓表設計(shj)-本章概要 本章給出了PLD器件在數字和模擬系統的典型應用-數字電壓表的設計。數字電壓表實際上是一個模擬和數字混合系統,該設計通過(tnggu)A/D轉換器將模擬信號轉換成離散的數字量,通過可編程邏輯器件PLD進行處理,最后通過7段數碼管顯示測量值。 該章首先介紹了數字電壓表的功能要求和整體結構;隨后具體介紹了數字電壓表的模塊設計,其中包括數字電壓表的控制信號、ADC轉換原理和控制模塊的具體結構。本章最后詳細描述了設計的具體實現過程,具體包括ADC控制模塊的原理及實現、顯示控制模塊原理及實現、頂層模塊的設計。

2、共四十三頁第13章 數字電壓表設計-數字電壓表的功能(gngnng)要求 數字電壓表是一個模擬和數字混合系統,該數字電壓表完成模擬直流信號的測試,并將結果在數碼管上顯示。數字電壓表主要(zhyo)有以下幾個功能: 1、模擬信號通過ADC0809轉換為離散的數字量,設計模塊和ADC0809通過并口連接,并且向ADC0809發出控制信號; 2、數字電壓表設計模塊,將外部的時鐘信號分頻后得到合適的采樣時鐘送給ADC0809; 3、每當ADC0809完成一次模/數轉換過程后,設計模塊對采樣數據進行處理,并通過3個7段數碼管顯示測量的直流電壓值。共四十三頁第13章 數字電壓表設計-數字電壓表的整體(zh

3、ngt)結構 共四十三頁第13章 數字電壓表設計-數字電壓表的整體(zhngt)結構 從圖中可以看出,實驗平臺上,在PLD和ADC0809之間加入了ADC控制模塊,由于該模塊的加入使PLD產生ADC控制模塊可以識別(shbi)的信號,然后送到ADC0809。圖中的PLD的設計部分和ADC控制模塊、7段數碼管、外部時鐘信號、按鍵進行連接。共四十三頁第13章 數字電壓表設計-數字電壓表控制(kngzh)信號 該數字電壓表的控制邏輯由PLD完成,該模塊的輸入和輸出接口由下面信號組成(z chn): 1、輸入信號 外部時鐘信號(clk_in) 外部復位信號(reset) ADC轉換后的數字信號(din

4、) ADC轉換完的中斷信號(INTR)共四十三頁第13章 數字(shz)電壓表設計-數字電壓表控制信號 2、輸出信號 ADC片選信號(ncs) ADC讀信號(nrd) ADC寫信號(nwr) ADC通道選擇信號(nadd) ADC時鐘信號(nclock) LED選擇信號(led_select) LED數碼顯示(xinsh)控制信號(seg)共四十三頁第13章 數字(shz)電壓表設計-ADC轉換原理 ADC0809是CMOS的8位A/D轉換器,片內有8路模擬開關,可控制8個模擬量中的一個進入轉換器中。ADC0809的分辨率為8位,轉換時間約100us,含鎖存控制的8路多路開關,輸出有三態緩沖器

5、控制,單5V電源(dinyun)供電。共四十三頁第13章 數字電壓表設計-ADC轉換(zhunhun)原理共四十三頁第13章 數字電壓表設計-控制模塊(m kui)結構共四十三頁第13章 數字電壓表設計(shj)-控制模塊結構 1、ADC控制模塊 ADC控制模塊產生ADC控制模塊需要的控制信號,同時讀取ADC轉換后的中斷信號和數據信號。 該設計采用了教學實驗系統,該系統的ADC控制模塊接收ncs,nrd,nwr和nintr信號。圖13.4給出了該模塊的控制信號時序(sh x)關系。共四十三頁第13章 數字(shz)電壓表設計-控制模塊結構 2、顯示(xinsh)控制模塊 顯示控制模塊產生LED

6、顯示所需要的LED選擇信號和LED數碼控制信號。 3、采樣時鐘生成模塊 采樣時鐘生成模塊對外部輸入的1MHz信號進行分頻后,為ADC0809產生合適的采樣時鐘信號。 4、掃描時鐘生成模塊 掃描時鐘生成模塊對外部輸入的1MHz信號進行分頻后,為LED正確顯示測量值產生合適的掃描時鐘信號。共四十三頁第13章 數字電壓表設計-主要控制信號(xnho)說明 1、START是轉換(zhunhun)啟動信號,高電平有效; 2、ALE是3位通道選擇地址(ADDC、ADDB、ADDA)信號的鎖存信號。當模擬量送至某一輸入端(如IN1或IN2等),由3位地址信號選擇,而地址信號由ALE鎖存; 共四十三頁第13章

7、 數字電壓表設計-主要控制信號(xnho)說明 3、EOC是轉換情況狀態信號,當啟動轉換約100us后,EOC產生一個負脈沖,以示轉換結束;在EOC的上升沿后,若使輸出使能信號OE為高電平,則控制打開三態緩沖器,把轉換好的8位數據結果(ji gu)輸出至數據總線。至此ADC0809的一次轉換結束了。 共四十三頁第13章 數字電壓表設計-控制(kngzh)時序說明共四十三頁第13章 數字電壓表設計-實驗(shyn)箱控制信號 在實驗儀器中CS與WR相與后接在了ALE和START端,CS與RD相與后接在了OE端,通過對時序和電路的綜合考慮,建議使用如下(rxi)的AD控制時序。共四十三頁第13章

8、數字(shz)電壓表設計-FSM的設計 可以將整個控制分成4個步驟狀態:S0、S1、S2、S3,各狀態的動作方式如下: 1、狀態S0:CS=1、WR=1、RD=0(由控制器發出信號要求ADC0809開始進行模/數信號的轉換)。 2、狀態S1:CS=0、WR=0、RD=0 (ADC0809進行轉換動作,轉換完畢后INT將低電位(din wi)升至高電位(din wi)。 3、狀態S2: CS=1、WR=0、RD=1(由控制器發出信號以讀取ADC0809的轉換數據)。 4、狀態S3: CS=0、WR=0、RD=0(由控制器讀取數據總線上的數字轉換數據)。共四十三頁第13章 數字(shz)電壓表設計

9、-FSM的狀態圖描述S1S2S3S4共四十三頁第13章 數字(shz)電壓表設計-FSM的設計 由上述的四個狀態(zhungti)可以歸納出整個控制器的動作功能有: 1、負責在每個步驟送出所需的CS、WR、RD控制信號。 2、在狀態S1時,監控INT信號是否由低變高,如此以便了解轉換動作結束與否。 3、在狀態S3,讀取轉換的數字量。共四十三頁第13章 數字(shz)電壓表設計-編碼轉換電路 計算(j sun)轉換后的數字電壓信號與BCD碼的對應關系: 對8位的ADC0809而言,它的輸出準位共有2*8=256種,即它的分辨率是1/256。 VIN= 輸入到 ADC0808的電壓 Vfs= 滿量

10、程電壓 VZ= 0電壓 DX= 輸出的數字量 DMAX= 最大數字量 DMIN= 最小數字量 共四十三頁第13章 數字電壓表設計(shj)-編碼轉換電路 假設輸入信號為05V電壓(diny)范圍,參考電壓(diny)(Vref/2)為2.56V時,則它最小輸出電壓是5V/256=0.01953V,這代表ADC0809所能轉換的最小電壓值,我們在該實驗中取最小電壓準位為0.02V。當ADC0809收到的信號是01110110(76H),則其對應的電壓值為: 76H0.02V = 2.36V共四十三頁第13章 數字電壓表設計-編碼轉換(zhunhun)電路 要實現電壓(diny)值與BCD碼的對應

11、關系用多種方法(如查表法、比較法等)。查表法需要寫大量的數據,比較麻煩,在示例程序中使用了比較法。共四十三頁第13章 數字(shz)電壓表設計-具體算法例如:10100101表示(biosh)165*2=330=101001010165/255*5=3.26,用三個七段數碼管顯示,分離3 2 6 =0011 ,0010,0110將1010高四位,0101低四位分離.0101表示0000,0000,1010, BCD碼11010表示0010,1100,0000, BCD碼2下面就是BCD碼1+BCD碼2共四十三頁第13章 數字(shz)電壓表設計-具體算法 0000,0000,1010 + 00

12、10,1100,0000, 0010,1100,1010 0000,0011,0000 比如:9+1=10, 6+7=13, BCD碼的加法實際上就是10進制的加法 判斷: 由于BCD碼顯示0-9,所以加法運算要符合(fh)BCD碼的運算 當9時,BCD+6,并且+1進位 否則9,BCD=BCD+1共四十三頁第13章 數字電壓表設計(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章 數字電壓表設計(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章 數字電壓表設計(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章 數字電壓表設計(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章 數字(shz)電壓表設計-程序包的設計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章 數字(shz)電壓表設計-程序包的設計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章 數字電壓表設計(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章 數字(shz)電壓表設計-頂層模塊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章 數字(shz)電壓表設計-頂層模塊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章 數字電壓表設計(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章 數字電壓表設計(shj)-頂層模塊Inst_disp_controller1:disp_controllerport map(rst=rst,scan_clk=clk,din=d,sel =sel,seg =seg,dp =dp);end Behavioral;共四十三頁第13章 數字(shz)電壓表設計-頂層約束 該設計在基于xilinx的SPARTAN3的xc3s400pqg208-4c器件上實現,在百科融創的EDA-IV實驗平臺上測試完成,在驗證前,要進行設計約束,在這里只對管腳進行約束。該約束文件的格式是Xilinx的用戶約束文件UCF的格式。采用(ciyng)不同的EDA平臺時,需要使用不同的用戶約束文件格式。下面的約束僅供讀者參考。共四十三頁第13章 數字電壓表設計-頂層(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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論