具有FIFO的AD采樣控制電路設(shè)計_第1頁
具有FIFO的AD采樣控制電路設(shè)計_第2頁
具有FIFO的AD采樣控制電路設(shè)計_第3頁
具有FIFO的AD采樣控制電路設(shè)計_第4頁
具有FIFO的AD采樣控制電路設(shè)計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-5"\h\z\o"CurrentDocument"一、 概述 2A/D轉(zhuǎn)換的基本概念 21.2有限狀態(tài)機的基本概念 2\o"CurrentDocument"二、 設(shè)計方案 32.1具有FIFO的A/D控制設(shè)計方法 32.2用狀態(tài)機來控制A/D采樣 42.3利用LPM函數(shù)來生成FIFO 52.42選1控制電路的設(shè)計 72.5頂層模塊及元件例化的調(diào)用 7\o"CurrentDocument"三、 結(jié)果與分析 8ADC0809的仿真波形分析 82選1仿真波形的分析 8FIFO仿真波形的分析 9四、 結(jié)論與心得 9\o"CurrentDocument"五、 附錄 10附錄一ADC0809采樣控制程序 10附錄二2選1控制選擇器 11附錄三頂層模塊 11附錄四總的實驗程序 13一、概述1.1A/D轉(zhuǎn)換的基本概念隨著數(shù)字技術(shù)飛速發(fā)展與普及,在現(xiàn)代控制、通信及檢測等領(lǐng)域,為了提高系統(tǒng)的性能指標(biāo),對信號的處理廣泛采用了數(shù)字技術(shù)。由于系統(tǒng)的實際對象往往都是一些模擬量(如溫度、壓力、位移、圖像等),要使系統(tǒng)能識別和處理這些信號,必須將這些模擬信號轉(zhuǎn)換成數(shù)字信號;這樣,就需要一種能在模擬信號與數(shù)字信號之間起橋梁作用的電路-A/D轉(zhuǎn)換器。將模擬信號轉(zhuǎn)換成數(shù)字信號的電路,稱為模數(shù)轉(zhuǎn)換器(簡稱A/D轉(zhuǎn)換器);A/D轉(zhuǎn)換器已成為信息系統(tǒng)中不可缺少的接口電路。為確保系統(tǒng)處理結(jié)果的精確度,A/D轉(zhuǎn)換器必須具有足夠的轉(zhuǎn)換精度;如果要實現(xiàn)快速變化信號的實時控制與檢測,A/D轉(zhuǎn)換器還要求具有較高的轉(zhuǎn)換速度。轉(zhuǎn)換精度與轉(zhuǎn)換速度是衡量A/D轉(zhuǎn)換器的重要技術(shù)指標(biāo)。此次課程設(shè)計則是利用ADC0809來進(jìn)行A/D轉(zhuǎn)換,并將轉(zhuǎn)換好的數(shù)據(jù)鎖存到FIFO中,通過外部按鍵控制FIFO寫入和讀出數(shù)據(jù)。1.2有限狀態(tài)機的基本概念有限狀態(tài)機又稱有限狀態(tài)自動機或簡稱狀態(tài)機,是表示有限個狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學(xué)模型。狀態(tài)機分成兩大類:Melay型和Moore型狀態(tài)機;Melay型狀態(tài)機的輸出是當(dāng)前狀態(tài)和所有輸入信號的函數(shù)。其輸出是輸入變化后立即發(fā)生變化。Moore型的輸出僅是當(dāng)前狀態(tài)的函數(shù)。其在輸入發(fā)生變化后,還需等待時鐘的到來,只有時鐘使?fàn)顟B(tài)發(fā)生變化才導(dǎo)致輸出變化。因此要多等待一個時鐘周期。在運用狀態(tài)機時,首先要自定義數(shù)據(jù)類型,然后再通過說明部分、主控時序進(jìn)程、主控組合進(jìn)程以及輔助進(jìn)程來實現(xiàn)所需實現(xiàn)的功能。說明部分中有新數(shù)據(jù)類型TYPE的定義及其狀態(tài)類型以及在此新類型下定義的狀態(tài)變量。狀態(tài)變量應(yīng)該定義為信號,便于信息傳遞。而主控時序進(jìn)程則是一個對工作時鐘信號敏感的進(jìn)程,該進(jìn)程作為狀態(tài)機的“驅(qū)動泵”,當(dāng)時鐘發(fā)生有效跳變時,狀態(tài)機狀態(tài)才發(fā)生變化。主控組合進(jìn)程的任務(wù)是根據(jù)控制信號或(和)當(dāng)前狀態(tài)的狀態(tài)值確定下一狀態(tài)next_state的取向,即next_state的取值內(nèi)容,以及確定對外輸出或?qū)?nèi)部

其它組合或時序進(jìn)程輸出控制信號的內(nèi)容。輔助進(jìn)程則是用于對其他電路功能的控制及實現(xiàn)。二、設(shè)計方案2.1具有FIFO的A/D控制設(shè)計方法本課程的設(shè)計要求:1、 用FPGA對ADC0809進(jìn)行控制使之完成對輸入信號的采樣,控制電路應(yīng)該輸出啟動信號,通道選擇地址信號的鎖存信號,檢測ADC0809的轉(zhuǎn)換情況狀態(tài)信號EOC,輸出使能信號OE,讀入轉(zhuǎn)換結(jié)果,存入FIFO中。2、 FIFO中的數(shù)據(jù)可以在外界信號的控制下讀出,結(jié)果在LED數(shù)碼管中顯示3、 ADC0809和LED數(shù)碼管由GW48-PK2系統(tǒng)提供。4、 FIFO可以利用LPM函數(shù)實現(xiàn)。要將ADC0809轉(zhuǎn)換好的轉(zhuǎn)換好的數(shù)字信號鎖存入FIFO中,因此電路中必然包括FIFO存儲器。同時,還要通過一個2選1的選擇器,來選擇FIFO的寫使能端Wrreq以及讀使能端Rdreq的時鐘脈沖,并通過外部按鍵的控制信號來控制FIFO中的數(shù)據(jù)寫入及讀出,通過數(shù)碼管顯示出轉(zhuǎn)換好的數(shù)據(jù)?;谶@一思路,設(shè)計出的電路圖如圖一所示圖一cEZ>QT~~弛cEZ>QT~~弛>h—I

2.2用狀態(tài)機來控制A/D采樣ADC0809為單極性輸入、8位轉(zhuǎn)換精度、逐級逼進(jìn)式A/D轉(zhuǎn)換器,其采樣速度為每次轉(zhuǎn)換約100us,它的各引腳功能和工作時序如圖二所示圖二STARTALE廠—轉(zhuǎn)換結(jié)束7-口] STARTALE廠—轉(zhuǎn)換結(jié)束7-口] TH7E1 XDATAXSL1山or言ECI8ESLu_l<oan_<o蘭援一nADC0809-gQbzodo>工—loLJJO寸口OQ山HQr<l-sIN一芝翌芝有8個模擬信號輸入通道,IN0-IN7;由ADDA、ADDB、ADDC作為此8路通道的選擇地址,在轉(zhuǎn)換開始前由地址鎖存允許信號ALE將此3位地址鎖入鎖存器中,以確定轉(zhuǎn)換信號通道;EOC為轉(zhuǎn)換結(jié)束狀態(tài)信號,由低電平轉(zhuǎn)為高電平時指示轉(zhuǎn)換結(jié)束,此時可讀入轉(zhuǎn)換好的8位數(shù)據(jù)。EOC在低電平時,指示正在進(jìn)行轉(zhuǎn)換:START為轉(zhuǎn)換啟動信號,上升沿啟動;OE為數(shù)據(jù)輸出允許,高電平有效;CLK為ADC轉(zhuǎn)換時鐘輸入端口,為了達(dá)到A/D器件的最高轉(zhuǎn)換速度,A/D轉(zhuǎn)換控制器必須包含監(jiān)視EOC信號的邏輯,一旦EOC從低電平變?yōu)楦唠娖?,即可將OE置為高電平,然后傳送已經(jīng)轉(zhuǎn)換好的數(shù)據(jù)到FIFO中。用Moore型有限狀態(tài)機控制ADC0809采樣的狀態(tài)圖如圖三所示-K.U--IIOC;-K.U--IIOC;K1T1■:MJ-沖itin燦J居由狀態(tài)圖可知:sto為對0809的初始化;當(dāng)start為1時開始進(jìn)行A/D轉(zhuǎn)換,進(jìn)入st1狀態(tài);在st2中對EOC信號進(jìn)行檢測,若為EOC為0,則繼續(xù)轉(zhuǎn)換,若為1表示轉(zhuǎn)換結(jié)束,轉(zhuǎn)入st3。此時OE為1,則轉(zhuǎn)入st4,并在lock為高電平時將轉(zhuǎn)換好的數(shù)據(jù)鎖存入FIFO中;根據(jù)狀態(tài)圖可得到采樣狀態(tài)機的結(jié)構(gòu)框圖,如圖四所示

圖四FP<;A:ISPIK3OTC狀志機J$Md苞寸以佶號*I圖四FP<;A:ISPIK3OTC狀志機J$Md苞寸以佶號*I入…OJ采杵數(shù)握輻由丹/DH作明忡clk-750KHzGLK 供國機H作時甜JPROCESS

K_EO

日寸序進(jìn)未呈PROCESS

■COK1

絆l合:ilEF早LuAuTOM.ADC0809ALESTAR!OtLADDAIkEOCDI7?m0J由狀態(tài)圖及結(jié)構(gòu)框圖可以用Vhdl編寫程序?qū)DC0809進(jìn)行控制,編寫的程序如附錄一所示;2.3利用LPM函數(shù)來生成FIFOLPM是參數(shù)可設(shè)置模塊庫的英語縮寫(LibraryofParameterizedModules)。庫中模塊可以用圖形或硬件描述語言的形式調(diào)用。設(shè)計者根據(jù)實際電路需要,選擇LPM庫中,合適模塊,適當(dāng)設(shè)定參數(shù),就可以十分方便的使用優(yōu)秀電子工程技術(shù)人員的設(shè)計成果。使設(shè)計的可靠性和效率有很大提高。FIFO可以利用LPM函數(shù)來定制生成,其定制過程如下所示:QuaitujiII D:/al1?ra/riEn-B-SI/vork6/trrt.fife2/tArt_fif?2finJw封*Ip口■口■J? 噂|S?LEDASlbjj1i13raiT-nlRnriTiHi'ncJL7iiil>FcakThITeiqI曲hiM*rT#?l/Ffrrwn^監(jiān)TeiqI曲hiM*rT#?l/Ffrrwn^監(jiān)11¥上包TvAh-baPZ-^iL*t登HTLElh"?5 "ifTiiW”Q沁VL-Sbafit冒5扯tBSapiiiTi^n 柯IT"*?■Irr跖tH?Efgf史Version5,1Cn&taaiQpHws:.IIinfbrrnitlipn,一Hlfhmom—adltllk.@to 1"WwiQi:岳ehb日—I 11rati■eK^Iltkaalauww,一Hlfhmom—adltllk.@to 1"WwiQi:岳ehb日—I 11rati■eK^Iltkaalauww:“X^rlLi%|*|>1^卜,■—,b^i|^mbmFmiL—ITC?I——VIIOI-「 V?i->?||>aHL3Lr■=■v--1v**

心mrrmr

」QQQQQJ!

血-HA合日云

-目-d豈H「oQomi^iyrorr^iMiora偵口0ooNlILv,?*!ri-->4Qi■is石旦日土■心卜-|i'll**n-i!_i<itbali--i■:!--■* uilr—uimry*薩tl-i* i_i**rE?oyouwanlacommon*dockForrwadingandwritingtiTUFIFOP€?,■V.?,r■vr-icHroniKHtoE-tl-i■-■■dlridandwri-Briqts'drack*.Ui~■■七■=m?■■七of-FLill/Mm^tv>=orictrci|C.P-JQj■v*-ici-irc!niXMrH?^ir~iQ?riHwvritjpiqto!r^dk1 'w^rclk*rlespectjvelv.Createaset-ofTull/cmptycontiolsignalsToreachclock.U.r*iu.?11宅QriHtck11r^l.ac I\Qmi?Fi—心口thaFIFOclocks■cs/ruhFEirMMiscI'? Mo?-H-ieclocksarenotsvncltronlzcd.addlat)enc^tohandleunrel-aled{=ioi=,k:H.V?Hj.i±*i?ciacks .yrnicHr1 me*t clack,M-^rr-id-irDrilXMlaar-iI■七■!"!)=*.Cb-JaEh:UIduIchEi_i?k ■宇rnuHr口liijc?T n-iiwQvrnnultlplesofeacJ-iothei-.)TPb?七5*.心頊.,pkainfcbrr.,■■■Mel^ahATlviim>ol-ohdckbcMAab?imwnbAiaa『「■!在FIFO的定制過程中,還可以定義FIFO中存放8位字節(jié)數(shù)的個數(shù)。2.42選1控制電路的設(shè)計可以通過2選1控制電路對生成的FIFO進(jìn)行控制,通過外加的信號來控制FIFO的讀和寫。2選1的電路圖如圖五所示圖五>y其中圖五>y其中a為輸出鎖存信號lock0的輸入端,b為FIFO的讀時鐘信號Rdclock輸入端,可用key4來改變其輸入數(shù)據(jù);S為2選1的控制端,可用key5來改變其輸入信號,當(dāng)S為低電平時,y輸出a,即lock0(lock0為FIFO的寫時鐘信號)。當(dāng)S為高電平時,輸出b,即Rdclocko用Vhdl編寫的2選1控制電路的實驗程序如附錄二所示;2.5頂層模塊及元件例化的調(diào)用元件例化就是將以前設(shè)計的實體作為當(dāng)前設(shè)計的一個元件,然后用Vhdl語句將元件與當(dāng)前設(shè)計之間的連接關(guān)系通過頂層模塊描述出來。元件例化元件由兩部分組成:1.元件定義,即將已有的設(shè)計定義為當(dāng)前設(shè)計的元件;2.元件與當(dāng)前設(shè)計的連接關(guān)系映射語句;--元件定義語句:component元件名isgeneric(類屬表);port(端口名表);endcomponent文件名;--元件例化語句例化名:元件名portmap([端口名=>]連接端口名,......);因此,在頂層模塊的編寫時,可以應(yīng)用這種格式來調(diào)用各例化的元件,通過頂層模塊將各元件組合起來,構(gòu)成實驗所需的電路圖。頂層模塊的編寫如附錄三所示。三、結(jié)果與分析3.1ADC0809的仿真波形分析ADC0809的采樣狀態(tài)機工作時序如圖六所示圖六由時序圖可知:當(dāng)START由低電平變?yōu)楦唠娖綍r開始進(jìn)行轉(zhuǎn)換,EOC為1時表示轉(zhuǎn)換結(jié)束,此時OE也由低電平變?yōu)楦唠娖?,此時允許輸出轉(zhuǎn)換好的數(shù)據(jù)。當(dāng)Lock0變?yōu)楦唠娖?,將轉(zhuǎn)換好的數(shù)據(jù)鎖存入FIFO中。此過程結(jié)束后,又開始新一輪的轉(zhuǎn)換過程。3?22選1仿真波形的分析2選1控制選擇器的仿真波形如圖七所示圖七&豚?砥虹| 1危血 ^Plitaf 2帽He眥 417.5lra 宜| EntA堇Ibe1n用』跪fi.Ou 9].0u 1皿[|凹]ED.[U扯L9].0u 291.0112?.Om卸』心291Dul如心j i i i i i i i i i i i i i i i i131.1asriI5TBDBDBDBD 1 l_茵*i= 1 1 1 i當(dāng)控制端S為低電平時輸出a,即lock0信號,此信號用于FIFO的clock端,即在lock0由低電平轉(zhuǎn)變?yōu)楦唠娖綍r,將轉(zhuǎn)換好的數(shù)據(jù)鎖存入FIFO中,此時要求FIFO的寫使能端有效,即為高電平。當(dāng)控制端S為高電平時輸出b,即Rdclock,此信號也是用于FIFO的clock端,

即在Rdclock發(fā)生跳變時,讀出FIFO中存放的數(shù)據(jù),顯示在數(shù)碼管上,此時也要求FIFO的讀使能端有效。3.3FIFO仿真波形的分析FIFO存儲器的仿真波形如圖八所示血眥milsfflOu眥扣皿115如FIFO存儲器的仿真波形如圖八所示血眥milsfflOu眥扣皿115如15州15洲腥皿血3ED1S2015即禎皿困膈Ml說伽血3Ois削血恥"I IIIIIIIII IIIIIIMVnnnnMMWwwwnnmwww^更笠如度BEEEilS垂陞H亟?ESES(更2;蘭買EM垂:叵至空H 噩 M由圖可知,aclr必須保持低電平,才可以對FIFO進(jìn)行讀寫,否則FIFO里的數(shù)據(jù)恒為0。當(dāng)wrreq為高電平,寫使能端有效,即在clock的時鐘上升沿時允許數(shù)據(jù)寫入FIFO中。wrreq為低電平,數(shù)據(jù)不能寫入FIFO。當(dāng)rdreq為高電平時,讀使能端有效,即在clock的時鐘上升沿時允許數(shù)據(jù)從FIFO中讀出。而rdreq為低電平時,數(shù)據(jù)不能從FIFO中讀出。結(jié)論與心得五、附錄附錄一ADC0809采樣控制程序libraryieee;useieee.std_logic_1164.all;entityadcisport(d:instd_logic_vector(7downto0);--0809的數(shù)據(jù)輸入clk:instd_logic; --clk為采樣控制時鐘信號eoc:instd_logic; --eoc為ADC0809轉(zhuǎn)換狀態(tài)信號ale:outstd_logic; --ale為通道選擇地址鎖存信號start:out std_logic; --start為轉(zhuǎn)換啟動信號oe:out std_logic; --oe為輸出使能信號adda:out std_logic; --adda為通道選擇低位地址lock0:out std_logic; --觀察數(shù)據(jù)鎖存時鐘qq:outstd_logic_vector(7downto0));--變換數(shù)據(jù)顯示輸出endentityadc;architecturebehavofadcistypestatesis(s0,s1,s2,s3,s4);--定義各狀態(tài)signalcurrent_state,next_state:states:=s0;signalreal :std_logic_vector(7downto0);--中間數(shù)據(jù)信號signallock :std_logic;--轉(zhuǎn)換后的數(shù)據(jù)輸出鎖存時鐘信號beginadda<='0';--當(dāng)adda<='0',模擬信號進(jìn)入IN0,當(dāng)adda<='1',則進(jìn)入IN1lock0<=lock;qq<=real;com:process(current_state,eoc)begin--規(guī)定各個狀態(tài)轉(zhuǎn)換方式,組合進(jìn)程casecurrent_stateiswhens0=>ale<='0';start<='0';oe<='0';lock<='0';next_state<=s1;--初始態(tài)s0向下一狀態(tài)s1轉(zhuǎn)換,0809采樣控制信號初始化whens1=>ale<=T';start<=T';oe<='0';lock<='0';next_state<=s2;--start=1則轉(zhuǎn)換whens2=>ale<='0';start<='0';oe<='0';lock<='0';if(eoc='1')thennext_state<=s3;--eoc=1表明轉(zhuǎn)換結(jié)束elsenext_state<=s2; --eoc=0繼續(xù)等待轉(zhuǎn)換endif;whens3=>ale<='0';start<='0';oe<=T';lock<='0';next_state<=s4;--開啟oe,輸出轉(zhuǎn)換好的數(shù)據(jù)whens4=>ale<='0';start<='0';oe<=T';lock<=T';next_state<=s0;whenothers=>next_state<=s0;endcase;endprocesscom;reg:process(clk) --時序進(jìn)程beginif(clk'eventandclk='1')thencurrent_state<=next_state;--在時鐘上升沿轉(zhuǎn)換至下一個狀態(tài)endif;endprocessreg;--由時鐘信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程latch:process(lock)--此進(jìn)程中,在lock的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入beginiflock='1'andlock'eventthenreal<=d;endif;endprocesslatch;endbehav;附錄二2選1控制選擇器libraryieee;useieee.std_logic_1164.all;entityerisport(a,b,s:instd_logic;y:outstd_logic);endentityer;architecturertloferissignald,e:std_logic;begind<=aand(nots);e<=band(s);y<=dore;endarchitecturertl;附錄三頂層模塊libraryieee;useieee.std_logic_1164.all;entityadcontrolisport(key1:instd_logic;--key1用于fifo的異步清零aclrkey2:instd_logic;--key2用于控制fifo的rdreqkey3:instd_logic;--key3用于控制fifo的wrreqkey4:instd_logic;--key4在fifo進(jìn)行讀時給我一個手動的脈沖key5:instd_logic;--key5為一一的s端口ma:outstd_logic;--ma用于顯示fifo的full的狀態(tài)mb:outstd_logic;--mb用于顯示fifo的empty的狀態(tài)c:instd_logic;--c對應(yīng)0809的clk信號e:instd_logic;--e對應(yīng)0809的eoc信號

f:outstd_logic;--f對應(yīng)0809的ale信號g:outstd_logic;--g對應(yīng)0809的start信號h:outstd_logic;--h對應(yīng)0809的oe信號j:outstd_logic;--j對應(yīng)0809的adda信號ee:outstd_logic;--ee對應(yīng)lock0信號dd:instd_logic_vector(7downto0);--dd對應(yīng)0809的數(shù)據(jù)輸入qqq:outstd_logic_vector(7downto0));--用于fifo的輸出數(shù)據(jù)顯示endentityadcontrol;architecturertlofadcontroliscomponentadc_fifoport(aclrinstd_logic;clockinstd_logic;datainstd_logic_vector(7downto0);rdreqinstd_logic;wrreqinstd_logic;emptyoutstd_logic;fulloutstd_logic;qoutstd_logic_vector(7downto0))endcomponent;componenterport(a,b,s:instd_logic;y:outstd_logic);endcomponent;componentadcport(d:instd_logic_vector(7downto0);clk:instd_logic;eoc:instd_logic;ale:outstd_logic;start:outstd_logic;oe:outstd_logic;adda:outstd_logic;lock0:outstd_logic;qq:outstd_logic_vector(7downto0))endcomponent;signalkk:std_logic_vector(7downto0);signallock1:std_logic;signallock2:std_logic;beginee<=lock1;ui:erportmap(a=>lock1,b=>key4,s=>key5,y=>lock2);

u2:adc_fifoportmap(aclr=>key1,rdreq=>key2,wrreq=>key3,full=>ma,empty=>mb,q=>qqq,data=>kk,clock=>lock2);u3:adcportmap(clk=>c,eoc=>e,ale=>f,start=>g,oe=>h,adda=>j,lock0=>lock1,qq=>kk,d=>dd);endrtl;附錄四總的實驗程序libraryieee;useieee.std_logic_1164.all;entityadcontrolisport(key1:inkey4:inmb:outf:outlibraryieee;useieee.std_logic_1164.all;entityadcontrolisport(key1:inkey4:inmb:outf:outj:outdd:inqqq:outendentityadcontrol;std_logic;std_logic;std_logic;std_logic;std_logic;key2:inkey5:inc:ing:outee:outstd_logic_vector(7std_logic_vector(7std_logic;key3:instd_logic;std_logic;std_logic;std_logic;downto0);downto0));ma:out

e:in

h:outstd_logic;std_logic;std_logic;std_logic;architecturertlofadcontroliscomponentadc_fifoport(aclr:indata:inrdreq:inempty:outq:outstd_logic;clock:instd_logic;std_logic_vector(7downto0);architecturertlofadcontroliscomponentadc_fifoport(aclr:indata:inrdreq:inempty:outq:outstd_logic;clock:instd_logic;std_logic_vector(7downto0);std_logic;wrreq:instd_logic;std_logic;full:outstd_logic;std_logic_vector(7downto0));endcomponent;componenterport(a,b,componenterport(a,b,s:instd_logic;y:outstd_logic);endcomponent;endcomponent;componentadcport(dclkaleoelock0qqendcomponent;componentadcport(dclkaleoelock0qqendcomponent;:in:in:out:out:out:outstd_logic_vector(7downto0);std_logic;std_logic;std_logic;std_logic;eoc:instart:outadda:outstd_logic;std_logic;std_logic;std_logic_vector(7downto0));signalkk:std_logic_vector(7downto0);signallock1:std_logic;signallock2:std_logic;beginee<=lock1;ui:erportmap(a=>lock1,b=>key4,s=>key5,y=>lock2);u2:adc_fifoportmap(aclr=>key1,rdreq=>key2,wrreq=>key3,full=>ma,empty=>mb,q=>qqq,data=>kk,clock=>lock2);u3:adcportmap(clk=>c,eoc=>e,ale=>f,start=>g,oe=>h,adda=>j,lock0=>lock1,qq=>kk,d=>dd);endrtl;libraryieee;useieee.std_logic_1164.all;entityadcisport(d:instd_logic_vector(7downto0);clk:instd_logic; eoc:in std_logic;ale:outstd_logic; start:out std_logic;oe:outstd_logic; adda:out std_logic;lock0:outstd_logic;qq:outstd_logic_vector(7downto0));endentityadc;architecturebehavofadcistypestatesis(s0,s1,s2,s3,s4);--定義各狀態(tài)signalcurrent_state,next_state:states:=s0;signalreal :std_logic_vector(7downto0);--中間數(shù)據(jù)寄存信號signallock :std_logic;--轉(zhuǎn)換后的數(shù)據(jù)輸出鎖存時鐘信號beginadda<='0';--當(dāng)adda<='0',模擬信號進(jìn)入IN0,當(dāng)adda<='1',則進(jìn)入IN1lock0<=lock;qq<=real;com:process(current_state,eoc)begin--規(guī)定各個狀態(tài)轉(zhuǎn)換方式,組合進(jìn)程casecurrent_stateiswhens0=>ale<='0';start<='0';oe<='0';lock<='0';next_state<=s1;--初始化whens1=>ale<=T';start<=T';oe<='0';lock<='0';next_state<=s2;--start=1則轉(zhuǎn)換whens2=>ale<='0';start<='0';oe<='0';lock<='0';if(eoc='1')thennext_state<=s3;--eoc=1表明轉(zhuǎn)換結(jié)束elsenext_state<=s2; --eoc=0繼續(xù)等待轉(zhuǎn)換endif;whens3=>ale<='0';start<='0';oe<=T';lock<='0';next_state<=s4;--允許輸出數(shù)據(jù)whens4=>ale<='0';start<='0';oe<=T';lock<=T';next_state<=s0;whenothers=>next_state<=s0;endcase;endprocesscom;reg:process(clk) --時序進(jìn)程beginif(clk'eventandclk='1')thencurrent_state<=next_state;--在時鐘上升沿轉(zhuǎn)換至下一個狀態(tài)endif;endprocessreg;--由時鐘信號current_state將當(dāng)前狀態(tài)值帶出此進(jìn)程latch:process(lock)--此進(jìn)程中,在lock的上升沿,將轉(zhuǎn)換好的數(shù)據(jù)鎖入beginiflock='1'andlock'eventthenreal<=d;endif;endprocesslatch;endbehav;libraryieee;useieee.std_logic_1164.all;entityerisport(a,b,s:instd_logic;y:outstd_logic);endentityer;architecturertloferissignald,e:std_logic;begind<=aand(nots);e<=band(s);y<=dore;endarchitecturertl;LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYalte

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論