第一篇:基于EDA技術的數字電路課程設計
基于EDA技術的數字電路課程設計
摘要:EDA技術結合數字電路課程設計課程是新教育改革的體現,創新的教學模式開啟了學生的智慧,增強實踐性與邏輯思維,激發學生熱情。在闡述了EDA的特征及優勢的同時,探究了它與數字電路課程設計的過程,最后對以新課程改革的觀點分析課程設計的優勢。
關鍵詞:EDA技術 數字電路設計課 新課程改革
引言
隨著社會科學技術不斷發展,培養四有新人的重任略顯重要。在日常生活中隨處可見EDA技術的應用,電子信息時代,逐漸被HTML描述性語言代替。傳統的理念及設計手段已經不能完全滿足現代企業和社會的需求。在EDA(EleCTRonICs Design Automation)技術基礎上,融入到數字電路課程是教育時代的要求,也是教學改革的新課程的要求。國家不僅重視創新發展,更注重培養人才,課程設計,直接影響學生的思想和培育。
1.EDA技術的特征及優勢
1.1簡單易于操作
計算機行業中,軟件硬件的應用是相互結合的。那么,關于EDA技術應用的性質特征為整個設計過程簡單可操作性強。在此方面涉及方面比較廣泛,內容相對豐富,通過硬件描述與軟件開發工具,實現特定的測試電路設計,在修改方面也達到便利的效果。
1.2產品的互換性強
EDA技術在設計上實現了邏輯編程器件,應用上可以自動的檢測、編輯,以及對一些程序的重新建構,對其進行修改。設計芯片方法靈活性強,有別于傳統的設計思路,在使用效率方面得到顯而易見的效果。因而,產品的互換性較強。
1.3自動性能高
在傳統的設計上,需要技術人員的操作,在人員輔助下操作完成設計。EDA技術設計突破以往的多人操作的難點,實現自動化設計。這不僅在人員調動方面節約了成本,而且實現了自動化設計。在性能上達到優化,測試全過程及及結果將會自動完成。
2.基于EDA技術結合數字電路課程設計的探究
2.1設計方法與要求
EDA在設計方法上遵循技術改革創新方式,將其傳統的設計概念中,加入新的焊接模式的轉變,達到了計算機自動化的性能;在設計要求上,運用于數字系統中,例如,在設計數字鬧鐘的過程中,增加了計時、整點報時等功能。在設計流程上,使用芯片也比傳統芯片更實用。
2.2適配器件如何應用
這時代,EDA設計的特點,在底層配件上都盡顯完善,適配對象包括布局線都進行了邏輯性操作。這增加了仿真設計的效果。根據所需要的設計文件類型,完成自動化設計過程。若設計有誤,可自動下載編程,進行修改。可見器件的適配設計在實際應用中發揮其明顯作用。
2.3編碼電路與譯碼電路共占195個邏輯單元
數字電路課程設計應用在EDA中,通過目標系統,使用描述性編碼完成設計工作,編譯碼電路在出錯后會自動改錯,編碼電路與譯碼電路共同實現了邏輯性的功能,這個過程,體現了EDA技術在數字電路中越來越重要。
3.突破傳統教學教程,注重能力的培養
3.1跟上時代腳步,注重教程改革
電路數字課程設計是電子信息專業的一門基礎課程。教學課程方面,比以往的教學方案中增加更多互動模式,傳教方式靈活簡單易懂,注重培養學生的實踐能力。目前,EDA技術涉及的領域遍布全國,它的發展已經步入科技前沿。
3.2根據社會需要,學以致用
數字電路課程設計,應用于實際生活的每個層面。在學校、醫院、樓層、社區、企業、家庭、交通等領域中,隨處可見,例如在醫院里,病床疾病呼叫,還有密碼解鎖、樓層內的控燈、觸摸延時燈、數字鐘、還有循環彩燈以及在交通運輸方面使用的交通燈等,要結合實際需求,達到教學與實踐相結合。
3.3技術與課程設計相結合,利于能力的培養
DEA技術與數字電路課程設計的結合,在給學生邏輯思維上的灌輸通通明朗。不論在教學教程上還是培育學生上都得到了實質性的提高。傳統的數字電路課程設計制約了學生的分析能力,固定的教學模式,限制了學習設計思路,及其獨立設計與組裝的能力。因此,注重教學課程改革與培養實踐技能成為發展趨勢。
4高校開展EDA技術課程,教育教學不斷完善
就目前狀況來看,EDA技術的課程與實踐課開展的十分普遍,對于高職電子專業人員來說,綜合EDA技術的數字電路課程設計綜合的實現了學生的應用能力,這是技術理論上的一場革命性的訓練。新課程的培養目標理念深厚,這種教學方式,貫徹了“三個代表”的重要思想。
在課程上新改革,例如以往的法務部與稅務部的分割線比較明顯,而在大時代背景下,需要新型人才,也需要在企業中事倍功半,在以往的教程上綜合了法務與稅務的知識,在新課程的推動下,出現法務稅務師,這不僅節約了人才,而且自身能力提高,實現個人獨特的價值。基于EDA技術的數字電路課程設計理念也是如此,為節約人才與新型技術人員的培養提供可行性的策略。
總結
數字電路課程設計思路有兩個,一個是仿真電路設計,一個是應用設計印刷電路板。課程設計的教程實踐將會實現個人的獨立設計與創新能力。能夠培養具有邏輯性的思考和解決問題的高素質人才,提高學生積極性與學校熱情,是實現基于EDA技術的數字電路課程設計的關鍵所在。
參考文獻
[1] 李彩.科技視界.淺談時序邏輯電路.2013(3)[2] 王璐,于冠龍,馬永強.淺析航空電子元器件的質量控制.黑龍江科技信息.2015(32)
第二篇:數字電路EDA課程設計數字跑表
EDA課程設計報告書
題目: 數字跑表
姓名: 班級: 學號: 成績:
一、設計題目及要求 設計題目:數字跑表
要求:1 具有暫停,啟動功能。
具有重新開始功能。用六個數碼管分別顯示百分秒,秒和分鐘。
二、設計過程及內容
拿到題目后,我在圖書館進行了相關書籍的查閱,首先明確了題目中設計項目要實現的功能,再進一步確定實現其功能的組成部分和使用器件,對于本次設計的總體思路,首先是設計一個控制模塊,可以使跑表具有啟動、暫停及重新開始的功能;然后,利用一個分頻模塊即15進制計數器得到100HZ的時鐘脈沖,接入到一個100*60*60三個計數器的模塊中,完成對時間的計時工作和對選時模塊的輸出工作,使選時模塊得到對應的時間,其次將選時模塊與顯示模塊連接,使數碼管顯示選中的當前時間,從而完成了這次課程設計的設計工作,進入到實現過程中去。
根據課程設計要求將設計分為5個模塊:
1、控制模塊,使跑表具有啟動、暫停及重新開始的功能;
2、分頻模塊,用于得到頻率為100HZ的時鐘脈沖;
3、計時模塊,進行時間的計時,同時將當前時間輸出給選時模塊;
4、選時模塊,從計時器得到當前時間輸出給顯示模塊;
5、顯示模塊,進行時間的顯示。總圖如下: 第一個模塊:控制器模塊
與門可控制時鐘信號的輸出與否,當跑表為START狀態時CLK端為高電平,QA為1,時鐘信號輸出,當跑表為STOP狀態時CLK端為低電平,QA為0,時鐘信號不輸出,從而實現開始和暫停的功能。REST是清零按鈕,REST接到控制模塊和總計時器模塊的清零端,當REST為高電平時,控制模塊和總計數器模塊清零,跑表重新開始工作。
第二個模塊:分頻器模塊
將74161接成15進制計數器,將1465HZ的時鐘頻率轉換成近似于100HZ的時鐘信號即所需的輸入時鐘信號,從而實現分頻功能。將得到的時鐘信號輸入到總計數器模塊中去。第三個模塊:計時模塊
計時模塊
本模塊由兩個60進制計數器和一個100進制計數器構成,從而實現百分秒向秒、秒向分的計數功能需求。60進制計數器及100進制計數器均采用兩個74LS160,采用整體置數方式接成。從60進制計數器和100進制計數器這三個輸出端分別印出八個端口(秒、分、時的個位及十位分別由四個二進制代碼表示),將當前時間編碼傳送給選時模塊,實現時間的選擇和顯示。(秒個位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分個位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒個位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)
100進制計數器
60進制計數器
第四個模塊:選時模塊
本模塊由四個八選一數據選擇器74LS151和地址選擇器74LS161構成。
地址選擇器74LS161接入一個1465 HZ的時鐘信號,使能端和清零端接高電平,使其循環工作,產生一組循環地址碼A、B、C,接到數碼管的地址端,使其循環顯示數字。同時,地址選擇器74LS161產生的一組循環地址碼接入到四個八選一數據選擇器74LS151上,使其對地址相同的一組數據進行選擇,產生四個二進制數A0,A1,A2,A3,即為數碼管所要顯示的數字的編碼。
第一個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的最低位(S0A,S1A, M0A, M1A, H0A, H1A), 第二個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的次低位(S0B,S1B,M0B,M1B,H0B,H1B), 第三個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的第二位(S0C,S1C,M0C,M1C,H0C,H1C), 第四個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的第一位(S0D,S1D,M0D,M1D,H0D,H1D),通過這四個八位二進制數比較器74LS151選出同一組數(秒個位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分個位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒個位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)作為輸出A0,A1,A2,A3,接到顯示模塊輸入端。
選時模塊
第五個模塊:顯示模塊
本模塊采用BCD—七段顯示譯碼器7448對實驗板上數碼管進行驅動。由選時模塊輸出的顯示數字編碼A0,A1,A2,A3接至輸入端A,B,C,D,使輸出端產生七位譯碼連接到實驗箱公共數據輸入端ABCDEDG,從而進行數據的顯示。
顯示模塊
三、設計結論
兩周的課程設計很快就結束了,雖然時間很短,但是收獲頗豐。通過這次課程設計,我學到了許多關于EDA的知識,認識到了EDA的強大功能,更重要的是增強了我的實踐動手能力,使我深刻地認識到僅僅學習課本上的知識是遠遠不夠的,必須要多多動手,多多實踐,才能真正理解并掌握所學的知識,達到學以致用的目的。同時我也深深地感受到嚴謹的態度對于科學研究的重要性。由于在設計的過程中,一點點的馬虎都可能造成整個系統的癱瘓,所以每一個細節都要認真思考,認真操作,不能有絲 百分的大意。這使我認識到要想做一個科研工作者是多么的不易!自己身上的缺點還有很多,要靠以后艱苦的努力來克服!
這次的EDA課程設計給了我一次非常重要也非常難得的實踐機會,使我可以將平時課本上學習的理論知識應用于實際操作。設計的過程是十分艱苦的,由于從未接觸過類似的領域,所以剛開始的時候一片茫然,不知道該干些什么。隨著研究的逐漸深入,自己漸漸的摸出頭緒,掌握了一些規律和方法,設計的成果也逐步成型,最終按照要求完成了設計。在實際操作的過程中,碰到了許多的困難,但最終在老師的耐心指導和同學的熱情幫助下,按時完成了任務。在此對老師和同學們表示衷心的感謝!
最后感謝老師給與我這次寶貴的實踐機會!
第三篇:《EDA技術》課程設計教學大綱
成都大學課程設計教學大綱
課程設計名稱: 《EDA技術課程設計》 課程代碼: 學 分: 1 總學時/周數: 1周
適用專業: 電子工程、通信工程、自動化等專業
一、課程設計目的與任務
本課程設計是在學完EDA技術課程后的必修課程,它的教學目的和任務是綜合利用所學EDA技術知識完成一個具有完整功能的電子系統設計,從系統頂層模塊的劃分、各功能模塊的硬件語言描述(編程)、各模塊及整體電路仿真、到最后下載到可編程器件實現真實的電路,讓學生親自體驗一次采用現代電子設計自動化技術完成一個電子系統設計的全過程。讓學生得到一次自主使用VHDL語言描述電路功能的訓練機會,從而提高對VHDL語言的使用能力,加深對仿真在設計中的重要作用的認識,提高對使用Max+plus2EDA軟件工具的熟練程度,最終獲得初步的電子系統設計經驗,為畢業設計和將來從事電子設計的相關工作打下基礎
二、課程設計基本要求
本課程設計,采用以學生自主設計為主教師指導為輔的原則,讓學生有一個充分發揮自我想像的空間,設計分階段進行,在獨立力完成了方案設計后,組織一次交流討論會,互相啟發開闊設計思路,盡可能使學生在這個具有創新思維、難度最高的設計環節獲得更多的收益,通過該課程設計更深入更全面地提高使用Max+plus2軟件工具完成設計全過程的熟練程度,尤其是要提高仿真和試驗開發系統的使用能力,設計最終要做出真實電路并上電檢測其功能和性能指標是否達到了預定的目標,最后寫出課程設計報告。
三、課程設計選題原則
所選題目應是社會生活、生產中常見的、學生易于理解和把握且感興趣的、對所學知識盡可能綜合全面派上用場的、難易程度適中的、一周時間能夠完成的的題目。
四、課程設計內容及時間安排
1.設計內容:根據具體設計題目和提出的功能性能指標要求,查閱相應參考資料,將所設計的電路系統劃分成若干功能模塊完成頂層結構設計(方案設計),對各功能模塊用硬件描述語言描述以完成程序設計,對個功能模塊及電路系統整體做仿真設計以驗證其正誤,將設計文件下載至可編程邏輯器件在實驗開發裝置上檢測功能性能指標以完成真實電路的設計。寫出課程設計報告,其中要有頂層結構圖,各功能模塊的程序,各功能模塊和整個電路系統的仿真波形圖,并對這些設計圖紙和設計程序所表達的邏輯思想、工作原理給以說明,寫出設計步驟和設計心得。2.課程設計時間:開始設計的前一周公布設計題目下達設計任務,用半周時間完成方案設計、程序設計,另外半周完成仿真、下載、測試。
五、課程設計主要參考資料
潘松 黃繼業 編著《EDA技術使用教程》(第二版)科學出版社 2005。
王振紅主編《VHDL數字電路設計與應用實踐教程》機械工業出版社,2006年。
六、課程設計考核方式及成績評定
考核成績由兩部分組成:現場檢測設計出的真實電路占50%,課程設計報告占50%。
大綱撰寫人: 楊顯富 系(教研室):(簽字)學院學術委員會意見:(簽字)
學院審核:(簽字、蓋章)年 月 日
注:請在黃色顯示的區域里用“仿宋 五號”字體填寫。
第四篇:數字電路課程設計
一、設計報告書的要求: 1.封面
2.課程設計任務書(題目,設計要求,技術指標等)
3.前言(發展現狀、課程設計的意義、設計課題的作用等方面)。3.目錄
4.課題設計(⑴ 寫出你考慮該問題的基本設計思路,畫出一個實現電路功能的大致框圖。
⑵ 畫出框圖中的各部分電路,對各部分電路的工作原理應作出說明。⑶ 畫出整個設計電路的原理電路圖,并簡要地說明電路的工作原理。⑷ 用protel畫原理電路圖。
(5)用Multisim或者Proteus畫仿真圖。
5.總圖。
6.課題小結(設計的心得和調試的結果)。7.參考文獻。
二、評分依據:
①設計思路,②單元電路正確與否,③整體電路是否完整,④電路原理說明是否基本正確,⑤報告是否清晰,⑥答辯過程中回答問題是否基本正確。
三、題目選擇:(三人一組,自由組合)(設計要求,技術指標自己選擇)
1、基于DC4011水箱水位自動控制器的設計與實現
水箱水位自動控制器,電路采用CD4011四與非門作為處理芯片。要求能夠實現如下功能:水箱中的水位低于預定的水位時,自動啟動水泵抽水;而當水箱中的水位達到預定的高水位時,使水泵停止抽水,始終保持水箱中有一定的水,既不會干,也不會溢,非常的實用而且方便。
2、基于CD4011聲控、光控延時開關的設計與實現
要求電路以CD4011作為中心元件,結合外圍電路,實現以下功能:在白天或光線較亮時,節電開關呈關閉狀態,燈不亮;夜間或光線較暗時,節電開關呈預備工作狀態,當有人經過該開關附近時,腳步聲、說話聲、拍手聲等都能開啟節電開關。燈亮后經過40秒左右的延時節電開關自動關閉,燈滅。
3、基于CD4011紅外感應開關的設計與實現
在一些公共場所里,諸如自動干手機、自動取票機等,只要人手在機器前面一晃,機器便被啟動,延時一段時間后自動關閉,使用起來非常方便。要求用CD4011設計有此功能的紅外線感應開關。
4、基于CD4011紅外線對射報警器的設計與實現
設計一款利用紅外線進行布防的防盜報警系統,利用多諧振蕩器作為紅外線發射器的驅動電路,驅動紅外發射管,向布防區內發射紅外線,接收端利用專用的紅外線接收器件對發射的紅外線信號進行接收,經放大電路進行信號放大及整形,以CD4011作為邏輯處理器,控制報警電路及復位電路,電路中設有報警信號鎖定功能,即使現場的入侵人員走開,報警電路也將一直報警,直到人為解除后方能取消報警。
5、基于CD4069無線音樂門鈴的設計與實現
音樂門鈴已為人們所熟知,在一些住宅樓中都裝有音樂門鈴,當有客人來訪時,只要按下門鈴按鈕,就會發出“叮咚”的聲音或是播放一首樂曲,然而在一些已裝修好的室內,若是裝上有線門鈴,由于必須布線,從而破壞裝修,讓人感到非常麻煩。采用CD4069設計一款無線音樂門鈴,發射按鍵與接收機間采用了無線方式傳輸信息。
6、基于時基電路555“叮咚”門鈴的設計與實現
用NE555集成電路設計、制作一個“叮咚”門鈴,使該裝置能夠發出音色比較動聽的“叮咚”聲。
7、基于CD4511數顯八路搶答器的設計與實現
CD4511是一塊含BCD-7段鎖存、譯碼、驅動電路于一體的集成電路。設計一款基于CD4511八路搶答器,該電路包括搶答,編碼,優先,鎖存,數顯和復位。
8、基于NE555+CD4017流水彩燈的設計與實現 以NE555和CD4017為核心,設計制作一個流水彩燈,使之通過調節電位器旋鈕,可調整彩燈的流動速度。
9、水位指示的設計與實現
電路的功能是檢測容器內的水位。把探頭分別裝在容器的底部、中部和頂部。通過3根導線與電路板連接,而3個LED分別代表不同的水位。
10、基于數字電路雙向炫彩流水燈的設計與實現
電路由無穩態多謝振蕩器、可逆計數器、三八線譯碼器和發光二極管組成;實現流水燈正反向循環旋轉。
11、基于數字電路六位數字鐘的設計與實現
設計一款純數字電路打造的6位數字時鐘。數字鐘是采用數字電路對“時”、“分”、“秒”數字顯示的計時裝置。
12、八路聲光報警器的設計與實現
八路聲光報警器中八位優先編碼器CD4532將輸入D0~D7的八路開關量譯成三位BCD碼,經BCD鎖存/七段譯碼/驅動器CD4511譯碼,驅動共陰極數碼管顯示警報電路0—7,路輸入開關中的任一路開路,顯示器即顯示該路號,發出數碼光報警;同時優先編碼器CD4532的GS段輸出高電平,使開關三極管飽和導通,啟動聲報警電路工作。聲報警電路由時基集成電路NE555和六反相器CD4069組成。
13、基于CD4060夢幻燈的設計與實現(基于proteus仿真)
設計一款電路,使其具有多種美麗的聲光效果,三種顏色的LED隨機組合,五彩斑斕,配有生日快樂音樂芯片,閃光的同時有生日快樂音樂播放,蜂鳴器發生,音樂芯片直接可以裝到電路板上,備有電源開關,方便控制,可以外接交流電源或電池。可作生日禮物相送。
14、變音警笛電路的設計與實現 設計一款電路,該電路采用兩片NE555時基集成電路構成的變音警笛電路,能發出“嗚-哇-嗚-哇”的警笛聲。
15、魔幻LED搖搖棒的設計與制作
“搖搖棒”是一種利用我們的“視覺暫留效應”工作的高科技電子玩具。接通電源后,它上面的一列LED(發光二極管)不停地閃爍,當你搖動它時,會看見空中夢幻般的浮現一個個笑臉、愛心等圖案或者文字。“搖搖棒”使用了一塊單片機。通過編寫程序,在它內部存儲若干幅圖形和文字,用一只輕觸按鈕來選擇要顯示的內容,并且使用一只動作傳感器開關來確保顯示正常。
16、基于數字電路NE555、CD4017LED骰子的設計與實現
由555組成的多諧振蕩器和CD4017十進制計數器/脈沖分配器構成。7個發光二極管模擬骰子的點數,當按下按鈕1秒以上,骰子上的發光二極管高速循環點亮,之后循環速度越來越慢并最終隨機停止于某個點上。
17、數顯計數器的設計與實現
不需要編程的計數器模塊,有3個數碼管顯示,使用14553和14511芯片進行控制驅動。
18、基于555簡易催眠器的設計與制作
時基電路555構成一個極低頻振蕩器,輸出一個個短的脈沖,使揚聲器發出類似雨滴的聲音
19、基于數字電路電動機轉速表的設計與實現
在電動機轉動時,人眼無法統計電動機單位時間轉轉的圈數,即使電動機每秒鐘只轉動幾圈,我們也無法準確的數數來得到電動機每分鐘的轉動圈數。設計一款電動機轉速表來計數,最大可以顯示999,如果需要顯示更大的數字,還可以自行增加CD40110和數碼管,每增加一級,計數可增大10倍再加上9。
20、基于CD4011路燈開關模擬電路的設計與實現
從節約用電的角度出發,路燈開關在每天傍晚時全部燈亮,后半夜行人稀少,路燈關掉一半,第二天清早路燈全部關閉。
21、數字秒表的設計與實現
單穩態觸發器,時針發生器及計時器,譯碼顯示單元電路的應用
22、基于CD4011聲光控帶燈頭開關的設計與實現
開關選用CD4011集成塊為延時電路,選用1A單向可控硅以及性能穩定的光敏電阻和優質的駐極體組成的聲光控動作電路
23、基于數字電路兩位計數器的設計與實現
兩位自動計數器兩位數碼管自動顯示0-99,數字可清零。電路主要由NE555,4518,4511實現。上電后,電路自動計數.由0增至99,不斷循環計數.24、數字頻率計的設計與實現
電路通過時基電路NE555,十進制計數/譯碼器CD4017,六與非門CD4011,十進制計數/譯碼/鎖存/驅動器CD40110以及兩個共陰數碼管實現被測信號頻率測試。
25、基于數字電路自動溫控報警電路的設計與實現
現實生活中,常常需要進行溫度控制。當溫度超出某一規定的上限值時,需要立即切斷電源并報警。待恢復正常后設備繼續運行。設計一款溫度控制電路,電路采用LM324作比較器,NE555作振蕩器,十進制計數/譯碼器CD4017以及鎖存/譯碼/驅動電路CD4511作譯碼顯示達到上述要求。
26、基于數字電路兩位自動計數器的設計與實現
兩位自動計數器兩位數碼管自動顯示0-99,數字可清零。電路主要由NE555,4518,4511實現。上電后,電路自動計數.由0增至99,不斷循環計數.數字上升速度快慢由NE555振蕩頻率決定.S1為計數清零按鍵.NE555構成時鐘信號發生器,CD4518為二/十進制加法計數器,CD4511為譯碼驅動器,調節R17可調節NE555的振蕩頻率.C1為充放電電容,電容容量愈大,充電時間愈長,則振蕩頻率愈低。
27、基于數字電路數字顯示頻率計電路的設計與實現
電路通過時基電路NE555,十進制計數/譯碼器CD4017,六與非門CD4011,十進制計數/譯碼/鎖存/驅動器CD40110以及兩個共陰數碼管實現被測信號頻率測試。
28、基于CD4017流水燈的設計與實現
CD4017流水燈由555組成的多諧振蕩器和CD4017十進進制計數/譯碼電路組成。
29、基于CD4017六路回閃燈的設計與實現 電路通電后,六個發光管先依次點亮,再全部熄滅,然后反方向依次點亮,完成一個循環,接著進行下一個循環。電路由555組成的多諧振蕩器和CD4017十進進制計數/譯碼電路組成。
30、基于CD4017摩托車閃燈的設計與實現
電路由多諧振蕩電路和CD4017構成,實現三組發光管循環顯示。
31、基于CD401712路回閃燈的設計與實現
電路由555組成的多諧振蕩器和CD4017十進制計數/譯碼電路構成。
32、基于CD4518/4511數字鐘的設計與實現
第五篇:EDA課程設計
考試序號:28
自動打鈴系統設計說明書
學 生 姓 名:周文江
學
號:14112502521
專 業 班 級:1102
報告提交日期:2013.11.26
湖 南 理 工 學 院 物 電 學 院
目錄
一、題目及要求簡介……………3 1.設計題目…………………3 2.總體要求簡介……………3
二、設計方案說明……………3
三、系統采用器件以及模塊說明………3 1.系統框圖…………4 2.選擇的FPGA芯片及配置………4 3.系統端口和模塊說明…………5
四、各部分仿真結果………5
五、調試及總結………6
六、參考文獻……7
七、附錄………7
一、題目及要求簡介
1、設計題目
設計一個多功能自動打鈴系統
2、總體要求簡介
① 基本計時和顯示功能(24小時制顯示),包括:
1.24小時制顯示 2.動態掃描顯示; 3.顯示格式:88-88-88 ② 能設置當前時間(含時、分)③ 能實現基本打鈴功能,規定:
06:00起床鈴,打鈴5s
二、設計方案說明
本次設計主要采用Verilog HDL硬件描述性語言、分模塊法設計的自動打鈴系統。由于這次用的開發板提供的是50M晶振。首先要對時鐘進行分頻,當計時到2FA_F07F時完成1s分頻,通過計時到60s產生分鐘進位信號,再通過60分鐘產生時鐘進位信號。最后通過6個寄存器對時分秒進行鎖存最終輸出到8個數碼管上完成顯示。當顯示時鐘和默認鬧鐘時鐘相等時,驅動打鈴模塊。通過key_mode,key_turn,key_change查看鬧鐘,時鐘顯示,調整時鐘。
三、系統采用器件以及模塊說明
1.系統框圖如下:
:下如圖框統系
2.選擇的FPGA芯片及配置:本次系統設計采用的FPGA芯片是Alter公司生產的Cyclone II EP2C8Q208C8。該芯片是208個管腳,138個IO,并且具有兩個內部PLL,而且內嵌乘法器,8K的邏輯門,資源相當豐富。完成這次自動打鈴系統的設計總共消耗250個LE單元,22個IO口,131個寄存器。經過綜合后,本系統最高能實現145M的運行速度。通過Quartus II 軟件觀察到內部的RTL圖如下
3.系統端口和模塊說明
(1)分頻部分
分頻器的作用是對50Mhz的系統時鐘信號進行分頻,得到頻率為1hz的信號,即為1S的計時信號。
(2)按鍵部分
按鍵key_mode--0為顯示計時,1為鬧鐘顯示,2為調整時間。按鍵key_turn—0為調整小時,1為調整分鐘。按鍵key_change—每按一次加1(3)計時部分
通過sec_L,sec_H,min_L,min_H,hour_L,hour_H 6個寄存器對時分秒進行鎖存然后送入數碼管顯示
(4)鬧鐘模塊
當設定的鬧鐘時間和數碼管上顯示的時間相等時驅動鬧鐘,完成打鈴,持續時間5s。
(5)數碼管顯示模塊
顯示模塊是由8個位選8個段選構成的顯示模塊,利用人眼的余暉效果完成動態掃描,顯示時間。
四、各部分仿真結果
測試文件如下:
module clock_tb;reg sysclk,rst_b;reg key_mode,key_turn,key_change;wire buzzer;
wire [7:0] led_sel,led_data;clock I_clock(.sysclk(sysclk),.rst_b(rst_b),.key_mode(key_mode),.key_change(key_change),.key_turn(key_turn),.buzzer(buzzer),.led_sel(led_sel),.led_data(led_data));initial begin sysclk = 1'b1;rst_b = 1'b0;//復位信號
#30 rst_b = 1'b1;end always #10 sysclk = ~sysclk;//輸入的系統時鐘,20ns的周期 endmodule
五、調試及總結
本次課程設計總共花費了四天左右的時間,設計了自動打鈴系統。通過這次的設計更加熟悉了對EDA技術的了解和認識,在中也發現許多不足的地方。使用了自頂而下的設計方法,使得設計更加的簡單和明了。在調試過程中,有些代碼的設計不規范性,導致時序相當緩慢,甚至編譯綜合都會報錯。在不斷的修改下,發現時序電路和組合邏輯最好分開寫,這樣便于查錯,和修改代碼。畢竟Verilog HDL語言不同于C語言,不能以軟件的思想來設計,而是要利用電路的思想來編程,這樣可以更好的節省資源,使得時序也比較的簡單明了。在以后的學習及程序設計當中,我們一定要倍加小心,在程序出現不正常運行的情況下要耐心調試,盡量做到精益求精。
最后通過這次EDA方面的課程設計,提高了我們對EDA領域及通信電路設計領域的認識,有利于培養我們在通信電路EDA方面的設計能力。有利于鍛煉我們獨立分析問題和解決問題的能力。
六、文獻參考
[1].王金明、左自強 編,《EDA技術與Verilog設計》科學出版社
2008.8 [2].杜慧敏、李宥謀、趙全良 編,《基于Verilog的FPGA設計基礎》 西安電子科技大學出版社 2006.2 [3].韓彬 編,《從零開始走進FPGA世界》杭州無線電愛好者協會出版社 2011.8.20
七、附錄(實物圖及源碼)
module clock(//Input
sysclk,rst_b,key_mode,key_change,key_turn,//Output
buzzer,led_sel,led_data);
input sysclk,rst_b;//sysclk--global system clock,rst_b--global reset signal input key_mode;//mode choose.0--Timing function.1--Alarm clock function.2--adjust function input key_turn;//choose adjust minute or hour input key_change;//count add 1 output buzzer;//device buzzer output [7:0] led_sel;//led tube bit choose
output [7:0] led_data;//led_tube 8 bit data choose
parameter init_hour = 8'h12;parameter init_min = 8'h59;parameter init_sec = 8'h50;//initial time :12:59:50 parameter init_alarm_hour = 8'h06;parameter init_alarm_min = 8'h30;//initial alarm time : 06:30:0 parameter Count_1s = 28'h2FA_F07F;//count time 1s;
reg [7:0] sec;reg [7:0] min;reg [7:0] hour;reg [3:0] min_L;//minute low 4 bit reg [3:0] min_H;//minute high 4 bit reg [3:0] hour_L;//hour low 4 bit reg [3:0] hour_H;//hour high 4 bit reg [23:0] key_time;//press key away shake reg key_mode_n;//press key_mode next state reg key_change_n;//press key_change next state reg key_turn_n;//press key_turn next state wire key_mode_press;//sure Button press key_mode wire key_turn_press;//sure button press key_turn wire key_change_press;//sure button press key_change
always @(posedge sysclk)key_mode_n <= key_mode;assign key_mode_press =(!key_mode)&&(key_mode_n);always @(posedge sysclk)key_turn_n <= key_turn;assign key_turn_press =(!key_turn)&&(key_turn_n);always @(posedge sysclk)key_change_n <= key_change;assign key_change_press =(!key_change)&&(key_change_n);
always @(posedge sysclk or negedge rst_b)begin if(!rst_b)key_time <= 24'h0;else if(key_time!= 24'h0)
key_time <= key_time + 24'h1;else if((key_time == 24'h0)&&(key_mode_press || key_change_press || key_turn_press))key_time <= key_time + 24'h1;
end
reg [1:0] mode_num;//key mode..0--Timing function.1--Alarm clock function.2--adjust function always @(posedge sysclk or negedge rst_b)begin if(!rst_b)mode_num <= 2'b00;else if(mode_num == 2'h3)mode_num <= 2'h0;else if(key_mode_press &&(key_time == 24'h0))
mode_num <= mode_num + 2'h1;end
always @(*)begin if(mode_num == 2'h1)begin
min = init_alarm_min;hour = init_alarm_hour;end else begin
min = {min_H,min_L};hour = {hour_H,hour_L};end end
reg fm;//choose turn hour or minute always @(posedge sysclk or negedge rst_b)begin if(!rst_b)fm <= 1'b0;else if(key_turn_press &&(mode_num == 2'h2)&&(key_time == 24'h0))
fm <= ~fm;end
reg [27:0] time_cnt;///count time reg [27:0] time_cnt_n;//count time next state always @(posedge sysclk or negedge rst_b)begin if(!rst_b)time_cnt <= 28'h0;else time_cnt <= time_cnt_n;end
always @(*)begin if(time_cnt == Count_1s)time_cnt_n <= 28'h0;else if(mode_num!= 2'h0)time_cnt_n <= time_cnt;else time_cnt_n <= time_cnt + 28'h1;end
reg [3:0] sec_L;//second low 4 bit reg [3:0] sec_H;//second high 4 bit wire sec_cb;//second carry bit signal assign sec_cb =(sec_L == 4'h9)&&(sec_H == 4'h5);always @(posedge sysclk or negedge rst_b)begin if(!rst_b)begin
sec_L <= init_sec[3:0];sec_H <= init_sec[7:4];end else if((sec_L == 4'h9)&&(sec_H!= 4'h5)&&(time_cnt == Count_1s))begin
sec_L <= 4'h0;sec_H <= sec_H + 4'h1;end else if(sec_cb &&(time_cnt == Count_1s))begin
sec_L <= 4'h0;sec_H <= 4'h0;end else if(time_cnt == Count_1s)
sec_L <= sec_L + 4'h1;end
wire min_cb;//minute carry bit signal assign min_cb =(min_L == 4'h9)&&(min_H == 4'h5);always @(posedge sysclk or negedge rst_b)begin if(!rst_b)begin
min_L <= init_min[3:0];min_H <= init_min[7:4];end else if((sec_cb)&&(min_L!=4'h9)&&(time_cnt == Count_1s))
min_L <= min_L + 4'h1;else if((sec_cb)&&(min_L == 4'h9)&&(min_H!= 4'h5)&&(time_cnt == Count_1s))begin
min_L <= 4'h0;min_H <= min_H + 4'h1;end else if((sec_cb)&&(min_cb)&&(time_cnt == Count_1s))begin
min_L <= 4'h0;min_H <= 4'h0;end else if((fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(min_L!= 4'h9))
min_L = min_L + 4'h1;else if((fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time ==
24'h0)&&(min_L == 4'h9)&&(min_H!=4'h5))begin
min_L = 4'h0;min_H = min_H + 4'h1;end else if((fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(min_L == 4'h9)&&(min_H ==4'h5))begin
min_L = 4'h0;min_H = 4'h0;end end
always @(posedge sysclk or negedge rst_b)begin if(!rst_b)begin
hour_L <= init_hour[3:0];hour_H <= init_hour[7:4];end else if((sec_cb)&&(min_cb)&&(hour_L!= 4'h9)&&(hour_H!= 4'h2)&&(time_cnt == Count_1s))
hour_L <= hour_L + 4'h1;else if((sec_cb)&&(min_cb)&&(hour_L!= 4'h3)&&(hour_H == 4'h2)&&(time_cnt == Count_1s))
hour_L <= hour_L + 4'h1;else if((sec_cb)&&(min_cb)&&(hour_L == 4'h9)&&(hour_H!= 4'h2)&&(time_cnt == Count_1s))begin
hour_L <= 4'h0;hour_H <= hour_H + 4'h1;end else if((sec_cb)&&(min_cb)&&(hour_L == 4'h3)&&(hour_H == 4'h2)&&(time_cnt == Count_1s))begin
hour_L <= 4'h0;hour_H <= 4'h0;end else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(hour_L!= 4'h9)&&(hour_H!=4'h2))
hour_L <= hour_L + 4'h1;else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(hour_L!= 4'h3)&&(hour_H ==4'h2))
hour_L <= hour_L + 4'h1;else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time == 24'h0)&&(hour_L == 4'h9)&&(hour_H!=4'h2))begin
hour_L <= 4'h0;hour_H <= hour_H + 4'h1;end else if((!fm)&&(mode_num == 2'h2)&&(key_change_press)&&(key_time ==
24'h0)&&(hour_L == 4'h3)&&(hour_H ==4'h2))begin
hour_L <= 4'h0;hour_H <= 4'h0;end end
wire buzzer_en;assign buzzer_en =(init_alarm_min == {min_H,min_L})&&(init_alarm_hour == {hour_H,hour_L});
led_tube I_led_tube(.sysclk(sysclk),.rst_b(rst_b),.scan_time(24'h1F090),.data0({1'h1,sec_L}),.data1({1'h1,sec_H}),.data2({1'h1,4'hA}),.data3({1'h1,min[3:0]}),.data4({1'h1,min[7:4]}),.data5({1'h1,4'hA}),.data6({1'h1,hour[3:0]}),.data7({1'h1,hour[7:4]}),.led_data(led_data),.led_sel(led_sel));buzzer I_buzzer(.sysclk(sysclk),.rst_b(rst_b),.buzzer_en(buzzer_en),.buzzer(buzzer));endmodule