第一篇:合肥工業(yè)大學(xué)EDA課程總結(jié)報告
EDA課程總結(jié)報告
一、EDA技術(shù)簡介 1.EDA技術(shù)的概念
EDA即Electronic Design Automation的縮寫,直譯為:電子設(shè)計自動化 EDA技術(shù)有狹義和廣義之分,狹義EDA技術(shù)就是以大規(guī)模可編程邏輯器件為設(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計算機(jī)、大規(guī)模可編程邏輯器件的開發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真,直至完成對于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù),或稱為IES/ASIC自動設(shè)計技術(shù)。
2.EDA技術(shù)的目的和意義
EDA技術(shù)以規(guī)模巨大的可編程邏輯器件(PLD)作為進(jìn)行電子設(shè)計的載體,硬件描述語言(HDL)作為系統(tǒng)邏輯描述的一種主要 表達(dá)方式,通過它來完成對系統(tǒng)邏輯的描述,再依托具有強(qiáng)大功能的計算機(jī),通過運(yùn)用與 EDA 技術(shù)相應(yīng)的工具軟件,完成電子系統(tǒng)的 自動化設(shè)計。這種技術(shù)的應(yīng)用使設(shè)計人員得以 高效快速地完成設(shè)計任務(wù),使設(shè)計所用周期時間得以縮短,減少了設(shè)計所需的投入成本。20 世紀(jì)70年代由于計算機(jī)及集成電路的急劇發(fā)展,使電子技術(shù)受到劇烈的沖擊,其更新?lián)Q代的周期不斷縮減,而專用的集成電路卻不斷提升其設(shè)計難度,致使兩者之間的矛盾逐漸擴(kuò)大,這就使得電子技術(shù)要不斷地更新,從而滿足電子產(chǎn)品生產(chǎn)的需要,經(jīng)過近幾十年的發(fā)展,電子設(shè)計技術(shù)大致經(jīng)歷了三個主要的發(fā)展階段,從初期的 CAD 階段到 CAE 階段再到現(xiàn)在的 EDA 階段,電子設(shè)計技術(shù)取得了飛躍性的發(fā)展。EDA技術(shù)最特別之處在于它的設(shè)計流程,與傳統(tǒng)自下而上的電子設(shè)計流程恰恰相反,EDA技術(shù)選擇使用自上而下的設(shè)計流程,它從電子系統(tǒng)設(shè)計的整體出發(fā),在進(jìn)行設(shè)計之前就將系統(tǒng)中各部分之間的結(jié)構(gòu)規(guī)劃好,在對方框圖進(jìn)行劃分時完成相關(guān)的仿真和糾錯工作,使用 HDL 對高層次邏輯進(jìn)行描述,并運(yùn)用綜合優(yōu)化方法完成所有有關(guān)工作,然后通過使用 EDA 技術(shù),可以幫助用戶實(shí)現(xiàn)對系統(tǒng)中任意一項硬件功能進(jìn)行系統(tǒng)描述,最后再利用現(xiàn)場可編程門陣列(FPGA)或復(fù)雜可編程邏輯器 件(CPLD)來實(shí)現(xiàn)電子系統(tǒng)設(shè)計的結(jié)果。這種先進(jìn)的電子技術(shù)有效地解決了傳統(tǒng)電子設(shè)計技術(shù)的弊端,減少了實(shí)際應(yīng)用中出現(xiàn)故障的幾率,從而使設(shè)計效率得以大幅度提升。
二、EDA技術(shù)發(fā)展現(xiàn)狀
EDA 技術(shù)發(fā)展迅猛, 逐漸在教學(xué)、科研、產(chǎn)品設(shè)計與制造等各方面都發(fā)揮著巨大的作用。
在教學(xué)方面: 幾乎所有理工科(特別是電子信息)類的高校都開設(shè)了EDA 課程。主要是讓學(xué)生了解EDA 的基本原理和基本概念、掌握用VHDL 描述系統(tǒng)邏輯的方法、使用EDA 工具進(jìn)行電子電路課程的模擬仿真實(shí)驗(yàn)。如實(shí)驗(yàn)教學(xué)、課程設(shè)計、畢業(yè)設(shè)計、設(shè)計競賽等均可借助CPLD/ FPGA 器件, 使實(shí)驗(yàn)設(shè)備或設(shè)計出的電子系統(tǒng)具有高可靠性, 又經(jīng)濟(jì)、快速、容易實(shí)現(xiàn)、修改便利, 同時可大大提高學(xué)生的實(shí)踐動手能力、創(chuàng)新能力和計算機(jī)應(yīng)用能力。
在科研方面: 主要利用電路仿真工具進(jìn)行電路設(shè)計與仿真;利用虛擬儀器進(jìn)行產(chǎn)品調(diào)試;將CPLD/ FPGA 器件的開發(fā)應(yīng)用到儀器設(shè)備中, CPLD/ FPGA 可直接應(yīng)用于小批量產(chǎn)品的芯片或作為大批量產(chǎn)品的芯片前期開發(fā)。傳統(tǒng)機(jī)電產(chǎn)品的升級換代和技術(shù)改造, CPLD/ FPGA 的應(yīng)用可提高傳統(tǒng)產(chǎn)品的性能, 縮小體積, 提高技術(shù)含量和產(chǎn)品的附加值。作為高等院校有關(guān)專業(yè)的學(xué)生和廣大的電子工程師了解和掌握這一先進(jìn)技術(shù)是勢在必行, 這不僅是提高設(shè)計效率的需要, 更是時代發(fā)展的需求, 只有掌握了EDA 技術(shù)才有能力參與世界電子工業(yè)市場的競爭, 才能生存與發(fā)展。隨著科技的進(jìn)步, 電子產(chǎn)品的更新日新月異, EDA 技術(shù)作為電子產(chǎn)品開發(fā)研制的源動力, 已成為現(xiàn)代電子設(shè)計的核心。所以發(fā)展EDA 技術(shù)將是電子設(shè)計領(lǐng)域和電子產(chǎn)業(yè)界的一場重大的技術(shù)革命, 同時也對電類課程的教學(xué)和科研提出了更深更高的要求。
在產(chǎn)品設(shè)計與制造方面: 從高性能的微處理器、數(shù)字信號處理器一直到彩電、音響和電子玩具電路等, EDA 技術(shù)不單是應(yīng)用于前期的計算機(jī)模擬仿真、產(chǎn)品調(diào)試, 而且也在PCB 的制作、電子設(shè)備的研制與生產(chǎn)、電路板的焊接、制作過程等有重要作用。可以說EDA 技術(shù)已經(jīng)成為電子工業(yè)領(lǐng)域不可缺少的技術(shù)支持。
進(jìn)入21 世紀(jì)后,電子技術(shù)全方位納入EDA 領(lǐng)域,EDA使得電子領(lǐng)域各學(xué)科的界限更加模糊,更加互為包容,突出表現(xiàn)在以下幾個方面: 使電子設(shè)計成果以自主知識產(chǎn)權(quán)的方式得以明確表達(dá)和確認(rèn)成為可能;基于EDA 工具的ASIC 設(shè)計標(biāo)準(zhǔn)單元已涵蓋大規(guī)模電子系統(tǒng)及IP 核模塊;軟硬件IP 核在電子行業(yè)的產(chǎn)業(yè)領(lǐng)域、技術(shù)領(lǐng)域和設(shè)計應(yīng)用領(lǐng)域得到進(jìn)一步確認(rèn);SOC(System-on-Chip)高效低成本設(shè)計技術(shù)的成熟。隨著半導(dǎo)體技術(shù)、集成技術(shù)和計算機(jī)技術(shù)的迅猛發(fā)展, 電子系統(tǒng)的設(shè)計方法和設(shè)計手段都發(fā)生了很大的變化。
傳統(tǒng)的固定功能集成塊加連線的設(shè)計方法正逐步地退出歷史舞臺, 而基于芯片的設(shè)計方法正成為現(xiàn)代電子系統(tǒng)設(shè)計的主流。
三、器件的封裝
常用的各種電路元器件以及IC芯片采用的封裝形式:
元件名稱
元件符號
封裝屬性
電阻 RES1-RES4 AXIAL系列 從AXIAL-0.3到AXIAL-1.0,后綴數(shù)字代表兩焊盤的間距,單位為Kmil.瓷片電容 RAD0.1-RAD0.3。其中0.1-0.3指電容大小,一般用RAD0.1 電解電容: RB.1/.2-RB.4/.8 其中.1/.2-.4/.8指電容大小。一般<100uF 用RB.1/.2,100uF-470uF用RB.2/.4,>470uF用RB.3/.6 電位器 POT1和POT2 VR-1到VR-5.普通二極管 DIODE DIODE0.4和DIODE 0.7 肖特基二極管 DIODE SCHOTTKY DIODE0.4和DIODE 0.7 隧道二極管 DUIDE TUNNEL DIODE0.4和DIODE 0.7 變?nèi)荻O管 DIODE VARCTOR DIODE0.4和DIODE 0.7 穩(wěn)壓二極管 ZENER1~3 DIODE0.4和DIODE 0.7 發(fā)光二極管 RB.1/.2 三極管 NPN,NPN1,PNP,PNP1 TO18、TO-92A(普通三極管)TO-220(大功率三極管)TO3(大功率達(dá)林頓管)
N溝道結(jié)型場效應(yīng)管 JFET N TO18 P溝道結(jié)型場效應(yīng)管 JFET P TO18 N溝道增強(qiáng)型管 MOSFET N TO18 P溝道增強(qiáng)型管 MOSFET P TO18 整流橋 BRIDGE1和BRIDGE2 D系列,如D-44,D-37,D-46等。單排多針插座 CON CON系列,從CON1到CON60,引腳封裝形式為SIP系列,從SIP-2到SIP-20。
.雙列直插元件
根據(jù)功能的不同而不同
DIP系列。
串并口類原理圖 DB DB系列,引腳封裝形式為DB和MD系列 電源穩(wěn)壓塊78系列 7805,7812 TO-126和TO-126 電源穩(wěn)壓塊79系列 7905,7912 TO-126和TO-126
四、PCB板布線
PCB板布線對電路的影響:
1.我們要注意貼片器件(電阻電容)與芯片和其余器件的最小距離芯片:一般我們定義分立器件和IC芯片的距離0.5~0.7mm,特殊的地方可能因?yàn)閵A具配置的不同而改變
2.對于分立直插的器件
一般的電阻如果為分立直插的比貼片的距離略大一般在1~3mm之間。注意保持足夠的間距(因?yàn)榧庸さ穆闊灾辈宓幕静粫茫?/p>
3.對于IC的去耦電容的擺放
每個IC的電源端口附近都需要擺放去耦電容,且位置盡可能靠近IC的電源口,當(dāng)一個芯片有多個電源口的時候,每個口都要布置去耦電容。
4.在邊沿附近的分立器件
由于一般都是用拼板來做PCB,因此在邊沿附近的器件需要符合兩個條件,第一就是與切割方向平行(使器件的應(yīng)力均勻),第二就是在一定距離之內(nèi)不能布置器件(防止板子切割的時候損壞元器件)5.如果相鄰的焊盤需要相連,首先確認(rèn)在外面進(jìn)行連接,防止連成一團(tuán)造成橋接,同時注意此時的銅線的寬度。
6.焊盤如果在鋪通區(qū)域內(nèi)需要考慮熱焊盤(必須能夠承載足夠的電流),如果引線比直插器件的焊盤小的話需要加淚滴(角度小于45度),同樣適用于直插連接器的引腳。
7.元件焊盤兩邊的引線寬度要一致,如果時間焊盤和電極大小有差距,要注意是否會出現(xiàn)短路的現(xiàn)象,最后要注意保留未使用引腳的焊盤,并且正確接地或者接電源。
8.注意通孔最好不要打在焊盤上。
9.另外就是要注意的是引線不能和板邊過近,也不允許在板邊鋪銅(包括定位孔附近區(qū)域)
10.大電容:首先要考慮電容的環(huán)境溫度是否符合要求,其次要使電容盡可能的遠(yuǎn)離發(fā)熱區(qū)域
五、總結(jié)
心得感想:
在開始上這門課時,我對它有一點(diǎn)興趣,因?yàn)楫?dāng)我用自己所學(xué)的知識做出一些東西時我覺得特別開心。通過對這門課程相關(guān)理論的學(xué)習(xí),我掌握了EDA的一些基本的的知識,用自己學(xué)到的東西盡可能的去完成老師布置的實(shí)驗(yàn)。通過實(shí)驗(yàn)使我更加深刻的認(rèn)識和理解了EDA。不過在做實(shí)驗(yàn)的時候帶來的不僅僅只是收獲,也會有很多的困難。例如,當(dāng)在畫實(shí)驗(yàn)原理圖的時候需要一個元件,但是怎么找都找不到這個元件。做實(shí)驗(yàn)的時候我也深刻的感覺到團(tuán)結(jié)的力量以及在老師的重要性,有很多的時候出現(xiàn)問題了不要自己硬抗著,而是應(yīng)該多問問身邊的人,多問問老師,因?yàn)槔蠋煹闹笇?dǎo)會使你的問題馬上得以解決而且你也會理解,當(dāng)下次出現(xiàn)同樣的錯誤時,你會很快的解決。
對這門課程的最大收獲除了學(xué)習(xí)到了知識以外,更重要的是讓我明白了一個道理:只要全身心的投入到一件事中,并且要有持之以恒的決心,就一定會有收獲。有的人覺得自己做不出來,就網(wǎng)上搜一個了事,但是,放棄一次黑暗中摸索的經(jīng)歷,就放棄了一次成長的機(jī)會!如果你付出了,沒有收獲。那只能說,是付出的還不夠多。
在學(xué)習(xí)這門課的時候我覺得實(shí)驗(yàn)真的很重要,而且只有經(jīng)過實(shí)驗(yàn)我們才能更好的掌握所學(xué)的理論知識,才能更好的應(yīng)用它們。
第二篇:EDA實(shí)驗(yàn)總結(jié)報告
數(shù)字EDA實(shí)驗(yàn)報告--------------薛蕾0941903207
數(shù)字EDA實(shí)驗(yàn) 實(shí)驗(yàn)報告
學(xué)院: 計算機(jī)科學(xué)與工程學(xué)院 專業(yè): 通信工程 學(xué)號: 0941903207 姓名: 薛蕾 指導(dǎo)老師: 錢強(qiáng)
數(shù)字EDA實(shí)驗(yàn)報告--------------薛蕾0941903207 實(shí)驗(yàn)一 四選一數(shù)據(jù)選擇器的設(shè)計
一、實(shí)驗(yàn)?zāi)康?/p>
1、熟悉Quartus II軟件的使用。
2、了解數(shù)據(jù)選擇器的工作原理。
3、熟悉EDA開發(fā)的基本流程。
二、實(shí)驗(yàn)原理及內(nèi)容
實(shí)驗(yàn)原理
數(shù)據(jù)選擇器在實(shí)際中得到了廣泛的應(yīng)用,尤其是在通信中為了利用多路信號中的一路,可以采用數(shù)據(jù)選擇器進(jìn)行選擇再對該路信號加以利用。從多路輸入信號中選擇其中一路進(jìn)行輸出的電路稱為數(shù)據(jù)選擇器。或:在地址信號控制下,從多路輸入信息中選擇其中的某一路信息作為輸出的電路稱為數(shù)據(jù)選擇器。數(shù)據(jù)選擇器又叫多路選擇器,簡稱MUX。4選1數(shù)據(jù)選擇器:
(1)原理框圖:如右圖。
D0、D1、D2、D3
:輸入數(shù)據(jù) A1、A0
:地址變量
由地址碼決定從4路輸入中選擇哪1路輸出。
(2)真值表如下圖:(3)邏輯圖
數(shù)據(jù)選擇器的原理比較簡單,首先必須設(shè)置一個選擇標(biāo)志信號,目的就是為了從多路信號中選擇所需要的一路信號,選擇標(biāo)志信號的一種狀態(tài)對應(yīng)著一路信號。在應(yīng)用中,設(shè)置一定的選擇標(biāo)志信號狀態(tài)即可得到相應(yīng)的某一路信號。這就是數(shù)據(jù)選擇器的實(shí)現(xiàn)原理。
三.實(shí)驗(yàn)內(nèi)容
1、分別采用原理圖和VHDL語言的形式設(shè)計4選1數(shù)據(jù)選擇器
2、對所涉及的電路進(jìn)行編譯及正確的仿真。電路圖:
四、實(shí)驗(yàn)程序
library ieee;use ieee.std_Logic_1164.all;
ENTITY mux4 IS
PORT(a0, a1, a2, a3 :IN STD_LOGIC;
s :IN STD_LOGIC_VECTOR(1 DOWNTO 0);
y :OUT STD_LOGIC);END mux4;ARCHITECTURE archmux OF mux4 IS
BEGIN y <= a0 WHEN s = “00” else
--當(dāng)s=00時,y=a0 a1 WHEN s = “01” else
--當(dāng)s=01時,y=a1 a2 WHEN s = “10” else
--當(dāng)s=10時,y=a2 a3;
--當(dāng)s取其它值時,y=a2 END archmux;
五、運(yùn)行結(jié)果
六.實(shí)驗(yàn)總結(jié)
真值表分析:
當(dāng)js=0時,a1,a0取00,01,10,11時,分別可取d0,d1,d2,d3.實(shí)驗(yàn)二 血型配對器的設(shè)計
一、實(shí)驗(yàn)?zāi)康?/p>
1、進(jìn)一步熟悉Quartus II軟件的使用。
2、掌握簡單組合邏輯電路的設(shè)計方法與功能仿真技巧。
3、進(jìn)一步學(xué)習(xí)Quartus II中基于原理圖設(shè)計的流程。
二、實(shí)驗(yàn)原理及內(nèi)容
實(shí)驗(yàn)原理
人類有O、A、B、AB 4種基本血型,輸血者與受血者的血型必須符合圖示原則。設(shè)計一血型配對電路,用以檢測輸血者與受血者之間的血型關(guān)系是否符合,如果符合,輸出為1,否則為0。
已知: AB血型是萬能受血者,O血型是萬能獻(xiàn)血者!如果要輸血給O型血,那么可以的血型是O型!如果要輸血給A型血,那么可以的血型是A,O型!如果要輸血給B型血,那么可以的血型是B,O型!
如果要輸血給AB型血,那么可以的血型是A,B,AB,O型!
輸血者
受血者
O A
O A B AB
B AB
三.實(shí)驗(yàn)內(nèi)容
1、用VHDL語言編寫程序?qū)崿F(xiàn)血型配對器的功能 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Vxuexing IS PORT(P,Q,R,S:IN STD_LOGIC;F:OUT STD_LOGIC);END Vxuexing;ARCHITECTURE A OF Vxuexing IS BEGIN
F<=((NOT P)AND(NOT Q))OR(R AND S)OR((NOT P)AND S)OR((NOT Q)AND R);END A;
2、對所編寫的電路進(jìn)行編譯及正確的仿真。
實(shí)驗(yàn)分析 真值表
PQRSF***************11111
P,Q表示輸血者的血型;R,S,表示受血者的血型。當(dāng)兩者符合血型配合原則時,F(xiàn)=1,否則為0.四、運(yùn)行結(jié)果
五、實(shí)驗(yàn)總結(jié)
本實(shí)驗(yàn)給出了四種不同的血型編碼,PQ(1,1),RS(1,1)表示AB型血,P,Q(1,0),RS(1,0)表示B型血,PQ(0,1),RS(0,1)表示A型血,PQ(0,0),RS(0,0)表示O型血。根據(jù)真值表,并根據(jù)實(shí)驗(yàn)的原理圖,畫出電路圖并進(jìn)行連接。
實(shí)驗(yàn)三 簡單數(shù)字鐘的設(shè)計
一、實(shí)驗(yàn)?zāi)康?/p>
1、了解數(shù)字鐘的工作原理。
2、進(jìn)一步學(xué)習(xí)Quartus II中基于VHDL設(shè)計的流程。
3、掌握VHDL編寫中的一些小技巧。
4、掌握簡單時序邏輯電路的設(shè)計方法與功能仿真技巧。
二、實(shí)驗(yàn)原理及內(nèi)容
實(shí)驗(yàn)原理
簡單數(shù)字鐘應(yīng)該具有顯示時-分-秒的功能。首先要知道鐘表的工作機(jī)理,整個鐘表的工作應(yīng)該是在1Hz信號的作用下進(jìn)行,這樣每來一個時鐘信號,秒增加1秒,當(dāng)秒從59秒跳轉(zhuǎn)到00秒時,分鐘增加1分,同時當(dāng)分鐘從59分跳轉(zhuǎn)
三.實(shí)驗(yàn)內(nèi)容
1、用原理圖的方式編寫一個12/24進(jìn)制的計數(shù)器,并創(chuàng)建為SYMBOL文件。
2、用VHDL的方式編寫一個60進(jìn)制的計數(shù)器,并創(chuàng)建為SYMBOL文件。
3、創(chuàng)建頂層文件。調(diào)用已編寫的SYMBOL文件,設(shè)計簡單的數(shù)字鐘電路。
2、對所編寫的電路進(jìn)行編譯及正確的仿真。
二十四進(jìn)制VHDL LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT24 IS PORT(CP, EN, Rd, LD :IN STD_LOGIC;
D
:IN STD_LOGIC_VECTOR(5 DOWNTO 0);
Co
:OUT STD_LOGIC;Q
:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END CNT24;ARCHITECTURE STR OF CNT24 IS
SIGNAL QN : STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN Co<= '1'WHEN(QN = “010111”AND EN='1')
ELSE '0';PROCESS(CP, RD)
BEGIN IF(Rd ='0')THEN
QN<= “000000”;ELSIF(CP'EVENT AND CP='1')THEN IF(LD='0')THEN QN <= D;
ELSIF(EN='1')THEN QN <= QN+1;END IF;END IF;END PROCESS;Q <= QN;END STR;
六十進(jìn)制VHDL LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jsq60 IS PORT(en,rd,cp :IN STD_LOGIC;
qh:buffer STD_LOGIC_VECTOR(3 DOWNTO 0);
ql :buffer STD_LOGIC_VECTOR(3 DOWNTO 0);
Co :OUT STD_LOGIC);END jsq60;ARCHITECTURE b OF jsq60 IS BEGIN Co<='1'when(qh=“0101”and ql=“1001” and en='1')else'0';PROCESS(cp,rd)
BEGIN IF(rd='0')THEN qh<=“0000”;ql<=“0000”;ELSIF(cp'EVENT AND cp='1')THEN
IF(en='1')THEN
IF(ql=9)THEN
ql<=“0000”;
IF(qh=5)THEN
qh<=“0000”;
ELSE qh<=qh+1;
end if;
else
ql<=ql+1;
end if;
end if;
END IF;END PROCESS;END b;
原理圖
四、運(yùn)行結(jié)果
24進(jìn)制
60進(jìn)制
時鐘仿真結(jié)果
五、實(shí)驗(yàn)總結(jié)
此設(shè)計問題可分為主控電路,計數(shù)器模塊和掃描顯示三大部分,計數(shù)器在之前的學(xué)習(xí)中已經(jīng)非常熟悉,只要掌握60,12進(jìn)制的技術(shù)規(guī)律,用同步或異步計數(shù)器都可以實(shí)現(xiàn)。二掃描電路我們學(xué)過兩種驅(qū)動方式:BCD碼驅(qū)動方式和直接驅(qū)動方式。
實(shí)驗(yàn)四 簡單交通燈的設(shè)計
一、實(shí)驗(yàn)?zāi)康?/p>
1、了解交通燈的亮滅規(guī)律。
2、了解交通燈控制器的工作原理。
3、進(jìn)一步熟悉VHDL語言編程,了解實(shí)際設(shè)計中的優(yōu)化方案。
二、實(shí)驗(yàn)原理及內(nèi)容
實(shí)驗(yàn)原理
交通燈的顯示有很多方式,如十字路口、丁字路口等,而對于同一個路口又有很多不同的顯示要求,比如十字路口,車子如果只要東西和南北方向通行就很簡單,而如果車子可以左右轉(zhuǎn)彎的通行就比較復(fù)雜,本實(shí)驗(yàn)僅針對最簡單的南北和東西直行的情況。
要完成本實(shí)驗(yàn),首先必須了解交通路燈的亮滅規(guī)律。依人們的交通常規(guī),“紅燈停,綠燈行,黃燈提醒”。其交通燈的亮滅規(guī)律為:初始態(tài)是兩個路口的紅燈全亮,之后東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車,延時一段時間后,東西路口綠燈滅,黃燈開始閃爍。閃爍若干次后,東西路口紅燈亮,而同時南北路口的綠燈亮,南北方向開始通車,延時一段時間后,南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次后,再切換到東西路口方向,重復(fù)上述過程。
三.實(shí)驗(yàn)內(nèi)容
1、用VHDL的方式編寫一個簡單的交通控制燈電路
2、對所編寫的電路進(jìn)行編譯及正確的仿真。
程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity traffic is port(clk,enb : in std_logic;
ared,agreen,ayellow,bred,bgreen,byellow : buffer std_logic;
acounth,acountl,bcounth,bcountl : buffer std_logic_vector(3 downto 0));end traffic;
architecture one of traffic is begin process(clk,enb)variable lightstatus : std_logic_vector(5 downto 0);begin
if(clk'event and clk='1')then lightstatus := ared&agreen&ayellow&bred&bgreen&byellow;if((acounth=“0000” and acountl=“0000”)or(bcounth=“0000” and bcountl=“0000”))then Case lightstatus is When “010100”=> lightstatus:=“001100”;acountl<=“0101”;acounth<=“0000”;bcountl<=“0101”;bcounth<=“0000”;When “001100”=> if(enb='1')then lightstatus:=“100010”;acountl<=“0000”;acounth<=“0011”;bcountl<=“0101”;bcounth<=“0010”;
else lightstatus:=“010100”;acountl<=“0101”;acounth<=“0100”;bcountl<=“0000”;bcounth<=“0101”;end if;
when “100010”=>
lightstatus:=“100001”;acountl<=“0101”;acounth<=“0000”;bcountl<=“0101”;bcounth<=“0000”;
when “100001”=>
lightstatus:=“010100”;acountl<=“0101”;acounth<=“0100”;bcountl<=“0000”;bcounth<=“0101”;
when others=> lightstatus:=“010100”;acountl<=“0101”;acounth<=“0100”;bcountl<=“0000”;bcounth<=“0101”;
end case;else if(acountl=“0000”)then acounth<=acounth-1;acountl<=“1001”;
else acountl<=acountl-1;
end if;
if(bcountl=“0000”)then bcounth<=bcounth-1;bcountl<=“1001”;
else bcountl<=bcountl-1;end if;end if;end if;
ared<=lightstatus(5);agreen<=lightstatus(4);ayellow<=lightstatus(3);
bred<=lightstatus(2);bgreen<=lightstatus(1);byellow<=lightstatus(0);end process;end one;
四、運(yùn)行結(jié)果
分析:
這里a代表東西方向,b代表南北方向,acounth是表示東西方向五進(jìn)制計數(shù)acountl是東西方向六進(jìn)制計數(shù),bcounth則表示南北方向五進(jìn)制,bounthl則是南北方向六進(jìn)制計數(shù) 東西方向?yàn)?時,東西方向紅燈亮(ared=1)
東西方向在1~4之間,東西方向綠燈亮(即agreen=1)南北方向 的紅燈亮起(即bred=1)
五、實(shí)驗(yàn)總結(jié)
此設(shè)計問題可分為主控電路,譯碼驅(qū)動電路和掃描顯示部分。
但是,這遠(yuǎn)遠(yuǎn)不能滿足實(shí)際生活的需要,還應(yīng)設(shè)置倒計時秒數(shù),因此可在此電路基礎(chǔ)上外加一個定時模塊。
實(shí)驗(yàn)五 流水燈的設(shè)計
一、實(shí)驗(yàn)?zāi)康?/p>
1、了解流水燈的工作原理。
二、實(shí)驗(yàn)原理及內(nèi)容
實(shí)驗(yàn)原理
要完成本實(shí)驗(yàn),首先必須了解流水燈的原理。所謂的流水燈實(shí)際上就是由多個LED發(fā)光二極管構(gòu)成的電路,當(dāng)發(fā)光二極管可以依次點(diǎn)亮?xí)r,即能呈現(xiàn)流水的效果。實(shí)驗(yàn)內(nèi)容
1、設(shè)計能帶8個LED發(fā)光管發(fā)光,并按照要求輪流發(fā)光,產(chǎn)生流水燈的流動效果。
2、應(yīng)具有兩種以上不同風(fēng)格的流動閃亮效果。比如依次點(diǎn)亮或者依次熄滅。(選作)
3、有起動、停止控制鍵。(選作)
4、有流動閃亮效果選擇設(shè)置鍵。(選作)
5、對所編寫的電路進(jìn)行編譯及正確的仿真。
三、實(shí)驗(yàn)程序
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yiweijicun1 IS PORT(CP,R,DSR,DSL:IN STD_LOGIC;
S:STD_LOGIC_VECTOR(2 DOWNTO 0);
D:STD_LOGIC_VECTOR(7 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END yiweijicun1;ARCHITECTURE yiweijicun_arch OF yiweijicun1 IS
SIGNAL IQ: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(CP,R,IQ)BEGIN IF(R='1')THEN IQ <=(OTHERS =>'0');ELSIF(CP'EVENT AND CP ='1')THEN CASE CONV_INTEGER(S)IS WHEN 0=>NULL;WHEN 1=> IQ <= D;WHEN 2=> IQ <= DSR & IQ(7 DOWNTO 1);WHEN 3=> IQ <=IQ(6 DOWNTO 0)& DSL;WHEN 4=> IQ <= IQ(0)& IQ(7 DOWNTO 1);WHEN 5=> IQ <=IQ(6 DOWNTO 0)& IQ(7);WHEN 6=> IQ <= IQ(7)& IQ(7 DOWNTO 1);WHEN 7=> IQ <= IQ(6 DOWNTO 0)& IQ(0);WHEN OTHERS => NULL;END CASE;END IF;Q <= IQ;END PROCESS;END yiweijicun_arch;
四、運(yùn)行結(jié)果
結(jié)果分析:
d[0]~d[7]為八個輸入端,s[0]和s[1]控制流水燈得輸出,s=1保持,s=2實(shí)現(xiàn)左移功能,s=3實(shí)現(xiàn)右移功能,因?yàn)檠舆t的原因,在s=2時,需要經(jīng)過一段時間才能實(shí)現(xiàn)循環(huán)右移的功能,流水燈的實(shí)現(xiàn)其實(shí)是運(yùn)用了8位移位寄存器,它只是運(yùn)用了其中的保持左移與右移的功能,8LO位移位寄存器還有循環(huán)右移,循環(huán)左移,算數(shù)右移,算數(shù)左移等功能。
五、實(shí)驗(yàn)總結(jié)
了解了移位寄存器的功能和原理
通過這次實(shí)驗(yàn),加深了VHDL語言的運(yùn)用能力,更進(jìn)一步了解了8位移位寄存器的功能。
實(shí)驗(yàn)六 乘法器的設(shè)計
一、實(shí)驗(yàn)?zāi)康?/p>
1、了解乘法器的工作原理。
2、了解復(fù)雜時序電路的設(shè)計流程。
二、實(shí)驗(yàn)原理及內(nèi)容
實(shí)驗(yàn)原理
具體設(shè)計原理參見教材188頁。實(shí)驗(yàn)內(nèi)容
1、設(shè)計一個能進(jìn)行兩個十進(jìn)制數(shù)相乘的乘法器,乘數(shù)和被乘數(shù)均小于100。(可以參考教材231頁的VHDL代碼來設(shè)計)
2、對所編寫的電路進(jìn)行編譯及正確的仿真。
三、實(shí)驗(yàn)程序
library IEEE;use IEEE.std_logic_1164.all;
entity one_bit_adder is port(A: in STD_LOGIC;B: in STD_LOGIC;C_in: in STD_LOGIC;S: out STD_LOGIC;C_out: out STD_LOGIC);end one_bit_adder;
architecture one_bit_adder of one_bit_adder is begin
S <= A xor B xor C_in;C_out <=(A and B)or(C_in and(A xor B));
end one_bit_adder;library IEEE;use IEEE.std_logic_1164.all;
entity sichen is port(A: in STD_LOGIC_VECTOR(3 downto 0);B: in STD_LOGIC_VECTOR(3 downto 0);data_out: out STD_LOGIC_VECTOR(6 downto 0));end sichen;
architecture multi_arch of sichen is signal A_MULT_B0: STD_LOGIC_VECTOR(2 downto 0);signal A_MULT_B1: STD_LOGIC_VECTOR(2 downto 0);signal A_MULT_B2: STD_LOGIC_VECTOR(2 downto 0);
signal S_TEMP1: STD_LOGIC_VECTOR(1 downto 0);signal S_TEMP2: STD_LOGIC_VECTOR(1 downto 0);
signal C_TEMP : STD_LOGIC_VECTOR(6 downto 0);
signal C0_out_B0, C1_out_B0, C2_out_B0 : STD_LOGIC;signal C0_out_B1, C1_out_B1, C2_out_B1 : STD_LOGIC;
signal ZERO: STD_LOGIC;
component one_bit_adder port(A: in STD_LOGIC;B: in STD_LOGIC;C_in: in STD_LOGIC;S: out STD_LOGIC;C_out: out STD_LOGIC);end component;begin U_0_0 : one_bit_adder port map(A => A_MULT_B0(1), B => A_MULT_B1(0), C_in => ZERO, S => C_TEMP(1), C_out => C0_out_B0);U_0_1 : one_bit_adder port map(A => A_MULT_B0(2), B => A_MULT_B1(1), C_in => C0_out_B0, S => S_TEMP1(0), C_out => C1_out_B0);U_0_2 : one_bit_adder port map(A => ZERO, B => A_MULT_B1(2), C_in => C1_out_B0, S => S_TEMP1(1), C_out => C2_out_B0);
U_1_0 : one_bit_adder port map(A => A_MULT_B2(0), B => S_TEMP1(0), C_in => ZERO, S => C_TEMP(2), C_out => C0_out_B1);U_1_1 : one_bit_adder port map(A => A_MULT_B2(1), B => S_TEMP1(1), C_in => C0_out_B1, S => S_TEMP2(0), C_out => C1_out_B1);U_1_2 : one_bit_adder port map(A => A_MULT_B2(2), B => C2_out_B0, C_in => C1_out_B1, S => S_TEMP2(1), C_out => C2_out_B1);
A_MULT_B0(0)<= A(0)and B(0);A_MULT_B0(1)<= A(1)and B(0);A_MULT_B0(2)<= A(2)and B(0);
A_MULT_B1(0)<= A(0)and B(1);A_MULT_B1(1)<= A(1)and B(1);A_MULT_B1(2)<= A(2)and B(1);
A_MULT_B2(0)<= A(0)and B(2);A_MULT_B2(1)<= A(1)and B(2);A_MULT_B2(2)<= A(2)and B(2);
ZERO <= '0';C_TEMP(0)<= A_MULT_B0(0);C_TEMP(4 downto 3)<= S_TEMP2(1 downto 0);C_TEMP(5)<= C2_out_B1;
C_TEMP(6)<= A(3)xor B(3);
data_out <= C_TEMP;
end multi_arch;
四、運(yùn)行結(jié)果
乘法器實(shí)現(xiàn)A,B兩數(shù)的相乘。A[0]~A[3]以及B[0]~B[3]是實(shí)現(xiàn)輸入端的控制。由圖看出,輸出上產(chǎn)生了延遲是因?yàn)楫?dāng)A[3]輸入1,對應(yīng)了十進(jìn)制的8,B[0]輸入1,對應(yīng)了十進(jìn)制的1,兩者相乘得8,即在data_out端應(yīng)輸出8,此處因仍存在競爭冒險。
五、實(shí)驗(yàn)總結(jié)
乘法器的設(shè)計的問題可以分為乘數(shù)和被乘數(shù)控制模塊,寄存模塊,乘法模塊和掃描顯示模塊幾個部分。
兩數(shù)相乘的方法很多,可以用移位相加的方法,也可以將乘法器看成計數(shù)器,乘積的初始值為零,每一個時鐘周期將被乘數(shù)的值加到積上,同時乘數(shù)減一,這樣反復(fù)執(zhí)行,直到乘數(shù)為零。
第三篇:EDA課程心得
EDA課程學(xué)習(xí)心得
這學(xué)期的后半期,我們開了EDA技術(shù)這門課程。EDA的中文解釋是電子設(shè)計自動化,這門課程主要是用于對現(xiàn)代高新電子產(chǎn)品的設(shè)計,EDA在硬件方面融合了大規(guī)模集成電路技術(shù),是一款綜合性很強(qiáng)的工具。
這門課程的學(xué)習(xí)在教學(xué)中應(yīng)該以實(shí)踐為主,我們每周有兩節(jié)課,一節(jié)是理論課學(xué)習(xí),一節(jié)是實(shí)踐課。剛開始上理論課程的時候,主要是對該軟件的使用做介紹,而在實(shí)踐課程上,我們應(yīng)該對軟件進(jìn)行運(yùn)用,但是,有很多的同學(xué)卻沒有干與課程相關(guān)的事,只有一部分的同學(xué)在練習(xí)。開始的時候,對軟件很陌生,都是幾個同學(xué)在一起研究,并且詢問老師,才慢慢的掌握了使用方法。在后面的理論學(xué)習(xí)中,老師主要是講解編程的一些語法,并且只講了一些常用的,像信號量,變量,還有PROCESS語句等,這些是編程中常用的一些知識。在實(shí)踐課上,主要是以實(shí)驗(yàn)指導(dǎo)書為主,根據(jù)指導(dǎo)書上的內(nèi)容進(jìn)行編程,畫圖仿真來對EDA技術(shù)的運(yùn)用有更深入的理解。在每周一節(jié)理論課的學(xué)習(xí)情況下,很多的時間都是很珍貴的,學(xué)習(xí)理論的時間就那么一點(diǎn),那么,肯定就不可能學(xué)習(xí)的很全面,老師主要是講方法,更多的是要我們自己努力。這本教材還很不錯,講解的很詳細(xì),讓初學(xué)者也能理解。然后實(shí)踐課程是可以在課后也能練習(xí),課上發(fā)現(xiàn)問題就能及時的詢問老師,但是,課后就只能詢問同學(xué),或者是將問題留到課堂上再問老師。
這門課程學(xué)完最大的感觸就是學(xué)習(xí)的時間太短了,這門課程聽老師說對我們的以后工作是有很大的幫助的,但是我們卻只學(xué)習(xí)了半個學(xué)期,只用了32個課時就結(jié)束了,這肯定是不夠的。EDA技術(shù)可以完成各種自動設(shè)計過程,是目前最為矚目的一項技術(shù),它有強(qiáng)大的邏輯設(shè)計仿真測試技術(shù)。它的仿真測試技術(shù)只要通過計算機(jī),就能對所設(shè)計的電子系統(tǒng)從各種不同層次的系統(tǒng)性能特點(diǎn)完成一系列準(zhǔn)確的測試與仿真操作,在完成實(shí)際系統(tǒng)的安裝后,還能對系統(tǒng)上的目標(biāo)器件進(jìn)行所謂的邊界掃描測試。這一切都極大的提高了大規(guī)模的系統(tǒng)電子設(shè)計的自動化程度。現(xiàn)在的很多設(shè)計工作都需要先進(jìn)行計算機(jī)仿真,如果沒有錯誤,在運(yùn)用到實(shí)際的硬件中,這不僅能提高設(shè)計速度,還能減少因?yàn)樵O(shè)計失誤而造成的原料浪費(fèi)。學(xué)好一門仿真軟件對于我們本科學(xué)生是必不可少的,因?yàn)橐院螽厴I(yè)了如果從事設(shè)計方向的工作,那必然要求我們有這樣的一門技術(shù)。
以下是我在這門課程的學(xué)習(xí)過程中總結(jié)的幾點(diǎn)建議,希望老師能夠耐心的看完:
(1)、根據(jù)學(xué)生的層次,設(shè)計一種適合學(xué)生的教學(xué)方案。像我們班這樣的基礎(chǔ)不太好的班級,可能采用重實(shí)踐的方法更合適一些。上課講很多的理論知識,都不及在機(jī)房自己練習(xí)來的快。而且,老師有時候在課堂上也不知道該給我們講些什么我們才會更好的接收,這樣的話,在我們自己動手實(shí)踐的過程中我們發(fā)現(xiàn)了問題,經(jīng)過詢問老師和與同學(xué)一起研究,這樣,就可以克服難題,而且,經(jīng)過這樣的經(jīng)歷,我們對于該問題也會有很深的印象,在以后的應(yīng)用中出現(xiàn)類似的問題我們也會更快的找到方法解決。
(2)、在實(shí)踐課上要嚴(yán)抓課堂秩序。在實(shí)踐課的時候,很多同學(xué)都不做與課程相關(guān)的事,要么翻紙盤,要么幾個一起玩游戲,而真正在做實(shí)驗(yàn)的同學(xué)就只有那么少許的人。很多人都是在一開始就養(yǎng)成這樣的壞習(xí)慣的,如果在剛開始就嚴(yán)抓課堂秩序,那么,很多人可能就會按照要求循規(guī)蹈矩了。在實(shí)踐課上是很重要的學(xué)習(xí)機(jī)會,本來課程安排的時間就很少,不好好的利用,那么肯定是一項嚴(yán)重的損失。
(3)、上理論課的時候盡量的多的將一些知識點(diǎn)講詳細(xì)一些。我們學(xué)習(xí)的都是很基礎(chǔ)的知識,不要求深入,但是應(yīng)該盡量的將基礎(chǔ)的東西都掌握了。在這門課程中,我們只學(xué)習(xí)了幾章較為基礎(chǔ)和重要的內(nèi)容,只要掌握了這幾章也就能進(jìn)行簡單的編程,在這樣的情況下,我們就更是需要老師幫助我們,引導(dǎo)我們,理清這些知識點(diǎn),從而掌握它們。
以上是我在這門課程的學(xué)習(xí)中的一些感觸和心得,雖然這門課程的學(xué)習(xí)結(jié)束了,但是,有一些學(xué)習(xí)方法是同樣可以運(yùn)用到其他的課程學(xué)習(xí)中,在以后的學(xué)習(xí)中,我們還應(yīng)該堅持,努力,將學(xué)習(xí)進(jìn)行到底!
第四篇:EDA實(shí)驗(yàn)二總結(jié)報告
實(shí)驗(yàn)二
數(shù)字秒表設(shè)計
一、實(shí)驗(yàn)?zāi)康?/p>
1、理解計時器的原理與Verilog/VHDL 的編程方法;
2、掌握多模塊設(shè)計及層次設(shè)計的方法。
二、實(shí)驗(yàn)原理
秒計時器是由計數(shù)器和譯碼器、顯示器組成,其核心是計數(shù)器與譯碼器。60 秒計時器可由二個計數(shù)器分別完成:個位為十進(jìn)制計數(shù)器,十位為 6 進(jìn) 制計數(shù)。個位計數(shù)器的計數(shù)信號由實(shí)驗(yàn)開發(fā)板上主頻20MHZ分頻產(chǎn)生的1Hz 時鐘信號提供, 十位計數(shù)器的計數(shù)信號由個位的進(jìn)位信號提供。然后由譯碼器 對計數(shù)結(jié)果進(jìn)行譯碼,送LED 數(shù)碼管進(jìn)行顯示。Clr為清零,se t為開始。
三、實(shí)驗(yàn)框圖
四、實(shí)驗(yàn)任務(wù)
1、采用層次設(shè)計的方法,設(shè)計一個包括頂層及底層模塊的60 秒計時器,底 層模塊用Verilog/VHDL 設(shè)計,頂層用原理圖設(shè)計。
2、秒計時器應(yīng)當(dāng)具有系統(tǒng)復(fù)位功能;
3、每十秒發(fā)出提示信號及計滿60 秒時發(fā)出報警信號。(選做)
五、實(shí)驗(yàn)步驟與要求
1、分模塊設(shè)計:首先分別設(shè)計10 進(jìn)制、6 進(jìn)制計數(shù)器、譯碼器模塊;
2、頂層原理圖如圖7-1 所示;
3、編譯完成后進(jìn)行波形仿真;
4、進(jìn)行引腳鎖定,并下載至開發(fā)系統(tǒng)驗(yàn)證。
六、分模塊設(shè)計 1.十進(jìn)制計數(shù)器(1)程序代碼:
module CNT10(CLK,RST,EN,COUT,DOUT);
input CLK,EN,RST;
output [3:0]DOUT;
output COUT;
reg[3:0]Q1;
reg COUT;
assign DOUT=Q1;
always@(posedge CLK or negedge RST)
begin
if(!RST)Q1<=0;
else if(EN)begin
if(Q1<9)Q1<=Q1+1;
else Q1<=4'b0000;end
end
always@(Q1)
if(Q1==4'h9)COUT=1'b1;
else COUT=1'b0;endmodule
(2)仿真波形
(3)模塊符號
2.六進(jìn)制計數(shù)器(1)程序代碼:
module CNT6(CLK,RST,EN,COUT,DOUT);
input CLK,EN,RST;
output [3:0]DOUT;
output COUT;
reg[3:0]Q2;
reg COUT;
assign DOUT=Q2;
always@(posedge CLK or negedge RST)
begin
if(!RST)Q2<=0;
else if(EN)begin
if(Q2<5)Q2<=Q2+1;
else Q2<=3'b000;end
end
always@(Q2)
if(Q2==3'h5)COUT=1'b1;
else COUT=1'b0;endmodule
(2)仿真波形
(3)模塊符號
3.分頻器
(1)程序代碼:
module FPQ(clk0,clk1);
input clk0;
output clk1;
reg[26:0] Q1;
reg clk1;always@(posedge clk0)
if(Q1<10)Q1<=Q1+1;
else
begin Q1<=0;
clk1<=~clk1;
end endmodule(2)模塊符號
七.頂層原理圖:
八.仿真波形
九.結(jié)果分析
當(dāng)輸入端CLK,EN,RST都不為0時,首先是十進(jìn)制計數(shù)器開始進(jìn)行計時,直到DOUT1輸出端大于9時產(chǎn)生進(jìn)位,并且自身變?yōu)?,同時使六進(jìn)制計數(shù)器也開始計時,六進(jìn)制輸出端DOUT2大于5時產(chǎn)生進(jìn)位,使COUT輸出為1.
第五篇:EDA課程 跑馬燈設(shè)計
EDA目錄
第一章 設(shè)計思路.................................................................................................................................................1 第二章 子模塊......................................................................................................................................................2 2.1 分頻器....................................................................................................................................................2 2.2 顯示模式模塊.......................................................................................................................................3 2.3 顯示LED燈模塊..................................................................................................................................5 第三章 調(diào)試及結(jié)果............................................................................................................................................6 3.1頂層原理圖............................................................................................................................................6 第四章 體會..........................................................................................................................................................7
第一章 設(shè)計思路
在掌握常用數(shù)字電路功能和原理的基礎(chǔ)上,根據(jù)EDA技術(shù)課程所學(xué)知識,以及平時實(shí)驗(yàn)的具體操作內(nèi)容,利用硬件描述語言HDL,EDA軟件QuartusⅡ和硬件平臺cycloneⅡFPGAJ進(jìn)行一個簡單的電子系統(tǒng)設(shè)計,本次試驗(yàn)我所完成的內(nèi)容是跑馬燈的設(shè)計,下面我簡單的進(jìn)行一下原理的闡述。
跑馬燈課程設(shè)計的要求是控制8個LED進(jìn)行花樣顯示,設(shè)計四種顯示模塊:第一種顯示是從左向右逐個點(diǎn)亮LED。第二種顯示:從右向左逐個點(diǎn)亮LED。第三種顯示:從兩邊向中間逐個點(diǎn)亮LED。第四種顯示:從中間到兩邊逐個點(diǎn)亮LED。四種顯示模式循環(huán)切換,并帶有一位復(fù)位鍵控制系統(tǒng)的運(yùn)行停止。為了完成要求的效果顯示,由于要求比較簡單,所以不用分為很多模塊來具體控制,所以我先擇利用賦值語句來完成燈的點(diǎn)亮,根據(jù)了解我們實(shí)驗(yàn)箱上的LED燈屬于共陰極接法,當(dāng)給于高電平時點(diǎn)亮,那么當(dāng)我們需要點(diǎn)亮某位LED燈時,只需在該位上賦予高電平即可,比如:如果我們要實(shí)現(xiàn)8個數(shù)碼燈從左到右依次點(diǎn)亮,那么我們就可以給這8個數(shù)碼燈分別賦值10000000,經(jīng)過一段時間的延時后再給其賦值01000000,再經(jīng)過一段時間延時后再給其賦值00100000,依次類推,則最后一種賦值狀態(tài)為00000001,這樣就得到了相應(yīng)的現(xiàn)象。同理,要實(shí)現(xiàn)數(shù)碼燈從右向左依次點(diǎn)亮,從中間向兩端依次點(diǎn)亮,從兩端向中間依次點(diǎn)亮都可以采用這樣賦值的方法。在延時的程序編寫的過程中,我們采用計數(shù)時鐘脈沖個數(shù)的方式來實(shí)現(xiàn)。結(jié)合具體程序來說就是,在每個時鐘上升沿將clk_cnt變量加一,當(dāng)達(dá)到499999后,就進(jìn)入顯示進(jìn)程做下一步的賦值操作以顯示相應(yīng)接續(xù)的狀態(tài)。為了達(dá)到四種顯示模式循環(huán)切換的目的,可以將以上的所有賦值語句以順序語句的形式置于進(jìn)程中,這樣在完成了一種顯示方式后就會自動進(jìn)入下一種設(shè)定好的顯示模式,如此反復(fù)循環(huán)。當(dāng)需要程序復(fù)位時,只需按下rst鍵即可,程序不管走都那里,執(zhí)行那條語句,只要確定復(fù)位鍵按下時,程序立刻返回到程序執(zhí)行語句的第一步,程序接著進(jìn)行新的循環(huán)點(diǎn)亮。
第二章 子模塊
系統(tǒng)工作流程如下圖所示,在沒有外界輸入控制時,中央控制器將反復(fù)循環(huán)輸入預(yù)先設(shè)定的編碼,因此8個數(shù)碼燈將在四種顯示模式中循環(huán)顯示。若復(fù)位端被置0,則系統(tǒng)被重置,無論當(dāng)前處于什么狀態(tài),都重新從最開始的狀態(tài)開始重新執(zhí)行。
2.1 分頻器
輸入一個CLK信號,通過分頻器模塊分別輸送到顯示模式模塊和顯示LED模塊 生成分頻器程序:
module FPQ(rst,clk,sel,fp);input clk,rst;input [1:0]sel;output fp;reg[1:0]temp;reg fp;always@(posedge clk or negedge rst)if(!rst)begin temp<=0;fp<=0;圖1 分頻器模塊 end else case(sel)2'b00: if(temp==2)begin fp<=1;temp<=0;end Else begin temp<=temp+1;fp<=0;end 2'b01: if(temp==3)begin fp<=1;temp<=0;end Else begin temp<=temp+1;fp<=0;end 2'b10: if(temp==1)begin fp<=1;temp<=0;end Else begin temp<=temp+1;fp<=0;end 2'b11:fp<=clk;endcase endmodule 2.2 顯示模式模塊
在實(shí)驗(yàn)箱上顯示彩燈運(yùn)行的模式,分別有1-4種模式生成數(shù)碼管顯示程序:
module moshi(state,led,rst,clk,);input [1:0] state;input rst,clk;output[7:0] led;reg [7:0]led;reg [2:0]temp;always@(posedge clk or negedge rst)if(!rst)temp<=0;else if(temp==3'b111)temp<=3'b000;else temp<=temp+1;always@(posedge clk)case(state)2'b00: begin case(temp)3'b000:led<=8'b10000000;3'b001:led<=8'b01000000;3'b010:led<=8'b00100000;3'b011:led<=8'b00010000;3'b100:led<=8'b00001000;3'b101:led<=8'b00000100;3'b110:led<=8'b00000010;3'b111:led<=8'b00000001;
圖2 顯示模式模塊 endcase end 2'b01: begin case(temp)3'b000:led<=8'b00000001;3'b001:led<=8'b00000010;3'b010:led<=8'b00000100;3'b011:led<=8'b00001000;3'b100:led<=8'b00010000;3'b101:led<=8'b00100000;3'b110:led<=8'b01000000;3'b111:led<=8'b10000000;endcase end 2'b10: begin case(temp)3'b000:led<=8'b10000001;3'b001:led<=8'b01000010;3'b010:led<=8'b00100100;3'b011:led<=8'b00011000;3'b100:led<=8'b10000001;3'b101:led<=8'b01000010;3'b110:led<=8'b00100100;3'b111:led<=8'b00011000;endcase end 2'b11: begin case(temp)3'b000:led<=8'b00011000;3'b001:led<=8'b00100100;3'b010:led<=8'b01000010;3'b011:led<=8'b10000001;3'b100:led<=8'b00011000;3'b101:led<=8'b00100100;3'b110:led<=8'b01000010;3'b111:led<=8'b10000001;endcase end endcase endmodule 2.3 顯示LED燈模塊
通過8個LED燈顯示4種顯示模式:1模式,從左到右逐個點(diǎn)亮LED;2模式,從右到左逐個點(diǎn)亮LED;3模式,從兩邊到中間逐個點(diǎn)亮LED;4模式,從中見到兩邊逐個點(diǎn)亮LED。生成LED燈模塊程序:
module SEG7(ms,clk,rst,seg7);input clk,rst;input [1:0]ms;output [6:0]seg7;reg[6:0]seg7;always@(posedge clk or negedge rst)if(!rst)seg7<=7'b0111111;else case(ms)2'b00:seg7<=7'b0000110;2'b01:seg7<=7'b1011011;2'b10:seg7<=7'b1001111;2'b11:seg7<=7'b1100110;endcase endmodule
圖3 顯示LED燈模塊
第三章 調(diào)試及結(jié)果
3.1頂層原理圖
原理圖如下:
圖4原理圖
根據(jù)引腳鎖定,完成實(shí)驗(yàn)箱硬件電路部分的線路連接。
再次編譯,設(shè)定好編程下載方式后,將導(dǎo)線與相應(yīng)數(shù)碼管及開關(guān)諒解好就可以進(jìn)行硬件下載測試了。最后,將程序下載入芯片后,觀察硬件運(yùn)行結(jié)果,即數(shù)碼燈顯示情況。經(jīng)測試,所編寫的程序完全達(dá)到了課程設(shè)計的要求,并得要了相應(yīng)的結(jié)果。
第一種顯示是從左向右逐個點(diǎn)亮LED。第二種顯示:從右向左逐個點(diǎn)亮LED。第三種顯示:從兩邊向中間逐個點(diǎn)亮LED。第四種顯示:從中間到兩邊逐個點(diǎn)亮LED。在每個顯示模式之間都有一次8位led全亮,接著全滅的顯示過程,四種顯示模式通過手動切換,并帶有一位復(fù)位鍵控制系統(tǒng)的運(yùn)行停止。當(dāng)rst按鍵按下時,led停止顯示,保持按下前的狀態(tài),如過不按rst,八位led燈四種模式通過手動控制模式顯示。
第四章 心得體會
在這為期近一周的EDA課程設(shè)計過程中,自己受益匪淺,不僅對書本知識有了更全面更深刻的理解,還掌握了QuartusⅡ這款軟件。在以后的工作有增加了一門新技能。在整個課設(shè)過程中遇到了很多的困難,引腳的設(shè)定,頂層文件的建立,畫圖中連線的區(qū)分,都是小細(xì)節(jié),但都必須注意,否則就會影響整個設(shè)計的實(shí)驗(yàn)的過程使我明白了,要想避免實(shí)驗(yàn)中走彎路,首先程序要邏輯清晰,簡潔明了,避免不必要的嵌套與條用,其次要適當(dāng)?shù)亟o程序加上注解文字,提高可讀性,以方便之后的程序出錯時進(jìn)行查找,最后充分利用仿真軟件提供的各項編譯工具與報錯消息,按圖索驥,有方向的完成程序調(diào)試。網(wǎng)上搜集的一些資料也給予了我很大的幫助。
在這短短幾天的課設(shè)中,加深了我對EDA的理解,認(rèn)識。對QuartusⅡ軟件的使用更加得心應(yīng)手,在以后的學(xué)習(xí)和工作中又多了一門技能。
書本上的知識學(xué)會知識了解,必須在實(shí)踐中才能深入的掌握所學(xué)的知識,要不就是紙上談兵,不論說的多么華麗,只有在實(shí)踐中才能體現(xiàn)知識的價值,也才能考研一個人的真正能力。
這次EDA課設(shè)對我受益匪淺,謝謝在設(shè)計中幫助過我的老師和同學(xué),團(tuán)結(jié)就是力量。