eda直流電機(jī)測(cè)控儀課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  緒論</b></p><p>  1.1 FPGA背景</p><p>  目前以高速集成硬件描述語(yǔ)言(VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn) 單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC 設(shè)計(jì)驗(yàn)證的技術(shù)主流。這些可編輯元件可以被用來(lái)實(shí)現(xiàn)一些基本的邏輯門(mén)電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比

2、如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過(guò)可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來(lái),就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠(chǎng)后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。 </p><p>  FPGA一般來(lái)說(shuō)比ASIC(專(zhuān)用集成芯片)的速度

3、要慢,無(wú)法完成復(fù)雜的設(shè)計(jì),而且消耗更多的電能。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來(lái)改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠(chǎng)商也可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開(kāi)發(fā)是在普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類(lèi)似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)。</p><p>  1.2 FPGA發(fā)展前景 </p

4、><p>  FPGA技術(shù)正處于高速發(fā)展時(shí)期,新型芯片的規(guī)模越來(lái)越大,成本也越來(lái)越低,低端的FPGA已逐步取代了傳統(tǒng)的數(shù)字元件,高端的FPGA不斷在爭(zhēng)奪ASIC的市場(chǎng)份額。先進(jìn)的ASIC生產(chǎn)工藝已經(jīng)被用于FPGA的生產(chǎn),越來(lái)越豐富的處理器內(nèi)核被嵌入到高端的FPGA芯片中,基于FPGA的開(kāi)發(fā)成為一項(xiàng)系統(tǒng)級(jí)設(shè)計(jì)工程。隨著半導(dǎo)體制造工藝的不同提高,F(xiàn)PGA 的集成度將不斷提高,制造成本將不斷降低,其作為替代ASIC 來(lái)實(shí)現(xiàn)

5、電子系統(tǒng)的前景將日趨光明。</p><p>  (1) 大容量、低電壓、低功耗FPGA</p><p>  大容量FPGA 是市場(chǎng)發(fā)展的焦點(diǎn)。FPGA 產(chǎn)業(yè)中的兩大霸主:Altera和Xilinx在超大容量FPGA上展開(kāi)了激烈的競(jìng)爭(zhēng)。2007年Altera推出了65nm工藝的StratixIII系列芯片,其容量為67200個(gè)L E (Logic Element,邏輯單元),Xilinx推出

6、的65nm工藝的VitexVI系列芯片,其容量為33792個(gè)Slices (一個(gè)Slices約等于2個(gè)L E)。采用深亞微米(DSM)的半導(dǎo)體工藝后,器件在性能提高的同時(shí),價(jià)格也在逐步降低。由于便攜式應(yīng)用產(chǎn)品的發(fā)展,對(duì)FPGA 的低電壓、低功耗的要日益迫切。因此,無(wú)論那個(gè)廠(chǎng)家、哪種類(lèi)型的產(chǎn)品,都在瞄準(zhǔn)這個(gè)方向而努力。</p><p>  (2) 系統(tǒng)級(jí)高密度FPGA</p><p>  隨

7、著生產(chǎn)規(guī)模的提高,產(chǎn)品應(yīng)用成本的下降,F(xiàn)PGA 的應(yīng)用已經(jīng)不是過(guò)去的僅僅適用于系統(tǒng)接口部件的現(xiàn)場(chǎng)集成,而是將它靈活地應(yīng)用于系統(tǒng)級(jí)(包括其核心功能芯片)設(shè)計(jì)之中。在這樣的背景下,國(guó)際主要FPGA 廠(chǎng)家在系統(tǒng)級(jí)高密度FPGA 的技術(shù)發(fā)展上,主要強(qiáng)調(diào)了兩個(gè)方面:FPGA 的IP( Intellec2tual Property ,知識(shí)產(chǎn)權(quán))硬核和IP軟核。當(dāng)前具有IP內(nèi)核的系統(tǒng)級(jí)FPGA的開(kāi)發(fā)主要體現(xiàn)在兩個(gè)方面:一方面是FPGA 廠(chǎng)商將IP硬核

8、(指完成版圖設(shè)計(jì)的功能單元模塊)嵌入到FPGA 器件中,另一方面是大力擴(kuò)充優(yōu)化的IP軟核(指利用HDL語(yǔ)言設(shè)計(jì)并經(jīng)過(guò)綜合驗(yàn)證的功能單元模塊),用戶(hù)可以直接利用這些預(yù)定義的、經(jīng)過(guò)測(cè)試和驗(yàn)證的IP 核資源,有效地完成復(fù)雜的片上系統(tǒng)設(shè)計(jì)。</p><p>  (3) FPGA和ASIC出現(xiàn)相互融合</p><p>  雖然標(biāo)準(zhǔn)邏輯ASIC 芯片尺寸小、功能強(qiáng)、功耗低,但其設(shè)計(jì)復(fù)雜,并且有批量要求

9、。FPGA價(jià)格較低廉,能在現(xiàn)場(chǎng)進(jìn)行編程,但它們體積大、能力有限,而且功耗比ASIC大。正因如此,F(xiàn)PGA和ASIC正在互相融合,取長(zhǎng)補(bǔ)短。隨著一些ASIC制造商提供具有可編程邏輯的標(biāo)準(zhǔn)單元,F(xiàn)PGA 制造商重新對(duì)標(biāo)準(zhǔn)邏輯單元發(fā)生興趣。</p><p>  (4) 動(dòng)態(tài)可重構(gòu)FPGA</p><p>  動(dòng)態(tài)可重構(gòu)FPGA是指在一定條件下芯片不僅具有在系統(tǒng)重新配置電路功能的特性,而且還具有在

10、系統(tǒng)動(dòng)態(tài)重構(gòu)電路邏輯的能力。對(duì)于數(shù)字時(shí)序邏輯系統(tǒng),動(dòng)態(tài)可重構(gòu)FPGA的意義在于其時(shí)序邏輯的發(fā)生不是通過(guò)調(diào)用芯片內(nèi)不同區(qū)域、不同邏輯資源來(lái)組合而成,而是通過(guò)對(duì)FPGA 進(jìn)行局部的或全局的芯片邏輯的動(dòng)態(tài)重構(gòu)而實(shí)現(xiàn)的。動(dòng)態(tài)可重構(gòu)FPGA在器件編程結(jié)構(gòu)上具有專(zhuān)門(mén)的特征,其內(nèi)部邏輯塊和內(nèi)部連線(xiàn)的改變,可以通過(guò)讀取不同的SRAM中的數(shù)據(jù)來(lái)直接實(shí)現(xiàn)這樣的邏輯重構(gòu),時(shí)間往往在納秒級(jí),有助于實(shí)現(xiàn)FPGA系統(tǒng)邏輯功能的動(dòng)態(tài)構(gòu)。</p><

11、;p>  1.3 課程設(shè)計(jì)任務(wù)</p><p>  本課程設(shè)計(jì)中使用Altera公司的EP2C35系列的FPGA芯片,利用SOPC-NIOSII-EP2C35開(kāi)發(fā)板直流電機(jī)與步進(jìn)電機(jī)模塊等資源,實(shí)現(xiàn)一個(gè)直流電機(jī)測(cè)控儀。</p><p> ?。?)基本技能掌握:</p><p>  1 掌握時(shí)鐘作用下頻率的控制</p><p>  2 掌

12、握十進(jìn)制計(jì)數(shù)器的設(shè)計(jì)</p><p>  3 掌握16位的鎖存器的設(shè)計(jì)</p><p>  4 掌握顯示譯碼功能的設(shè)計(jì)</p><p><b> ?。?)基本功能要求</b></p><p>  1 利用旋轉(zhuǎn)電位器實(shí)現(xiàn)轉(zhuǎn)速的控制</p><p>  2 利用PWM信號(hào)實(shí)現(xiàn)轉(zhuǎn)速的控制</p&g

13、t;<p>  3 利用8位動(dòng)態(tài)七段碼管顯示實(shí)現(xiàn)轉(zhuǎn)速的顯示</p><p> ?。?)擴(kuò)展功能選擇性要求</p><p>  1 利用4×4鍵盤(pán)陣列實(shí)現(xiàn)鍵盤(pán)轉(zhuǎn)速的控制</p><p>  2 利用16*16點(diǎn)陣顯示實(shí)現(xiàn)轉(zhuǎn)速級(jí)別的顯示</p><p><b>  2 設(shè)計(jì)原理</b></p&

14、gt;<p>  2.1 直流電機(jī)測(cè)控總原理</p><p>  直流電機(jī)測(cè)控儀總體設(shè)計(jì)硬件由圖2.1所示,F(xiàn)PGA為Altera公司的EP2C35系列,輸入設(shè)備有時(shí)鐘、4*4鍵盤(pán)、霍爾器件和警報(bào)控制開(kāi)關(guān)。時(shí)鐘采用1MHZ,4*4鍵盤(pán)給FPGA輸入一個(gè)4位數(shù)組信號(hào),霍爾器件輸入計(jì)數(shù)脈沖。輸出設(shè)備有直流電機(jī)、8位7段字符LED數(shù)碼管、16*16點(diǎn)陣LED,直流電機(jī)可采用直接由旋鈕控制轉(zhuǎn)速或者PWM控制

15、轉(zhuǎn)速,8位7段字符LED數(shù)碼管顯示每分鐘轉(zhuǎn)速,16*16點(diǎn)陣LED顯示速度級(jí)別。</p><p>  圖2.1:總體設(shè)計(jì)硬件框架圖</p><p>  2.2 直流電機(jī)與霍爾器件驅(qū)動(dòng)</p><p>  將直流電源通過(guò)電刷接通電樞繞組,使電樞導(dǎo)體有電流流過(guò), 由于電磁作用,這樣電樞導(dǎo)體將會(huì)產(chǎn)生磁場(chǎng)。同時(shí)產(chǎn)生的磁場(chǎng)與主磁極的的磁場(chǎng)產(chǎn)生電磁力,這個(gè)電磁力作用于轉(zhuǎn)子,使轉(zhuǎn)

16、子以一定的速度開(kāi)始旋轉(zhuǎn),這樣電機(jī)就開(kāi)始工作。</p><p>  圖2.2:直流電機(jī)結(jié)構(gòu)圖</p><p>  為了能夠測(cè)定出電機(jī)在單位時(shí)間內(nèi)轉(zhuǎn)子旋轉(zhuǎn)了多少個(gè)周期,我們?cè)陔姍C(jī)的外部電路中加入了一個(gè)開(kāi)關(guān)型的霍爾器件,同時(shí)在電子轉(zhuǎn)子上的轉(zhuǎn)盤(pán)上加入了一個(gè)能夠使霍爾原件產(chǎn)生輸出的帶有磁場(chǎng)的磁鋼片。當(dāng)電機(jī)旋轉(zhuǎn)時(shí),帶動(dòng)轉(zhuǎn)盤(pán)是的磁鋼片一起旋轉(zhuǎn),當(dāng)磁鋼片旋轉(zhuǎn)到霍爾器件的上方時(shí),可以導(dǎo)致霍爾器件的輸出端高電

17、平變?yōu)榈碗娖?。?dāng)磁鋼片轉(zhuǎn)過(guò)霍爾器件上方后,霍爾器件的輸出端又恢復(fù)高電平輸出。這樣電機(jī)每旋轉(zhuǎn)一周,則會(huì)使霍爾器件的輸出端產(chǎn)生一個(gè)低脈沖,我們就可以通過(guò)檢測(cè)單位時(shí)間內(nèi)霍爾器件輸出端低脈沖的個(gè)數(shù)來(lái)推算出直流電機(jī)在單位時(shí)間內(nèi)的轉(zhuǎn)速。直流電機(jī)和開(kāi)關(guān)型霍爾器件的電路原理圖如下圖2.3所示:</p><p>  圖2.3:直流電機(jī)、霍爾器件電路圖</p><p>  直流電機(jī)驅(qū)動(dòng)有兩種方式,其一是可以由

18、模擬電平來(lái)驅(qū)動(dòng),把電路圖上4與3短接,可以旋轉(zhuǎn)實(shí)驗(yàn)箱左邊的旋鈕,調(diào)節(jié)旋鈕的可以控制速度;其二是通過(guò)PWM控制,把電路圖的6與5短接,PWM信號(hào)高電位選通三極管,讓直流電機(jī)轉(zhuǎn)動(dòng),不過(guò)為了讓直流電機(jī)獲得較大的轉(zhuǎn)速,同樣要把電機(jī)左邊的旋鈕調(diào)到比較大的位置。</p><p><b>  2.3 鍵盤(pán)驅(qū)動(dòng)</b></p><p>  對(duì)鍵盤(pán)的電位掃描,就可以確定當(dāng)前的鍵有沒(méi)有被

19、按下。單個(gè)按鍵電路如圖2.4所示,在按鍵沒(méi)有被按下時(shí),在判斷電位點(diǎn)可以獲取高電位,在鍵被按下時(shí),在判斷電位為低電位,這樣可以通過(guò)判斷點(diǎn)電位的高低即可確定按鍵有沒(méi)有被按下。</p><p>  圖2.4:?jiǎn)蝹€(gè)按鍵電路圖</p><p>  4*4的鍵盤(pán)與FPGA連接圖如下圖3.4所示,掃描鍵盤(pán)由FPGA的8個(gè)控制端口確定,控制行端口設(shè)置為buffer模式,控制列端口設(shè)置為in模式,掃描鍵盤(pán)的

20、方法為先給第一行鍵盤(pán)為低電平,其余行列為高電平,讀取縱列的電位值,如果沒(méi)鍵被按下,在電位判斷端口獲取的為高電位,如果有鍵按下,電位判斷點(diǎn)的電平不全為零,由電位值的第幾位為零就可以確定當(dāng)前行那個(gè)鍵被按下,依次對(duì)四行鍵盤(pán)掃描,掃描結(jié)束輸出4位數(shù)組的信號(hào),以告訴那個(gè)鍵被按下。</p><p>  圖2.5: 4*4鍵盤(pán)電路圖</p><p>  2.4 8位7段數(shù)碼管的驅(qū)動(dòng)</p>

21、<p>  七段數(shù)碼管是電子開(kāi)發(fā)過(guò)程中常用的輸出顯示設(shè)備。在實(shí)驗(yàn)系統(tǒng)中使用的是兩個(gè)四位一體、共陰極型七段數(shù)碼管。其單個(gè)靜態(tài)數(shù)碼管如下圖2.6所示。高點(diǎn)平點(diǎn)亮數(shù)碼管相應(yīng)的數(shù)碼段。</p><p>  圖2.6 :靜態(tài)七段數(shù)碼管</p><p>  圖2.7:8位7段數(shù)碼管的驅(qū)動(dòng)</p><p>  如圖2.7 的8位7段數(shù)碼管的連接,由于七段數(shù)碼管公共端

22、連接到GND(共陰極型),當(dāng)數(shù)碼管的中的那一個(gè)段被輸入高電平,則相應(yīng)的這一段被點(diǎn)亮。反之則不亮。四位一體的七段數(shù)碼管在單個(gè)靜態(tài)數(shù)碼管的基礎(chǔ)上加入了用于選擇哪一位數(shù)碼管的位選信號(hào)端口。八個(gè)數(shù)碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個(gè)數(shù)碼管分別由各自的位選信號(hào)來(lái)控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。</p><p>  2.5 16*16點(diǎn)LED陣列驅(qū)動(dòng)</p><p> 

23、 單個(gè)的LED的電路如下圖2.8所示,對(duì)于單個(gè)LED的電路圖當(dāng)Rn輸入一個(gè)高電平,同時(shí)Cn輸入一個(gè)低電平時(shí),電路形成一個(gè)回路,LED發(fā)光。也就是LED點(diǎn)陣對(duì)應(yīng)的這個(gè)點(diǎn)被點(diǎn)亮。</p><p>  圖2.8:?jiǎn)蝹€(gè)LED電路圖</p><p>  本設(shè)計(jì)要完成速度級(jí)別(0到15)在點(diǎn)陣LED上的顯示, 16*16點(diǎn)陣LED掃描的工作原理與8位掃描數(shù)碼管類(lèi)似,只是顯示的方式與結(jié)果不一樣而已。16

24、*16點(diǎn)陣由此256個(gè)LED通過(guò)排列組合而形成16行*16列的一個(gè)矩陣式的LED陣列。</p><p>  圖2.9:16*16點(diǎn)陣硬件圖</p><p>  16*16點(diǎn)陣LED驅(qū)動(dòng)時(shí),依次選通LED點(diǎn)陣行端口,每次只能選通一個(gè)端口(Cn),字符譯碼的第N列結(jié)果在列端口(Rn)輸入,通過(guò)高速依次點(diǎn)亮led點(diǎn)陣就可看到led點(diǎn)陣上顯示的數(shù)字。</p><p>  2

25、.6 PWM控制的原理</p><p>  PWM控制就是對(duì)脈沖的寬度進(jìn)行調(diào)制的技術(shù)。即通過(guò)對(duì)一系列脈沖的寬度進(jìn)行調(diào)制來(lái)等效地獲得所需要的波形。</p><p>  如下圖2.10所示,設(shè)定值計(jì)數(shù)器設(shè)置PWM信號(hào)的占空比。當(dāng)U\D=1,輸入CLK2,使設(shè)定值計(jì)數(shù)值的輸出值增加,PWM的占空比增加,電機(jī)轉(zhuǎn)速加快;當(dāng)U\D=0,輸入CLK2使設(shè)定值計(jì)算器的輸出值減小,PWM的占空比減小,電機(jī)轉(zhuǎn)

26、速變慢。在CLK0的作用下,鋸齒波計(jì)數(shù)器輸出周期性線(xiàn)性增加的鋸齒波。當(dāng)計(jì)數(shù)值小于設(shè)定值時(shí),數(shù)字比較器輸出低電平;當(dāng)計(jì)數(shù)值大于設(shè)定值時(shí),數(shù)字比較器輸出高電平,由此產(chǎn)生周期性的PWM波形。旋轉(zhuǎn)反向控制電路控制直流電動(dòng)機(jī)轉(zhuǎn)向和啟/停,該電路由兩個(gè)2選1多路選擇器組成,Z\F鍵控制選擇PWM波形從正端Z進(jìn)入H橋,還是從負(fù)端進(jìn)入H橋,以控制電機(jī)的旋轉(zhuǎn)方向。START鍵通過(guò)“與”門(mén)控制PWM的輸出,實(shí)現(xiàn)對(duì)電機(jī)的工作/停止控制。H橋電路由大功率晶體管

27、組成,PWM波形通過(guò)方向控制電路送到H橋,經(jīng)功率放大以后驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)。</p><p>  圖2.10 PWM控制電路原理圖</p><p><b>  3 程序設(shè)計(jì)</b></p><p>  3.1 總體程序設(shè)計(jì)思路</p><p>  程序總體設(shè)計(jì)分為時(shí)鐘控制信號(hào)模塊、十進(jìn)制計(jì)數(shù)模塊、顯示模塊、鍵盤(pán)模塊、pw

28、m控制模塊、十六位鎖存模塊、彩色led及蜂鳴器控制模塊。設(shè)計(jì)思路為十進(jìn)制計(jì)數(shù)器對(duì)霍爾器件的脈沖數(shù)計(jì)數(shù),時(shí)鐘控制在到了六秒時(shí)將計(jì)數(shù)值鎖存到16位鎖存器,顯示模塊的7段數(shù)碼管顯示鎖存器所鎖存的值,同時(shí)鍵盤(pán)模塊送出鍵盤(pán)所按得鍵值,由點(diǎn)陣LED顯示數(shù)值。</p><p>  3.2 時(shí)鐘控制信號(hào)程序設(shè)計(jì)</p><p>  時(shí)鐘控制信號(hào)中要為下級(jí)鎖存模塊提供鎖存控制型號(hào),同時(shí)為計(jì)數(shù)模塊提使能和清

29、零信號(hào),為蜂鳴器提供1khz的時(shí)鐘。設(shè)計(jì)當(dāng)中由Cnttemp對(duì)1MHZ的上升緣計(jì)數(shù)來(lái)產(chǎn)生1HZ的信號(hào)(Cnttemp<5000送出高電平,Cnttemp>5000送出低電平),Count對(duì)秒信號(hào)計(jì)數(shù),鎖存控制信號(hào)在第六秒結(jié)束時(shí)送出,清零信號(hào)在第7秒送出,所以要先產(chǎn)生秒脈沖。</p><p><b>  1M的時(shí)鐘</b></p><p>  是

30、 否</p><p>  小于 等于 大于</p><p><b>  輸出</b></p><p>  圖3.1:時(shí)鐘控制信號(hào)流程圖</p><p>  注:Enal為輸出控制計(jì)數(shù)器的使能信號(hào)。</p><p>  Clr為輸

31、出控制計(jì)數(shù)器的清零信號(hào)。</p><p>  Load為輸出控制鎖存器的鎖存信號(hào)。</p><p>  圖3.2: 時(shí)鐘控制信號(hào)模塊</p><p>  3.3 十進(jìn)制計(jì)數(shù)器程序設(shè)計(jì)</p><p>  設(shè)計(jì)當(dāng)中要顯示當(dāng)前直流電機(jī)的轉(zhuǎn)速,因而要4位十進(jìn)制的計(jì)數(shù)器,對(duì)轉(zhuǎn)速脈沖計(jì)數(shù)。設(shè)計(jì)當(dāng)中只需要設(shè)計(jì)一位十進(jìn)制的計(jì)數(shù)器,設(shè)計(jì)當(dāng)中特別注意對(duì)進(jìn)位脈沖

32、的處理。</p><p><b>  設(shè)計(jì)流程如下:</b></p><p><b>  計(jì)數(shù)脈沖</b></p><p><b>  是</b></p><p>  是 否</p>

33、;<p>  圖3.3:十進(jìn)制計(jì)數(shù)器程序設(shè)計(jì)流程圖</p><p>  注:CLR為外部輸入的清零信號(hào)。</p><p>  ENA為外部輸入的計(jì)數(shù)使能信號(hào)。</p><p>  十進(jìn)制計(jì)數(shù)器對(duì)計(jì)數(shù)脈沖計(jì)數(shù),當(dāng)計(jì)數(shù)值到了9時(shí),計(jì)數(shù)值重新到零,同時(shí)在歸零的同時(shí)輸出進(jìn)位脈沖。</p><p>  圖3.4十進(jìn)制計(jì)數(shù)模塊</p&

34、gt;<p>  3.4 鎖存模塊程序設(shè)計(jì)</p><p>  16位鎖存模塊設(shè)計(jì)較為簡(jiǎn)單,只有在控制信號(hào)為高電平時(shí)鎖存當(dāng)前輸入的信號(hào)值,在低電平時(shí)保持鎖存被鎖存的輸入信號(hào)。</p><p>  是 否</p><p>  圖3.5: 16位鎖存器設(shè)計(jì)流程</p><p>  注:IN為1

35、6位輸入信號(hào),OUT為16位輸出信號(hào),LOAD為輸入鎖存信號(hào)。</p><p>  信號(hào)DIN對(duì)IN信號(hào)進(jìn)行保存,只有在LOAD=’1’時(shí)才把IN信號(hào)保存到DIN,DIN再傳遞給OUT。</p><p>  圖3.6: 16位鎖存模塊</p><p>  3.5 PWM控制信號(hào)程序設(shè)計(jì)</p><p>  PWM控制信號(hào)為驅(qū)動(dòng)直流電機(jī)轉(zhuǎn)速的使

36、能信號(hào),PWM控制由四個(gè)輸入信號(hào)控制pwm的占空比,本設(shè)計(jì)當(dāng)中最高為15/16,由控制信號(hào)”1111”獲得,最低為0,由控制信號(hào)”0000”獲得。</p><p><b>  流程如</b></p><p><b>  時(shí)鐘1MHZ</b></p><p><b>  是</b></p>

37、<p><b>  否</b></p><p><b>  輸出pwm控制信號(hào)</b></p><p>  圖3.7:PWM控制流程圖</p><p>  注:DATAIN為輸入數(shù)據(jù)大小</p><p>  COUNT對(duì)時(shí)鐘從0到16000循環(huán)計(jì)數(shù),當(dāng)COUNT=0時(shí)把輸出電平置為高電平

38、,COUNT=輸入值*1000時(shí)把輸出電平置為低電平,這樣就可以通過(guò)外部輸入控制占空比,從而控制直流電機(jī)的轉(zhuǎn)速。</p><p>  圖3.8:PWM控制模塊</p><p>  3.6 鍵盤(pán)掃描及顯示模塊程序設(shè)計(jì)</p><p>  (1)鍵盤(pán)掃描程序設(shè)計(jì)</p><p>  PWM控制直流電機(jī)是通過(guò)掃描鍵盤(pán)的按鍵來(lái)控制方波的占空比,所按

39、得鍵值越來(lái),方波的占空比越大,最高可達(dá)15/16,最低為0。鍵盤(pán)掃描輸出為一個(gè)4為的數(shù)組。掃描簡(jiǎn)單的來(lái)所就是給行低電平,看列獲得的電位就可確定在此行所按下的鍵。大體流程如下:</p><p><b>  時(shí)鐘1MHZ輸入</b></p><p>  是 否</p><p><

40、b>  判斷按鍵</b></p><p><b>  輸出相應(yīng)鍵值</b></p><p>  圖3.9:鍵盤(pán)掃描流程圖</p><p>  鍵盤(pán)模塊大體設(shè)計(jì)思路為,由信號(hào)COUNT對(duì)時(shí)鐘0到3循環(huán)計(jì)數(shù),在CONT=N時(shí)對(duì)第N列掃描,判斷列端電位,確定當(dāng)前按鍵的鍵位,輸出鍵值。</p><p> ?。?

41、)顯示模塊程序設(shè)計(jì)</p><p>  顯示模塊分為兩部分,分別為8位7段數(shù)碼管led和16*16點(diǎn)陣LED,由于硬件連接的沖突(7段數(shù)碼管的7段與點(diǎn)陣led的列的低8列連接在FPGA的統(tǒng)一管腳),因此把這兩個(gè)顯示部分在統(tǒng)一模塊在驅(qū)動(dòng),分時(shí)段分別驅(qū)動(dòng)8位7段數(shù)碼管led和16*16點(diǎn)陣LED。</p><p>  時(shí)鐘1MHZ </p><p>  是

42、 否</p><p>  圖3.10:顯示模塊程序流程</p><p>  顯示程序中,我們把十進(jìn)制計(jì)數(shù)器的百、十、個(gè)位數(shù)輸入,分別在8位7段數(shù)碼管上的第三、四、五位顯示,設(shè)計(jì)當(dāng)中,只記錄六秒鐘的轉(zhuǎn)速,顯示的為每分鐘的轉(zhuǎn)速,因此第六位LED數(shù)碼管顯示0,其他數(shù)碼管顯示橫線(xiàn)。在設(shè)計(jì)當(dāng)中要注意對(duì)輸入的4位數(shù)組譯成LED數(shù)碼

43、管能顯示的7段碼(如”0001”譯碼為“01100000“)。點(diǎn)陣LED顯示也需要譯碼,按每列譯碼。點(diǎn)陣LED每次點(diǎn)亮一列,高速點(diǎn)亮就可以在陣面上看到顯示漢字或者數(shù)字。</p><p>  圖3.11:鍵盤(pán)掃描及顯示模塊 </p><p>  3.7警報(bào)控制及彩色LED模塊程序設(shè)計(jì) </p><p>  此模塊為自己添加的設(shè)計(jì)模塊,考慮到

44、直流電機(jī)的轉(zhuǎn)速,將其劃分為高、中、低三個(gè)等次,高速為轉(zhuǎn)速超過(guò)4000R/MIN,低速為轉(zhuǎn)速低于2000R/MIN,中速介于兩者之間,用紅、綠、藍(lán)三個(gè)彩色LED 顯示當(dāng)前的速度屬于哪個(gè)速度層次。設(shè)計(jì)當(dāng)中另外把5000R/MIN 設(shè)為警戒速度,當(dāng)電機(jī)轉(zhuǎn)速超過(guò)警戒速度時(shí),就會(huì)觸發(fā)警報(bào)(揚(yáng)聲器發(fā)出間隔為1 秒的的響聲),當(dāng)然超過(guò)警戒速度的警報(bào)是可以通過(guò)警報(bào)開(kāi)關(guān)關(guān)閉的。</p><p>  圖3.12:警報(bào)控制及彩色LED

45、模塊</p><p><b>  設(shè)計(jì)過(guò)程介紹</b></p><p><b>  4.1 設(shè)計(jì)過(guò)程</b></p><p><b>  (1)測(cè)速顯示</b></p><p>  當(dāng)電機(jī)旋轉(zhuǎn)時(shí),帶動(dòng)轉(zhuǎn)盤(pán)是的磁鋼片一起旋轉(zhuǎn),當(dāng)磁鋼片旋轉(zhuǎn)到霍爾器件的上方時(shí),可以導(dǎo)致霍爾器件的輸出

46、端高電平變?yōu)榈碗娖?。?dāng)磁鋼片轉(zhuǎn)過(guò)霍爾器件上方后,霍爾器件的輸出端又恢復(fù)高電平輸出。這樣電機(jī)每旋轉(zhuǎn)一周,則會(huì)使霍爾器件的輸出端產(chǎn)生一個(gè)低脈沖,我們就可以通過(guò)檢測(cè)單位時(shí)間內(nèi)霍爾器件輸出端低脈沖的個(gè)數(shù)來(lái)推算出直流電機(jī)在單位時(shí)間內(nèi)的轉(zhuǎn)速。</p><p>  電機(jī)的轉(zhuǎn)速通常是指每分鐘電機(jī)的轉(zhuǎn)速,也就是單位為rpm,實(shí)際測(cè)量過(guò)程中,為了減少轉(zhuǎn)速刷新的時(shí)間,通常都是5~10秒刷新一次。如果每6秒鐘刷新一次,那么相當(dāng)于只記錄了

47、6秒鐘內(nèi)的電機(jī)轉(zhuǎn)數(shù),把記錄的數(shù)據(jù)乘10即得到一分鐘的轉(zhuǎn)速。最后將這個(gè)數(shù)據(jù)在數(shù)碼管上顯示出來(lái)。為了使顯示的數(shù)據(jù)能夠在數(shù)碼管是顯示穩(wěn)定,在這個(gè)數(shù)據(jù)的輸出時(shí)加入了一個(gè)16位的鎖存器,把鎖存的數(shù)據(jù)送給數(shù)碼管顯示,這樣就來(lái)會(huì)因?yàn)樵谟?jì)數(shù)過(guò)程中,數(shù)據(jù)的變化而使數(shù)碼管顯示不斷變化。</p><p> ?。?)pwm產(chǎn)生控制</p><p>  通過(guò)控制占空比,從而達(dá)到控制直流電機(jī)控制。用按鍵先預(yù)設(shè)一個(gè)速度

48、值,讓電動(dòng)機(jī)的實(shí)際轉(zhuǎn)速與預(yù)設(shè)值比較,如果不相等,就調(diào)節(jié)占空比使之達(dá)到預(yù)設(shè)值</p><p>  4.2 遇到的問(wèn)題及解決方案</p><p>  問(wèn)題一:PWM 控制方式下,直流電機(jī)速度太低</p><p>  解決方法:初始在用時(shí),發(fā)現(xiàn)只有用旋律控制時(shí),直流電機(jī)的速度才能提升,在PWM控制時(shí),速度很低。我最初以為是PWM的周期太長(zhǎng),后發(fā)現(xiàn)將周期縮短依然無(wú)濟(jì)于事,

49、哪怕PWM信號(hào)占空比到了1,直流電機(jī)的速度依然非常低。后來(lái)查閱了電路圖發(fā)現(xiàn),PWM信號(hào)只是在高電位選通三極管來(lái)驅(qū)動(dòng)直流電機(jī),而決定直流電機(jī)所獲得的電壓由電機(jī)左邊的旋鈕控制,因此只需要把旋鈕調(diào)大即可提高PWM控制方式下的直流電機(jī)的轉(zhuǎn)速。</p><p>  問(wèn)題二:數(shù)碼管顯示的速度跳動(dòng)很大</p><p>  解決方法:通過(guò)把占空比從100分頻調(diào)到1000,這樣占空比沒(méi)變化1速度的變化就會(huì)減

50、少。</p><p><b>  4.3 設(shè)計(jì)體會(huì)</b></p><p>  本次課程設(shè)計(jì)為期2周,在這兩周中,我們經(jīng)歷了從什么都不懂,到有些了解,到逐漸熟悉EDA各軟件使用,及VHDL語(yǔ)言的運(yùn)用幾個(gè)過(guò)程。在此過(guò)程中我學(xué)到了很多書(shū)本上學(xué)不到的東西,同時(shí)也鞏固了以前所學(xué)的知識(shí)。在做子模塊編寫(xiě)的時(shí)候遇到了很多問(wèn)題,開(kāi)始時(shí)什么都不知道,就到網(wǎng)上搜集資料,查看老師給的資料,

51、再不懂的就問(wèn)老師,后來(lái)弄清了其中的原理后,經(jīng)過(guò)多次練習(xí),逐漸能夠解決編寫(xiě)程序中的問(wèn)題,把模塊編寫(xiě)出來(lái)。然而,在仿真時(shí),也遇到了一點(diǎn)困難,想要的結(jié)果不能得到正確的顯示,但是經(jīng)過(guò)對(duì)結(jié)果的一點(diǎn)點(diǎn)分析,從錯(cuò)誤中思考產(chǎn)生錯(cuò)誤的原因,修改電路圖,最終得到想要的結(jié)果,完成了本次課程設(shè)計(jì)。</p><p>  通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從

52、理論中得出結(jié)論,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力,才能真正為社會(huì)服務(wù)。</p><p>  在此,也要感謝同組的成員,我基礎(chǔ)不好,很多都不懂,感謝他在這兩周的無(wú)私幫助,細(xì)心講解,還要感謝給予我們悉心指導(dǎo)的老師,在這兩周中,多虧您們不厭其煩的指教。謝謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 《SOP

53、CIIEDA實(shí)驗(yàn)指導(dǎo)書(shū)》(第二版)</p><p>  [2] 《SOPCII使用手冊(cè)》(第二版)</p><p>  [3] 《EDA技術(shù)基礎(chǔ)》. 譚會(huì)生編著. 湖南大學(xué)出版社,2004</p><p>  [4] 《EDA技術(shù)實(shí)用教程(第二版),潘松、黃繼業(yè)編著 ,科學(xué)出版社 ,2005</p><p><b>  附錄A:設(shè)

54、計(jì)程序</b></p><p>  時(shí)鐘控制信號(hào)模塊程序</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  use ieee.std

55、_logic_unsigned.all;</p><p>  --------------------------------------------------------------------</p><p>  entity teltcl is</p><p>  port( Clk : in std_logic; --時(shí)鐘輸入1M

56、hz</p><p>  ena : out std_logic; --允許計(jì)數(shù)</p><p>  clr : out std_logic; --計(jì)數(shù)器清零信號(hào)產(chǎn)生</p><p>  clkhz : out std_logic; --秒脈沖信號(hào)產(chǎn)生</p><p>  c

57、lkkhz : out std_logic; --1KHZ脈沖產(chǎn)生</p><p>  load : out std_logic --鎖存、顯示輸出允許</p><p><b>  ); </b></p><p>  end teltcl;</p><p>  -----

58、---------------------------------------------------------------</p><p>  architecture behave of teltcl is</p><p>  signal clk1hz :std_logic;--1HZ時(shí)鐘信號(hào)</p><p>  signal clk1khz

59、:std_logic;</p><p>  signal count : std_logic_vector(2 downto 0);--6秒計(jì)數(shù)</p><p>  signal clr1 :std_logic;--清零信號(hào)</p><p>  signal ena1 :std_logic;--允許計(jì)數(shù)信號(hào)</p>&

60、lt;p>  signal load1 :std_logic;--允許計(jì)數(shù)信號(hào)</p><p>  signal cq1,cq2,cq3,cq4 : INTEGER RANGE 0 TO 15;--計(jì)數(shù)數(shù)據(jù)</p><p><b>  begin</b></p><p>  process(clk) --1HZ信號(hào)產(chǎn)生&l

61、t;/p><p>  variable cnttemp : INTEGER RANGE 0 TO 999999;</p><p>  variable count : integer range 0 to 999;</p><p><b>  begin</b></p><p>  IF clk='1'

62、AND clk'event THEN </p><p>  IF cnttemp=999999 THEN cnttemp:=0; </p><p><b>  ELSE </b></p><p>  IF cnttemp<500000 THEN clk1hz<='1'; </p><p&g

63、t;  ELSE clk1hz<='0'; </p><p><b>  END IF; </b></p><p>  cnttemp:=cnttemp+1; </p><p><b>  END IF; </b></p><p>  if count=999 then cou

64、nt:=0;</p><p><b>  else</b></p><p>  if count<500 then clk1khz<='1';</p><p>  else clk1khz<='0';</p><p><b>  end if;</b>

65、;</p><p>  count:=count+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  clkhz<=clk1hz;clkkhz<=clk1khz;</p><p>  

66、end process;</p><p>  process(Clk1hz)--6秒計(jì)數(shù)</p><p><b>  begin</b></p><p>  if(Clk1hz'event and Clk1hz='1') then</p><p>  count<=count+1;</

67、p><p>  if count<6 then</p><p>  ena1<='1';load1<='0';clr1<='0';</p><p>  elsif count=6 then</p><p>  load1<='1';ena1&l

68、t;='0';clr1<='0';</p><p>  elsif count=7 then</p><p>  ena1<='0';load1<='0';clr1<='1';</p><p><b>  end if;</b><

69、;/p><p><b>  end if;</b></p><p>  ena<=ena1; load<=load1;clr<=clr1;</p><p>  end process;</p><p>  end behave;</p><p>  十進(jìn)制計(jì)數(shù)器模塊程序 </

70、p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  ENTITY CNT10 IS</p><p>  PORT (CLK:IN STD_LOGIC; --計(jì)數(shù)時(shí)鐘信號(hào)</p><p>  CLR:IN STD_L

71、OGIC; --清零信號(hào)</p><p>  ENA:IN STD_LOGIC; --計(jì)數(shù)使能信號(hào)</p><p>  CQ :OUT INTEGER RANGE 0 TO 15;--4位計(jì)數(shù)結(jié)果輸出</p><p>  CARRY_OUT:OUT STD_LOGIC); --計(jì)數(shù)進(jìn)位</p><p>  END

72、 CNT10;</p><p>  ARCHITECTURE ART OF CNT10 IS </p><p>  SIGNAL CQI :INTEGER RANGE 0 TO 15;</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK,ENA) IS</p>&l

73、t;p><b>  BEGIN</b></p><p>  IF CLR= '1' THEN CQI<= 0; ----計(jì)數(shù)器異步清零</p><p>  elsIF CLK'EVENT AND CLK= '1' THEN </p><p>  IF ENA

74、= '1' THEN </p><p>  iF CQI=10 THEN cqi<=1;</p><p>  ELSE CQI<=cqi+1;</p><p>  END IF; ----等于9,則計(jì)數(shù)器清零</p><p><b>  END IF;</b></p>&l

75、t;p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS (CQI) IS</p><p><b>  BEGIN</b></p><p>  IF CQI=10 THEN CARRY_OUT<= '1'

76、; ----進(jìn)位輸出</p><p>  ELSE CARRY_OUT<= '0';</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  CQ<=CQI;</b></p>&l

77、t;p><b>  END ART;</b></p><p><b>  鍵盤(pán)掃描及顯示程序</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_ari

78、th.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  --------------------------------------------------------------------</p><p>  entity exp13 is</p><p>  port(

79、Clk : in std_logic; --時(shí)鐘信號(hào)</p><p>  buff1,buff2,buff3,buff4 : in integer range 0 to 9;</p><p>  Kr : in std_logic_vector(3 downto 0); --

80、鍵盤(pán)行</p><p>  Kc : buffer std_logic_vector(3 downto 0); --鍵盤(pán)列</p><p>  a,b,c,d,e,f,g,dp : out std_logic;</p><p>  Sa,sb,sc : buffer

81、std_logic; --七段碼管片選</p><p>  dot_c : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);</p><p>  dot_r : out std_logic_vector(7 downto 0);</p><p>  yangbo

82、 : out integer range 0 to 15;</p><p>  led : out std_logic_vector(7 downto 0)</p><p><b>  );</b></p><p>  end exp13;</p><p&g

83、t;  --------------------------------------------------------------------</p><p>  architecture behave of exp13 is</p><p>  signal keyr,keyc : std_logic_vector(3 downto 0);</p><p&g

84、t;  signal kcount : std_logic_vector(2 downto 0);</p><p>  signal dcount : std_logic_vector(1 downto 0);</p><p>  signal kflag1,kflag2 : std_logic;</p><p>  signal buf

85、f8 : integer range 0 to 15;</p><p>  signal Disp_Temp : integer range 0 to 15; --掃描鍵值</p><p>  signal Disp_Decode : std_logic_vector(7 downto 0);</p><p>  signal s

86、 : std_logic_vector(3 downto 0);</p><p>  signal key : std_logic_vector(15 downto 0);</p><p>  FUNCTION seg_code(a: in integer) return std_logic_vector is</p>

87、<p><b>  begin</b></p><p><b>  case a is</b></p><p>  when 0=>return "00111111"; --'0'</p><p>  when 1=>return "00000110

88、"; --'1'</p><p>  when 2=>return "01011011"; --'2'</p><p>  when 3=>return "01001111"; --'3'</p><p>  when 4=>return

89、"01100110"; --'4'</p><p>  when 5=>return "01101101"; --'5'</p><p>  when 6=>return "01111101"; --'6'</p><p>  when

90、 7=>return "00000111"; --'7'</p><p>  when 8=>return "01111111"; --'8'</p><p>  when 9=>return "01101111"; --'9'</p>&

91、lt;p>  when 10=>return "01110111"; --'A'</p><p>  when 11=>return "01111100"; --'b'</p><p>  when 12=>return "00111001"; --'C'

92、;</p><p>  when 13=>return "01011110"; --'d'</p><p>  when 14=>return "01111001"; --'E'</p><p>  when 15=>return "01110001";

93、 --'-'</p><p>  when others=>return "00000000"; --全滅</p><p>  end case; </p><p>  end seg_code;</p><p><b>  begin</b></p>&

94、lt;p>  yangbo<=buff8;</p><p>  Disp_Temp<=buff8;</p><p>  a<=Disp_Decode(0);</p><p>  b<=Disp_Decode(1);</p><p>  c<=Disp_Decode(2);</p><p&

95、gt;  d<=Disp_Decode(3);</p><p>  e<=Disp_Decode(4);</p><p>  f<=Disp_Decode(5);</p><p>  g<=Disp_Decode(6);</p><p>  dp<=Disp_Decode(7);</p><p

96、>  process(clk) --掃描鍵盤(pán) </p><p><b>  begin</b></p><p>  if(Clk'event and Clk='1') then </p><p>  if(Kr="1111") then</p><p>  kfl

97、ag1<='0';</p><p>  kcount<=kcount+1;</p><p>  if(kcount=0) then</p><p>  kc<="1110";</p><p>  elsif(kcount=1) then</p><p>  kc&l

98、t;="1101";</p><p>  elsif(kcount=2) then</p><p>  kc<="1011";</p><p><b>  else</b></p><p>  kc<="0111"; </p><

99、p><b>  end if;</b></p><p><b>  else</b></p><p>  kflag1<='1';</p><p><b>  keyr<=Kr;</b></p><p><b>  keyc<=

100、Kc;</b></p><p><b>  end if;</b></p><p>  kflag2<=kflag1;</p><p><b>  end if; </b></p><p>  end process; </p><p>  process

101、(Clk) -- 獲取鍵值</p><p><b>  begin</b></p><p>  if(Clk'event and Clk='1') then</p><p>  if(kflag1='1' and kflag2='0') then</p><p>

102、  if(keyr="0111") then</p><p>  case keyc is</p><p>  when "0111"=>buff8<=1; </p><p>  when "1011"=>buff8<=4; </p><p>  when

103、"1101"=>buff8<=7; </p><p>  when "1110"=>buff8<=14; </p><p>  when others=>buff8<=buff8; --no change</p><p><b>  end case;</b>

104、;</p><p>  elsif(keyr="1011") then</p><p>  case keyc is</p><p>  when "0111"=>buff8<=2; </p><p>  when "1011"=>buff8<=5; &l

105、t;/p><p>  when "1101"=>buff8<=8; </p><p>  when "1110"=>buff8<=0; </p><p>  when others=>buff8<=buff8; --no change</p><p>&l

106、t;b>  end case;</b></p><p>  elsif(keyr="1101") then</p><p>  case keyc is</p><p>  when "1110"=>buff8<=15; </p><p>  when "110

107、1"=>buff8<=9; </p><p>  when "1011"=>buff8<=6; </p><p>  when "0111"=>buff8<=3;</p><p>  when others=>buff8<=buff8; --no chan

108、ge</p><p><b>  end case;</b></p><p>  elsif(keyr="1110") then</p><p>  case keyc is</p><p>  when "1110"=>buff8<=13; </p>

109、<p>  when "1101"=>buff8<=12; </p><p>  when "1011"=>buff8<=11; </p><p>  when "0111"=>buff8<=10;</p><p>  when others=>buff

110、8<=buff8; --no change</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end if; </p><p><b>  end if; <

111、/b></p><p>  end process;</p><p>  process(clk)</p><p><b>  begin</b></p><p>  if(clk'event and clk='1') then --掃描累加 </p><p>

112、  dcount<=dcount+1;</p><p>  case dcount is</p><p>  when "00"=> Disp_Decode<=seg_code(buff1);</p><p>  when "01"=> Disp_Decode<=seg_code(buff2);

113、</p><p>  when "10"=> Disp_Decode<=seg_code(buff3);</p><p>  when "11"=> Disp_Decode<=seg_code(buff4);</p><p><b>  end case;</b></p>

114、;<p>  sa<=dcount(0);</p><p>  sb<=dcount(1);</p><p><b>  sc<='0';</b></p><p><b>  end if;</b></p><p>  end process;<

115、/p><p>  process (clk)</p><p><b>  begin</b></p><p>  if (clk'event and clk='1')then</p><p><b>  s<=s+"1";</b></p>

116、<p>  if (s="1111") then</p><p>  s<="1000";</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process; &

117、lt;/p><p>  process (s)</p><p><b>  begin</b></p><p><b>  case s is</b></p><p>  when "1000"=>dot_r<="01111111"; </p&g

118、t;<p>  when "1001"=>dot_r<="10111111";</p><p>  when "1010"=>dot_r<="11011111";</p><p>  when "1011"=>dot_r<="111

119、01111"; </p><p>  when "1100"=>dot_r<="11110111";</p><p>  when "1101"=>dot_r<="11111011"; </p><p>  when "1110"=&

120、gt;dot_r<="11111101"; </p><p>  when "1111"=>dot_r<="11111110";</p><p>  when others=>dot_r<="11111111"; </p><p>  end case; &

121、lt;/p><p>  end process;</p><p>  process(s,Disp_Temp)</p><p><b>  begin</b></p><p>  if (Disp_Temp=0) then </p><p>  led<="11000000"

122、; --十位LED顯示0 </p><p><b>  case s is</b></p><p>  when "1000"=>dot_c<=not"111111111

123、1111111"; --列顯示0</p><p>  when "1001"=>dot_c<=not"1111000000001111";</p><p>  when "1010"=>dot_c<=not"1110111111110111";</p><p

124、>  when "1011"=>dot_c<=not"1101111111111011";</p><p>  when "1100"=>dot_c<=not"1101111111111011";</p><p>  when "1101"=>dot_c&

125、lt;=not"1110111111110111";</p><p>  when "1110"=>dot_c<=not"1111000000001111";</p><p>  when "1111"=>dot_c<=not"1111111111111111";&l

126、t;/p><p>  when others=>dot_c<="0000000000000000";</p><p>  end case; </p><p>  elsif (Disp_Temp=1) then</p><p>  led<="11000000";

127、 --十位LED顯示0 </p><p><b>  case s is</b></p><p>  when "1000"=>dot_c<=not"1111111111111111";

128、--顯示1</p><p>  when "1001"=>dot_c<=not"1011111110111111";</p><p>  when "1010"=>dot_c<=not"1011111111101111";</p><p>  when "

129、;1011"=>dot_c<=not"1011111111110111";</p><p>  when "1100"=>dot_c<=not"1000000000000011";</p><p>  when "1101"=>dot_c<=not"101

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論