第一篇:多路彩燈控制器 8路移存型彩燈控制器 數(shù)字電路課程設計實驗報告
多路彩燈控制器的設計
一 課程設計題目(與實習目的)
(1)題目:多路彩燈控制器(2)實習目的:
1.進一步掌握數(shù)字電路課程所學的理論知識。
2.熟悉幾種常用集成數(shù)字芯片,并掌握其工作原理,進一步學會使用其進行電路設計。
3.了解數(shù)字系統(tǒng)設計的基本思想和方法,學會科學分析和解決問題。
4.培養(yǎng)認真嚴謹?shù)墓ぷ髯黠L和實事求是的工作態(tài)度。
5.作為課程實驗與畢業(yè)設計的過度,課程設計為兩者提供了一個橋梁。二 任務和要求
實現(xiàn)彩燈控制的方法很多,如EPROM編程、RAM編程、單板機、單片機等,都可以組成大型彩燈控制系統(tǒng)。因為本次實習要求設計的彩燈路數(shù)較少,且花型變換較為簡單,故采用移位寄存器型彩燈控制電路。(1)彩燈控制器設計要求
設計一個8路移存型彩燈控制器,要求: 1.彩燈實現(xiàn)快慢兩種節(jié)拍的變換;
2.8路彩燈能演示三種花型(花型自擬); 3.彩燈用發(fā)光二極管LED模擬;
4.選做:用EPROM實現(xiàn)8路彩燈控制器,要求同上面的三點。(2)課程設計的總體要求
1.設計電路實現(xiàn)題目要求;
2.電路在功能相當?shù)那闆r下設計越簡單越好;
3.注意布線,要直角連接,選最短路徑,不要相互交叉;
4.注意用電安全,所加電壓不能太高,以免燒壞芯片和面包板。
三 總體方案的選擇
(1)總體方案的設計
針對題目設計要求,經(jīng)過分析與思考,擬定以下二種方案:
方案一:總體電路共分三大塊。第一塊實現(xiàn)花型的演示;第二塊實現(xiàn)花型的控制及節(jié)拍控制;第三塊實現(xiàn)時鐘信號的產(chǎn)生。主體框圖如下:
方案二:在方案一的基礎上將整體電路分為四塊。第一塊實現(xiàn)花型的演示;第二塊實現(xiàn)花型的控制;第三塊實現(xiàn)節(jié)拍控制;第四塊實現(xiàn)時鐘信號的產(chǎn)生。并在部分電路的設計上與方案一采用了完全不同的方法,如花型的控制。主體框圖如下:
(2)總體方案的選擇
方案一與方案二最大的不同就在,前者將花型控制與節(jié)拍控制兩種功能融合在一起,是考慮到只要計數(shù)器就可以實現(xiàn)其全部功能的原因,且原理相對簡單。這樣設計,其優(yōu)點在于:設計思想比較簡單。元件種類使用少,且都較熟悉易于組裝電路。缺點則是:中間單元電路連線過于繁多,容易出錯。且可能出現(xiàn)線與關系。要避免這些,則勢必造成門電路使用過多。導致電路不穩(wěn)定,抗干擾能力下降。而后者則將以上兩種功能分開設計,各單元電路只實現(xiàn)一種功能。其優(yōu)點在于:電路設計模塊化,易于檢查電路,對后面的電路組裝及電路調(diào)試帶來方便。缺點則是:節(jié)拍控制電路采用可編輯邏輯電路,原理相對復雜,不易理解。花型控制電路簡單,花型也比較簡單。基于以上原因,加上為了確保短時間內(nèi)完成課程設計,我選擇了連線少,易于組裝和調(diào)試的方案二。
四 單元電路的設計
1.設計所使用的元件及工具:
74LS161(四位二進制同步計數(shù)器)----------------------2個; 74LS194(移位寄存器)------------------------------2個; 74LS151(八選一數(shù)據(jù)選擇器)---------------------------1個; 74LS74(雙D 觸發(fā)器)---1個; 74LS20(雙四輸入與非門)----------------------------3個; 74LS04(六非門)-----2個; 發(fā)光二極管--------------8個; 555----------------1個;
電容: 4.7μf---------------1個;
0.01μf--------------1個;
電阻: 150kΩ
-----------------------------1個;
100Ω---------------1個; 4.7kΩ----------1個;
實驗板一個; 萬用表一個; 鉗子一個; 導線若干。2.各個單元電路(1)花型演示電路
由二片移位寄存器194級聯(lián)實現(xiàn)。其八個輸出信號端連接八個發(fā)光二極管,用其輸出信號控制發(fā)光二級管的亮滅實現(xiàn)花型演示。三種花型變換樣式
花型1:8路燈分兩半。從左至右漸亮,全亮后,再分兩半從左至右漸滅。循環(huán)兩次;
花型2:從中間到兩邊對稱地逐次漸亮,全亮后仍由中間到兩邊逐次漸滅。循環(huán)兩次;
花型3:從左至右順次漸亮。全亮后逆序漸滅。循環(huán)兩次。
移存器輸出狀態(tài)編碼表
我的設計是每種花型完整顯示兩遍,所以三種花型完全顯示一遍需要的總結(jié)拍數(shù)為64,即1~16顯示第一個花型,17~32顯示第二個花型,33~64顯示第三個花型。
要用194實現(xiàn)三個花型的連續(xù)顯示必須對兩片194的S1、S0和SL、SR一句節(jié)拍的變化進行相應的改變。現(xiàn)將兩片194分為低位片1和高位片2,再將其輸出端從低位到高位記為L1~L8。列出各花型和其對應的194的S1、S0、SL、SR的輸入信號及節(jié)拍控制信號列表如下:(用^Li表示Li的取非)
經(jīng)過分析可以得到控制194高低位片的左移右移變化的控制量。用QA~QH表示161從低位到高位的個輸出端。控制結(jié)果表達式如下:
電路圖如下:
(2)花型控制信號電路
由二片161級聯(lián)的模128(三種花型節(jié)拍每種顯示兩遍,再總體重復一遍的總節(jié)拍數(shù))計數(shù)器。
161的級聯(lián)用的是同步,并用^QH清零。
當三種花型全新顯示一遍后(總共64拍)161的輸出變?yōu)?0000100所以將161高位片的Q2(即QG)信號輸給節(jié)拍控制電路的151的A來通過節(jié)拍控制電路改變第二遍花型顯示的頻率。161的CP脈沖來自節(jié)拍控制電路中74的輸出端Y。
電路圖如下:
(3)節(jié)拍控制電路
由一片151和一片74級聯(lián)實現(xiàn)。整體上實現(xiàn)脈沖頻率的變換,即交替產(chǎn)生快慢節(jié)拍。
令74的Vcc,CLR,PR都接高電平,將^Q的輸出接到D端,Q端的輸出接到151的D1端。令151的D0,D2,D3,D4,D5,D6,D7,B,C,G’,GND接低電平,Vcc接高電平,D0接時鐘信號的CP脈沖,A端接由花型控制電路的QG輸出。
所以Y端的輸出就為:Y=CP·^A+Q·A
(Q是74D觸發(fā)器的輸出端)由D觸發(fā)器具有記憶功能,記錄上一個狀態(tài),所以在每一個CP脈沖的上升沿,Q輸出為上一次的記錄(即一個脈沖)。也就比時鐘信號電路的CP脈沖慢了一拍。
所以通過A為0或1選擇Y端輸出的脈沖的頻率。A端接的是161的高位片的QG即當?shù)竭_第64拍時QG為1接下來的65~128拍為變慢后的脈沖輸出。電路圖如下:
(4)時鐘信號電路
由一片555加上適當電容及電阻實現(xiàn)。電容取:4.7μf
0.01μf 電阻取:150 kΩ
4.7 kΩ
電路圖如下:
五 總體電路圖(見附頁)六 電路組裝完成后,實際測量的各個單元電路的輸入、輸出信號波形
1.基本CP脈沖產(chǎn)生電路波形圖與分頻電路波形圖
2.測試波形:(列依次為CP脈沖,低位片194A,B,C,D,高位片194A,B,C,D)花型一:
花型二:
花型三:
七 電路組裝、調(diào)試過程中發(fā)生的問題及解決的方法。
我的數(shù)字電路課程設計總共用了4天完成的,這4天每一天都有所收獲,都有所進步。起初想預習但不知道都該看些什么也不知道從何看起,因為對自己要設計的東西一點思路都沒有。所以第一天去了只知道要用到CP脈沖產(chǎn)生電路,因為書上有完好的電路圖直接照著連就OK。可是問題并不是想的那么簡單,因為我一開始操作就不知道怎樣布線才合理,常出現(xiàn)看著電路圖不知道這條線該走哪兒連過去,看過老師的示范后,對老師的布線法真是無限敬佩,聰明呀。所以當然要學習了,于是自己也那樣連了。連完時鐘電路后,滿以為會很成功,因為我的電路連得很簡潔。結(jié)果是加電后LED二極管居然常亮,檢查電路沒什么問題,我開始不知所措,于是去咨詢其他同學,發(fā)現(xiàn)好多同學都有和我一樣的問題,有同學說那可能是線的而問題,也可能是板子的問題,也可能是電容的正負極插反了?不管是什么問題,一個個排除吧。最終其實也沒很確切的知道問題的所在,因為不同的方法都在試具體是哪個也不確定了。我覺得最可能是電容的正負極和LED的插穩(wěn)與否的問題。
第二天去我拿了個數(shù)碼管來測試,結(jié)果連好了的電路加電測試結(jié)果卻完全是錯誤的顯示,我檢測了電路測試了電位,都正確。老師過來看時讓我加電他看看,結(jié)果居然是我給的電壓太高了,我在加電是不小心把電壓調(diào)的很高,自己還沒在意,幸好沒把芯片很板子燒壞。
在接下來的幾天中我看了一些參考書籍,大概有了自己的思路,于是開始一一試驗,我用了<<數(shù)字系統(tǒng)設計——數(shù)字電路課程設計指南>>(北京郵電學院出版社 高書莉編)所提供的三種花型,所以剛開始的幾天就一直在想怎樣將三種花型銜接起來,前兩天是一直都沒相處具體的解決方法。后來我就不停地分析花型的變化與161加法器數(shù)值的增加兩者之間的規(guī)律。我發(fā)現(xiàn)自己好像有點太急于求成首先就把問題帶到了最不容易解決的地方,于是我改變了思路開始不復雜的先簡單化,三個花型的演示先不管,一個花型弄好再說。說行動立馬行動,先連好了時鐘信號電路再連了161的級聯(lián)電路,先用清零端制1同步CP脈沖,還連了194的級聯(lián)電路直接給低位片和高位片都加右移信號。先測試了161的工作狀態(tài)是否正常,正常后又測試了194 的移位寄存功能,都正常。說明芯片和板子都很正常。將下來的一天我又通過分析找到了前兩種花型通過節(jié)拍控制其變化的方式,于是按照自己的設計連了電路圖,測試過電壓后,加電測試。結(jié)果完全正確,那一刻真挺欣慰,覺得這也是一件挺開心的事情。接下來的問題就是如何把第三種花型也加進去。因為我選的第三種花型稍有點復雜,因為兩個194是同步級聯(lián)的但在花型顯示中看到是似乎是第一個先工作等到前4個燈都亮后高位片的194才開始工作,所以考慮將它怎樣加入費了我好長時間。問題的關鍵還是在如何用最少的門電路將其加入。最后的設計我用了12個芯片,應該是很多了,可是依據(jù)我設計的花型,也只能得到這樣的設計,到目前為止我也只找到這樣的最簡連接方案。
其實在電路組裝過程中,遇到的最大問題是,芯片分布不夠合理,無法很好的布線。于是在分析了我的設計后計算了要用芯片的個數(shù)和個芯片之間的關系,按照各個控制電路的走向較合理的插好了芯片。其次就是布線,因為要求不準交叉,且橫平豎直,所以在保證連通的情況下,在布線上也下了不少工夫,雖然布線的成績不高只得到B+,但我想我是用心考慮過的,而且盡力做到我認為很合理的布線,也就是用線的顏色有點混亂,因為用了很多從之前面包板上拆下來的舊線,所以整個板子看起來有點雜亂。也因為我的設計中要用3個74L00和2個74L04,12個與非門電路的連接卻是非了我好大的功夫。于是連線也就不十分合理了。
調(diào)試過程中,第一輪用萬用表歐姆檔測試,就遇了實驗板上有插孔不通的情況,導致芯片不能正常工作。相對于別的辦法,我選擇了導線顯示連通,因為其更明晰,更易實現(xiàn)。對于高阻導線則只能換掉。第二輪接電后,用萬用表的電壓檔測試單元電路的狀態(tài)。如:時鐘信號電路的信號是否正常產(chǎn)生,控制信號電路中的計數(shù)器能否正常計數(shù),D觸發(fā)器能否每2拍翻轉(zhuǎn)一次??最后在整體上測試一遍。
在整個調(diào)試完成后,卻遇到的新問題:彩燈演示時有時正常有時混亂。在排除其它可能的情況下,我仔細檢查各端子的連接情況,發(fā)現(xiàn)清“0”端在清“0”后懸空了。將其插到電源正極后,發(fā)現(xiàn)問題解決了。八 分析和總結(jié)。
本次課程實習我雖然用了一個星期的時間就全部做完,但整個過程我都認真的完成了,而且從中收獲很多。可以總結(jié)為以下的幾點:
1,對數(shù)字電路知識的鞏固與提高
這次課程設計主要是運用數(shù)字電路邏輯設計的一些相關知識,在整個實習過程中,都離不開對數(shù)字電路課程知識的再學習。我在最開始,就先將實習用到的知識通過翻閱數(shù)電書回顧了一遍(這也是對這門課的復習,給以后的復習備考減少了很多負擔),這樣的回顧讓我對知識的理解更加透徹,對后來的快速設計起了很好的鋪墊作用。
2,學會了理論聯(lián)系實際
課程設計,通過選擇的題目,根據(jù)要求,運用所學知識將其付諸實踐來完成。這并不是在課堂上的單純聽懂,或者課后看書過程中的深入理解,這需要的是一種理論聯(lián)系實踐的能力。理論知識往往都是在一些理想狀態(tài)下的假設論,而實際的動手操作則完全不同,需要考慮實際中的很多問題。有些知識在理論上可能完全沒錯但到了實際中則不然。比如在動筆做題時我們是不用考慮導線的電阻的,但在實際中,導線電阻有時是會帶來時延造成花型變化的錯亂,所以我們應盡量在連接電路時選擇最短路徑。
3,學會了如何運用電路板、芯片、導線等組裝各種功能的電路;
雖然這不是第一次用電路板,因為之前的課內(nèi)實驗也用過,但當時的運用也只是插些導線和電阻電容之類的,用了電路板的很小部分。這次的實習中應用了整塊板子,實習后對電路板的組成完全了解了,并能熟練運用。實習中通過對電路的連接也懂得了如何通過設計的分析對所連電路的整體布局,如何更好的放置芯片在最合適的位置。在導線的連接上,如何選擇導線走向是關鍵,我們應該盡量保證所連電路的簡捷,寧短勿長,合理布線。一個完美的作品不僅要能很好的完成要求實現(xiàn)功能,還要在感官上給人美的享受。所以站在美的角度對自己的電路進行改良是很必要的。
4,和同學的互相協(xié)作共同進步
在實習中經(jīng)常會遇到一些自己可能暫時無法想明白的問題,請教同學或老師是很好的做法,節(jié)省時間也會從別人上上學到更多。在設計時和同學相互交流各自的想法也是很重要的,不同的人對問題的看法總有差異,我們可以從交流中獲得不同的idea,其他人的設計一定有比你出色的地方,很好的借鑒,并在大家的商討中選擇最優(yōu)方案最終一定會得到最好的設計方法。
5,其他
課程實習設計是開端,連接是關鍵,測試是必須。所以實現(xiàn)過程中不僅要求對知識的掌握要足夠準確與精通,更要有絕對的耐心與細心。連接電路時一定按照自己的設計圖仔細連接這會對后面的測試起到很好的鋪墊作用。在后面查錯時就不用花費精力在查線上,可以給減少很多后續(xù)工作。我在這次的實習中其實也有連錯線的時候,但我很快檢查出來調(diào)整了那根線的連接,結(jié)果測試電路后花型顯示完全正確。沒有費太多的功夫在檢查電路上。
九 參考文獻。
<<數(shù)字電路邏輯設計>>
高等教育出版社 王毓銀編 <<數(shù)字系統(tǒng)設計——數(shù)字電路課程設計指南>>
北京郵電學院出版社
高書莉編
十 過程考核表和成績鑒定表
(這個具體內(nèi)容老師會給你的,每個學校都有點不同在這我就不發(fā)了。)
下面是總體電路圖,就是截圖有點小,可能看不太清楚,其實就是前面每個分模塊的組合。。大家看看就明白了。
第二篇:EDA課程設計彩燈控制器
沈陽理工大學EDA技術課程設計報告
1設計目的
熟練掌握EDA技術利用計算機方面的課程解決專業(yè)課程方面點具體問題,達到解決問題,完成課程設計任務,培養(yǎng)實踐的目的。
2設計要求和任務
利用所學的EDA設計方法設計彩燈控制器,熟練使用使用QUARTUSII應用軟件,進一步學習使用VHDL語言、原理圖等EDA設計方法進行綜合題目的方法。
功能要求: 1.要有多種花型變化(至少4種).2.多種花型可以自動變換,循環(huán)往復.3.彩燈變換的快慢節(jié)拍可以選擇.4.具有清零開關.總體設計思路及原理描述
3.1功能描述
在電路中以 1 代表燈亮,以 0 代表燈滅,由 0,1按不同的規(guī)律組合代表不同的燈光圖案,同時使其選擇不同的頻率,從而實現(xiàn)多種圖案多種頻率的花樣功能顯示。在該電路中只需簡單的修改程序就可以靈活地調(diào)整彩燈圖案和變化方式。下面就以一個十六路彩燈控制系統(tǒng)的實現(xiàn)為例進行簡單說明。此十六路彩燈控制系統(tǒng)設定有六種花樣變化 ,這六種花樣可以進行自動切換 ,并且每種花樣可以選擇不同的頻率。
3.2設計原理
用VHDL進行設計 ,首先應該了解 ,VHDL語言一種全方位硬件描述語言 ,包括系統(tǒng)行為級 ,寄存?zhèn)鬏敿壓瓦壿嬮T級多個設計層次。應充分利用DL “自頂向下” 的設計優(yōu)點以及層次化的設計概層次概念對于設計復雜的數(shù)字系統(tǒng)是非常
沈陽理工大學EDA技術課程設計報告
有用它使得人們可以從簡單的單元入手 ,逐漸構(gòu)成龐大而復雜的系統(tǒng)。首先應進行系統(tǒng)模塊的劃分 ,規(guī)定每一模塊的功能以及各個模塊之間的接口。最終設計方案為:以一個十六路彩燈花樣控制器、一個四頻率輸出分頻器 ,一個四選一控制器和一個時間選擇器總共四部分來完成設計。四選一控制器從分頻器選擇不同頻率的時鐘信號輸送到彩燈花樣控制器 ,從而達到控制彩燈閃爍速度的快慢 ,時間選擇器控制每種速度維持的時間長短。整個十六路彩燈控制系統(tǒng)設計的模塊圖如圖 1所示
圖一
4分層次方案設計及代碼描述
4.1子模塊及其功能
本次設計分為四個子模塊 ,即十六路彩燈花樣控制器、四頻率輸出分頻器 ,四選一控制器和時間選擇器 ,其子模塊及其功能如下: 2
沈陽理工大學EDA技術課程設計報告
4.1.1四頻率輸出分頻器
在本次設計中 ,設計了六種花樣 ,要求這六種花樣以不同的頻率顯示 ,而只有一個輸入的時鐘信號 ,所以對所輸入的時鐘信號進行 2 分頻 ,4 分頻 ,8分頻 ,16分頻 ,得到四種頻率信號 ,CLKDIV模塊用來完成此功能。
4.1.2時間選擇器
時間選擇器實際上是兩個分頻器 ,其中一個頻率是另一個頻率的兩倍。本來這兩個分頻器是可以在上述的四頻率輸出器中實現(xiàn)的 ,但為了方便地為四選一控制器提供不同的時間選擇條件 ,就將這兩個分頻器獨立開來。這兩個輸出的時鐘信號組合起來就可以為四選一控制器提供 00,01,10,11 四個時間選擇條件 ,如
下圖三所示。
圖二
4.1.3四選一控制器
四選一控制器功能是從分頻器中選擇不同頻率的時鐘信號送給彩燈控制器 ,實現(xiàn)彩燈閃爍的頻率變化。
4.1.4彩燈控制器
彩燈控制電路是整個設計的核心 ,它負責整個設計的輸出效果即各種彩燈圖案的樣式變化。該程序充分地說明了用 VHDL設計電路的 “彈” 性 ,即可通過改變程序中輸出變量 Q 的位數(shù)來改變彩燈的數(shù)目。其中 ,P1進程對燈閃的速度控制有兩種方式可改變燈閃的速度:一是改變外部時鐘的賦值 ,二是改變信號U 的位數(shù)。P2進程能進行彩燈的圖案控制 ,改變 s的位數(shù)即可改變要控制圖案的數(shù)目 ,改變輸出變量 Q 的組合即可變幻彩燈圖案。
最后 ,當各個模塊均完成上述操作之后 ,即可利用MAXPLUS2的原理圖輸
沈陽理工大學EDA技術課程設計報告
入 ,調(diào)用各個元器件(底層文件),以原理圖的形式形成最后的十六路彩燈顯示系統(tǒng)(頂層文件),并且進行仿真。仿真通過 ,即可下載到指定的 CPLD芯片里面 ,并進行實際連線 ,進行最后的硬件測試。當然 ,可以將各個模塊所生成的元件符號存放在元件庫中 ,用以被其它人或其它的設計所重復調(diào)用 ,以簡化后面的設計。
4.2 代碼描述
4.2.1 時序控制電路部分
程序如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity timecontrol is--定義實體 port(clk: in std_logic;--時鐘信號 clr: in std_logic;--復位信號 opt: in std_logic;--快慢控制信號 clkout: out std_logic--輸出時鐘信號);end timecontrol;architecture one of timecontrol is signal clk_tmp: std_logic;signal counter: std_logic_vector(1 downto 0);--定義計數(shù)器 begin process(clk,clr,opt)begin 4
沈陽理工大學EDA技術課程設計報告
if clr='0' then--清零 clk_tmp<='0';counter<=“00”;elsif clk'event and clk='1' then if opt='0' then--四分頻 if counter=“01” then counter<=“00”;clk_tmp<=not clk_tmp;else counter<=counter+'1';end if;else--八分頻 if counter=“11” then counter<=“00”;clk_tmp<=not clk_tmp;else counter<=counter+'1';end if;end if;end if;end process;clkout<=clk_tmp;--輸出分頻后的信號 end architecture one;
4.2.2顯示控制電路部分
程序如下: library ieee;use ieee.std_logic_1164.all;
沈陽理工大學EDA技術課程設計報告
entity showcontrol is port(clk: in std_logic;--輸入時鐘信號 clr: in std_logic;--復位信號
led: out std_logic_vector(15 downto 0));--彩燈輸出
end showcontrol;architecture one1 of showcontrol is type states is--狀態(tài)機狀態(tài)列舉(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15);signal state: states;begin process(clk,clr)begin
if clr='0'then state<=s0;led<=“***0”;elsif clk'event and clk='1'then case state is when s0=>state<=s1;led<= “***1”;when s1=> state<=s2;led<=“***1”;when s2=> state<=s3;led<=“***0”;when s3=> state<=s4;led<=“***1”;when s4=> state<=s5;6
沈陽理工大學EDA技術課程設計報告
led<=“***0”;when s5=>state<=s6;led<=“***1”;when s6=>state<=s7;led<=“***0”;when s7=>state<=s8;led<=“***1”;when s8=>state<=s9;led<=“***0”;when s9=>state<=s10;led<=“***1”;when s10=>state<=s11;led<=“***0”;when s11=>state<=s12;led<=“***1”;when s12=>state<=s13;led<=“***0”;when s13=>state<=s14;led<=“***1”;when s14=>state<=s15;led<=“***0”;when s15=>state<=s0;led<=“***1”;when others=>null;end case;end if;end process;end architecture one1;
沈陽理工大學EDA技術課程設計報告
4.2.3頂層電路部分
程序如下:
library ieee;use ieee.std_logic_1164.all;entity root is port(clk: in std_logic;clr: in std_logic;opt:in std_logic;led: out std_logic_vector(15 downto 0));--八路彩燈輸出 end colorled;architecture one3 of root is component timecontrol is--定義元件:時序控制電路 port(clk: in std_logic;clr: in std_logic;opt:in std_logic;clkout: out std_logic);end component timecontrol;component showcontrol is--定義元件:顯示電路
port(clk: in std_logic;clr: in std_logic;led: out std_logic_vector(15 downto 0));end component showcontrol;signal clk_tmp: std_logic;begin u1: timecontrol port map(clk=>clk,clr=>clr,opt=>opt,clkout=>clk_tmp);--例化時序控制模塊
沈陽理工大學EDA技術課程設計報告
u2: showcontrol port map(clk=>clk_tmp,clr=>clr,led=>led);--例化顯示電路模塊 end architecture one3;
5各模塊的時序仿真圖
5.1時序控制電路timecontrol的仿真圖如下:
圖三
功能:時序控制電路metronome的功能是,用OPT控制輸入信號CKL_IN的快慢節(jié)拍。而CLR是控制開關。且從圖中可以看出,當復位信號為高電平時,電路時鐘輸出清零,當快慢信號OPT為低電平時,時序控制電路四分頻起作用,當快慢信號OPT為高電平時,時序控制電路八分頻起作用,仿真結(jié)果符合電路要求。
沈陽理工大學EDA技術課程設計報告
5.2 顯示控制電路showcontrol的仿真圖如下:
圖四
功能:顯示控制電路showcontrol的功能是控制花形的。且從圖中可以看出,當復位信號有效時彩燈輸出為零,否則,顯示電路在十六種不同狀態(tài)間轉(zhuǎn)換。
5.3 頂層電路root系統(tǒng)的仿真圖如下:
沈陽理工大學EDA技術課程設計報告
圖五
功能:整個電路root系統(tǒng)是把showcontrol與timecontrol綜合成一個電路。且從圖中可以看出,從圖中可以看出當OPT為高電平時彩燈狀態(tài)轉(zhuǎn)換慢,為低電平時轉(zhuǎn)換要快,當復位信號有效時,所用輸出都清零。
6總結(jié)
通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,通過這次的課程設計,發(fā)現(xiàn)自己的實踐經(jīng)驗還是不足的,以后多應該以理論為基礎,然后應用到實踐中來,從理論中得出結(jié)論,才能提高自己的實際動手能力和獨立思考的能力。
在這次的課程設計里深入的接觸了運用電子集成元器件制作多路彩燈的過程,并和同學一起討論用軟件制作出了這一個多路彩燈控制系統(tǒng)。正所謂“紙上談兵終覺淺,覺知此事要躬行。”學習任何知識,都要進行實踐,只有那樣才能達到事半功倍的效果。
沈陽理工大學EDA技術課程設計報告 參考文獻
《EDA技術與數(shù)字系統(tǒng)設計》
鄒彥主編
電子工業(yè)出版社
《EDA技術實用教程》,潘松、黃繼業(yè),科學出版社 《數(shù)字電子技術基礎》(第五版),閻石,高等教育出版社
《電子設計自動化(EDA)手冊》,王丹、童如松,電子工業(yè)出版社 《EDA技術程設計》,劉江海,華中科技大學出版社
第三篇:eda課程設計-彩燈控制器
1.設計目的
學習EDA開發(fā)軟件和MAX+plus Ⅱ的使用方法,熟悉可編程邏輯器件的使用,通過制作來了解彩燈控制系統(tǒng)。2.設計題目描述和要求
1)設計一個彩燈控制器,使彩燈(LED管)能連續(xù)發(fā)出四種以上不同的顯示形式;
2)隨著彩燈顯示圖案的變化,發(fā)出不同的音響聲。3)擴充其它功能。3.設計原理 3.1 方案論證
這次的彩燈設計采用的是分模塊來完成的,包括分頻器、計數(shù)器、選擇器、彩燈控制器。其中彩燈控制器是用來輸出不同的花樣,彩燈控制器的輸出則是用一個32進制的計數(shù)器來控制,揚聲器的輸出時用不同的頻率來控制,所以用了一個集成分頻器來使輸入的頻率被分為幾種不同的頻率,不同頻率的選擇性的輸出則是用一個4選一的選擇器來控制。基于上述的介紹本次的彩燈控制采用的模式6來進行顯示。
圖3-1-1 模式6結(jié)構(gòu)圖
3.2 模塊設計
1)集成分頻器模塊
設計要求顯示不同的彩燈的時候要伴隨不同的音樂,所以設計分頻器來用不同的頻率控制不同的音樂輸出。模塊說明:
Rst:輸入信號 復位信號 用來復位集成分頻器的輸出使輸出為“0”,及沒有音樂輸出。
Clk:輸入信號 模塊的功能即為分頻輸入的頻率信號。
Clk_
4、clk_
6、clk_
8、clk_10:輸出信號 即為分頻模塊對輸入信號clk的分頻,分別為1/4分頻輸出、1/6分頻輸出、1/8分頻輸出、1/10分頻輸出。
圖3-2-1 集成分頻器
2)32進制計數(shù)器模塊
32進制模塊用來控制彩燈輸出模塊,即確定彩燈控制器的不同的輸出。Rst:輸入信號 復位信號 用來復位32進制使其輸出為“00000”。Clk:輸入信號 用來給模塊提供工作頻率。
Count_out[4..0]:輸出信號 即為32進制計數(shù)器的輸出。
圖3-2-2 32進制計數(shù)器
3)彩燈控制模塊
彩燈控制模塊用來直接控制彩燈的輸出,使彩燈表現(xiàn)出不同的花樣。Rst:輸入信號 使彩燈控制模塊的輸出為“00000000”,即讓彩燈無輸出。Input[4..0]:輸入信號 不同的輸入使彩燈控制模塊有不同的輸出即彩燈顯示出不同的花樣。
Output[7..0]:輸出信號 直接與彩燈相連來控制彩燈。
圖3-2-3 彩燈控制模塊 4)4選1選擇器模塊
Rst:輸入信號 復位信號 使選擇器的輸出為“0”。In1、in2、in3、in4:輸入信號 接分頻器的輸出。
Inp[1..0]:輸入信號 接4進制計數(shù)器的輸出用來控制選擇器的選擇不同的輸入選擇不同的輸出。
Output:輸出信號 直接接揚聲器即輸出的是不同的頻率來控制揚聲器播放音樂。
圖3-2-4 4選1選擇器
5)4進制計數(shù)器模塊
4進制計數(shù)器作為選擇器的輸入來控制選擇器選擇不同的頻率作為輸出控制揚聲器工作。
Clk:輸入信號 來為計數(shù)器提供工作頻率。
Rst:輸入信號 復位信號 使計數(shù)器的輸出為“00”。
圖3-2-5 4進制計數(shù)器
3.3 系統(tǒng)結(jié)構(gòu)
整個系統(tǒng)就是各個分模塊組成來實現(xiàn)最后的彩燈控制功能,系統(tǒng)又兩個時鐘來控制一個是控制32進制計數(shù)器即控制彩燈控制模塊來實現(xiàn)彩燈的不同輸出,另一個時鐘為分頻器的輸入來進行分頻處理,最后用來控制揚聲器發(fā)出不同的音樂,具體分頻處理的時鐘的頻率比實現(xiàn)彩燈控制的時鐘頻率要高。
圖 3-3-1 系統(tǒng)功能模塊
4.總結(jié)
這次的EDA課程設計有一周的時間,在這一周的時間里我們充分合理的安排了自己的時間來使本次的課程設計能夠順利的完成,當然我們在本次的設計中并不是一帆風順的,我們遇到了一些的問題,例如我們開始時用的文本的方式用一個總的程序來完成,可以在設計的過程中我們發(fā)現(xiàn)程序編到后面變量越到很容易搞混淆同時各個進程間的聯(lián)系也越來越模糊以至于后面我們自己都不知道程序的整體框圖是什么,導致后面不能夠繼續(xù)下去,后面我們再一次對我們這次的設計題目進行了分析和整理,最后我和我的同伴決定采用分模塊的方式來完成本次的課題設計,當然最重要的是分析各個模塊間的關系。最后我們采用上面分析的結(jié)構(gòu)框圖。最后我們的設計很成功,仿真和硬件測試都是正確的,實現(xiàn)了我們的設計要求和目的。
在這次設計中我們收獲了很多,首先最直接的收獲就是我們鞏固了這門課程所學過的知識,把它運用到了實踐當中,并且學到了很多在書本撒和那個所沒有學到的知識,通過查閱相關資料進一步加深了對EDA的了。總的來說,通過這次課程設計不僅鍛煉了我們的動手和動腦能力,也使我懂得了理論與實際相結(jié)合的重要性,只有理論知識是遠遠不夠的,要把所學的理論知識與實踐相結(jié)合起來,才能提高自己的實際動手能力和獨立思考的能力。在我們的共同努力和指導老師的指引下我們圓滿的完成了彩燈控制器的設計,實現(xiàn)了設計目的。
6附錄一 程序:
---------------分頻器模塊----------LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY fenpinqi IS
PORT(clk,rst : IN std_logic;
clk_10,clk_4,clk_6,clk_8 : OUT std_logic);
END fenpinqi;
ARCHITECTURE cd OF fenpinqi IS begin p1:process(clk,rst)
variable a:integer range 0 to 20;
begin if rst='1' then
clk_4<='0';
-----
復位信號控制部分 else if clk'event and clk='1'then
if a>=3 then
a:=0;
clk_4<='1';
else
a:=a+1;
clk_4<='0';
end if;
end if;
end if;end process p1;
p2:process(clk,rst)
variable b:integer range 0 to 20;
begin if rst='1' then
clk_6<='0';
-----
復位信號控制部分
else if clk'event and clk='1'then
if b>=5 then
b:=0;
clk_6<='1';
else
b:=b+1;
clk_6<='0';
end if;
end if;
end if;end process p2;
p3:process(clk,rst)
variable c:integer range 0 to 20;
begin if rst='1' then
clk_8<='0';
-----else if clk'event and clk='1'then
if c>=7 then
c:=0;
clk_8<='1';
else
c:=c+1;
clk_8<='0';
end if;
end if;
end if;end process p3;
p4:process(clk,rst)
variable d:integer range 0 to 20;
begin if rst='1' then
clk_10<='0';
-----else if clk'event and clk='1'then
if d>=9 then
d:=0;
clk_10<='1';
else
復位信號控制部分7
復位信號控制部分
d:=d+1;
clk_10<='0';
end if;
end if;
end if;end process p4;end cd;
---------------4選1選擇器--------LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY xzq4_1 IS
PORT(rst:in std_logic;
inp:in integer range 0 to 3;
in1,in2,in3,in4 : In std_logic;
output : OUT std_logic);
END xzq4_1;
ARCHITECTURE a OF xzq4_1 IS
BEGIN
PROCESS(rst,inp)BEGIN
if(rst='1')then output<='0';
else
case inp is
when 0=>output<=in1;
when 1=>output<=in2;
when 2=>output<=in3;
when 3=>output<=in4;
when others=>null;
end case;
end if;
END PROCESS;END a;
------------彩燈控制模塊---------LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY caideng IS
PORT(input : IN INTEGER RANGE 0 TO 31;
rst:in std_logic;
output : OUT std_logic_vector(7 downto 0);
sm :out std_logic_vector(6 downto 0));
END caideng;
ARCHITECTURE a OF caideng IS
BEGIN
PROCESS(input)BEGIN
if rst='1' then output<=“00000000”;sm<=“0000000”;
else
case input is
when 0=>output<=“10000000”;sm<=“0000110”;
when 1=>output<=“01000000”;sm<=“0000110”;
when 2=>output<=“00100000”;sm<=“0000110”;
when 3=>output<=“00010000”;sm<=“0000110”;
when 4=>output<=“00001000”;sm<=“0000110”;
when 5=>output<=“00000100”;sm<=“0000110”;
when 6=>output<=“00000010”;sm<=“0000110”;
when 7=>output<=“00000001”;sm<=“0000110”;
when 8=>output<=“00010000”;sm<=“0011011”;
when 9=>output<=“00110000”;sm<=“0011011”;
when 10=>output<=“00111000”;sm<=“0011011”;
when 11=>output<=“01111000”;sm<=“0011011”;
when 12=>output<=“01111100”;sm<=“0011011”;
when 13=>output<=“01111110”;sm<=“0011011”;
when 14=>output<=“11111110”;sm<=“0011011”;
when 15=>output<=“11111111”;sm<=“0011011”;
when 16=>output<=“10000001”;sm<=“1001111”;
when 17=>output<=“11000001”;sm<=“1001111”;
when 18=>output<=“11000011”;sm<=“1001111”;
when 19=>output<=“11100011”;sm<=“0011011”;
when 20=>output<=“11100111”;sm<=“1001111”;
when 21=>output<=“11110111”;sm<=“1001111”;
when 22=>output<=“11111111”;sm<=“1001111”;
when 23=>output<=“00001000”;sm<=“1001111”;
when 24=>output<=“00000001”;sm<=“0100110”;
when 25=>output<=“00000010”;sm<=“0100110”;
when 26=>output<=“00000100”;sm<=“0100110”;
when 27=>output<=“00001000”;sm<=“0100110”;
when 28=>output<=“00010000”;sm<=“0100110”;
when 29=>output<=“00100000”;sm<=“0100110”;
when 30=>output<=“01000000”;sm<=“0100110”;
when 31=>output<=“10000000”;sm<=“0100110”;
when others=>null;
end case;
end if;
end process;end a;
-------------32進制計數(shù)器模塊----
LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY counter_32 IS
PORT(clk,rst : IN std_logic;
count_out : OUT integer range 0 to 31);
END counter_32;
ARCHITECTURE a OF counter_32 IS BEGIN PROCESS(rst,clk)
variable temp:integer range 0 to 32;BEGIN
IF rst='1' THEN
temp:=0;
ELSIF(clk'event and clk='1')THEN
temp:=temp+1;
if(temp=32)then
temp:=0;
end if;
END IF;
count_out<=temp;END PROCESS;
END a;
------------4進制計數(shù)器模塊---LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY counter_4 IS
PORT(clk,rst : IN std_logic;
count_out : OUT integer range 0 to 3);
END counter_4;
ARCHITECTURE a OF counter_4 IS BEGIN
PROCESS(rst,clk)
variable temp:integer range 0 to 32;BEGIN
IF rst='1' THEN
temp:=0;
ELSIF(clk'event and clk='1')THEN
temp:=temp+1;
if(temp=4)then
temp:=0;
end if;
END IF;
count_out<=temp;END PROCESS;END a;
7附錄二 編譯
7附錄三 時序仿真
第四篇:彩燈控制器eda課程設計(定稿)
目錄
1.引言..............................................................3 2.EDA技術.........................................................5 2.1 EDA技術介紹..................................................5 2.2硬件描述語言..................................................5 3 Quartus II介紹..................................................8 3.1 Quartus II軟件介紹..........................................8 3.2 Quartus II軟件界面介紹......................................9 3.2.1 代碼輸入界面..............................................9 3.2.2 編譯界面..................................................9 3.2.3 波形仿真界面.............................................10 4 系統(tǒng)設計.........................................................12 4.1 設計過程.....................................................12 4.1.1 設計內(nèi)容及要求...........................................12 4.1.2 輸入與輸出說明...........................................12 4.1.3 設計過程思路分析.........................................12 4.2 程序分析及仿真...............................................13 4.2.1花型控制電路模塊.........................................13 4.2.2 顯示電路模塊...........................................14 4.2.3 發(fā)聲電路模塊...........................................17 4.3 程序仿真圖...................................................17 5 下載.............................................................19 5.1 芯片選定.....................................................19 5.2引腳設定.....................................................19 5.3 程序下載.....................................................20 5.4 結(jié)果顯示.....................................................20
課程設計說明書 設計總結(jié).........................................................22 參考文獻...........................................................23 附錄:源代碼程序...................................................24
課程設計說明書
1.引言
伴隨著計算機、集成電路和電子設計技術的發(fā)展,當今社會是數(shù)字化的社會,也是數(shù)字集成電路廣泛應用的社會,數(shù)字本身在不斷的進行更新?lián)Q代。它由早起的電子管、晶體管、小中規(guī)模集成電路發(fā)展到超大規(guī)模集成電路以及許多具有特定功能的專用集成電路。EDA技術在過去的幾十年里取得了巨大的進步。EDA技術使得設計者的工作僅限于利用軟件的方式,即利用硬件描述語言和EDA軟件便可完成對系統(tǒng)硬件功能的實現(xiàn)。如今,EDA軟件工具已經(jīng)成為電子信息類產(chǎn)品的支柱產(chǎn)業(yè)。從高性能的微處理器、數(shù)字信號處理器一直到彩電、音響和電子玩具電路等,EDA技術不單是應用于前期的計算機模擬仿真、產(chǎn)品調(diào)試,而且也在P哪的制作、電子設備的研制與生產(chǎn)、電路板的焊接、朋比的制作過程等有重要作用。可以說電子EDA技術已經(jīng)成為電子工業(yè)領域不可缺少的技術支持。相比傳統(tǒng)的電路系統(tǒng)的設計方法,VHDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下(Top to Down)和基于庫(LibraryBased)的設計的特點。因此設計者可以不必了解硬件結(jié)構(gòu)。從系統(tǒng)設計入手,在頂層進行系統(tǒng)方框圖的劃分和結(jié)構(gòu)設計,在方框圖一級用VHDL對電路的行為進行描述,并進行仿真和糾錯,然后在系統(tǒng)一級進行驗證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表,下載到具體的CPLD器件中去,從而實現(xiàn)可編程的專用集成電路(ASIC)的設計。
而EDA技術就是以微電子技術為物理層面,現(xiàn)代電子設計為靈魂,計算機軟件技術為手段,最終形成集成電子系統(tǒng)或?qū)S眉呻娐稟SIC為目的的一門新興技術。
VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language, 翻譯成中文就是超高速集成電路硬件描述語言,誕生于1982年。1987年底,VHDL被美國國防部確認為標準硬件描述語言。自IEEE公布了VHDL的標準版本,IEEE-1076之后,各EDA公司相繼推出了自己的VHDL設計環(huán)境,或宣布自己的設計工具可以和VHDL接口。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本。
現(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL于Verilog語言將承擔起大部分的數(shù)字系統(tǒng)設計任務。目前,它在中國的應用多數(shù)是用在FPGA/CPLD/EPLD的設計中。當然在一些實力較為雄厚的單位,它也被用來設計ASIC。
隨著EDA技術的高速發(fā)展,電子系統(tǒng)的設計技術和工具發(fā)生了深刻的變化,大規(guī)
課程設計說明書
模可編程邏輯器件CPLD/FPGA的出現(xiàn),給設計人員帶來了諸多方便。利用它進行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產(chǎn)權(quán)。利用VHDL語言設計彩燈控制器設計,使其實現(xiàn)彩燈控制器變形,發(fā)聲等功能,突出了其作為硬件描述語言的良好的可讀性、可移植性和易讀性等優(yōu)點。此程序通過下載到特定芯片后,可應用于實際的控制器系統(tǒng)中。
本文基于FPGA開發(fā)系統(tǒng),在QuartusII 7.2軟件平臺上,完成了自動售貨機控制器的設計和與仿真,并下載到試驗箱進行硬件實現(xiàn)。首先,本文介紹了QuartusII 7.2軟件的基本使用方法和VHDL硬件描述語言的特點,采用VHDL 硬件描述語言描述自動售貨機控制器,完成對電路的功能仿真;在設計過程中,重點探討了彩燈控制器設計的設計思路和功能模塊劃分;然后,初步探討了電路邏輯綜合的原理,該軟件對彩燈控制器設計電路進行了邏輯綜合;最后,使用EDA實驗開發(fā)系統(tǒng)進行電路的下載和驗證,驗證結(jié)果表明設計的彩燈控制器設計完成了預期的功能。
課程設計說明書
2.EDA技術
2.1EDA技術介紹
EDA是電子設計自動化(Electronic Design Automation)縮寫,是90年代初從CAD(計算機輔助設計)、CAM(計算機輔助制造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發(fā)展而來的。EDA技術是以計算機為工具,根據(jù)硬件描述語言HDL(Hardware Description language)完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。EDA技術(即Electronic Design Automation技術)就是依賴強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言HDL(Hardware DdscriptionLangurage)為系統(tǒng)邏輯描述手段完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合、布局布線以及邏輯優(yōu)化和仿真測試,直至實現(xiàn)既定的電子線路系統(tǒng)功能。它在硬件實現(xiàn)方面融合了大規(guī)模集成電路制造技術、IC版圖設計、ASIC測試和封裝、FPGA(GieldPeogrammable Gate Array)/CPLD(Complex Programmable Logic Device)編程下載和自動測試等技術;在計算機輔助工程方面融合了計算機輔助設計(CAD),計算機輔助制造(CAM),計算機輔助測試(CAT),計算機輔助工程(CAE)技術以及多種計算機語言的設計概念;而在現(xiàn)代電子學方面則容納了更多的內(nèi)容,如電子線路設計理論、數(shù)字信號處理技術、數(shù)字系統(tǒng)建模和優(yōu)化技術及長線技術理論等。
2.2硬件描述語言
硬件描述語言HDL是EDA技術的重要組成部分,常見的HDL主要有VHDL、Verilog HDL、ABEL、AHDL、System Verilog和SystemC。其中VHDL、Verilog和現(xiàn)在的EDA設計中使用最多,并且我們學習的是VHDL的編程方法和實用技術。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,由IEEE(The Institute of Electrical and Electronics Engineets)進一步發(fā)展,并在1987年作為“IEEE標準1076”公布。從此VHDL成為硬件描述語言的業(yè)界標準之一。VHDL技術與傳統(tǒng)的數(shù)字電子系統(tǒng)或IC設計相比之下有很大的優(yōu)勢,主要表現(xiàn)在: 第一,VHDL語言具有很強的電路描述和建模能力,能從多個層次對數(shù)字系統(tǒng)進行建 模和描述,從而大大簡化了硬件設計任務,提高了設計效率和可靠性。第二,VHDL具有也具體硬件電路武官和與設計平臺無關的特性,并且具有良好的電 路行為描述和系統(tǒng)描述的能力,課程設計說明書
并在語言易讀性和層次化,結(jié)構(gòu)化設計方面,表現(xiàn)了強大的生命力和應用潛力。
當今社會是數(shù)字化的社會,也是數(shù)字集成電路廣泛應用的社會,數(shù)字本身在不斷的進行更新?lián)QVHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong Language, 翻譯成中文就是超高速集成電路硬件描述語言,誕生于1982年。1987年底,VHDL被美國國防部確認為標準硬件描述語言。
自IEEE公布了VHDL的標準版本,IEEE-1076之后,各EDA公司相繼推出了自己的VHDL設計環(huán)境,或宣布自己的設計工具可以和VHDL接口。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本。
現(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL于Verilog語言將承擔起大部分的數(shù)字系統(tǒng)設計任務。目前,它在中國的應用多數(shù)是用在FPGA/CPLD/EPLD的設計中。當然在一些實力較為雄厚的單位,它也被用來設計ASIC。
傳統(tǒng)的硬件電路設計方法是采用自下而上的設計方法,即根據(jù)系統(tǒng)對硬件的要求,詳細編制技術規(guī)格書,并畫出系統(tǒng)控制流圖;然后根據(jù)技術規(guī)格書和系統(tǒng)控制流圖,對系統(tǒng)的功能進行細化,合理地劃分功能模塊,并畫出系統(tǒng)的功能框圖;接著就進行各功能模塊的細化和電路設計;各功能模塊電路設計、調(diào)試完成后,將各功能模塊的硬件電路連接起來再進行系統(tǒng)的調(diào)試,最后完成整個系統(tǒng)的硬件設計。采用傳統(tǒng)方法設計數(shù)字系統(tǒng),特別是當電路系統(tǒng)非常龐大時,設計者必須具備較好的設計經(jīng)驗,而且繁雜多樣的原理圖的閱讀和修改也給設計者帶來諸多的不便。為了提高開發(fā)的效率,增加已有開發(fā)成果的可繼承性以及縮短開發(fā)周期,各ASIC研制和生產(chǎn)廠家相繼開發(fā)了具有自己特色的電路硬件描述語言(Hardware Description Language,簡稱HDL)。但這些硬件描述語言差異很大,各自只能在自己的特定設計環(huán)境中使用,這給設計者之間的相互交流帶來了極大的困難。因此,開發(fā)一種強大的、標準化的硬件描述語言作為可相互交流的設計環(huán)境已勢在必行。于是,美國于1981年提出了一種新的、標準化的HDL,稱之為VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,簡稱VHDL。這是一種用形式化方法來描述數(shù)字電路和設計數(shù)字邏輯系統(tǒng)的語言。設計者可以利用這種語言來描述自己的設計思想,然后利用電子設計自動化工具進行仿真,再自動綜合到門電路,最后用PLD實現(xiàn)其功能。
VHDL是一種全方位的硬件描述語言,包括系統(tǒng)行為級。寄存器傳輸級和邏輯門多個設計層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為三種描述形式的混合描述,因此
課程設計說明書
VHDL幾乎覆蓋了以往各種硬件語言的功能,整個自頂向下或由下向上的電路設計過程都可以用VHDL來完成。VHDL還具有以下優(yōu)點:
1.VHDL的寬范圍描述能力使它成為高層進設計的核心,將設計人員的工作重心提高到了系統(tǒng)功能的實現(xiàn)與調(diào)試,而花較少的精力于物理實現(xiàn)。
2.VHDL可以用簡潔明確的代碼描述來進行復雜控制邏輯設計,靈活且方便,而且也便于設計結(jié)果的交流、保存和重用。
3.VHDL的設計不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。
4.VHDL是一個標準語言,為眾多的EDA廠商支持,因此移植性好。關于VHDL語言,最后需要說明的是:與常規(guī)的順序執(zhí)行的計算機程序不同,VHDL從根本上講是并發(fā)執(zhí)行的。因此,我們通常稱之為代碼,而不是程序。在VHDL中,只有在進程(PROCESS)、函數(shù)(FUNCTION)和過程(PROCEDURE)內(nèi)部的語句才是順序執(zhí)行的。
VHDL語言具有良好的可讀性,即容易被計算機接受,也容易被讀者理解。使用期長,不會因工藝變化而使描述過時。因為VHDL的硬件描述與工藝無關,當工藝改變時,只需修改相應程序中的屬性參數(shù)即可。
課程設計說明書 Quartus II介紹
3.1 Quartus II軟件介紹
Quartus II 是Altera公司單芯片可編程系統(tǒng)(SOPC)設計的綜合性環(huán)境,也是適合SOPC的最全面的設計環(huán)境。擁有現(xiàn)場可編程門陣列(FPGA)和復雜可編程邏輯器件(CPLD)設計的所有解決方案。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺,該平臺支持一個工作組環(huán)境下的設計要求,其中包括支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。
Quartus II也支持第三方的仿真工具,對第三方EDA工具的良好支持也使用戶可以在設計流程的各個階段使用熟悉的第三方EDA工具。Quartus II還支持層次化設計,可以在一個新的編輯環(huán)境中對使用不同輸入設計方式完成的模塊進行調(diào)用,從而解決了原理圖與HDL混合輸入設計的問題,并且在輸入之后,Quartus II的編譯器將給出設計輸入的錯誤報告。
Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設計流程外,提供了完善的用戶圖形界面設計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學易用等特點。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設計的復雜性、加快了設計速度。
Maxplus II 作為Altera的上一代PLD設計軟件,由于其出色的易用性而得到了廣泛的應用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設計輔助工具,集成了SOPC和HardCopy設計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。
Altera 公司的Quartus II 作為一種可編程邏輯的設計環(huán)境, 由于其強大的設計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設計者的歡迎。
課程設計說明書
3.2 Quartus II軟件界面介紹
3.2.1 代碼輸入界面
新建一個工程,選擇File→New Project Wizard,在出現(xiàn)的對話框中輸入工作路徑和工程名稱(應與實體名稱相同),新建完工程后,選擇File→New→VHDL File,然后新出現(xiàn)的空白窗口中輸入代碼,代碼輸入界面如圖3-1所示:
圖3-1 代碼輸入界面
3.2.2 編譯界面
代碼輸入完畢后,選擇Processing→Start Compilation或直接單擊(Start Compilation)進行編譯,編譯界面如圖3-2所示:
課程設計說明書
圖3-2 編譯界面
3.2.3 波形仿真界面
編譯沒有錯誤后,選擇File→New→Vector Waveform File,自己設置輸入的值,設置好后單擊 進行波形仿真,仿真前界面如圖3-3所示:
圖3-3波形仿真前界面
仿真后界面如圖3-4所示:
課程設計說明書
3-4波形仿真后界面
課程設計說明書 系統(tǒng)設計
4.1 設計過程
4.1.1 設計內(nèi)容及要求
1.設計內(nèi)容:
(1)設計一個彩燈控制器,使8個彩燈(發(fā)光二極管)能連續(xù)發(fā)出六種種以上不同的花型,花型自擬(全亮,全滅除外),每種花型持續(xù)的時間為10秒鐘。
(2)使用數(shù)碼管顯示當前的花型序號(分別為A、B、C,D,E,F(xiàn))以及該花型的顯示時間。
(3)每種花型顯示時對應發(fā)出不用的聲音(4)系統(tǒng)要有整體復位信號 2.設計要求:
(1)根據(jù)任務要求確定電路各功能模塊;(2)寫出設計程序;(3)給出時序仿真結(jié)果;(4)實現(xiàn)硬件調(diào)試;
4.1.2 輸入與輸出說明
1.輸入:
rst,clk,clker分別為彩燈控制器的整體復位,時鐘脈沖發(fā)生以及發(fā)聲器分頻時鐘脈沖;
2.輸出:
x表示彩燈控制器六種種以上不同的花型,y表示每種花型持續(xù)的時間(10秒鐘),M表示數(shù)碼管顯示的當前的花型序號(分別為A、B、C,D,E,F(xiàn)),Z為每種花型顯示時對應發(fā)出不用的聲音。
4.1.3 設計過程思路分析
如圖4.1整個系統(tǒng)有需要三個輸入信號,分別為彩燈控制器的整體復位,計時時鐘脈沖以及發(fā)聲器分頻時鐘脈沖,輸出信號要能表示彩燈控制器六種種以上不同的花型,表示每種花型持續(xù)的時間(10秒鐘)和花型序號以及每種花型對
課程設計說明書
應發(fā)出不用的聲音。系統(tǒng)框圖如下:主要模塊組成:花型控制模塊和顯示電路模塊以及蜂鳴器發(fā)聲模塊。時序電路是根據(jù)時鐘脈沖信號的設置得到相應的輸出信號,并將此信號作為花型控制模塊和顯示電路時鐘信號。顯示電路輸入時鐘信號的周期,有規(guī)律的輸出設定的六種彩燈變化類型以及數(shù)碼管顯示花型序號和持續(xù)時間。時序電路是根據(jù)另一時鐘脈沖信號的設置得到相應的輸出信號,并將此信號作為發(fā)聲模塊的時鐘信號的輸入時鐘信號的周期,進行有規(guī)律的輸出設定蜂鳴器對應花型變化發(fā)出的各種聲音。該程序采用層次設計法,頂層采用原理圖設計,底層采用VHDL 設計。以下是它的方框圖。底層分為三個子電路模塊,分別是時序控制電路模塊和顯示電路模塊以及蜂鳴器發(fā)聲模塊。
圖 4.1 模塊組成
4.2 程序分析及仿真
4.2.1花型控制電路模塊
花型控制電路模塊是8 路彩燈電路的核心部分。它主控著8 路彩燈的花型種類。模塊主要采用狀態(tài)機如圖4.2來實現(xiàn),用狀態(tài)機來設計靈活性很強。按設計要求要實現(xiàn)六種花型01100110、010000010、1000001、00011000、00100100、11100111,用S0、S1、S2、S3、S4、S5 來表示6 種循環(huán),以1表示燈亮,以0表示燈滅狀態(tài)的狀態(tài)。仿真圖如圖4.2:
圖 4.2 狀態(tài)轉(zhuǎn)換圖
課程設計說明書
a7:process(pr_state)begin casepr_state is when a=> x<=“01100110”;nx_state<=b;when b=> x<=“01000010”;nx_state<=c;when c=> x<=“1000001”;z<=clk2;when d=> x<=“00011000”;nx_state<=e;when e=> x<=“00100100”;nx_state<=f;when f=> x<=“11100111”;nx_state<=a;end case;end process;
圖 4.3 花型控制電路模塊仿真
4.2.2
顯示電路模塊
顯示電路模塊的要求是使用數(shù)碼管顯示當前的花型序號(分別為A、B、C,D,E,F(xiàn))以及該花型的顯示時間。花型控制電路模塊采用狀態(tài)機實現(xiàn),在狀態(tài)機的
課程設計說明書
時序邏輯電路部分已經(jīng)采用計數(shù)器計時的方法直到計數(shù)器計時達到時才進入下一個狀態(tài),如下為狀態(tài)機時序邏輯電路程序:
process(clk,rst)variablecount:integer range 0 to 10;begin if(rst='1')then pr_state<=a;count:=0;elsif(clk'event and clk='1')then count:=count+1;if(count=10)then pr_state<=nx_state;count:=0;end if;end if;y<=count;end process;為用數(shù)碼管顯示當前的花型序號(分別為A、B、C,D,E,F(xiàn))以及該花型的顯示時間,只需要將顯示當前的花型序號程序二進制代碼以及該花型的顯示的時間的二進制代碼添加到狀態(tài)中即可,程序如下:
a7:process(pr_state)begin casepr_state is when a=> x<=“01100110”;m<=“1110111”;nx_state<=b;z<=clker;when b=> x<=“01000010”;m<=“1111100”;nx_state<=c;z<=clk1;when c=>
課程設計說明書
x<=“1000001”;m<=“0111001”;nx_state<=d;z<=clk2;when d=> x<=“00011000”;m<=“1011110”;nx_state<=e;z<=clk3;when e=> x<=“00100100”;m<=“1111001”;nx_state<=f;z<=clk4;when f=> x<=“11100111”;m<=“1110001”;nx_state<=a;z<=clk5;end case;end process;仿真圖如下:
圖4.4 顯示電路模塊
課程設計說明書
4.2.3發(fā)聲電路模塊
發(fā)生電路采用蜂鳴器,而蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件,它分為有源蜂鳴器和無源蜂鳴器兩種,有源蜂鳴器直接接上額定電源就可連續(xù)發(fā)聲,而無源蜂鳴器工作需要加入其理想信號方波,該課程設計采用無源蜂鳴器。對于每種花型顯示時對應發(fā)出不用的聲音,這里就需要對其中輸入的時鐘信號進行分頻,改變temp的值能產(chǎn)生出不同頻率的聲音。在程序中添加不同的進程(process),來產(chǎn)生不同頻率的方波。程序如下:
a1:process(clker)variable temp1:integer range 0 to 15;begin ifclker'event and clker='1'then temp1:=temp1+1;if temp1=2 then clk1<=not clk1;temp1:=0;end if;end if;end process;發(fā)聲電路模塊輸出信號z同樣可以反映在狀態(tài)機的組合邏輯電路中,程序4.2.1中的組合邏輯電路
圖4.5 發(fā)聲電路模塊
4.3 程序仿真圖
綜合以上各模塊程序仿真圖如下:
課程設計說明書
圖4.6 程序仿真圖
課程設計說明書 下載
5.1 芯片選定
選擇Assignments→devives然后選擇芯片,芯片設定界面如圖5-1所示:
圖5.1 芯片選定
5.2引腳設定
選擇Assignments→Pins然后設定引腳,引腳設定界面如圖5-2所示:
課程設計說明書
圖5.2 引腳設定
5.3 程序下載
引腳設定好后,將下載盒子插到USB接口,點擊,選擇Hardward和start當下載到100%時,就可以通過試驗箱進行驗證,下載驗證如圖5-3所示:
圖5.3 程序下載
5.4 結(jié)果顯示
程序下載到實驗板上完成后,程序運行結(jié)果在實驗板上得到實現(xiàn),八個LED發(fā)光二極管變換產(chǎn)生六種不同的花型樣式,七段譯碼管顯示與之對應的變換的花
課程設計說明書
型序號A,B,C,D,E,F,同時LED譯碼管也開始計時,到達10秒后變換到下一個花型,蜂鳴器也對應不同花型發(fā)出不同的聲音,程序運行結(jié)果顯示正確。如下圖:
圖 5.4 實驗板
課程設計說明書 設計總結(jié)
通過這次課程設計對EDA技術有了更進一步的熟悉,VHDL 語言和C語言等其他語言還是有很大的區(qū)別。VHDL是EDA技術的重要組成部分,其具有與具體硬件電路無關和與設計平臺無關的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化、結(jié)構(gòu)化設計方面,表現(xiàn)了強大的生命力和應用潛力。其主要的也是最大的優(yōu)點就在于設計者可以專心致力于其功能的實現(xiàn),而不需要對不影響功能的與工藝有關的因素花費過多的時間和精力。在實際操作中發(fā)現(xiàn)設計和課本上的知識有很大聯(lián)系,但又高于課本,一個簡單的原理要把它應用以及和其他功能綜合起來就有些困難。通過設計也鞏固了我們的書本知識以及通過借閱書籍和上網(wǎng)查找資料,也豐富了自己對EDA的了解。不過本次設計也存在一些不足,暴露了自己對EDA的掌握還有所欠缺。在設計過程中,分頻分的太大,頻率太小的話,揚聲器的聲音體現(xiàn)不出顯示不同花型時的區(qū)別;頻率太大的話,數(shù)碼管顯示速度太快,嘗試分頻時使用不同的脈沖信號,但沒有成功。在反復調(diào)試中,最后還是成功了,但原理還不是很清楚。同時,在課程設計過程中通過與老師、同學的交流,也了解了他們對于這門技術的看法和今后這門技術的發(fā)展方向,也感謝老師對我設計的指導和同學對我的幫助。總的來說,這次設計還是有所收獲的。
課程設計說明書
參考文獻
[1] VokneiA.Pedroni.《VHDL數(shù)字電路設計教程》.電子工業(yè)出版社,2008.5
[2] 潘松,黃繼業(yè).《EDA技術實用教程》(第二版).科學出版社,2005.2 [3] 焦素敏.《EDA應用技術》.清華大學出版社,2002.4 [4] 曾繁泰,陳美金.VHDL程序設計[M].北京:清華大學出版社,2001 [5] 張昌凡等.可編程邏輯器件及VHDL設計技術[M].廣州:華南理工大學出版社,2001
課程設計說明書
附錄:源代碼程序
libraryieee;use ieee.std_logic_1164.all;entity led is port(rst,clk,clker:instd_logic;x:out std_logic_vector(7 downto 0);y:out integer range 0 to 10;m:out std_logic_vector(6 downto 0);z:out std_logic);end led;architecturebhv of led is signal clk1,clk2,clk3,clk4,clk5:std_logic;type state is(a,b,c,d,e,f);signalpr_state,nx_state:state;begin a1:process(clker)variable temp1:integer range 0 to 15;begin ifclker'event and clker='1'then temp1:=temp1+1;if temp1=2 then clk1<=not clk1;temp1:=0;end if;end if;end process;a2:process(clker)variable temp2:integer range 0 to 15;begin ifclker'event and clker='1'then temp2:=temp2+1;if temp2=4 then clk2<=not clk2;
課程設計說明書
temp2:=0;end if;end if;end process;a3:process(clker)variable temp3:integer range 0 to 15;begin ifclker'event and clker='1'then temp3:=temp3+1;if temp3=8 then clk3<=not clk3;temp3:=0;end if;end if;end process;a4:process(clker)variable temp4:integer range 0 to 16;begin ifclker'event and clker='1'then temp4:=temp4+1;if temp4=16 then clk4<=not clk4;temp4:=0;end if;end if;end process;a5:process(clker)variable temp5:integer range 0 to 33;begin ifclker'event and clker='1'then temp5:=temp5+1;if temp5=32 then clk5<=not clk5;temp5:=0;
課程設計說明書
end if;end if;end process;a6: process(clk,rst)variablecount:integer range 0 to 10;begin if(rst='1')then pr_state<=a;count:=0;elsif(clk'event and clk='1')then count:=count+1;if(count=10)then pr_state<=nx_state;count:=0;end if;end if;y<=count;end process;a7:process(pr_state)begin casepr_state is when a=> x<=“01100110”;m<=“1110111”;nx_state<=b;z<=clker;when b=> x<=“01000010”;m<=“1111100”;nx_state<=c;z<=clk1;when c=> x<=“10000001”;m<=“0111001”;
課程設計說明書
nx_state<=d;z<=clk2;when d=> x<=“00011000”;m<=“1011110”;nx_state<=e;z<=clk3;when e=> x<=“00100100”;m<=“1111001”;nx_state<=f;z<=clk4;when f=> x<=“11100111”;m<=“1110001”;nx_state<=a;z<=clk5;end case;end process;endbhv;
第五篇:EDA課程設計:八路彩燈控制器
EDA課程設計
設計題目:基于VHDL的8路彩燈控制器設計
一、課程設計的目的
1.熟悉QuartusⅡ軟件的使用方法,使用VHDL 文本輸入設計法進行任務設計。2.增強自己實際動手能力,獨立解決問題的能力。3.通過課程設計對所學的知識進行更新及鞏固.二、課程設計的基本要求
本次課程設計是設計一個8路彩燈控制器,能夠控制8路彩燈按照兩種節(jié)拍,三種花型循環(huán)變化。設計完成后,通過仿真驗證與設計要求進行對比,檢驗設計是否正確。
三、課程設計的內(nèi)容
編寫硬件描述語言VHDL程序,設計一個兩種節(jié)拍、三種花型循環(huán)變化的8路彩燈控制器,兩種節(jié)拍分別為0.25s和0.5s。三種花型分別是:
(1)8路彩燈分成兩半,從左至右順次漸漸點亮,全亮后則全滅。(2)從中間到兩邊對稱地漸漸點亮,全亮后仍由中間向兩邊逐次熄滅。(3)8路彩燈從左至右按次序依次點亮,全亮后逆次序依次熄滅。
四、實驗環(huán)境
PC機一臺;軟件QuartusⅡ6.0
五、課程設計具體步驟及仿真結(jié)果
1、系統(tǒng)總體設計框架結(jié)構(gòu)
分頻模塊:把時鐘脈沖二分頻,得到另一個時鐘脈沖,讓這兩種時鐘脈沖來交替控制花型的速度。
二選一模塊:選擇兩種頻率中的一個控制彩燈的花型。
8路彩燈的三種花型控制模塊:整個系統(tǒng)的樞紐,顯示彩燈亮的情況。
2、系統(tǒng)硬件單元電路設計
1.分頻模塊設計 實驗程序:library ieee;use ieee.std_logic_1164.all;entity fenpin2 is
port(clk:in std_logic;
clkk:out std_logic);end fenpin2;architecture behav of fenpin2 is begin
process(clk)
variable clkk1:std_logic:='0';
begin
if clk'event and clk='1' then
clkk1:= not clkk1;
end if;
clkk<=clkk1;
end process;end behav;RTL電路圖:
波形圖:
2.二選一模塊設計 實驗程序:library ieee;use ieee.std_logic_1164.all;entity mux21 is port(a,b,s:in std_logic;
y:out std_logic);end mux21;architecture behave of mux21 is begin process(a,b,s)begin if s='0' then y<=a;else y<=b;end if;end process;end behave;RTL電路圖:
波形圖:
3.8路彩燈的三種花型控制模塊設計 程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity color8 is port(clk,rst :in std_logic;
q:out std_logic_vector(7 downto 0));end;architecture a of color8 is signal s:std_logic_vector(4 downto 0);begin process(s,clk)begin if rst='1' then s<=“00000”;elsif clk'event and clk= '1' then if s=“11111” then
s<=“00000”;else s<=s+1;end if;case s is when “00000”=>q<=“00000000”;when “00001”=>q<=“10001000”;when “00010”=>q<=“11001100”;when “00011”=>q<=“11101110”;
when “00100”=>q<=“11111111”;when “00101”=>q<=“00000000”;when “00110”=>q<=“00011000”;when “00111”=>q<=“00111100”;when “01000”=>q<=“01111110”;when “01001”=>q<=“11111111”;when “01010”=>q<=“11100111”;when “01011”=>q<=“11000011”;when “01100”=>q<=“10000001”;when “01101”=>q<=“00000000”;when “01110”=>q<=“10000000”;when “01111”=>q<=“11000000”;when “10000”=>q<=“11100000”;when “10001”=>q<=“11110000”;when “10010”=>q<=“11111000”;when “10011”=>q<=“11111100”;when “10100”=>q<=“11111110”;when “10101”=>q<=“11111111”;when “10110”=>q<=“11111110”;when “10111”=>q<=“11111100”;when “11000”=>q<=“11111000”;when “11001”=>q<=“11110000”;when “11010”=>q<=“11100000”;when “11011”=>q<=“11000000”;when “11100”=>q<=“10000000”;when “11101”=>q<=“00000000”;when others=>null;end case;end if;end process;end;
RTL電路圖:
波形圖:
4.綜合程序 library ieee;use ieee.std_logic_1164.all;entity fenpin2 is
port(clk:in std_logic;
clkk:out std_logic);end fenpin2;architecture behav of fenpin2 is begin
process(clk)
variable clkk1:std_logic:='0';
begin
if clk'event and clk='1' then
end if;
clkk<=clkk1;
end process;end behav;library ieee;use ieee.std_logic_1164.all;entity mux21 is port(a,b,s:in std_logic;
y:out std_logic);end mux21;architecture behave of mux21 is begin process(a,b,s)begin if s='0' then y<=a;else y<=b;end if;end process;end behave;library ieee;
clkk1:= not clkk1;
use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity color8 is port(clk,rst :in std_logic;
q:out std_logic_vector(7 downto 0));end;architecture a of color8 is signal s:std_logic_vector(4 downto 0);begin process(s,clk)begin if rst='1' then s<=“00000”;elsif clk'event and clk= '1' then if s=“11111” then
s<=“00000”;else s<=s+1;end if;case s is when “00000”=>q<=“00000000”;when “00001”=>q<=“10001000”;when “00010”=>q<=“11001100”;when “00011”=>q<=“11101110”;when “00100”=>q<=“11111111”;when “00101”=>q<=“00000000”;when “00110”=>q<=“00011000”;when “00111”=>q<=“00111100”;when “01000”=>q<=“01111110”;when “01001”=>q<=“11111111”;when “01010”=>q<=“11100111”;when “01011”=>q<=“11000011”;
when “01100”=>q<=“10000001”;when “01101”=>q<=“00000000”;when “01110”=>q<=“10000000”;when “01111”=>q<=“11000000”;when “10000”=>q<=“11100000”;when “10001”=>q<=“11110000”;when “10010”=>q<=“11111000”;when “10011”=>q<=“11111100”;when “10100”=>q<=“11111110”;when “10101”=>q<=“11111111”;when “10110”=>q<=“11111110”;when “10111”=>q<=“11111100”;when “11000”=>q<=“11111000”;when “11001”=>q<=“11110000”;when “11010”=>q<=“11100000”;when “11011”=>q<=“11000000”;when “11100”=>q<=“10000000”;when “11101”=>q<=“00000000”;when others=>null;end case;end if;end process;end;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity balucaideng is port(clk,s,rst:in std_logic;q:out std_logic_vector(7 downto 0));end;architecture one of balucaideng is
signal h0,h1:std_logic;component fenpin2
port(clk:in std_logic;
clkk:out std_logic);end component;component mux21 port(a,b,s:in std_logic;
y:out std_logic);end component;component color8 port(clk,rst :in std_logic;
q:out std_logic_vector(7 downto 0));end component;begin u1: fenpin2 port map(clk=>clk,clkk=>h0);u2: mux21 port map(a=>h0,b=>clk,s=>s;y=>h1);u3: color8 port map(clk=>h1,rst=>rst,q=>q);end;波形圖:
六、實驗總結(jié)