【正文】
從仿真波形圖 31中可以看出, ADC0804 的控制信號的波形滿足其工作時序要求: CS/=WR/=0, RD/=1,啟動 ADC0804 進行模數(shù)轉(zhuǎn)換工作; CS/=WR/=RD/=1, ADC0804 進行轉(zhuǎn)換動作, int 下降沿表示轉(zhuǎn)換完成,進入下一狀態(tài); CS/=RD/=0,WR/=1,請求讀取轉(zhuǎn)換后數(shù)據(jù);讀取數(shù)據(jù)線 DB0~ DB7 上的數(shù)據(jù),置 CS/=WR/=RD/=1。 3 位電壓值需要 3 個 LED 數(shù)碼管顯示,為了節(jié)省資源,采用動態(tài)掃描顯示方式,掃描始終由系統(tǒng)時鐘 clk 提供,其頻率應(yīng)大于 100Hz,否則會有閃爍現(xiàn)象。V o l t a g e ( 1 1 d o w n t o 8 ) = d a t a _ s u m ( 1 1 d o w n t o 8 ) + 1 。V o l t a g e ( 1 1 d o w n t o 8 ) = d a t a _ s u m ( 1 1 d o w n t o 8 ) + 1 。D a t a _ s u m ( 7 d o w n t o 4 ) = ” 1 0 0 1 ”V o l t a g e ( 7 d o w n t o 4 ) = d a t a _ s u m ( 7 d o w n t o 4 ) + ” 0 1 1 0 ” + 1 。 最終的電壓值 data_sum 應(yīng)為: data_sum=data_l+data_h,此電壓值需要進行 BCD 碼的調(diào)整,轉(zhuǎn)換原理如 節(jié)關(guān)于查表法原理的論述:大于 9的四位二進制碼加 6 調(diào)整為對應(yīng)的BCD 碼。 U1:lpm_rom0 port map(address=address_l+1,clock=qclk,q=data_l(7 downto 畢業(yè)設(shè)計(論文) 數(shù)字電壓表 16 0))。 clock :in std_logic。 查表法進行數(shù)據(jù)處理模塊的設(shè)計 若采用查表法進行數(shù)據(jù)處理模塊的設(shè)計,可以減少 FPGA 邏輯單元的資源占用率,利用FPGA 內(nèi)部的 ROM 空間進行表格數(shù)據(jù)的存儲。 被除數(shù) quotient:out std_logic_vector(8 downto 0)。 通過在 Quartus II 下調(diào)用 megafunction/arithmetic 下的 divide 除法宏函數(shù),可生成除法元件。 s3 狀態(tài),讀取轉(zhuǎn)換數(shù)據(jù) end case。wr=’ 1’ 。wr=’ 1’ 。 s1 狀態(tài), ADC08004 進行 A/D 轉(zhuǎn)換 if qint’ event’ and qint=’ 0’ then 等待轉(zhuǎn)換結(jié)束信號 qint sta=s2。sta=s1。 若使用 sta 作為狀態(tài)變量,則狀態(tài)機的部分 VHDL 程序如下。 ( 2) 置 CS/=WR/=RD/=1,此時 ADC0804 進行轉(zhuǎn)換動作,轉(zhuǎn)換時間 100us,INTR/下降沿表示轉(zhuǎn)換完成,進入下一狀態(tài)。 ( 2) 計算法的設(shè)計思路如下:由表 21可知,如果將轉(zhuǎn)換后的高、低四位字節(jié)數(shù)據(jù)看作是一個 8位二進制數(shù)的話,電壓值與轉(zhuǎn)換后的數(shù)據(jù)之間有一個 2倍的關(guān)系(不考慮小數(shù)點),假設(shè)轉(zhuǎn)換后的數(shù)據(jù)為“ 11011110”,“ 11011110”對應(yīng)的十進制數(shù)為 222,222 2=444,與“ 11011110”對應(yīng)的 電壓值相等,而十進制數(shù)的顯示可以通過對 10 取模和取余數(shù)的方法一次獲得個位、十位、百位,分別顯示即可,顯示時需要在最高位后加一個小數(shù)點 顯示。由于 BCD 碼表示范圍為 0~ 9,所以當(dāng)運算結(jié)果大于 9 時必須進行十進制的調(diào)整,所謂十進制調(diào)整,根據(jù)已知數(shù)字邏輯原理就是將運算結(jié)果加 0110( 6)進行修正,如圖 15 所示,程序設(shè)計時,需要注意判斷兩個數(shù)的和是否大于 “ 9”。若將電壓數(shù)值的每一位用 4位 BCD 碼表示(不考慮小數(shù)點),則可得表 21 所示的高四位 BCD 碼和低四位 BCD 碼。 tWItW ( WR ) L( a )c sW RI N TRC SR DN O T EI N T R R E S E TT H R E E S T A T ED A T AO U T P U T StI H、 tO H( b )tR ItA C C 圖 23 ADC0804 的時序圖 ( a)啟動轉(zhuǎn)換時序圖; ( b)讀取轉(zhuǎn)換數(shù)據(jù)時序圖 畢業(yè)設(shè)計(論文) 數(shù)字電壓表 12 數(shù)據(jù)處理及顯示單元 FPGA 芯片負責(zé) ADC0804A/D 轉(zhuǎn)換過程的啟動以及轉(zhuǎn)換數(shù)據(jù)的讀取。 1234567891 91 71 61 51 41 31 21 82 01 0 1 1D N P A C K A G E SC SR DW RC L K I NI N T RVI N ( + )VI N ( )A G N DVR E F / 2D G N DD 7D 6D 5D 4D 3D 2D 1D 0C L K RV C C. 圖 22ADC0804 引腳圖 其中 VIN(+)、 VIN()為 ADC0804 的模擬信號輸入端,用以接受單極性、雙極性或差模輸入信號; D0~ D7為 A/D 轉(zhuǎn)換器數(shù)字信號輸出端, CLK IN 外電路提供的時鐘脈沖輸入端,頻率限制在 100kHz~ 1460kHz; CLKR 為內(nèi)部時鐘發(fā)生器外接電阻端,與 CLK IN 端配合可由芯片自身產(chǎn)生時鐘脈沖,頻率為 1/。設(shè)計要求利用 ADC0804 模數(shù)轉(zhuǎn)換器, FPGA 作為數(shù)據(jù)處理的核心器件,用 LED 數(shù)碼管進行電壓值的顯示。 設(shè)計原理 數(shù)字電壓 表( Digital Voltmeter)簡稱 DVM,是一種用數(shù)字顯示的測量儀表。 在設(shè)計過程中,如果出現(xiàn)錯誤,則需要重新回到設(shè)計輸入階段,改正錯誤或調(diào)整電路后畢業(yè)設(shè)計(論文) 數(shù)字電壓表 9 重復(fù)上述過程。 QUARTUSⅡ提供的編譯軟件,只需簡單的操作,如參數(shù)選擇、指定功能等,就可 進行網(wǎng)表轉(zhuǎn)換、邏輯分割和布線布局。另外,還可以利用第三方 EDA 工具生成的網(wǎng)表文件輸入,該軟件可接受的網(wǎng)表有 EDIF 格式、 VHDL 格式及 Verilog 格式。 QUARTUSⅡ 提供豐富的庫單元供設(shè)計者調(diào)用,其中包括一些基本的邏輯單元, 74 系列的器件和多種特定功能的宏功能模塊以及參數(shù)化的兆功能模塊。 QUARTUSⅡ開發(fā)系統(tǒng)的核心 —— Compiler(編譯器 )能夠自動完成邏輯綜合和優(yōu)化,它支持 Altera 的 Classic、 MAX7000、 FLEX8000 和 FLEX10K 等可編程器件系列,提供一個與結(jié)構(gòu)無關(guān)的 PLD 開發(fā)環(huán)境。目前 QUARTUSⅡ所支持的主流第三方 EDA 工具主要有 Synopsys、 Viewlogic、 Mentor、 Graphics、 Cadence、 OrCAD、 Xilinx 等公司提供的工具。 (1) 多平臺。 QUARTUSⅡ 軟件簡介 QUARTUSⅡ( Multiple Array and Programming Logic User System)開發(fā)工具是 Altera公司推出的一種 EDA 工具, 具有靈活高效、使用便捷和易學(xué)易用等特點。 ,目標(biāo)市場明確,價格較高的 FPGA。xilinx 的系統(tǒng)級設(shè)計工具是 EDK 和 platform studio, Lattice 的嵌入式 DSP 開發(fā)工具是MATLAB 的 simulink。 FPGA 內(nèi)部根據(jù)工藝、長度、寬度和分布位置的不同而被劃分為不同的等級,有一些是專用布線資源,用以完成器件內(nèi)部的全局時鐘和全局復(fù)位 /置位的布線;一些叫長線資源,用于完成器件 Bank 間的一些高速信號和一些第二全局時鐘信號(有時也被稱為 Low Skew 信號)的布線;還有一些短線資源,用以完成基本邏輯單元之間的邏輯互聯(lián)與布線;另外,在基本邏輯單元內(nèi)部還有著各式各樣的布線資源和專用時鐘、復(fù)位等控制信號線。 不同器件商或不同器件族的內(nèi)嵌塊 RAM 的結(jié)構(gòu)不同。 Lattic 的底層邏輯單元叫 PFU( programmable function Unit),由 8 個 LUT 和 8~9 個 register 構(gòu)成。一般,比較 經(jīng)典的基本可編程單元的配置是一個寄存器加一個查找表,但是不同廠商的寄存器和查找表的內(nèi)部結(jié)構(gòu)有一定差異,而且寄存器和查找表的組合模式也不同。 FPGA 一般是基于 SRAM 工藝的,其基本可編程邏輯單元幾乎都是由查找表( LUT, look up table)和寄存器( register)組成的。 ( 1) 可編程輸入 /輸出單元( input / output 單元) 完成不同電氣特性下對輸入 /輸出信號的驅(qū)動與匹配需求。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。 VHDL 系統(tǒng)優(yōu)勢 (1) 與其他的硬件描述語言相比, VHDL 具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。 (3) 配置 用于從庫中選取 不同單元(器件)來組成系統(tǒng)設(shè)計的不同版本。這些模塊可以預(yù)先設(shè)計或者使用以前設(shè)計中的存檔模塊,將這些模塊存放在庫中,就可以在以后的設(shè)計中進行復(fù)用。這樣做的好處是可以使設(shè)計人員集中精力進行電路設(shè)計的優(yōu)化,而不需要考慮其他的問題。 VHDL 語言的強大描述能力還體現(xiàn)在它具有豐富的數(shù)據(jù)類型。 VHDL 語言設(shè)計方法靈活多樣 , 既支持自頂向下的設(shè)計方式 , 也支持自底向上的設(shè)計方法 。 VHDL 語言能夠成為標(biāo)準(zhǔn)化的硬件描述語言并獲得廣泛應(yīng)用 , 它自身必然具有很多其他硬件描述語言所不具畢業(yè)設(shè)計(論文) 數(shù)字電壓表 5 備的優(yōu)點。 VHDL 簡介 簡介 VHDL 主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。高速度表現(xiàn)在其時鐘延時可小至納秒級,結(jié)合并行工作方式,在超高速應(yīng)用領(lǐng)域和實時測控方面有著非常廣闊的應(yīng)用前景;其高可靠性和高集成度表現(xiàn)在幾乎可將整個系統(tǒng)集成于同一芯片中,實現(xiàn)所謂片上系統(tǒng)( System on a Chip,SoC) ,指的就是以嵌入式系統(tǒng)為核心,集軟、硬件于一體,并追求產(chǎn)品系統(tǒng)最大包容的集成芯片。它不僅速度快、集成度高,能夠完 成用戶定義的邏輯功能,還可以加密和重新定義編程,其允許編程次數(shù)可多達上萬次。目前 HDL 主要有兩種: Verilog HDL 和 VHDL。通常要求 HDL 既能描述系統(tǒng)的行為,又能描述系統(tǒng)的結(jié)構(gòu)。 ( 6) 具有較好的人機對話界面與標(biāo)準(zhǔn)的 CAM 接口。它們均支持不同層次的描述,使得復(fù)雜 IC 的描述規(guī)范化,便于傳遞、交流、保存與修改,并可建立獨立的工藝設(shè)計文檔,便于設(shè)計重用。 ( 2) 利用 VHDL 完成對 CPLD/FPGA 的開發(fā)等作為中級內(nèi)容。狹義的 EDA 技術(shù)或稱為 IES/ASIC 自動設(shè)計技術(shù),通過使用有關(guān)的開發(fā)軟件,自動完成電子系統(tǒng)設(shè)計的邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合和優(yōu)化、邏輯布局布線、邏輯仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S?集成芯片。智能化的 DVM 為實現(xiàn)各種物理量的動態(tài)測量提供了可能。與此同時對積分方 案進行了改進和提高,出現(xiàn)了如 Dana 公司的 6900 型( 7 位)、 Solartron 公司生產(chǎn)的 7075 型( 8 位),其準(zhǔn)確度可達到百萬分之幾。 1952 年,第一臺問世的數(shù)字電壓表是采用電子管的伺服比較式; 1956 年出現(xiàn)諧波式 V/T(電壓 /時間變換型 ); 1961 年