




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、EDA綜合設(shè)計(jì)報(bào)告EDA綜合設(shè)計(jì)報(bào)告題目:信號(hào)發(fā)生器與數(shù)字鐘設(shè)計(jì)學(xué)院:電氣信息學(xué)院 專業(yè):通信工程 姓名: 學(xué)號(hào): 指導(dǎo)老師:汪敏 第一部分:信號(hào)發(fā)生器一、設(shè)計(jì)任務(wù)要求設(shè)計(jì)一個(gè)多功能信號(hào)發(fā)生器,根據(jù)輸入信號(hào)的選擇可以輸出遞增鋸齒波,遞減鋸齒波,三角波,階梯波,方波和正弦波六種信號(hào),并能實(shí)現(xiàn)頻率選擇和幅度調(diào)節(jié),信號(hào)發(fā)生器的控制模塊可以用數(shù)據(jù)選擇器實(shí)現(xiàn),六種信號(hào)的選擇可以用6選1數(shù)據(jù)選擇器實(shí)現(xiàn)。二、方案設(shè)計(jì)(一)設(shè)計(jì)思路1.利用VHDL語(yǔ)言,設(shè)計(jì)分頻器,實(shí)現(xiàn)2分頻,4分頻,8分頻及16分頻,實(shí)現(xiàn)頻率選擇功能,生成模塊。與利用數(shù)據(jù)選擇器原理設(shè)計(jì)的頻率選擇器模塊相連,實(shí)現(xiàn)頻率選擇輸出。2.利用VHDL
2、語(yǔ)言,分別實(shí)現(xiàn)六種信號(hào)(遞增/遞減鋸齒波,三角波,階梯波,方波和正弦波)的輸出,生成模塊。3.將設(shè)計(jì)的各功能模塊按要求連接,分配引腳接口,連接實(shí)驗(yàn)箱,進(jìn)行硬件測(cè)試,驗(yàn)證實(shí)現(xiàn)功能。(二)程序流程 Clk 輸入 六種 波形 輸出 時(shí)鐘 頻率 波形 波形 幅度 選擇輸入 選擇 模塊 選擇 調(diào)節(jié) 波形 (三)設(shè)計(jì)軟件Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫(kù),使用戶
3、可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三方EDA工具。此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)。Quartus II提供了完全集成且與電路結(jié)構(gòu)無(wú)關(guān)的開(kāi)發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性。三、硬件設(shè)計(jì)(一)分頻器 分頻器的功能是:利用對(duì)時(shí)鐘上升沿計(jì)數(shù),從而實(shí)現(xiàn)可以輸出二分頻,四分頻,八分
4、頻及十六分頻模塊,分頻器模塊是為了實(shí)現(xiàn)信號(hào)發(fā)生器的頻率選擇功能。在VHDL編程中,設(shè)置一個(gè)4位標(biāo)準(zhǔn)邏輯矢量,并循環(huán)計(jì)數(shù),分別輸出它的每一位,即實(shí)現(xiàn)了分頻功能。生成的模塊如圖3-1示。圖3-1 利用波形仿真工具,生成改分頻器的波形圖,如下圖3-2示,該編程實(shí)現(xiàn)了分頻功能。圖3-2(二)頻率選擇器 頻率選擇器利用四選一數(shù)據(jù)選擇器原理,與分頻器結(jié)合實(shí)現(xiàn)各種分頻的頻率選擇輸出,接入各個(gè)信號(hào)的CLK輸入接口。四選一數(shù)據(jù)選擇器有四種實(shí)現(xiàn)方式:if語(yǔ)句,case語(yǔ)句,條件信號(hào)賦值語(yǔ)句及選擇信號(hào)賦值語(yǔ)句。本次設(shè)計(jì)采用條件信號(hào)賦值語(yǔ)句。s1,s2為輸出選擇端,q輸出選擇的頻率,生成的模塊如圖3-3示。圖3-3利
5、用波形仿真工具,生成的頻率選擇器波形如圖3-4示。圖3-4(三)輸出選擇模塊輸出選擇模塊與頻率選擇模塊原理一樣,本次設(shè)計(jì)實(shí)現(xiàn)六選一波形發(fā)生器,故輸出選擇模塊為六選一數(shù)據(jù)選擇器,利用CASE語(yǔ)句實(shí)現(xiàn)波形選擇輸出,設(shè)置sel位三位標(biāo)準(zhǔn)邏輯矢量,超出范圍case選擇指向null。且case選擇語(yǔ)句必須有others。生成模塊如圖3-5示。圖3-5(四)調(diào)幅模塊MegaWizard Plug-In Manager工具提供了豐富的庫(kù)函數(shù),這些庫(kù)函數(shù)專門針對(duì)Altera公司的器件進(jìn)行優(yōu)化,電路結(jié)構(gòu)簡(jiǎn)單,并大大減少了設(shè)計(jì)者的工作量。通過(guò)MegaWizard Plug-In Manager工具的向?qū)?,設(shè)計(jì)者可
6、以利用Quartus II提供的庫(kù)函數(shù)自定義功能宏塊,并設(shè)置模塊參數(shù)和可選端口數(shù)值。調(diào)幅模塊利用該庫(kù)函數(shù)中的lpm_divide(除法器模塊),通過(guò)利用除法器模塊將輸出選擇模塊中的輸出值除以denom中設(shè)置的輸入值,從而實(shí)現(xiàn)調(diào)幅功能。生成模塊如圖3-6示。圖3-6(五)各信號(hào)模塊1.遞增鋸齒波設(shè)置clk及reset兩個(gè)標(biāo)準(zhǔn)邏輯位輸入端,一個(gè)8位標(biāo)準(zhǔn)邏輯矢量q輸出,具有異步復(fù)位功能,故進(jìn)程中敏感信號(hào)包括clk及reset,當(dāng)reset值為0時(shí),輸出清零復(fù)位。檢測(cè)是否達(dá)到最大值“11111111”,未到則加一,實(shí)現(xiàn)遞增鋸齒波,到后清零重復(fù)循環(huán)。生成模塊如下圖3-7示。圖3-72.遞減鋸齒波與遞增鋸
7、齒波類似,具有相同的輸入輸出端,及異步復(fù)位功能。區(qū)別在于檢測(cè)是否達(dá)到最小值“00000000”,未到則減一,實(shí)現(xiàn)遞減鋸齒波,到后重置為“11111111”,循環(huán)重復(fù)實(shí)現(xiàn)鋸齒波輸出。生成模塊如下圖3-8示。圖3-83.三角波設(shè)置clk,reset兩個(gè)標(biāo)準(zhǔn)邏輯位輸入、一個(gè)8位標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)輸出、異步復(fù)位。reset為0時(shí),輸出清零復(fù)位。設(shè)置局部變量a,當(dāng)a為0時(shí),temp執(zhí)行連加計(jì)算,當(dāng)temp加至“11111111”時(shí),a置為1;當(dāng)a為1時(shí),temp執(zhí)行連減計(jì)算,當(dāng)temp減至“00000000”后,a置為0。依次循環(huán),實(shí)現(xiàn)三角波信號(hào)輸出。生成模塊如下圖3-9示。圖3-94.階梯波設(shè)置clk,
8、reset兩個(gè)標(biāo)準(zhǔn)邏輯位輸入、一個(gè)8位標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)輸出、異步復(fù)位。同樣reset為0時(shí)有效,輸出清零復(fù)位。檢測(cè)變量temp為“11111111”后置0,否則按16為步長(zhǎng)增加temp的值,輸出階梯波信號(hào),生成模塊如下圖3-10示。圖3-105.方波設(shè)置clk,reset兩個(gè)標(biāo)準(zhǔn)邏輯位輸入、一個(gè)8位標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)輸出、異步復(fù)位。檢測(cè)clk上升沿執(zhí)行temp加1計(jì)算,當(dāng)temp小于“10000000”時(shí),a置1,否則a置0,當(dāng)a為1時(shí),輸出q為“11111111”,a為0時(shí),q為“00000000”。從而實(shí)現(xiàn)占空比為1:1的方波輸出。生成模塊如下圖3-11示。圖3-116.正弦波設(shè)置clk,r
9、eset兩個(gè)標(biāo)準(zhǔn)邏輯位輸入,一個(gè)0到255的整形實(shí)數(shù)輸出,異步復(fù)位。設(shè)置中間變量整形temp為0到63,檢測(cè)clk上升沿執(zhí)行temp加1計(jì)算,利用case語(yǔ)句,將temp對(duì)應(yīng)為正弦信號(hào)的x軸,分別將y軸的值賦給64個(gè)temp值相對(duì)應(yīng),從而輸出q,實(shí)現(xiàn)近似于正弦信號(hào)的輸出,生成模塊如圖3-12示。圖3-12四、波形仿真結(jié)果及分析(一)系統(tǒng)電路圖將上述模塊按功能邏輯連接,如下圖4-1示。具有一個(gè)clk時(shí)鐘輸入,一個(gè)reset復(fù)位信號(hào)輸入,一個(gè)(s1,s2)的頻率選擇端輸入,一個(gè)三位sel輸出信號(hào)選擇端輸入。一個(gè)8位的輸出信號(hào)輸出。圖4-1(二)管腳分配在前面選擇好一個(gè)合適的目標(biāo)器件(本次設(shè)計(jì)選擇為
10、EP2C35F672C8)完成設(shè)計(jì)的分析綜合過(guò)程,得到工程的數(shù)據(jù)文件以后,需要對(duì)設(shè)計(jì)中的輸入、輸出指定到具體的器件管腳號(hào)碼,指定管腳號(hào)碼稱為管腳分配或管腳鎖定。在菜單assignments中選擇pins項(xiàng),點(diǎn)擊在下圖4-2中下面的表格右側(cè)的filter的下箭頭,選擇pins:all,將顯示本工程中所有的輸入輸出端口。選擇要分配的端口,在location對(duì)應(yīng)的行中雙擊鼠標(biāo)左鍵,將顯示芯片所有的引腳,選擇要使用的引腳即可。引腳鎖定后,必須再進(jìn)行一次編譯,將引腳信息編譯進(jìn)下載文件中。圖4-2(三)仿真波形創(chuàng)建波形仿真文件,選擇QUARTUSII軟件File>New,進(jìn)行新建,選擇Vector
11、Waveform File,點(diǎn)擊OK,則打開(kāi)了一個(gè)空的波形編輯器。在波形編輯器窗口左邊的的端口名列表區(qū)點(diǎn)擊鼠標(biāo)右鍵,在彈出的對(duì)話框中選擇Insert Node or Bus命令,在彈出的對(duì)話框中,選擇需要的信號(hào)進(jìn)行仿真。這里,我們將分別對(duì)可選的6個(gè)信號(hào)波形進(jìn)行波形仿真。1.正弦波設(shè)置時(shí)鐘信號(hào)clk周期為10ns,reset為1。仿真波形如下圖4-3示。圖4-32.遞減鋸齒波設(shè)置同上,仿真波形如圖4-4示。圖4-53.遞增鋸齒波設(shè)置同上,仿真波形如圖4-6示。圖4-64.階梯波設(shè)置同上,仿真波形如圖4-7示。圖4-75.三角波設(shè)置同上,仿真波形如圖4-8示。圖4-86.方波設(shè)置同上,仿真波形如圖
12、4-9示。圖4-97.整體仿真1)頻率選擇為2分頻(s1,s2=0),調(diào)幅系數(shù)為1(denom=1),輸出選擇方波(sel=110),仿真波形如圖4-10示。圖4-102)頻率選擇為2分頻(s1,s2=0),調(diào)幅系數(shù)為2(denom=2,輸出幅值為原來(lái)二分之一),輸出選擇方波(sel=110),仿真波形如圖4-11示。圖4-113)頻率選擇為16分頻(s1,s2=1),調(diào)幅系數(shù)為2,輸出方波,仿真波形如圖4-12示。圖4-12五、硬件調(diào)試及結(jié)果(一)程序加載完成對(duì)期間的加載有兩種形式,一種是對(duì)目標(biāo)器件進(jìn)行加載文件,一種是對(duì)目標(biāo)器件的配置芯片進(jìn)行加載。1.使用下載電纜將PC機(jī)與實(shí)驗(yàn)系統(tǒng)連接起來(lái)2
13、.選擇QUARTUSII 軟件的Tool>Programmer命令,進(jìn)行編譯器窗口,如下圖5-1示,如果沒(méi)有設(shè)置編程硬件,則編程硬件類型為No Hardware,需要對(duì)編程硬件進(jìn)行設(shè)置。點(diǎn)擊Hardware Setup編程硬件設(shè)置按鈕,將currently selected hardware設(shè)置為:USB-BlasterUSB-0。3.點(diǎn)擊start進(jìn)行文件加載,直到加載進(jìn)度變?yōu)?00%,文件成功加載完成。圖5-1(二)signaltap2Signaltap II嵌入邏輯分析儀集成到Quartus II設(shè)計(jì)軟件中,能夠捕獲和顯示可編程芯片(sopc)設(shè)計(jì)中實(shí)時(shí)信號(hào)的狀態(tài),這樣開(kāi)發(fā)者就可以
14、在整個(gè)設(shè)計(jì)過(guò)程中以系統(tǒng)級(jí)的速度觀察硬件和軟件的交互作用。它支持多達(dá)1024個(gè)通道,采樣深度高達(dá)128Kb,每個(gè)分析儀均有10級(jí)觸發(fā)輸入/輸出,從而增加了采樣的精度。新建SignalTap II Logic Analyzer File文件,在instance中添加觀測(cè)節(jié)點(diǎn)(nodes),將要觀察的輸出信號(hào)q加入,設(shè)置clock為輸入的clk信號(hào),采樣深度設(shè)為1k,重新編譯添加了signal tap的工程文件,編譯完后,在stp中點(diǎn)擊右上角的SOF Manager后面的.,選擇好剛剛生成的SOF文件,然后點(diǎn)擊program device。再點(diǎn)擊run analyzer運(yùn)行該stp文件,觀察生成波形
15、。1.輸出正弦波設(shè)置sel=001,頻率(s1,s2)設(shè)為00,幅度調(diào)節(jié)(denom)設(shè)為001,波形如圖5-2示。圖5-22.輸出遞減鋸齒波設(shè)置sel=010,頻率(s1,s2)設(shè)為00,幅度調(diào)節(jié)(denom)設(shè)為001,波形如圖5-3示。圖5-33.輸出遞增鋸齒波設(shè)置sel=011,頻率(s1,s2)設(shè)為00,幅度調(diào)節(jié)(denom)設(shè)為001,波形如圖5-4示。 圖5-44.輸出階梯波設(shè)置sel=100,頻率(s1,s2)設(shè)為00,幅度調(diào)節(jié)(denom)設(shè)為001,波形如圖5-5示。圖5-55.輸出三角波設(shè)置sel=101,頻率(s1,s2)設(shè)為00,幅度調(diào)節(jié)(denom)設(shè)為001,波形
16、如圖5-6示。圖5-66.輸出方波 1)設(shè)置sel=110,頻率(s1,s2)設(shè)為00,幅度調(diào)節(jié)(denom)設(shè)為001,波形如圖5-7示。圖5-72)設(shè)置sel=110,頻率(s1,s2)設(shè)為11,幅度調(diào)節(jié)(denom)設(shè)為001,波形如圖5-8示。圖5-83)設(shè)置sel=110,頻率(s1,s2)設(shè)為00,幅度調(diào)節(jié)(denom)設(shè)為010,波形如圖5-9示。圖5-9第二部分:數(shù)字鐘設(shè)計(jì)一、設(shè)計(jì)任務(wù)設(shè)計(jì)一個(gè)多功能數(shù)字鐘,要求顯示格式為:小時(shí)-分鐘-秒鐘,整點(diǎn)報(bào)時(shí),報(bào)時(shí)時(shí)間為5秒,即從整點(diǎn)前5秒開(kāi)始進(jìn)行報(bào)時(shí)提示,LED開(kāi)始閃爍,過(guò)整點(diǎn)后,停止閃爍。系統(tǒng)時(shí)鐘選擇模塊的10Khz,要得到1Hz時(shí)鐘
17、信號(hào),必須對(duì)系統(tǒng)時(shí)鐘進(jìn)行10,000次分頻。調(diào)整時(shí)間的按鍵模塊S1和S2,S1調(diào)節(jié)小時(shí),每按下一次,小時(shí)增加一個(gè)小時(shí),S2調(diào)整分鐘,每按下一次,分鐘增加一分鐘。另外用S3鍵作為系統(tǒng)時(shí)鐘復(fù)位,復(fù)位后全部顯示00-00-00。二、方案設(shè)計(jì)(一)設(shè)計(jì)思路1.要實(shí)現(xiàn)顯示時(shí)-分-秒、整點(diǎn)報(bào)時(shí)、小時(shí)和分鐘可調(diào)等功能,首先整個(gè)時(shí)鐘的工作應(yīng)該是在1Hz的信號(hào)作用下進(jìn)行,這樣每來(lái)一個(gè)時(shí)鐘的上升沿,秒加一,當(dāng)秒達(dá)到59,跳轉(zhuǎn)00,分鐘加一,當(dāng)分鐘增加到59,跳轉(zhuǎn)00,小時(shí)加一,當(dāng)小時(shí)增加到23,跳轉(zhuǎn)00,以此循環(huán)。2.在設(shè)計(jì)中,為了顯示方便,由于分鐘和秒鐘顯示范圍都是059,所以可以用一個(gè)3位的二進(jìn)制碼顯示十位,
18、用一個(gè)四位的二進(jìn)制碼顯示個(gè)位,對(duì)于小時(shí)因?yàn)樗姆秶菑?23,所以可以用一個(gè)2位的二進(jìn)制碼顯示十位,用4位二進(jìn)制碼顯示個(gè)位。3.設(shè)計(jì)中由于七段碼管是掃描的方式顯示,所以雖然時(shí)鐘信號(hào)需要的是1Hz,但掃描需要一個(gè)高頻信號(hào),因此1Hz信號(hào)只能通過(guò)分頻的方式獲得。4.對(duì)于整點(diǎn)報(bào)時(shí)功能,主要是檢測(cè)分鐘與秒鐘是否達(dá)到59分55秒,到后LED燈開(kāi)始閃爍。(二)程序流程23后清零到59到59Clk時(shí)鐘輸入 分頻實(shí)現(xiàn)1Hz 秒鐘計(jì)數(shù)加一 分鐘計(jì)數(shù)加一 小時(shí)計(jì)數(shù)加一5秒倒計(jì)時(shí)報(bào)警模塊數(shù)碼管動(dòng)態(tài)掃描輸出三、軟件設(shè)計(jì)(一)分頻程序要實(shí)現(xiàn)1s的計(jì)時(shí),需要對(duì)10k的系統(tǒng)時(shí)鐘實(shí)現(xiàn)10,000分頻,2的13次方為8192,
19、接近10000,故令一14位的標(biāo)準(zhǔn)邏輯矢量,當(dāng)小于10000時(shí)自加1,到后重賦初值。輸出第13位值,此值就為約等于1hz的時(shí)鐘信號(hào)。(二)計(jì)數(shù)程序設(shè)置6個(gè)整形信號(hào),分別表示時(shí)分秒的個(gè)位與十位。Reset為異步復(fù)位信號(hào),當(dāng)rst為0時(shí),6個(gè)信號(hào)都清零復(fù)位。檢測(cè)1hz信號(hào)的上升沿,S1為調(diào)整小時(shí)按鈕,S2為調(diào)整分鐘按鈕,上升沿來(lái)后,若檢測(cè)到S1或S2按下(值為0),可以調(diào)整數(shù)字鐘起始值,又當(dāng)秒的個(gè)位自加到9后,十位加1,個(gè)位清零,當(dāng)秒十位到5,個(gè)位到9后,分的個(gè)位加1,秒的個(gè)位與十位同時(shí)清零,當(dāng)分的個(gè)位到9,后十位加一,個(gè)位清零,當(dāng)分十位到5,個(gè)位到9,小時(shí)的個(gè)位加一,當(dāng)小時(shí)的十位為2,個(gè)位為3,
20、同時(shí)分鐘為59,秒鐘為59后,小時(shí)清零。依次循環(huán),實(shí)現(xiàn)整個(gè)設(shè)置計(jì)數(shù)初值及計(jì)數(shù)的過(guò)程。通過(guò)多個(gè)if語(yǔ)句嵌套,來(lái)實(shí)現(xiàn)該計(jì)數(shù)功能。(三)報(bào)警程序判斷當(dāng)分鐘到59,秒鐘到54后,輸出四位標(biāo)準(zhǔn)邏輯矢量led_display, led_display外接四個(gè)LED,當(dāng)55秒時(shí)利用case語(yǔ)句依次輸出:1111,0111,0011,0001,1111 LED燈將出現(xiàn)相應(yīng)的閃爍效果,實(shí)現(xiàn)倒計(jì)時(shí)功能。四、波形仿真及分析新建波形文件,設(shè)置clk為10ns,rst為1,s1,s2部分為1,下圖4-1為輸出的波形圖,因display為循環(huán)掃描,輸出值不能明顯看出是數(shù)字鐘,此時(shí)我們需要進(jìn)行硬件測(cè)試,以便更好的觀察實(shí)驗(yàn)現(xiàn)
21、象。圖4-1五、硬件調(diào)試及結(jié)果首先將管腳分配,具體分配如圖5-1示。圖5-1完成管腳分配后再進(jìn)行全編譯后,打開(kāi)programmer如圖5-2示,將目標(biāo)文件加載到目標(biāo)板上,具體步驟如下:1.使用下載電纜將PC機(jī)與實(shí)驗(yàn)系統(tǒng)連接起來(lái)2.選擇QUARTUSII 軟件的Tool>Programmer命令,進(jìn)行編譯器窗口,如下圖5-1示,如果沒(méi)有設(shè)置編程硬件,則編程硬件類型為No Hardware,需要對(duì)編程硬件進(jìn)行設(shè)置。點(diǎn)擊Hardware Setup編程硬件設(shè)置按鈕,將currently selected hardware設(shè)置為:USB-BlasterUSB-0。3.點(diǎn)擊start進(jìn)行文件加載,
22、直到加載進(jìn)度變?yōu)?00%,文件成功加載完成。圖5-2將數(shù)字信號(hào)源模塊的時(shí)鐘選擇為10Khz,觀察實(shí)驗(yàn)箱如圖5-3示。圖5-3按下s2鍵,調(diào)節(jié)分鐘,如圖5-4示。圖5-4按下S1鍵,調(diào)節(jié)小時(shí),如圖5-5示。圖5-5按下s3鍵開(kāi)始,時(shí)分秒復(fù)位,如圖5-6示。圖5-6 當(dāng)59分55秒后LED開(kāi)始倒計(jì)時(shí),如圖5-7示。圖5-7示第三部分 總結(jié)一、結(jié)論本次課程設(shè)計(jì)完成了多波形信號(hào)發(fā)生器與數(shù)字鐘的設(shè)計(jì),在設(shè)計(jì)信號(hào)發(fā)生器中,利用分頻器實(shí)現(xiàn)了信號(hào)的頻率調(diào)節(jié),利用除法器實(shí)現(xiàn)了信號(hào)的幅度調(diào)節(jié),再利用了數(shù)據(jù)選擇起實(shí)現(xiàn)了信號(hào)波形的選擇輸出,最終通過(guò)quartus ii 軟件中的signaltap ii觀察到了輸出波形
23、,驗(yàn)證了實(shí)驗(yàn)結(jié)果。在數(shù)字鐘的設(shè)計(jì)中,同樣利用分頻原理獲得了近似1hz的時(shí)鐘信號(hào),設(shè)置S1,S2端進(jìn)行了時(shí)鐘的初值設(shè)定,設(shè)置了LED的整點(diǎn)報(bào)時(shí)功能,利用多層if嵌套實(shí)現(xiàn)時(shí)鐘的計(jì)時(shí),進(jìn)位功能,最終將程序?qū)肽繕?biāo)板,通過(guò)實(shí)驗(yàn)箱中的8位LED數(shù)碼管觀察到實(shí)驗(yàn)結(jié)果。二、心得體會(huì)通過(guò)前期的EDA理論課學(xué)習(xí),對(duì)VHDL語(yǔ)言、對(duì)quartus ii 軟件有了初步的認(rèn)識(shí)與基礎(chǔ),所以在本次的課程設(shè)計(jì)中,將前期的學(xué)習(xí)內(nèi)容進(jìn)行了綜合,學(xué)習(xí)了quartus ii軟件中的signaltap ii 的使用方法,成功實(shí)現(xiàn)了波形的輸出,對(duì)整個(gè)EDA程序的設(shè)計(jì)流程有了更深的認(rèn)識(shí),清楚了設(shè)計(jì)的總體步驟。參考文獻(xiàn)資料:1朱正偉等 E
24、DA技術(shù)及應(yīng)用 清華大學(xué)出版社 2014.72汪敏等, <EDA>課程實(shí)驗(yàn)及綜合設(shè)計(jì)指導(dǎo)書 西南石油大學(xué) ,2013.63潘松等 EDA技術(shù)實(shí)用教程M 科學(xué)出版社,2005年第2版1-254章彬宏 EDA應(yīng)用技術(shù) 北京理工大學(xué)出版社,2007.75陳拓 使用SignalTap II邏輯分析儀調(diào)試FPGA,2008.7附錄一:信號(hào)發(fā)生器程序1.分頻器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity frequencyd
25、ivider is port(clk:in std_logic; clk_div2,clk_div4,clk_div8,clk_div16:out std_logic);end frequencydivider; architecture behave of frequencydivider is signal count:std_logic_vector(3 downto 0); begin process(clk) begin if clk'event and clk='1' then if count="1111" then count<
26、="0000" else count<=count+1; end if; end if; end process; clk_div2<=count(0); clk_div4<=count(1); clk_div8<=count(2); clk_div16<=count(3);end behave;2.頻率選擇library ieee;use ieee.std_logic_1164.all;entity switchfrequency is port( s1,s2:in std_logic; clk_div2,clk_div4,clk_div8,
27、clk_div16:in std_logic; q:out std_logic );end switchfrequency;architecture behave of switchfrequency is signal sel:std_logic_vector(1 downto 0); begin sel<=s1&s2; q<=clk_div2 when sel="00" else clk_div4 when sel="01" else clk_div8 when sel="10" else clk_div16;
28、 end behave;3.正弦波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sine is port(clk,reset:in std_logic; q:out integer range 0 to 255);end sine;architecture behave of sine isbegin process(clk,reset) variable tmp:integer range 0 to 63; begin if reset='0'then q<
29、=0; elsif clk'event and clk='1'then if tmp=63 then tmp:=0; else tmp:=tmp+1; end if; case tmp is when 00=>q<=255;when 01=>q<=254;when 02=>q<=252; when 03=>q<=249;when 04=>q<=245;when 05=>q<=239; when 06=>q<=233;when 07=>q<=225;when 08=>q&
30、lt;=217; when 09=>q<=207;when 10=>q<=197;when 11=>q<=186; when 12=>q<=174;when 13=>q<=162;when 14=>q<=150; when 15=>q<=137;when 16=>q<=124;when 17=>q<=112; when 18=>q<=99;when 19=>q<=87;when 20=>q<=75; when 21=>q<=64;when
31、22=>q<=53;when 23=>q<=43; when 24=>q<=34;when 25=>q<=26;when 26=>q<=19; when 27=>q<=13;when 28=>q<=8;when 29=>q<=4; when 30=>q<=1;when 31=>q<=0;when 32=>q<=0; when 33=>q<=1;when 34=>q<=4;when 35=>q<=8; when 36=>q&
32、lt;=13;when 37=>q<=19;when 38=>q<=26; when 39=>q<=34;when 40=>q<=43;when 41=>q<=53; when 42=>q<=64;when 43=>q<=75;when 44=>q<=87; when 45=>q<=99;when 46=>q<=112;when 47=>q<=124; when 48=>q<=137;when 49=>q<=150;when 50=>
33、q<=162; when 51=>q<=174;when 52=>q<=186;when 53=>q<=197; when 54=>q<=207;when 55=>q<=217;when 56=>q<=225; when 57=>q<=233;when 58=>q<=239;when 59=>q<=245; when 60=>q<=249;when 61=>q<=252;when 62=>q<=254; when 63=>q<=255
34、;when others=>null; end case; end if; end process;end;4.遞減鋸齒波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decreasesawtooth isport( clk:in std_logic; reset:in std_logic; q:out std_logic_vector(7 downto 0) ); end decreasesawtooth;architecture behave of decreasesaw
35、tooth isbegin process(clk,reset) variable temp:std_logic_vector(7 downto 0); begin if reset='0' then temp:="00000000" elsif clk'event and clk='1' then if temp="00000000" then temp:="11111111" else temp:=temp-1; end if; end if; q<=temp; end process
36、; end behave;5.遞增鋸齒波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity increasesawtooth isport( clk:in std_logic; reset:in std_logic; q:out std_logic_vector(7 downto 0) ); end increasesawtooth;architecture behave of increasesawtooth isbegin process(clk,reset) variable te
37、mp:std_logic_vector(7 downto 0); begin if reset='0' then temp:="00000000" elsif clk'event and clk='1' then if temp="11111111" then temp:="00000000" else temp:=temp+1; end if; end if; q<=temp; end process; end behave; 6.階梯波library ieee;use ieee.std
38、_logic_1164.all;use ieee.std_logic_unsigned.all;entity ladder is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0); end ladder;architecture behave of ladder isbegin process(clk,reset) variable temp:std_logic_vector(7 downto 0); begin if reset='0' then temp:="00000000"
39、 elsif clk'event and clk='1' then if temp="11111111" then temp:="00000000" else temp:=temp+16; end if; end if; q<=temp; end process;end behave;7.三角波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity triangular is port(clk,reset:in std_l
40、ogic; q:out std_logic_vector(7 downto 0);end triangular;architecture behave of triangular isbegin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); variable a:std_logic; begin if reset='0' then tmp:="00000000" elsif rising_edge(clk)then if a='0' then if tmp=&quo
41、t;11111110" then tmp:="11111111" a:='1' else tmp:=tmp+1; end if; elseif tmp="00000001" then tmp:="00000000" a:='0' else tmp:=tmp-1; end if; end if; end if; q<=tmp; end process; end behave;8.方波library ieee;use ieee.std_logic_1164.all;use ieee.std_
42、logic_unsigned.all;entity square is port(clk,reset:in std_logic; q:out integer range 0 to 255); end square;architecture behave of square isbegin process(clk,reset) variable temp:integer range 0 to 63; begin if reset='0' then elsif clk'event and clk='1' then if temp=63 then temp:=
43、0; else temp:=temp+1; end if; if temp<32 then q<=255; else q<=0; end if; end if; end process;end behave;8.波形選擇模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity output is port(sel:in std_logic_vector(2 downto 0); d1,d2,d3,d4,d5,d6:in std_logic_vector(7 downto
44、0); q:out std_logic_vector(7 downto 0);end output;architecture behave of output isbegin process(sel) begin case sel is when "001"=>q<=d1; when "010"=>q<=d2; when "011"=>q<=d3; when "100"=>q<=d4; when "101"=>q<=d5; when &
45、quot;110"=>q<=d6; when others=>null; end case; end process; end behave;附錄二:數(shù)字鐘程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity timer isport(clk: in std_logic;rst:in std_logic;s1,s2:in std_logic;led: out std_logic_vector(3 do
46、wnto 0);display:out std_logic_vector(7 downto 0);seg_sel:buffer std_logic_vector(2 downto 0);end timer;architecture behave of timer issignal disp_temp:integer range 0 to 15;signal disp_decode:std_logic_vector(7 downto 0);signal sec1,sec10:integer range 0 to 9;signal min1,min10:integer range 0 to 9;s
47、ignal hour1,hour10:integer range 0 to 9;signal clk_count1:std_logic_vector(13 downto 0);signal clk1hz:std_logic;signal led_count:std_logic_vector(2 downto 0);signal led_display:std_logic_vector(3 downto 0);begin process(clk)beginif(clk'event and clk='1')thenif(clk_count1<10000)thenclk
48、_count1<=clk_count1+1;elseclk_count1<="00000000000001"end if;end if;end process;clk1hz<=clk_count1(13);process(clk1hz,rst)beginif(rst='0')thensec1<=0;sec10<=0;min1<=0;min10<=0;hour1<=0;hour10<=0;elsif(clk1hz'event and clk1hz='1')then if(s1=
49、9;0')thenif(hour1=9)then hour1<=0; hour10<=hour10+1;elsif(hour10=2 and hour1=3)then hour1<=0; hour10<=0;else hour1<=hour1+1;end if; elsif(s2='0')then if(min1=9)then min1<=0; if(min10=5)then min10<=0; else min10<=min10+1; end if; else min1<=min1+1; end if; elsif
50、(sec1=9)then sec1<=0; if(sec10=5)then sec10<=0; if(min1=9)then min1<=0; if(min10=5)then min10<=0; if(hour1=9)then hour1<=0; hour10<=hour10+1; elsif(hour10=2 and hour10=3)then hour1<=0; hour10<=0; else hour1<=hour1+1; end if; else min10<=min10+1; end if; else min1<=min1+1; end if; else sec10<=sec10+1; end if;else sec1<=sec1+1;end if;end if;end process;process(clk)beginif(clk1hz'event and clk1hz='1')thenif(min10=5 and min1=9 and sec10=5 and sec1>3)thenled_count<=led_count+1;elseled_cou
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)多功能汽車電噴嘴電腦檢測(cè)儀數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)五星水壺?cái)?shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 統(tǒng)編版三年級(jí)語(yǔ)文下冊(cè)期中達(dá)標(biāo)測(cè)試卷(含答案)
- 吉林省長(zhǎng)春市榆樹市2024-2025學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題(含答案)
- 園林施工員試題及答案
- 2025年消防設(shè)施操作員之消防設(shè)備中級(jí)技能每日一練試卷A卷含答案
- 2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)通關(guān)提分題庫(kù)(考點(diǎn)梳理)
- 2020年遼寧省沈陽(yáng)市中考地理試卷(含答案)
- 2025年天津市專業(yè)技術(shù)人員公需考試試題-全面推動(dòng)經(jīng)濟(jì)與民生領(lǐng)域改革推動(dòng)中國(guó)經(jīng)濟(jì)高質(zhì)量發(fā)展
- 高等教育自學(xué)考試《00074中央銀行概論》模擬試卷二
- 四川省南充市2025屆高三下學(xué)期高考適應(yīng)性考試(二診)語(yǔ)文試題(含答案)
- 湖北省2025屆高三下學(xué)期2月調(diào)考語(yǔ)文試題及參考答案
- 2025年《地陪導(dǎo)游服務(wù)程序》公開(kāi)課標(biāo)準(zhǔn)教案
- 愛(ài)耳日完整課件
- 云南省2025年中考化學(xué)第三次模擬考試試題含答案
- 系統(tǒng)集成項(xiàng)目售后服務(wù)方案
- 2024年南寧市良慶區(qū)招聘專職化城市社區(qū)工作者筆試真題
- 蘇科版(2025新版)八年級(jí)下冊(cè)物理第七章 力 單元測(cè)試卷(含答案)
- 游戲跨文化傳播-洞察分析
- 期貨基礎(chǔ)知識(shí)分享課件
- DB45T 2324-2021 公路橋梁有效預(yù)應(yīng)力檢測(cè)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論