基于FPGA的實用電子砰設(shè)計論文_第1頁
基于FPGA的實用電子砰設(shè)計論文_第2頁
基于FPGA的實用電子砰設(shè)計論文_第3頁
基于FPGA的實用電子砰設(shè)計論文_第4頁
基于FPGA的實用電子砰設(shè)計論文_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于FPGA的電子稱設(shè)計PAGE第34頁共34頁基于FPGA的實用電子稱摘要:該設(shè)計以現(xiàn)場可編程門陣列FPGA為核心控制部件,并基于超高速硬件描述語言VHDL在Xilinx公司的SpartanⅡE系列的XC2S100E芯片上編程實現(xiàn);系統(tǒng)的硬件部分包括FPGA最小系統(tǒng)板,數(shù)據(jù)采集、人機交互界面三大部分。最小系統(tǒng)部分主要是擴展了外部數(shù)據(jù)存儲器,數(shù)據(jù)采集部分由壓力傳感器、信號的前級處理和A/D轉(zhuǎn)換部分組成。人機界面部分為鍵盤輸入,點陣式液晶顯示,軟件基于VHDL語言實現(xiàn)了本設(shè)計的全部控制功能,包括基本的稱重功能,和發(fā)揮部分的顯示購物清單的功能,并增加了時鐘、過載提示欠量程提示、語音提示等創(chuàng)新功能。整機系統(tǒng)結(jié)構(gòu)簡單,使用方便。功能齊全,精度高,具有一定的開發(fā)價值。關(guān)鍵詞:電子稱,計價,壓力傳感器,F(xiàn)PGA,VHDLDesignofappliedElectronic-balanceBasedonFPGATutor:YanWangWeiqingXUZhengyuTangRenfuLan(ElectricEngineeringCollegeNanHuaUniversityAbstract:Thisisadesignforappliedelectronic-balancewhichisbasedonFPGA(FieldProgrammableGateArray).ThedesignwillbeachievedintheSpartan-IIE-XC2S100EchipofXilinxcorporationbyprogrammingwiththeVHDL(VeryHigh-speedDescriptionLanguage)ThehardwareofthesystemincludestheminimumsystemofFPGA,thedatacollector,theinterfaceofpersonandmachine.Theminimumsystem’sfunctionmainlyistoexpandthestorage,ThedatacollectoriscomposedofpressuresensorandA/Dconvertor,TheinterfaceofpersomandmachineincludeskeyboardandLCDdisplay.ThesoftwarewillachieveallcontrolfunctionsofthisdesignaccordingtothelanguageofVHDL.Thisfunctionsisincludingtoweighthefunctionbasically,andthefunctionoftheshoppingdetailedlist.Besides,weaddingseveralexpandingfunctionssuchasdisplayingclockandpromptingwhenthematterisoverload.Thestructureofthewholemachineissimple,theusageisconvenience.,theaccuracyishigh,Itisworthofempolderingtothisappliedelectronic-balance.Keyword:Theelectronicbalance,Pressuresensor,FPGA,VHDL目錄第一章系統(tǒng)方案的設(shè)計 41.1電子稱的設(shè)計要求 41.1.1基本要求 41.1.2發(fā)揮部分 41.1.3創(chuàng)新部分 41.2設(shè)計的基本思路 41.3系統(tǒng)方案比較和論證 41.1.3控制器 41.3.2前級放大器 51.3.3A/D轉(zhuǎn)換器 61.3.4顯示輸出電路 61.4系統(tǒng)組成 7第二章單元電路設(shè)計 72.1稱重傳感器 72.2前端信號處理 82.3A/D轉(zhuǎn)換電路 92.4主控制控制電路 102.5人機交互界面 112.5.1鍵盤接口電路 112.5.2LCD顯示接口電路 122.5.3LED數(shù)碼管顯示電路 122.6日歷時鐘電路 132.7電源電路 142.8其它擴展電路 142.8.1通訊接口電路 142.8.2語音電路 152.8.3報警電路 16第三章系統(tǒng)軟件的設(shè)計 163.1開發(fā)軟件及編程語言簡介 163.2系統(tǒng)軟件的設(shè)計 163.1.1軟件率程序流程 163.1.2VHDL模塊設(shè)計 173.2.3程序設(shè)計頂層映射原理 193.3程序清單及仿真 19第四章系統(tǒng)測試 214.1測試儀器清單 214.2測試方法 214.3測試結(jié)果和誤差分析 214.3.1測試結(jié)果 214.3.2誤差計算及分析 22第五章設(shè)計總結(jié) 22參考文獻 22附錄1主要元器件清單 23附錄2印制板圖 23附錄3程序清單 24第一章系統(tǒng)方案的設(shè)計1.1電子稱的設(shè)計要求1.1.1基本要求能用簡易鍵盤設(shè)置單價,加重后能同時顯示重量、金額和單價;重量顯示:單位為公斤;最大稱重為9.999公斤,重量誤差不大于±0.005公斤;單價金額及總價金額顯示:單價金額和總價金額的單位為元,最大金額數(shù)值為9999.99元,總價金額誤差不大于0.01元;具有去皮功能和總額累加計算功能。1.1.2發(fā)揮部分能顯示購物清單,自擬10種商品名稱或代號,清單內(nèi)容包括:商品名稱,數(shù)量,單價,金額,本次購物總金額。清單內(nèi)容的商品名稱等可使用代號顯示;清單內(nèi)容增加購貨日期和收銀員編號;清單內(nèi)容在(2)的基礎(chǔ)上增加售貨單位名稱(自擬),且全部內(nèi)容采用中文顯示。1.1.3創(chuàng)新部分在完成基本要求和題目所提出的發(fā)揮部分要求的情況下,考慮到電子稱實際應(yīng)用的需要,又增加了時鐘功能,另外由于實際當(dāng)中,稱可以有一定量的過載,但不能超出要求的范圍,為此我們還設(shè)計了過載提示功能。1.2設(shè)計的基本思路題目要求設(shè)計一個實用電子稱,按照設(shè)計的基本要求,系統(tǒng)可分為三大模塊,數(shù)據(jù)采集模塊、控制器模塊、人機交互界面模塊。其中數(shù)據(jù)采集模塊完成對來自穩(wěn)重傳感器的電壓信號的檢測、放大、AD轉(zhuǎn)換。此時的數(shù)字信號送給控制器處理,由控制器完成被測物體重量的判斷、顯示等功能。此部分對軟件的設(shè)計要求比較高,系統(tǒng)的大部分功能都需要軟件來控制。在擴展功能上,本設(shè)計增加了一個時鐘芯片(PCF8563)用以顯示購物日期/時鐘,一個聲光報警電路用以過載提示。1.3系統(tǒng)方案比較和論證1.3.方案一基于51系列單片機來實現(xiàn)。目前單片機技術(shù)比較成熟,功能也比較強大,被測信號經(jīng)放大整形后送入單片機,由單片機對測量信號進行處理并根據(jù)相應(yīng)的數(shù)據(jù)關(guān)系譯碼顯示出被測物體的重量,由于系統(tǒng)需要的按鍵較多,因此要加一個鍵盤顯示管理芯片(ZLG7289)原理方框圖如圖1.3單片機控制適合于功能比較簡單的控制系統(tǒng),而且其具有成本低,功耗低,體積小算術(shù)運算功能強,技術(shù)成熟等優(yōu)點.但其缺點是外圍電路比較復(fù)雜,編程復(fù)雜。使用這種方案會給系統(tǒng)設(shè)計帶來一定的難度。MCUMCUAT89S52放大器AD轉(zhuǎn)換器顯示器鍵盤電路時鐘芯片傳感信號ZLG7289圖1.方案二采用現(xiàn)場可編程門陣列(FPGA)為控制核心采用現(xiàn)場可編程門陣列(FPGA)為控制核心,利用EDA軟件編程,下載燒制實現(xiàn)。系統(tǒng)集成于一片Xilinx公司的SpartanⅡ系列XC2S100E芯片上,體積大大減小、邏輯單元靈活、集成度高以及適用范圍廣等特點,可實現(xiàn)大規(guī)模和超大規(guī)模的集成電路。采用FPGA測頻測量精度高,測量頻率范圍大,而且編程靈活、調(diào)試方便,本設(shè)計要求的精度較高,所以要求系統(tǒng)的穩(wěn)定性要好,抗干擾能力要強。因此,我們決定采用方案二,即采用FPGA為控制核心。1.3.壓力傳感器輸出的電壓信號為毫伏級,所以對運算放大器要求很高。我們考慮可以采用以下幾種方案可以采用:方案一利用普通低溫漂運算放大器構(gòu)成多級放大器。普通低溫漂運算放大器構(gòu)成多級放大器會引入大量噪聲。由于A/D轉(zhuǎn)換器需要很高的精度,所以幾毫伏的干擾信號就會直接影響最后的測量精度。所以,此中方案不宜采用。方案二由高精度低漂移運算放大器構(gòu)成差動放大器。差動放大器具有高輸入阻抗,增益高的特點,可以利用普通運放(如OP07)做成一個差動放大器。此方案原理圖如圖1.3.圖1.電阻R1、R2電容C1、C2、C3、C4用于濾除前級的噪聲,C1、C2為普通小電容,可以濾除高頻干擾,C3、C4為大的電解電容,主要用于濾除低頻噪聲。優(yōu)點:輸入級加入射隨放大器,增大了輸入阻抗,中間級為差動放大電路,滑動變阻器R6可以調(diào)節(jié)輸出零點,最后一級可以用于微調(diào)放大倍數(shù),使輸出滿足滿量程要求。輸出級為反向放大器,所以輸出電阻不是很大,比較符合應(yīng)用要求。缺點:此電路要求R3、R4相等,誤差將會影響輸出精度,難度較大。實際測量,每一級運放都會引入較大噪聲。對精度影響較大。方案三采用專用儀表放大器INA126實現(xiàn)。此芯片內(nèi)部采用差動輸入,共模抑制比高,差模輸入阻抗大,增益高,精度也非常好,且外部接口簡單。INA126接口如圖1.3.3所示。可以圖1.基于以上分析,我們決定采用方案三實現(xiàn)前級放大功能,即制作方便而且精度很好的專用儀表放大器INA126。1.3.由上本設(shè)計使用的壓力傳感器和精度的分析可知:A/D轉(zhuǎn)換器誤差應(yīng)在以下12位A/D精度:10Kg/4096=2.44g14位A/D精度:10Kg/16384=0.61g考慮到其他部分所帶來的干擾,12位A/D無法滿足系統(tǒng)精度要求。所以我們需要選擇14位或者精度更高的A/D。方案一逐次逼近型A/D轉(zhuǎn)換器,如:ADS7805、ADS7804等。逐次逼近型A/D轉(zhuǎn)換,一般具有采樣/保持功能。采樣頻率高,功耗比較低,是理想的高速、高精度、省電型A/D轉(zhuǎn)換器件。高精度逐次逼近型A/D轉(zhuǎn)換器一般都帶有內(nèi)部基準(zhǔn)源和內(nèi)部時鐘,基于FPGA構(gòu)成的系統(tǒng)設(shè)計時僅需要外接幾個電阻、電容。但考慮到所轉(zhuǎn)換的信號為一慢變信號,逐次逼近型A/D轉(zhuǎn)換器的快速的優(yōu)點不能很好的發(fā)揮,且根據(jù)系統(tǒng)的要求,14位AD足以滿足精度要求,太高的精度就反而浪費了系統(tǒng)資源。所以此方案并不是理想的選擇。方案二雙積分型A/D轉(zhuǎn)換器:如:TLC7135/ICL7135、ICL7109等。雙積分型A/D轉(zhuǎn)換器精度高,但速度較慢(如:TLC7135),具有精確的差分輸入,輸入阻抗高(大于103M雙積分型A/D轉(zhuǎn)換器具有很強的抗干擾能力。對正負對稱的工頻干擾信號積分為零,所以對50HZ的工頻干擾抑制能力較強,對高于工頻干擾(例如噪聲電壓)已有良好的濾波作用。只要干擾電壓的平均值為零,對輸出就不產(chǎn)生影響。尤其對本系統(tǒng),緩慢變化的壓力信號,很容易受到工頻信號的影響。故而采用雙積分型A/D轉(zhuǎn)換器可大大降低對濾波電路的要求。作為電子秤,系統(tǒng)對AD的轉(zhuǎn)換速度要求并不高,精度上14位的AD足以滿足要求。另外雙積分型A/D轉(zhuǎn)換器較強的抗干擾能力和精確的差分輸入,低廉的價格。綜合的分析其優(yōu)點和缺點,我們最終選擇了方案二,即使用TLC7135對信號進行AD轉(zhuǎn)換。。1.3.4方案一全部采用數(shù)碼管顯示,數(shù)碼能顯示時鐘,以及被測物體的重量等信息,此方案顯示直觀,而且編程簡單,但若要同時顯示單價,金額售貨員編號等諸多信息則需要要大量的數(shù)碼管,而且不能顯示中文。由此增加了電路的復(fù)雜程度。也加大了編程的難度。方案二使用LED與字符型LCD相結(jié)合顯示??紤]到系統(tǒng)要求顯示的信息量較多,可以用LED與LCD分別顯示不同信息,LED可以顯示時鐘和特重量,LCD采用帶中文字庫的144*32點陣式液晶顯示器系列:LM3037,,可以設(shè)置顯示單介,金額,中文,購物日期等。LCD具有低功耗、可視面大、畫面友好抗干擾能力強等功能,在顯示技術(shù)已得到廣泛應(yīng)用。由上述分析綜合,我們采用了方案二,讓其各自完成相應(yīng)的顯示任務(wù)。1.4系統(tǒng)組成經(jīng)過方案比較和論證,最終確定的系統(tǒng)組成框圖如圖1.4.1所示。圖1.第二章單元電路設(shè)計2.1稱重傳感器按照設(shè)計的要求,稱重范圍0~9.999Kg,重量誤差不大于Kg,考慮到秤臺自重、振動和沖擊分量,還要避免超重損壞傳感器,所以傳感器量程必須大于額定稱重(9。999Kg)。采用的是湖南宇航科技限公司生產(chǎn)的LS-1型傳感器,表2。1。1為稱重傳感器的技術(shù)指標(biāo)。其量程為20Kg,精度為±,滿量程時誤差0.002Kg??梢詽M足本系統(tǒng)的精度要求。其原理如圖2.1.1表2.1.靈敏度mv/v1±0.10(1-3kg)2±0.10(6-25kg)非線性%FS±0.02重復(fù)性0.02蠕變%FS/30min±0.02零點輸出%FS±1零點溫度系數(shù)%FS/10±0.02輸入電阻Ω420±15輸出電阻350±3絕緣電阻MΩ≥5000供橋電壓V10(DC/AC)MAX:15(DC/AC)溫度補償范圍℃-10~+50允許溫度范圍-20~+60允許過負荷%FS150連接電纜mmΦ4×400連接方式輸入:紅(+)、黃(-)輸出:藍(+)白(-)圖2.LS-1稱重傳感器是利用電阻應(yīng)變原理構(gòu)成,當(dāng)外力F直接作用在貼有R1,R2,R3,R4四片應(yīng)變的彈性體上時,彈性體發(fā)生變形,電阻應(yīng)變片的阻值發(fā)生變化,致使電橋發(fā)失去平衡,在R1、R3輸入額定橋壓時,R2、R4上剛有與外力成正比的電壓信號輸出。輸出信號電壓可由下式給出:2.2前端信號處理由于穩(wěn)重傳感器輸出的信號為毫伏級信號,比AD轉(zhuǎn)換器的輸入信號低2-3個數(shù)量級,故需要設(shè)計一個前置放大器。經(jīng)過方案比較和論證,我們選擇了儀用放大器INA126,構(gòu)成的放大器及去皮電路。其電路原理圖如圖2.圖2.圖中,通過調(diào)節(jié)RAD1的阻值來改變放大倍數(shù)。其放大增益為微弱信號Vi1和Vi2被分別放大后從INA126的第6腳輸出。A/D轉(zhuǎn)換器TLC7135的輸入電壓變化范圍是-2V~+2V,傳感器的輸出電壓信號在0~20mv左右,因此放大器的放大倍數(shù)在200~300左右,可將R接成100K的電位器。由于TLC7135對高頻干擾不敏感,所以濾波電路主要針對工頻及其低次諧波引入的干擾。因為壓力信號變化十分緩慢,所以濾波電路可以把頻率做得很低。圖中的LM741的輸出端與INA126的地端相連,LM741的2腳與6腳相連構(gòu)成電壓跟隨器,R4與正負電源相接,通過改變R4的阻值可使VO與RET之間的壓差變化,從而實現(xiàn)調(diào)零、去皮的功能。2.3TLC7135是一種雙積分式4位半單片A/D轉(zhuǎn)換器,其工作原理是將輸入電壓轉(zhuǎn)換成時間(脈沖寬度信號)或頻率I俯沖頻率),再通過定時器(計數(shù)器)獲得數(shù)字信號。其主要性能是:具有高輸入阻抗(109Ω),對被測電路幾乎沒有影響;具有自動校零和自動判別信號極性;有超、欠輸出信號;采用位掃描與BCD碼輸出。A/D轉(zhuǎn)換電路如圖2.3.1所示。圖2.在設(shè)計中,TLC7135的所需的基準(zhǔn)電源由VCC經(jīng)過三端可調(diào)穩(wěn)壓器LM317穩(wěn)壓后提供,C8、C9為濾波電容。圖中C2是基準(zhǔn)電容;C4和R9為積分元件;C5為自零電容;R11和C7組成標(biāo)準(zhǔn)的濾波網(wǎng)絡(luò);R10、C6和DW1、DW2組成輸入過壓保護電路;R7為基準(zhǔn)電壓調(diào)節(jié)電位器,可以根據(jù)需要顯示的滿度值選擇基準(zhǔn)電壓的大小,本設(shè)計選擇的基準(zhǔn)電壓為1.0000V,它們的關(guān)系是;滿度值為基準(zhǔn)電壓的兩倍。由于A/D轉(zhuǎn)換器精度與外接的積分電阻、積分電容的精度無關(guān),故可以降低對元件質(zhì)量的要求。不過積分電容和積分電容的介質(zhì)損耗會影響到A/D轉(zhuǎn)換器的精度,所以應(yīng)采用介質(zhì)損耗較小的聚丙乙烯電容2.4主控制控制電路本設(shè)計以Xilinx公司的SpartanⅡE系列的XC2S100E芯片為控制核心,F(xiàn)PGA最小系統(tǒng)為控制器實現(xiàn)電子稱的各項功能。FPGA器件采用現(xiàn)場可編程單元陣列LCA結(jié)構(gòu),它由三個可編程基本模塊組成:輸入/輸出模塊IOB陣列、可配置邏輯塊CLB陣列及可編程互連網(wǎng)絡(luò)PI。配置邏輯功能塊CLB的可編程邏輯單元,由分層的通用布線通道(RouningChannel)連接,同可編程輸入輸出功能塊圍繞來實現(xiàn),基中CLB提供實現(xiàn)邏輯功能的邏輯單元;IOB提供引腳到內(nèi)部信號線的接口,布線通道則提供CLB和IOB的到連接通道。設(shè)計使用的FPGA最小系統(tǒng)板由XC2S100E、50MHZ晶振、電源部分、指示部分和開關(guān)組成,電源部分將5V直流經(jīng)過TPS70451轉(zhuǎn)換得到+3。和5V+1。8V的直流電,PROM(XC18V02)是一個掉電存儲器,在掉電時可自動保存數(shù)據(jù),4個腳雙列插針用于其它外部設(shè)備連接。圖2.系統(tǒng)實現(xiàn)的功能主要通過軟件的編程實現(xiàn),F(xiàn)PGA內(nèi)部分為四個模塊:數(shù)據(jù)處理模塊、LED和LCD驅(qū)動模塊、I2C通訊模塊和鍵盤控制模塊,各模塊的設(shè)計將在第三章詳細介紹。圖人機交互界面人機交互界面顯示是否直觀,控制是否方便直接影響收銀員的工作效率和顧客的滿意程度,困此設(shè)計時經(jīng)多方考慮,我們盡可能將顯示界面友好化,將控制鍵盤簡單化。由于FPGA可利用的引腳多,可以控制鍵盤、LCD和LEC。不需要外加鍵盤或顯示控制芯片,從而簡化了外部電路。而且編程難度不大,容易實現(xiàn)。2.5.1由于電子稱需要設(shè)置單價,這就需要一個設(shè)置鍵和十個數(shù)字鍵,還具有去皮、結(jié)算、確認、刪除等功能,總共需設(shè)置16個鍵(包括一個復(fù)位鍵)??紤]到FPGA負載電流能力有限,因此按鍵一端均通過10K電阻再與PFGA引腳相連,其電路原理圖如圖2.圖2.2.5.2圖2.5.2圖2.2.5.由于LCD為144*32點陣式液晶,顯示界面有限,本設(shè)計增設(shè)的八位共陽極LED數(shù)碼管能夠顯示商品的重量和商品的總價,使顧客對自己購買的物品一目了然。其顯示的功能主要由軟件的設(shè)計實現(xiàn),為了節(jié)省系統(tǒng)的資源,本系統(tǒng)采用動態(tài)顯示。動態(tài)顯示原理如下:當(dāng)向LED的段碼數(shù)據(jù)口發(fā)送第一個8位數(shù)據(jù),這時只有一個數(shù)碼管顯示該數(shù)碼,延時一段時間后可以發(fā)送第二8位數(shù)據(jù),顯示器分時輪流工作,雖然每次只有一個顯示器顯示,但由于人的視覺暫留現(xiàn)象,我們?nèi)阅芨杏X到所有顯示器都在同時顯示。圖2.5.3為顯示電路的原理圖,考慮到FPGA驅(qū)動能力有限,我們采用三極管(9012)驅(qū)動數(shù)碼管,并由74HC138譯碼器控制位碼的選通,只有當(dāng)使能端G1為1,G2A,G2B為0時譯碼器有效,故G1接VCC,G2A,G2B接地,否則所有的輸出被封鎖在高電平上。2.53數(shù)碼管顯示電路連接圖2.53數(shù)碼管顯示電路連接圖2.6日歷時鐘電路按發(fā)揮部分的要求,需要顯示購貨日期。最簡單的辦法是在電路中增加了一顆日歷時鐘芯片。系統(tǒng)采用PCF8563完成時鐘設(shè)計,PCF8563是Philips公司推出的一款帶I2C總線,具有極低功耗的多功能時鐘/日歷芯片,它具有四種報警功能和定時功能;內(nèi)部時鐘電路、內(nèi)部振蕩電路、內(nèi)部低電壓檢測以兩線制I2C總線通信方式,不但使用外圍電路簡潔,而且增加了芯片的可靠性。本系統(tǒng)PCF8563與FPGA接口采用圖2圖2.6.1日歷時鐘電路原理圖圖中,在1、2端接入32.768kHz的石英晶振,配置成片內(nèi)振蕩器,VDD與地之間接入1個電容供電維持時鐘芯片。PCF8563與FPGA接口采用3根口線,F(xiàn)PGA通過I2C總線讀取PCF8563的基準(zhǔn)時間。其中SCL為時鐘輸入端,數(shù)據(jù)隨時鐘信號同步輸入器件或從器件輸出;SDA為雙向引腳,用于串行數(shù)據(jù)的輸入輸出。另外值行一提的是,SDA、SCL、INT均為漏極開路,必須加上拉電阻。2.7電源電路系統(tǒng)多個電源,F(xiàn)PGA需要+5V電源,傳感器需要+10V以上的線性電源(不能用開關(guān)電源,否則稱重數(shù)據(jù)不穩(wěn)定)。我們采用了三端固定穩(wěn)壓芯片7805和7812為系統(tǒng)提供穩(wěn)定的電源。這個部分由整流電路、濾波電路、穩(wěn)壓電路等組成,如圖2.7.1所示。在這里只給出了+5V電源電路,+12V電源電路與+5V相似,因此不再畫出。圖其它擴展電路2.8.1通訊接口電路一般的商用電子稱都能與上位機(PC機)進行通訊,可以將大量的商品數(shù)據(jù)存于上位機,然后通過串口或并口通訊與電子稱相連,達到遠距離控制的目的?;到y(tǒng)采用RS232串口實現(xiàn)該項功能。RS-232的邏輯電平用正負電壓表示,且信號使用負邏輯,邏輯0的電壓范圍是+5V~+15V,而邏輯1的電壓范圍是-5V~-15V,RS-232端口是計算機與其他設(shè)備溝通的最常用的接口,不但操作簡單,而且價格便宜。FPGA的輸入和輸出使用的是5V邏輯電平而不是RS-232電壓,如何進行兩種信號的轉(zhuǎn)換,是連接時需要解決的問題,事實上,解決的方法很簡單,只需使用一個MAX232電平轉(zhuǎn)換專用芯片即可,其電路如圖2.8.圖.語音電路是系統(tǒng)主要擴展功能之一,能夠由語音電路發(fā)出超載、欠量程或商品重量、價格等語音提示。本系統(tǒng)采用的ISD1420語音電路為美國ISD公司出品的優(yōu)質(zhì)單片語音錄放電路,ISD1420由振蕩器、語音存儲單元、前置放大器、自動增益控制電路、抗干擾濾波器、輸出放大器組成,能夠錄放的時間為20秒。一個最小的錄放系統(tǒng)僅由一個麥克風(fēng)、一個喇叭、兩個按鈕、一個電源、少數(shù)電阻電容組成如圖2.8圖2.錄音內(nèi)容存入永久存儲單元,提供零功率信息存儲,這個獨一無二的方法是借助于美國ISD公司的專利——直接模擬存儲技術(shù)(DASTTM)實現(xiàn)的。利用它,語音和音頻信號被直接存儲,以其原本的模擬形式進入EEPROM存儲器。直接模擬存儲允許使用一種單片固體電路方法完成其原本語音的再現(xiàn)。不僅語音質(zhì)量優(yōu)勝,而且具有斷電語音保護功能。2.8.3圖2.8.3為系統(tǒng)報警電路原理圖,除了上一小節(jié)中語音可能用于超載和欠量程提示外,系統(tǒng)還設(shè)計了兩個發(fā)光二極管作為超載和欠量程指示燈,使系統(tǒng)更加完善。當(dāng)系統(tǒng)判斷為超載或欠量程時,F(xiàn)PGA給輸出一個低電平信號KG(超載)或KQ(超載),從而驅(qū)動發(fā)光二極管發(fā)光提示。圖2.第三章系統(tǒng)軟件的設(shè)計3.1開發(fā)軟件及編程語言簡介系統(tǒng)采用硬件描述語言VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)按模塊化方式進行設(shè)計,并將各模塊集成于FPGA芯片中,然后通過XiliinxISE7.1軟件開發(fā)平臺和ModelSimSE6.仿真工具,對設(shè)計文件自動的完成邏輯編譯、綜合及優(yōu)化、邏輯布局布線、邏輯仿真,最后對FPGA芯片進行編程,實現(xiàn)系統(tǒng)的設(shè)計要求。VHDL具有多層次的描述系統(tǒng)硬件功能的能力;支持自頂向下(ToptoDown)和基于庫(Library-Based)的設(shè)計方法;VHDL對設(shè)計的描述具有相對獨立性。因此,設(shè)計者可不必了解硬件結(jié)構(gòu),從系統(tǒng)設(shè)計入手,在頂層進行系統(tǒng)方框圖的劃分和結(jié)構(gòu)設(shè)計,在方框圖一級用VHDL對電路的行為進行描述,并進行仿真和糾錯,然后在系統(tǒng)一級進行驗證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表,下載到具體的FPGA器件中去,從而實現(xiàn)可編程邏輯器件的專用集成電路(ASIC)設(shè)計。3.2系統(tǒng)軟件的設(shè)計根據(jù)系統(tǒng)的要求,系統(tǒng)的大部分功能都以硬件為基礎(chǔ),通過VHDL編程實現(xiàn),本設(shè)計軟件實現(xiàn)的主要能如下設(shè)置單價顯示重量、金額和單價顯示日期、時鐘去皮累計匯總語音報警(超載、欠量程)3.2.1軟件系統(tǒng)的主程序流程圖如圖3.2.圖VHDL模塊設(shè)計分頻模塊本設(shè)計所使用的FPGA最小系統(tǒng)的晶振為50MHZ,要把這個頻率的晶振應(yīng)用于實際中,就必須對該頻率做一些處理,簡單地說就是分頻。分頻為我們所需要的固定頻率值再投于應(yīng)用中。比如本系統(tǒng)中TLC7135的時鐘信號clkout1就是對標(biāo)準(zhǔn)clk進行分頻,分頻系統(tǒng)為200。所以clkout1的頻率為:50MHZ5KHZ250KHZClkclkoutResetclkout150M50MHZ5KHZ250KHZClkclkoutResetclkout1也就是說每秒發(fā)出25K個clkout1信號,且占空比為50%。另外分頻模塊還給出一個5KH的頻供其它模塊使用。分頻模塊示意圖如圖3.圖3.I2C通訊模塊I2C總線是一種串行數(shù)據(jù)總線,只有二根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。目前,支持I2C總線通信協(xié)議的視頻編、解碼芯片大多只支持100Kb/s或400Kb/s的傳輸速度,并且支持兩種地址:①從設(shè)備地址(SCLAVEADDRESS,8bit),分為讀地址和寫地址,高7位用于選中芯片,第0位是讀/寫控制位(R/W),決定是對該芯片進行讀或?qū)懖僮鳎虎趦?nèi)部寄存器單元地址(SUBADRRESS,8bit),用于決定對內(nèi)部的哪個寄存器單元進行操作,通常還支持地址單元連續(xù)的多字節(jié)順序讀寫操作。I設(shè)計的核心工作是對I2C總線命令及時序的狀態(tài)劃分。在控制核內(nèi)共設(shè)置了兩個狀態(tài)機,分別稱為命令狀態(tài)機和時序狀態(tài)機。其中,命令狀態(tài)機用于管理I2C總線上的命令狀態(tài),并實現(xiàn)I2C總線具體的讀、寫操作的命令狀態(tài)轉(zhuǎn)移過程;時序狀態(tài)機用于實現(xiàn)I2C總線上啟動、停止、讀、寫、確認等命令的具體時序關(guān)系。這樣就把控制核從邏輯上分為兩個狀態(tài)機,共同完成最終的總線命令與時序。I2C程序流程圖如下圖所示。開始開始結(jié)束發(fā)開始信號寫器件地址寫器件從地址寫寄存器地址寫入初始化數(shù)據(jù)發(fā)結(jié)束信號寫器件地址寫器件從地址重發(fā)開始信號寫器件讀命令讀各個寄存器發(fā)結(jié)束信號發(fā)開始信號寫PCF8563各個寄存器讀PCF8563各個寄存器圖3.3.33.?dāng)?shù)據(jù)處理模塊數(shù)據(jù)處理模塊包括接收部分,數(shù)據(jù)RAM,乘法運算模塊等。系統(tǒng)將商品的代號、名稱、單價等信息存于數(shù)據(jù)RAM中,當(dāng)接收到AD轉(zhuǎn)換器的數(shù)據(jù)(電壓信號)后,將其轉(zhuǎn)化為相應(yīng)重量數(shù)據(jù)信號,并將其進行乘法運算得到金額,即金額=重量×單價并自動檢測商品是否大于稱重傳感器的量程,如果大于傳感器的量程則向報警電路輸出一個低電平信號BG,使發(fā)光二極管點亮。數(shù)碼管全部顯示零。在進行乘法運算得出結(jié)果后,各信息送到LED或LCD譯碼模塊。圖3.2.數(shù)據(jù)數(shù)據(jù)RAM乘法模塊接收AD轉(zhuǎn)換數(shù)據(jù)電壓-重量轉(zhuǎn)換模塊至譯碼模塊判斷模塊報警信號鍵盤控制圖3.4.譯碼顯示模塊譯碼顯示模塊是建立在內(nèi)部系統(tǒng)和觀測人之間的橋梁。通過譯碼顯示,使輸出結(jié)果可視化,界面友好化。該模塊由LED譯碼和LCD譯碼組成,主要是將各信息量轉(zhuǎn)換成相應(yīng)的顯示代碼。LED譯碼模塊是將數(shù)字量轉(zhuǎn)換為BCD碼來驅(qū)動數(shù)碼管。采用動態(tài)顯示,因此采用VHDL狀態(tài)機設(shè)計,共分為八個狀態(tài),即八個數(shù)碼管的位碼依次選通點亮數(shù)碼管。用FPGA驅(qū)動液晶顯示的原理是對LM3037進行控制,通過8位的總線,先對LM3037進行配置,即寫入命令,然后輸入要顯示的內(nèi)容,即寫入數(shù)據(jù),狀態(tài)轉(zhuǎn)換圖如圖3.3.圖3.35.鍵盤控制模塊鍵盤控制電路由16個按鍵組成,其中數(shù)據(jù)鍵10個,控制鍵6個。鍵盤控制程序的設(shè)計將各按鍵設(shè)置為特定的功能,使用起來十分方便??梢酝ㄟ^鍵盤設(shè)置日期、時間、商品代號、單價等不同信息。3.2.3程序設(shè)計頂層映射原理系統(tǒng)的程序設(shè)計是基于VHDL的模塊化設(shè)計,通過ISE工程編輯器(Projectnavigator)產(chǎn)生原理圖模塊(CreateSchematicSymbol)或自動產(chǎn)生頂層映射的原理圖(ViewRTLSchematic),如圖3.3.3程序清單及仿真程序清單(見附錄)。設(shè)計輸入利用VHDL語言完成后,接下來是對程序進行功能仿真(FunctionSimulation)其仿真的目的是檢查程序是否有錯,是否達到預(yù)定的目標(biāo)。之后是時序仿真(TimingSimulation),其目的是通過時序可以更清楚的了解程序的工作過程,在較復(fù)雜的系統(tǒng)中時序仿真是必不可少的。各模塊的時序仿真圖見附錄。圖3.3.6圖3.3.6電子稱程序設(shè)計頂層映射原理圖第四章系統(tǒng)測試在系統(tǒng)硬件和軟件都安裝調(diào)試好后,便可以進行軟件和硬件的綜合測試,并對測試的誤差進行分析。4.1測試儀器清單測試使用的儀器設(shè)備如表4.表4.1.1測試使用的儀器設(shè)備序號名稱型號數(shù)量備注13位半數(shù)字萬用表UNI-T1深圳勝利公司2直流穩(wěn)壓電源DF1731SC2A1江蘇揚中電子儀器廠3信號發(fā)生器GFG-8216A1南京無線電儀器廠4雙蹤示波器YB43651江蘇揚中電子儀器廠5FPGA實驗儀DP-FPGA1廣州致遠電子有限公司4.2測試方法在系統(tǒng)硬件焊接完成及軟件功能仿真、下載成功之后。接下來對整個系統(tǒng)進行調(diào)試,其方法如下:將傳感器放平,接好電路,使用直流穩(wěn)壓電源(DF1731SC2A)為FPGA及其他電路提供+5V電壓,為傳感器提供12V電壓,不放任砝碼時看重量顯示是否為零,不為零則調(diào)整電位器,改變放大器的放大倍數(shù),使重量值為零,加上不同的砝碼,記下顯示的重量Mx(Kg)。最后進行系統(tǒng)誤差計算。在測試過程中根據(jù)出現(xiàn)的問題改進電路以及程序。反復(fù)進行直到成功。0002西瓜000002西瓜00.65元2005年8月2日10:25LCD顯示重量(Kg)金額(元)LED顯示圖4.2.1系統(tǒng)測試4.3測試結(jié)果和誤差分析4.3.根據(jù)上節(jié)的測試方法,設(shè)M為砝碼的質(zhì)量,Mx為電子稱顯示的重量,測試后得到表4.3.1的測試結(jié)果.表4.3.1測量結(jié)果數(shù)據(jù)表序號砝碼質(zhì)量/M(g)顯示質(zhì)量/Mx(g)誤差(g)相對誤差%150%2100100.0003150150.0004200200.0005250249.90.10.04%6300300.0007350350.0008400400.10.10.025%4.3.2表中誤差為相對誤差,其計算公式為(試4.3.1)由上式可以看出,系統(tǒng)的測量誤差取決于兩個量M、Mx,計算得出的數(shù)據(jù)越大,說明誤差越大,系統(tǒng)精度越低,從表只可以看出,系統(tǒng)的誤差小于0.2%遠小于設(shè)計要求的誤差。第五章設(shè)計總結(jié)設(shè)計采用FPGA最小系統(tǒng)為控制核心,實現(xiàn)了一款具有特色的實用電子稱。通過測試,系統(tǒng)完全達到了設(shè)計要求,不但完成了基本要求,發(fā)揮部分的要求,并增加了語音提示、時鐘和過載提示三個創(chuàng)新功能。經(jīng)過幾天的努力實踐,不斷的測試,不斷的改進電路或程序,最后完成了設(shè)計。在設(shè)計過程中,我們不僅僅是完成了設(shè)計任務(wù),更重要的是學(xué)到很多課本上沒有的知識,同時也特別感謝各位老師和同學(xué)的幫助和支持,使我們這次設(shè)計能順利完成。參考文獻潘松,黃繼業(yè).EDA技術(shù)實用教程.北京:科學(xué)出版社,2002年10月第一版肖景和.?dāng)?shù)字集成電路應(yīng)用精粹.北京:人民郵電出版社,2002年6月第1版陳永甫.電子電路智能化設(shè)計實例與應(yīng)用.北京:電子工業(yè)出版社,2002年8月第1版李輝.ISP系統(tǒng)設(shè)計技術(shù)入門與應(yīng)用.北京:電子工業(yè)出版社,2002年2月第1版曾凡泰,陳美金著.VHDL程序設(shè)計.北京:清華大大學(xué)學(xué)出版社,2001年1月第2版黃智偉.全國大學(xué)生電子設(shè)計競賽訓(xùn)練教程.北京:電子工業(yè)出版式社,2005年1月第1版附錄1主要元器件清單作用器件型號個數(shù)封裝放大器INA1261DIP8放大器LM3861DIP8放大器AD7111DIP8AD轉(zhuǎn)換TLC71351DIP16時鐘芯片PCF85631DIP8語音芯片ISD14201DIP28FPGA最小系統(tǒng)SpartanⅡE-XC2S100E1DIP40譯碼器74HC1381DIP16I/O擴展82551DIP40鍵盤控制ZLG72891DIP283289電位器100K410K4100歐2200歐2晶振32.768K112M1鎖存器74HC3732DIP20壓力傳感器LS-1稱重傳感器1附錄2印制板圖檢測部分底層印制板圖(包括前置放大和AD轉(zhuǎn)換部分)檢測部分頂層印制板圖FPGA控制板印制板圖附錄3,程序清單1頂層文件Engineer:徐文卿,藍仁富,唐正宇--DesignName:電子稱--ModuleName:TOP--ProjectName:電子稱--TargetDevice:--Toolversions:ISE7.1i--Description:帶時鐘功能,同時顯示商品單價,總價,重量等信息。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisport(clkin:instd_logic; --時鐘輸入 reset:instd_logic; --復(fù)位信號 keynum:instd_logic_vector(9downto0); --數(shù)字鍵輸入 keycom:instd_logic_vector(5downto0); --命令鍵輸入 clkout1:outstd_logic; --給ICL7135時鐘信號 din:instd_logic_vector(4downto0); --ICL7135位選 bin:instd_logic_vector(3downto0); --ICL7135數(shù)據(jù) str:instd_logic; --ICL7135輸出指示信號 scl:outstd_logic;--PCF8563時鐘芯片SCL sda:inoutstd_logic;--PCF8563時鐘芯片SDA rs:outstd_logic; --液晶輸出控制口RS rw:outstd_logic;--液晶輸出控制口RWe:outstd_logic; --液晶使能口Erst:outstd_logic;--液晶復(fù)位psb:outstd_logic;--工作時置高電平lcddata:outstd_logic_vector(7downto0); --液晶數(shù)據(jù)口leden:outstd_logic_vector(2downto0); --數(shù)碼管位選口leddata:outstd_logic_vector(7downto0) --數(shù)碼管段碼口);endtop;architectureBehavioraloftopiscomponentkeyboardis --鍵盤模塊port(clkin:instd_logic; reset:instd_logic; keynum:instd_logic_vector(9downto0); keycom:instd_logic_vector(5downto0); codewei:outstd_logic_vector(1downto0); code:outstd_logic_vector(15downto0) );endcomponent; --ICL7135模塊componenticl7135isport(clkin:instd_logic; reset:instd_logic; din:instd_logic_vector(4downto0); bin:instd_logic_vector(3downto0); str:instd_logic; leddata:outstd_logic_vector(15downto0) );endcomponent;componentcommunicationis --PCF8563時鐘芯片模塊port(scl:outstd_logic; sda:inoutstd_logic; clkin:instd_logic; reset:instd_logic; lcddata:outstd_logic_vector(31downto0); point:outstd_logic );endcomponent;componentfenpinis --分頻模塊 port(clkin:instd_logic; reset:instd_logic; clkout:outstd_logic; clkout1:outstd_logic );endcomponent;componentleddisplayis --數(shù)碼管顯示驅(qū)動 port(clk:instd_logic; reset:instd_logic; data:instd_logic_vector(31downto0); point:instd_logic_vector(7downto0); leden:outstd_logic_vector(2downto0); leddata:outstd_logic_vector(7downto0) );endcomponent;componentlcddisplayis --液晶顯示驅(qū)動 port(clkin:instd_logic; reset:instd_logic; codewei:instd_logic_vector(1downto0); code:instd_logic_vector(15downto0); waredata:instd_logic_vector(63downto0); timedata:instd_logic_vector(31downto0); p:instd_logic; rs:outstd_logic; rw:outstd_logic; e:outstd_logic; rst:outstd_logic; psb:outstd_logic; lcddata:outstd_logic_vector(7downto0) );endcomponent;componentwareis --商品信息儲存port(clkin:instd_logic; code:instd_logic_vector(15downto0); waredata:outstd_logic_vector(63downto0) );endcomponent;componentmultiplyis --價格計算電路 port(clkin:instd_logic; uprice:instd_logic_vector(15downto0); weight:instd_logic_vector(15downto0); price:outstd_logic_vector(15downto0) );endcomponent;signalcodewei:std_logic_vector(1downto0); signalcode:std_logic_vector(15downto0); --商品編碼signalweight:std_logic_vector(15downto0); --商品重量signaldvclk:std_logic; --分頻時鐘signaltimedata:std_logic_vector(31downto0); --時鐘信息signalpoint:std_logic; --秒鐘閃爍控制signalp:std_logic_vector(7downto0); --數(shù)碼管小數(shù)點signalwaredata:std_logic_vector(63downto0); --商品信息signaluprice:std_logic_vector(15downto0); --商品單價signalprice:std_logic_vector(15downto0); --商品總價signalleddataa:std_logic_vector(31downto0); --數(shù)碼管數(shù)據(jù)beginu1:keyboardportmap(clkin=>clkin, reset=>reset, keynum=>keynum, keycom=>keycom, codewei=>codewei, code=>code);u2:icl7135portmap(clkin=>clkin,reset=>reset, din=>din, bin=>bin, str=>str, leddata=>weight);u3:communicationportmap(scl=>scl, sda=>sda, clkin=>dvclk, reset=>reset, lcddata=>timedata, point=>point);u4:fenpin portmap (clkin=>clkin, reset=>reset, clkout=>dvclk,clkout1=>clkout1);u5:wareportmap(clkin=>clkin, code=>code, waredata=>waredata);u6:multiplyportmap(clkin=>clkin,uprice=>uprice, weight=>weight, price=>price);u7:leddisplayportmap(clk=>dvclk,reset=>reset, data=>leddataa, point=>p, leden=>leden, leddata=>leddata);u8:lcddisplayportmap(clkin=>dvclk, reset=>reset, codewei=>codewei, code=>code, waredata=>waredata, timedata=>timedata, p=>point, rs=>rs, rw=>rw, e=>e, rst=>rst, psb=>psb, lcddata=>lcddata);p<="01111011";leddataa<=weight&price;uprice<=waredata(15downto0);endBehavioral;2.PCF8563通訊使用的I2C程序Description:與PCF8563通訊使用的I2C程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitycommunicationisport(scl:outstd_logic; sda:inoutstd_logic; clkin:instd_logic; reset:instd_logic;lcddata:outstd_logic_vector(31downto0); point:outstd_logic );endcommunication;architectureBehavioralofcommunicationistypestateis(writestate,readstate); --寫和讀兩個大的狀態(tài)signalpcfstate:state;typei2cstateis(start,send,read,ans,sans,stop); --I2C的各個子狀態(tài)signali2c:i2cstate;typeaddr1isarray(0to8)ofstd_logic_vector(7downto0);--寫預(yù)設(shè)值,年月日constantaddress1:addr1:=(("10100010"),--器件地址A20("00000010"),--器件從地址02 1 ("00110000"),--秒寄存器 2("00100010"),--分寄存器 3("00010011"),--小時寄存器4 ("00100101"),--日期寄存器5("00000001"),--星期寄存器6("00010001"),--月份寄存器7("00000001"));--年寄存器 8typeaddr2isarray(0to2)ofstd_logic_vector(7downto0);--讀前的初始和命令constantaddress2:addr2:=(("10100010"),--器件地址A2("00000010"),--器件從地址02("10100011"));--器件地址2A3typedatatypeisarray(0to6)ofstd_logic_vector(7downto0);--用來寄存讀到的數(shù)據(jù)的信號組signaldata:datatype;beginprocess(clkin,reset)--I2C進程variablecnt1:integerrange0to9;variablecnt2:integerrange0to8;variablecnt3:integerrange0to3;beginifreset='0'then --復(fù)位 pcfstate<=writestate;--一級狀態(tài)為寫狀態(tài) i2c<=start; --二級狀態(tài)為開始狀態(tài) cnt1:=0; --各個變量給初值 cnt2:=8; cnt3:=0; data<=(("00000000"), --將時間寄存器清零 ("00000000"), ("00000000"), ("00000000"), ("00000000"), ("00000000"), ("00000000")); elsifrising_edge(clkin)then casepcfstateis whenwritestate=>casei2cis whenstart=>casecnt3is --開始數(shù)據(jù)傳送信號 when0=>sda<='1';cnt3:=1; when1=>scl<='1'cnt3:=2; when2=>sda<='0';cnt3:=3; when3=>scl<='0';i2c<=send;cnt3:=0; whenothers=>null; endcase; whensend=>casecnt3is --數(shù)據(jù)傳送,先寫address1 when0=>sda<=address1(cnt1)(cnt2-1); cnt3:=1; when1=>scl<='1';cnt3:=2; when2=>scl<='0';cnt2:=cnt2-1; ifcnt2=0thencnt2:=8; i2c<=ans; else i2c<=send; endif; cnt3:=0; whenothers=>null;endcase;whenans=>casecnt3is --應(yīng)答信號when0=>sda<='Z';scl<='1';cnt3:=1; when1=>cnt3:=2; when2=>scl<='0';cnt1:=cnt1+1; ifcnt1=9thencnt1:=0;i2c<=stop; elsei2c<=send; endif;cnt3:=0;whenothers=>null;endcase; whenstop=>casecnt3is --停止信號 when0=>sda<='0';cnt3:=1;when1=>scl<='1';cnt3:=2; when2=>sda<='1';cnt3:=3; when3=>scl<='0';pcfstate<=readstate;i2c<=start;cnt3:=0; whenothers=>null; endcase;whenothers=>null;endcase;whenreadstate=>casei2cis --信號開始 whenstart=> casecnt3is when0=>sda<='1';cnt3:=1;when1=>scl<='1';cnt3:=2;when2=>sda<='0';cnt3:=3;when3=>scl<='0';i2c<=send;cnt3:=0; whenothers=>null;endcase;whensend=>casecnt3is --讀前初始化when0=>sda<=address2(cnt1)(cnt2-1);cnt3:=1; when1=>scl<='1';cnt3:=2; when2=>scl<='0';cnt2:=cnt2-1;ifcnt2=0thencnt2:=8;i2c<=ans;elsei2c<=send; endif; cnt3:=0;whenothers=>null; endcase; whenans=>casecnt3is --應(yīng)答信號when0=>sda<='Z';cnt3:=1; when1=>scl<='1';cnt3:=2;when2=>scl<='0';cnt1:=cnt1+1; ifcnt1=2then i2c<=start; elsifcnt1=3then i2c<=read;cnt1:=0; elsifcnt1=1theni2c<=send; endif;cnt3:=0; whenothers=>null;endcase; whenread=>casecnt3is --讀數(shù)據(jù)when0=>sda<='Z';cnt3:=1; when1=>scl<='1';cnt3:=2;when2=>data(cnt1)(cnt2-1)<=sda; cnt3:=3;when3=>scl<='0';cnt2:=cnt2-1; ifcnt2=0thencnt2:=8;i2c<=sans; elsei2c<=read; endif; cnt3:=0;whenothers=>null; endcase; whensans=>casecnt3is --給8563送應(yīng)答 when0=>sda<='0';cnt3:=1; when1=>scl<='1';cnt3:=2;when2=>scl<='0';cnt1:=cnt1+1; ifcnt1=7thencnt1:=0;i2c<=stop; elsei2c<=read;endif;cnt3:=0;whenothers=>null;endcase;whenstop=>casecnt3is --停止位 when0=>sda<='0';cnt3:=1;when1=>scl<='1';cnt3:=2;when2=>sda<='1';cnt3:=3;when3=>scl<='0'; pcfstate<=readstate; i2c<=start; cnt3:=0; whenothers=>null;endcase;whenothers=>null; endcase;endcase;endif;endprocess; lcddata<=data(6)&data(5)(4downto0)&data(3)(5downto0)&data(2)(5downto0)&data(1)(6downto0);process(data(0)(0)) --小數(shù)點進程,按秒閃爍beginifdata(0)(0)='0'then point<='0'; else point<='1'; endif;endprocess;endBehavioral;3乘法電路Description:乘法電路--將商品重量和商品單價輸入,將輸出商品總價--Dependencies:本程序?qū)儆谑≈鳎褂煤唵纬朔?,大量浪費FPGA的資源,還有待改進----Revision:--Revision0.01-FileCreated--AdditionalComments:--libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitymultiplyisport(clkin:instd_logic; uprice:instd_logic_vector(15downto0); --輸入單價 weight:instd_logic_vector(15downto0); --輸入重量 price:outstd_logic_vector(15downto0) --輸出價格 );endmultiply;architectureBehavio

溫馨提示

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

評論

0/150

提交評論