




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)字電路課程設(shè)計(jì)報(bào)告題目:FPGA控制ADC0809的溫度采集及控制系統(tǒng)設(shè)計(jì)學(xué)院:機(jī)電工程學(xué)院專業(yè):自動(dòng)化姓名:XXXX學(xué)號(hào):04123137指導(dǎo)老師:XXXX時(shí)間:2014.9.4~2014.10.15FPGA控制ADC0809的溫度采集及控制系統(tǒng)設(shè)計(jì)設(shè)計(jì)目的溫度是日常生活中無時(shí)不在的物理量,溫度的控制在各個(gè)領(lǐng)域有著廣泛積極的意義。如溫室的溫度控制等。另外隨著數(shù)字電子技術(shù)的迅速發(fā)展,將模擬電量轉(zhuǎn)換成數(shù)字量輸出的接口電路A/D轉(zhuǎn)換器是現(xiàn)實(shí)世界中模擬信號(hào)向數(shù)字信號(hào)的橋梁。在以往的A/D器件采樣控制設(shè)計(jì)中,多數(shù)是以單片機(jī)或CPU為控制核心,雖然編程簡(jiǎn)單,控制靈活,但缺點(diǎn)是控制周期長(zhǎng),速度慢。單片機(jī)的速度極大的限制了A/D高速性能的利用,而FPGA的時(shí)鐘頻率可高達(dá)100MHz以上。本設(shè)計(jì)進(jìn)行時(shí)序控制、碼制變換,具有開發(fā)周期短,靈活性強(qiáng),通用能力好,易于開發(fā)、擴(kuò)展等優(yōu)點(diǎn)。設(shè)計(jì)的基本內(nèi)容本次設(shè)計(jì)主要是基于FPGA+VHDL的溫度控制系統(tǒng),可編程器件FPGA和硬件描述語言VHDL的使用使得數(shù)字電路的設(shè)計(jì)周期縮短、難度減少。設(shè)計(jì)采用模塊化思路,包括四個(gè)模塊FPGA控制ADC0809模塊、分頻模塊、數(shù)據(jù)傳輸模塊、元件例化模塊,再加以整合實(shí)現(xiàn)整個(gè)系統(tǒng),達(dá)到溫度控制的目的?;贔PGA的信號(hào)采集系統(tǒng)主要有:A/D轉(zhuǎn)換器,F(xiàn)PGA,RS232通信。A/D轉(zhuǎn)換器對(duì)信號(hào)進(jìn)行會(huì)采集,A/D內(nèi)部集成了采樣、保持電路,可有效的降低誤差,減少外圍電路的設(shè)計(jì),降低系統(tǒng)的功耗。A/D在接受到指令后進(jìn)行采集,F(xiàn)PGA采集控制模塊首先將采集到的通過A/D轉(zhuǎn)換城的數(shù)字信號(hào)引入FPGA,而后對(duì)數(shù)字信號(hào)送往算法實(shí)現(xiàn)單元進(jìn)行處理,并存于FPGA內(nèi)部RAM中。溫度測(cè)量圖FPGA控制ADC0809模塊VHDL程序libraryieee;useieee.std_logic_1164.all;entityad_controlisport(d:instd_logic_vector(7downto0);--0809的8位轉(zhuǎn)換數(shù)據(jù)輸出clk,eoc:instd_logic;--clk是轉(zhuǎn)換工作時(shí)鐘lock1,ale,start,oe,adda:outstd_logic;q:outstd_logic_vector(7downto0));endad_control;architecturertlofad_controlistypestateis(s0,s1,s2,s3,s4,s5,s6);--定義個(gè)狀態(tài)子函數(shù)signalcurrent_state,next_state:state;signalregl:std_logic_vector(7downto0);signallock:std_logic;--轉(zhuǎn)換后數(shù)據(jù)輸出鎖存時(shí)鐘信號(hào)beginadda<='1';lock1<=lock;process(current_state,eoc)--規(guī)定各狀態(tài)工作方式begincasecurrent_stateiswhens0=>ale<='0';start<='0';oe<='0';lock<='0';next_state<=s1;whens1=>ale<='1';start<='0';oe<='0';lock<='0';next_state<=s2;whens2=>ale<='0';start<='1';oe<='0';lock<='0';next_state<=s3;whens3=>ale<='0';start<='0';oe<='0';lock<='0';if(eoc='1')then--檢測(cè)eoc的下降沿next_state<=s3;elsenext_state<=s4;endif;whens4=>ale<='0';start<='0';oe<='0';lock<='0';if(eoc='0')then--測(cè)試eoc的上升沿next_state<=s4;else--eoc='1'、表明數(shù)據(jù)轉(zhuǎn)化結(jié)束next_state<=s5;endif;whens5=>ale<='0';start<='0';oe<='1';lock<='0';next_state<=s6;whens6=>ale<='0';start<='0';oe<='1';lock<='1';next_state<=s0;whenothers=>ale<='0';start<='0';oe<='0';lock<='0';next_state<=s0;endcase;endprocess;process(clk)--狀態(tài)轉(zhuǎn)換進(jìn)程beginif(clk'eventandclk='1')thencurrent_state<=next_state;endif;endprocess;process(lock)--數(shù)據(jù)鎖存進(jìn)程beginif(lock'eventandlock='1')thenregl<=d;endif;endprocess;q<=regl;endrtl;FlowSummary仿真波形圖結(jié)果說明:在S0狀態(tài)中的RESET為復(fù)位信號(hào),在此狀態(tài)下輸出ALE<='0';START<='0';OE<='0';LOCK<='0';表示對(duì)ADC0809的初始化。在S1狀態(tài)下輸出ALE<='1';START<='0';OE<='0';LOCK<='0';其中ALE上升沿有效,此狀態(tài)下模擬信號(hào)輸入選通。在S2狀態(tài)下,輸出ALE<='0';START<='1';OE<='0';LOCK<='0';START信號(hào)有效,啟動(dòng)A/D轉(zhuǎn)換。在S3狀態(tài)下,輸出ALE<='0';START<='0';OE<='0';LOCK<='0';在此狀態(tài)中檢測(cè)EOC的下降沿,如果EOC的下降沿來了則啟動(dòng)采樣,否則,等待啟動(dòng)采樣。在S4狀態(tài)下,輸出ALE<='0';START<='0';OE<='0';LOCK<='0';在此狀態(tài)中檢測(cè)EOC的上升沿,如果EOC的上升沿來了則停止采樣,否則,采樣周期中等待。在S5狀態(tài)下,輸出ALE<='0';START<='0';OE<='1';LOCK<='0';OE為高電平,則控制打開三態(tài)緩沖器,把轉(zhuǎn)換好的8位數(shù)據(jù)結(jié)果輸至數(shù)據(jù)總線。在S6狀態(tài)下,輸出ALE<='0';START<='0';OE<='1';LOCK<='1';至此一次完整地采樣控制結(jié)束。2.分頻模塊VHDL程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--使用庫(kù)函數(shù)entityadcintisPort(clk:instd_logic;--系統(tǒng)時(shí)鐘clk1:outstd_logic;--分頻后的時(shí)鐘輸出 shuout:outstd_logic_vector(7downto0));--8位二進(jìn)制輸出端endadcint;architectureBehavioralofadcintis--結(jié)構(gòu)體beginprocess(clk)--進(jìn)程variablecnt:integerrange0to49999999;--系統(tǒng)時(shí)鐘為50MHZbeginifclk'eventandclk='1'then ifcnt=500then--分頻系數(shù)為800 cnt:=0; clk1<='1';else cnt:=cnt+1; clk1<='0';endif;endif;endprocess;--結(jié)束進(jìn)程shu:process(clk)--variablecnt:integerrange0to49999999;--定義整型變量variablep:std_logic_vector(7downto0):="00000000";variablefull:integerrange0to499;--定義整型變量begin ifclk'eventandclk='1'then iffull=640then full:=0; p:=p+1;else full:=full+1;endif;endif;ifp="11111111"then--當(dāng)P計(jì)數(shù)滿后,清零重新開始計(jì)數(shù)p:="00000000";endif;shuout<=p;endprocessshu;endBehavioral;波形仿真圖仿真結(jié)果說明:clk為系統(tǒng)時(shí)鐘,所加頻率為50MHZ;clk1為adc0809的控制時(shí)鐘,分頻系數(shù)500,頻率為100khz;shuout為八位二進(jìn)制輸出。數(shù)據(jù)傳輸模塊數(shù)據(jù)傳輸設(shè)計(jì)圖VHDL程序libraryIEEE;--使用庫(kù)函數(shù)useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;--使用程序包entitytransisPORT(clk:instd_logic;reset:instd_logic;--復(fù)位enable:instd_logic;--發(fā)送使能datain:instd_logic_vector(7downto0);--發(fā)送十六進(jìn)制代碼TxD:outstd_logic);--發(fā)送端endtrans;architectureBehavioraloftransissignalTReg:Std_Logic_Vector(7downto0);--發(fā)送寄存器signalSampleCnt:std_logic_vector(0to1);beginTReg<=datain;--RxProcessRxProc:process(clk,reset,enable)variableBitPos:INTEGERrange0to9;--發(fā)送寄存器的位置beginifreset='0'thenBitPos:=0;SampleCnt<="00";elsifRising_Edge(clk)thenifreset='1'then--復(fù)位ifSampleCnt="11"thenSampleCnt<="00";elseSampleCnt<=SampleCnt+1;--從0到3每位計(jì)數(shù)endif;caseBitPosiswhen0=>ifSampleCnt="01"then--起始位TxD<='0';--發(fā)送起始位Bitpos:=BitPos+1;endif;when1=>ifSampleCnt="01"thenTxD<=Treg(0);--發(fā)送第1位BitPos:=BitPos+1;endif;when2=>ifSampleCnt="01"thenTxD<=Treg(1);--發(fā)送第2位BitPos:=BitPos+1;endif;when3=>ifSampleCnt="01"thenTxD<=Treg(2);--發(fā)送第3位BitPos:=BitPos+1;endif;when4=>ifSampleCnt="01"thenTxD<=Treg(3);--發(fā)送第4位BitPos:=BitPos+1;endif;when5=>ifSampleCnt="01"thenTxD<=Treg(4);--發(fā)送第5位BitPos:=BitPos+1;endif;when6=>ifSampleCnt="01"thenTxD<=Treg(5);--發(fā)送第6位BitPos:=BitPos+1;endif;when7=>ifSampleCnt="01"thenTxD<=Treg(6);--發(fā)送第7位BitPos:=BitPos+1;endif;when8=>ifSampleCnt="01"thenTxD<=Treg(7);--發(fā)送第8位BitPos:=BitPos+1;endif;when9=>ifSampleCnt="01"thenTxD<='1';--發(fā)送第9位BitPos:=BitPos+1;endif;endcase;elseTxD<='1';BitPos:=0;SampleCnt<="00";endif;endif;endprocess;endBehavioral;FlowSummary波形仿真圖仿真結(jié)果說明:datain是數(shù)據(jù)輸入,在這里我輸入了十六進(jìn)制數(shù)55,使能端enable和reset在置高電平1時(shí)使能端有效,數(shù)據(jù)發(fā)送出去,發(fā)送端TxD輸出了55,因?yàn)檩斎攵艘恢奔尤氲氖?5,所以輸出TxD周期性的,由仿真圖可以看出明顯的周期性。元件例化模塊將單個(gè)模塊連接為整體(FPGA)VHDL程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityFPGAis port(CLK,EOC:instd_logic;--CLK為系統(tǒng)時(shí)鐘;EOC為ADC0809轉(zhuǎn)換結(jié)束信號(hào)輸入FPGACLK1,START,ALE,OE:outstd_logic;--CLK1為ADC0809工作時(shí)鐘;START為轉(zhuǎn)換啟動(dòng)信號(hào);ALE為地址鎖存信號(hào);OE為數(shù)據(jù)輸出控制信號(hào);均從FPGA輸出D:instd_logic_vector(7downto0);--ADC0809輸出的采樣數(shù)據(jù)輸入FPGA ile:outstd_logic;--數(shù)據(jù)鎖存允許信號(hào)cont:outstd_logic;--控制信號(hào)(WR1、WR2、CS、Xfer)Q:outstd_logic_vector(7downto0);--經(jīng)數(shù)據(jù)處理后轉(zhuǎn)化為溫度所對(duì)應(yīng)的從FPGA輸出的二進(jìn)制數(shù)據(jù) y:outstd_logic_vector(7downto0); se1:outstd_logic_vector(6downto0); se2:outstd_logic_vector(6downto0); ADDA:outstd_logic; ADDB:outstd_logic; ADDC:outstd_logic; LOCK1:outstd_logic;--寄存器鎖存測(cè)試信號(hào) q1:outintegerrange0to255);--數(shù)據(jù)處理過程中的整型數(shù)據(jù) endFPGA; architecturebof FPGAiscomponentled_decoderis --led_decoder元件例化申明部分 port(a:instd_logic_vector(3downto0); b:instd_logic_vector(3downto0); seg1:outstd_logic_vector(6downto0); seg2:outstd_logic_vector(6downto0));endcomponent;componentADC0809is --ADC0809元件例化申明部分 port(CLK,EOC:instd_logic;CLK1,START,ALE,OE:outstd_logic; D:instd_logic_vector(7downto0); ile:outstd_logic;cont:outstd_logic;Q:outstd_logic_vector(7downto0); a:outstd_logic_vector(3downto0); b:outstd_logic_vector(3downto0); y:outstd_logic_vector(7downto0); ADDA:outstd_logic;ADDB:outstd_logic;ADDC:outstd_logic;LOCK1:outstd_logic;q1:outintegerrange0to255);endcomponent;signals1:std_logic_vector(6downto0); --用于總的seg1與ADC0809的seg1連接signals2:std_logic_vector(6downto0); --用于總的seg2與ADC0809的seg2連接signal u:std_logic_vector(3downto0); --用于ADC0809與led_decoder的a端口相連signal v:std_logic_vector(3downto0); --用于ADC0809與led_decoder的b端口相連beginU0:ADC0809portmap(clk=>clk,EOC=>EOC,clk1=>clk1,START=>START,ALE=>ALE,oe=>oe,d=>d,ile=>ile,cont=>cont, q=>q,a=>u,b=>v,y=>y,ADDA=>adda,addb=>addb,addc=>addc,lock1=>lock1,q1=>q1); --ADC0809元件例化部分 U1:led_decoderportmap(a=>u,b=>v,seg1=>s1,seg2=>s2); ----led_decoder元件例化部分 se1<=s1; se2<=s2; endb;FlowSummary仿真波形圖仿真結(jié)果說明:CLK是系統(tǒng)所給頻率為50MHZ,經(jīng)128分頻后CLK1為390.6KHZ.2)ADDA,ADDB,ADDC分別是1,0,0表示選通通道一。3)控制器發(fā)送有效的ALE信號(hào),鎖存該地址,以備轉(zhuǎn)換該地址對(duì)應(yīng)的模擬量通道上的模擬量??刂破麟S即發(fā)送START信號(hào)啟動(dòng)A/D轉(zhuǎn)換,一旦轉(zhuǎn)換啟動(dòng),ADC0809會(huì)在EOC引腳上輸出表示轉(zhuǎn)換進(jìn)行的低電平信號(hào)。待E0C變?yōu)楦唠娖?,表示轉(zhuǎn)換已完成,此時(shí)控制器就可以發(fā)送OE信號(hào),控制ADC0809將轉(zhuǎn)換完的數(shù)據(jù)送到輸出引腳上。如圖所示,圖中數(shù)據(jù)轉(zhuǎn)換時(shí)間為183.99us。符合ADC0809工作時(shí)序圖。4)cont為低電平,ile為高電平,表示成為直通型連續(xù)反饋工作方式,兩個(gè)寄存器均處于常通狀態(tài),兩個(gè)寄存器的輸出跟隨數(shù)字輸入而變化。即DAC0832處于直通型工作狀態(tài)。5)D為經(jīng)ADC0809轉(zhuǎn)換送來的二進(jìn)制數(shù)據(jù),圖中給出“01111111”,q1為輸出中間信號(hào),和D值相同,Q為經(jīng)數(shù)據(jù)轉(zhuǎn)換后的輸出溫度,圖中為24°C,表明當(dāng)一個(gè)模擬量V0輸入至ADC0809轉(zhuǎn)換后得到的D經(jīng)一系列的處理轉(zhuǎn)化后得到的與該模擬量所對(duì)應(yīng)的溫度T=24°C。6)y是經(jīng)控制模塊從FPGA輸出到DAC0832的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年合肥共達(dá)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)匯編
- 一年級(jí)數(shù)學(xué)蘇教版下冊(cè)第七單元《期末復(fù)習(xí)》教學(xué)設(shè)計(jì)教案2
- 醫(yī)學(xué)影像學(xué)考試題及答案
- 2024四川虹微技術(shù)有限公司招聘軟件開發(fā)工程師等崗位7人筆試參考題庫(kù)附帶答案詳解
- 全國(guó)人教版初中信息技術(shù)八年級(jí)上冊(cè)第一單元第2課三、《改變對(duì)象的不透明度》教學(xué)設(shè)計(jì)
- 8《夢(mèng)游天姥吟留別》《登高》《琵琶行(并序)》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年高一語文必修上冊(cè)同步備課系列(統(tǒng)編版2019)
- 2025年貴州電子商務(wù)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)新版
- 2024中國(guó)中煤銷售集團(tuán)總部及所屬企業(yè)電力營(yíng)銷專業(yè)人才招聘筆試參考題庫(kù)附帶答案詳解
- 2025年湖南軟件職業(yè)技術(shù)大學(xué)單招職業(yè)傾向性測(cè)試題庫(kù)附答案
- 高中信息技術(shù)教學(xué)設(shè)計(jì):第一單元第三節(jié) 確定組網(wǎng)方案
- 三位數(shù)除以一位數(shù)(商為三位數(shù))練習(xí)題含答案
- 高教社高職國(guó)際英語 進(jìn)階綜合教程 第2冊(cè) PPT課件高職國(guó)際英語進(jìn)階教程第2 冊(cè)u(píng)nit1課文原文和譯文
- 病理科各項(xiàng)制度匯編樣本
- 粉體密度及流動(dòng)性測(cè)定
- 北師大版八年級(jí)下冊(cè)課程綱要分享課件
- 鍋爐工崗位安全風(fēng)險(xiǎn)告知卡
- PFMEA-沖壓過程模板
- 高中體育足球教學(xué)教案 全冊(cè)
- 計(jì)算機(jī)視覺PPT完整全套教學(xué)課件
- 年薪制勞動(dòng)合同范本
- 呼吸科護(hù)理專業(yè)知識(shí)技能N1N2N3N4護(hù)士考試題與答案
評(píng)論
0/150
提交評(píng)論