EDA四位十進(jìn)制頻率計(jì)課程設(shè)計(jì)報(bào)告解析_第1頁(yè)
EDA四位十進(jìn)制頻率計(jì)課程設(shè)計(jì)報(bào)告解析_第2頁(yè)
EDA四位十進(jìn)制頻率計(jì)課程設(shè)計(jì)報(bào)告解析_第3頁(yè)
EDA四位十進(jìn)制頻率計(jì)課程設(shè)計(jì)報(bào)告解析_第4頁(yè)
EDA四位十進(jìn)制頻率計(jì)課程設(shè)計(jì)報(bào)告解析_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Hefei University在系統(tǒng)編程課程設(shè)計(jì)課題名稱(chēng)4位十進(jìn)制頻率計(jì)的設(shè)計(jì)姓 名 鐘文俊學(xué) 號(hào)院 系電子信息與電氣工程系專(zhuān) 業(yè)電子信息工程指導(dǎo)教師黃慧 2013年 12月28日4位十進(jìn)制頻率計(jì)的設(shè)計(jì)一 、設(shè)計(jì)目的 1、學(xué)習(xí)掌握頻率計(jì)的設(shè)計(jì)方法。2、掌握動(dòng)態(tài)掃描輸出電路的實(shí)現(xiàn)方法。3、學(xué)習(xí)較復(fù)雜的數(shù)字系統(tǒng)設(shè)計(jì)方法。二、設(shè)計(jì)的主要內(nèi)容和要求 4位十進(jìn)制頻率計(jì)外部接口設(shè)計(jì),頂層文件設(shè)計(jì),包含4個(gè)模塊,Tctl,Reg16,scan_led和一個(gè)x4cnt10(4個(gè)十進(jìn)制計(jì)數(shù)器)。三、整體設(shè)計(jì)方案1、設(shè)計(jì)方案根據(jù)頻率計(jì)的定義和頻率測(cè)量的基本原理:頻率計(jì)即是指單位時(shí)間1秒內(nèi)輸入脈沖個(gè)數(shù)并顯示出來(lái)的電路。因?yàn)橐@示被測(cè)信號(hào)的,只要限制計(jì)數(shù)器的計(jì)數(shù)過(guò)程為一秒則計(jì)數(shù)器的結(jié)果即為被測(cè)信號(hào)的頻率。頻率值為:Fx=N,N為一秒內(nèi)計(jì)數(shù)器所計(jì)脈沖個(gè)數(shù)。因?yàn)槭?位十進(jìn)制頻率計(jì)計(jì)數(shù)器是模為9999的十進(jìn)制加法計(jì)數(shù)器,可以由4個(gè)模為10的十進(jìn)制計(jì)數(shù)器級(jí)聯(lián)而成,所以可以顯示的頻率范圍是1-9999HZ。因此,頻率計(jì)的功能分割成四個(gè)模塊:計(jì)數(shù)器,測(cè)頻控制信號(hào)發(fā)生器和輸出鎖存器,。各個(gè)模塊均用VHDL語(yǔ)言描述。待測(cè)信號(hào)的轉(zhuǎn)速必須有一個(gè)脈寬為1秒的輸入信號(hào)脈沖計(jì)數(shù)允許的信號(hào);1秒計(jì)數(shù)結(jié)束后,計(jì)數(shù)值鎖入鎖存器的鎖存信號(hào),并有為下一測(cè)頻計(jì)數(shù)周期作準(zhǔn)備的計(jì)數(shù)器清零信號(hào)。這三個(gè)信號(hào)可以由一個(gè)測(cè)頻控制信號(hào)發(fā)生器產(chǎn)生。當(dāng)系統(tǒng)正常工作時(shí),標(biāo)準(zhǔn)信號(hào)提供頻率為1 Hz的輸入信號(hào),經(jīng)過(guò)測(cè)頻控制信號(hào)發(fā)生器進(jìn)行信號(hào)變換,產(chǎn)生計(jì)數(shù)信號(hào),將被測(cè)信號(hào)當(dāng)做脈沖信號(hào)送入計(jì)數(shù)器模塊,計(jì)數(shù)模塊對(duì)輸入的脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù)數(shù)結(jié)束后,將計(jì)數(shù)結(jié)果送入鎖存器中,保證系統(tǒng)可以穩(wěn)定顯示數(shù)據(jù),計(jì)數(shù)結(jié)果能夠顯示在七段數(shù)碼顯示管上。根據(jù)系統(tǒng)設(shè)計(jì)要求,要實(shí)現(xiàn)一個(gè)4位十進(jìn)制數(shù)字頻率計(jì),則要設(shè)計(jì)測(cè)頻控制信號(hào)發(fā)生器模塊tct1、四位十進(jìn)制加法計(jì)數(shù)器模塊x4cnt10、reg16鎖存器模塊, 七段譯碼顯示模塊scan_led其原理框圖如下圖所示。測(cè) 頻控制信號(hào)發(fā)生器鎖存器 七 段譯碼顯示器計(jì)數(shù)器 圖3.1 主控制流程圖2、四位十進(jìn)制頻率計(jì)頂層文件原理圖如下: 圖3.2 頂層文件生成4位十進(jìn)制頻率計(jì)外部接口圖3、本設(shè)計(jì)中重要端口說(shuō)明:Clk_1hz: 給Tctl模塊提供1hz的頻率輸入。Fin;被測(cè)頻率輸入。 scan_led:給scan_led模塊提供掃描輸入頻率輸入。bt1.0:片選信號(hào)輸出。Sg6.0:譯碼信號(hào)輸出。Cout:進(jìn)位輸出四、各個(gè)模塊的設(shè)計(jì)說(shuō)明及設(shè)計(jì)步驟1、頂層文件原理圖設(shè)計(jì): 圖 4.1 頂層文件原理圖2、x4Cnt10 模塊說(shuō)明x4Cnt10為含異步清零和同步時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器,采用級(jí)聯(lián)的方法進(jìn)行計(jì)數(shù),計(jì)數(shù)范圍與所用x4cnt10級(jí)聯(lián)個(gè)數(shù)有關(guān),本次設(shè)計(jì)采用的是4個(gè)cnt10的級(jí)聯(lián),所有測(cè)頻范圍是09999hz。仿真時(shí)序圖如下: 圖 4.2 x4Cnt10仿真波形圖3、 Tctl 模塊說(shuō)明根據(jù)頻率的定義和測(cè)量的基本原理,測(cè)定信號(hào)的頻率必須有一個(gè)脈寬為1秒的對(duì)輸入信號(hào)脈沖計(jì)數(shù)允許的信號(hào);1秒計(jì)數(shù)結(jié)束后,計(jì)數(shù)值鎖入鎖存器信號(hào)和為下一測(cè)頻計(jì)數(shù)周期做準(zhǔn)備的計(jì)數(shù)器清零信號(hào)。這三個(gè)信號(hào)可以由一個(gè)測(cè)頻控制信號(hào)發(fā)生器Tctl產(chǎn)生,其設(shè)計(jì)要求是Tctl的計(jì)數(shù)使能信號(hào)en能產(chǎn)生一個(gè)一秒脈寬的周期信號(hào),并且對(duì)頻率計(jì)的每一計(jì)數(shù)器cnt10的en使能進(jìn)行同步控制,當(dāng)en高定平時(shí),允許繼續(xù):低電平時(shí)停止計(jì)數(shù),并保持其所計(jì)數(shù)的脈沖數(shù),在停止計(jì)數(shù)期間,首先需要一個(gè)鎖存信號(hào)load的上升沿將計(jì)數(shù)器前一秒鐘的計(jì)數(shù)值鎖存進(jìn)各鎖存器reg16中,并由外部的譯碼器譯出并顯示計(jì)數(shù)值,鎖存信號(hào)之后,必須有一個(gè)清零信號(hào)rst對(duì)計(jì)數(shù)器進(jìn)行清零,為下一秒的計(jì)數(shù)操作做準(zhǔn)備??刂颇KTctl時(shí)序仿真: 圖4.3 頻率計(jì)測(cè)頻控制器Tctl側(cè)可控時(shí)序圖圖中clk的頻率為1hz,en的高電平程序時(shí)間為1秒,此時(shí)計(jì)數(shù)器開(kāi)始工作,當(dāng)en低電平時(shí)停止計(jì)數(shù),并將計(jì)數(shù)值經(jīng)過(guò)load鎖存的reg16中最后通過(guò)scan_led譯碼器顯示輸入,en的計(jì)時(shí)長(zhǎng)度為一秒,即en的周期為2秒,計(jì)數(shù)器在en高電平計(jì)數(shù)完成即en從高電平跳躍到低電平時(shí)將計(jì)數(shù)結(jié)果鎖存在reg16中,rst在滿(mǎn)足clk和en均為低電平的時(shí)候?qū)σ焰i存入鎖存器的計(jì)數(shù)信號(hào)進(jìn)行清零工作,為下一個(gè)計(jì)數(shù)周期作準(zhǔn)備。4、鎖存器reg16模塊的說(shuō)明設(shè)置鎖存器的目的是使顯示的數(shù)據(jù)穩(wěn)定,不會(huì)由于周期性的清零信號(hào)而不斷閃爍,每次顯示數(shù)據(jù)位上一計(jì)數(shù)周期鎖存的計(jì)數(shù)值。 Reg16鎖存器時(shí)序仿真圖: 圖4.4 reg16鎖存器仿真波形圖5、scan_led 模塊說(shuō)明動(dòng)態(tài)顯示是把所有的led管的輸入信號(hào)連在一起,每次向LED寫(xiě)數(shù)據(jù)時(shí),通過(guò)片選信號(hào)選通其中一個(gè)Led管并把數(shù)據(jù)寫(xiě)入,因此每一個(gè)時(shí)刻只有一個(gè)Led是亮的。為了能夠程序看到led上面的顯示內(nèi)容,必須對(duì)led管進(jìn)行掃描,即一次循環(huán)點(diǎn)亮各個(gè)led管,利用人眼的視覺(jué)暫留,加上發(fā)光器件的余暉效益,在一定的掃描頻率下,人眼就會(huì)看到多個(gè)led管一起點(diǎn)亮。掃描的大小必須合適才能達(dá)到很好的效果。如果掃描頻率太低,就會(huì)產(chǎn)生閃爍;而掃描頻率太高會(huì)造成Led的頻率開(kāi)啟和關(guān)斷,增加led的功耗。通常掃描頻率選擇50Hz比較合適。本次設(shè)計(jì)為4為led動(dòng)態(tài)掃描輸出,clkwie掃描時(shí)鐘,考慮到cnt8的分頻作用,此時(shí)設(shè)計(jì)采用的頻率為200hz:sg6.0為當(dāng)前正在顯示的led地址的已譯碼數(shù)據(jù);bt1.0為輸出的片選信號(hào),決定某led在某時(shí)某刻顯示數(shù)據(jù):din15.0為4為一組的bcd碼,共4位供顯示輸出的數(shù)據(jù)輸入,scan_led的內(nèi)部以下三個(gè)進(jìn)程:計(jì)數(shù)模塊掃描時(shí)鐘發(fā)生器,多路選通器模塊和譯碼模塊。led動(dòng)態(tài)掃描輸出scan_led時(shí)序仿真圖; 圖4.5 動(dòng)態(tài)掃描仿真波形圖Clk_1hz輸入周期為1hz;Fin為測(cè)量頻率,頻率范圍是100-9999hz,此次波形仿真設(shè)計(jì)時(shí)間為1khz;Clk為掃描時(shí)鐘,周期為200hz;Sg為輸出led七段顯示譯碼結(jié)果,bt為輸出片選信號(hào),由波形仿真圖可以看出片選0(00)時(shí)led顯示為0,片選1(01)時(shí)led顯示為0,片選2(10)時(shí)led顯示為0,片選3(11)時(shí)led顯示為1;即此時(shí)頻率計(jì)計(jì)數(shù)頻率為1000hz,與實(shí)際輸入頻率相同。Clk_1hz的1hz輸入頻率通過(guò)DE2內(nèi)部clock_50的50M晶振分頻來(lái)實(shí)現(xiàn)。輸入頻率信號(hào)和掃描頻率也由50M晶振分頻得到,又由于仿真設(shè)計(jì)中采用的是一個(gè)led現(xiàn)實(shí)動(dòng)態(tài)數(shù)據(jù),所以下載到DE2板上是還要進(jìn)行動(dòng)態(tài)顯示電路的設(shè)計(jì)。6、分頻器:(可以通過(guò)改變不同的cout值來(lái)進(jìn)行不同的分頻)分頻器時(shí)序仿真圖:圖4.6 分頻仿真波形圖7、動(dòng)態(tài)顯示時(shí)序仿真圖 圖4.7 動(dòng)態(tài)顯示仿真波形8、調(diào)用各子模塊編譯仿真,時(shí)序仿真圖如下 圖4.8 調(diào)用各子模塊時(shí)序仿真圖9、編譯仿真完成后,定義管腳,如下圖所示: 圖4.9 引腳定義10、定義完引腳后,開(kāi)始下載設(shè)計(jì)文件,在試驗(yàn)箱進(jìn)行硬件測(cè)試并完善設(shè)計(jì)。11、預(yù)測(cè)結(jié)果:試驗(yàn)箱選擇模式6,1HZ測(cè)頻控制信號(hào)由clock0輸入控制,待測(cè)信號(hào)由clock5輸入,可選擇相應(yīng)的頻率值,在數(shù)碼管顯示器上顯示相應(yīng)的頻率值。五、總結(jié)通過(guò)這次的eda設(shè)計(jì)使我更加的了解了vhdl語(yǔ)言的應(yīng)用,由于書(shū)上設(shè)計(jì)的是由數(shù)碼管進(jìn)行動(dòng)態(tài)顯示,但是這種情況下不利于讀取數(shù)據(jù),所以我們后來(lái)設(shè)計(jì)成由四個(gè)七段數(shù)碼管靜態(tài)輸出結(jié)果的方式,但書(shū)上沒(méi)有源程序可以參考,所以只能通過(guò)自己在網(wǎng)上查找資料并嘗試,在這其過(guò)程中出現(xiàn)了很多錯(cuò)誤,我們一步步更改,要求我們修改編寫(xiě)程序時(shí)要細(xì)心,謹(jǐn)防出現(xiàn)細(xì)小的錯(cuò)誤。尤其是實(shí)用語(yǔ)句的時(shí)候要考慮全面,不能前面寫(xiě)過(guò)忘記結(jié)尾,例如在使用if語(yǔ)句時(shí)要注意end if的個(gè)數(shù)與前相對(duì)應(yīng),不能少也不能多。在設(shè)計(jì)時(shí)還要考慮到設(shè)計(jì)引腳是否能夠在試驗(yàn)箱上找到。最后在老師的指導(dǎo)下我們總算是順利地完成了這次的課程設(shè)計(jì)。參考文獻(xiàn)1 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程(第二版).科學(xué)出版社,1998。2 宋萬(wàn)杰,羅豐,吳順軍.CPLD技術(shù)及其應(yīng)用.西安:西安電子科技大學(xué)出版社,1999。3 徐志軍 王金明.EDA技術(shù)與PLD設(shè)計(jì).人民郵電出版社。4 康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分).高等教育出版社。5百度文科4位十進(jìn)制頻率計(jì)設(shè)計(jì)。附錄:四位十進(jìn)制頻率計(jì)頂層文件源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dc isport(fin,clk_1hz:in std_logic;ledout:out std_logic_vector(27 downto 0);end dc;architecture one of dc iscomponent Tct1 -Tct1元件聲明 port( clk: in std_logic; en,rst,load :out std_logic);end component;component x4cnt10 -x4cnt10元件聲明port(clk,rst,en: in std_logic; q0,q1,q2,q3 :out std_logic_vector(3 downto 0); cout:out std_logic);end component;component reg16 -reg16元件聲明 port(load: in std_logic; di : in std_logic_vector(15 downto 0); dout : out std_logic_vector(15 downto 0) );end component;component scan_led -scan_led元件聲明port(din: in std_logic_vector(15 downto 0); sg :out std_logic_vector(6 downto 0); bt: out std_logic_vector(1 downto 0);end component;signal x,z,f:std_logic;signal h:std_logic_vector(3 downto 0);signal g0,g1,g2,g3:std_logic_vector(3 downto 0);signal h0,h1,h2,h3:std_logic_vector(3 downto 0);signal leds:std_logic_vector(27 downto 0);begin -元件例化產(chǎn)生電路,完成設(shè)計(jì)u1: Tct1 port map(clk=clk_1hz, en=x,rst=z,load=f);u2: x4cnt10 port map(clk=fin,rst=z,en=x,q0=g0,q1=g1,q2=g2,q3=g3);u3:reg16 port map(load=f,di(3 downto 0)=g0,di(7 downto 4)=g1,di(11 downto 8)=g2,di(15 downto 12)=g3,dout(3 downto 0)=h0,dout(7 downto 4)=h1,dout(11 downto 8)=h2,dout(15 downto 12)=h3);u4: scan_led port map(din(3 downto 0)=h0(3 downto 0),sg(6 downto 0)=leds(6 downto 0);u5: scan_led port map(din(7 downto 4)=h1(3 downto 0),sg(6 downto 0)=leds(13 downto 7);u6: scan_led port map(din(11 downto 8)=h2(3 downto 0),sg(6 downto 0)=leds(20 downto 14);u7: scan_led port map(din(15 downto 12)=h3(3 downto 0),sg(6 downto 0)=leds(27 downto 21);ledout=leds; end;計(jì)數(shù)模塊x4cnt10的源代碼程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity x4cnt10 isport(clk,rst,ena: in std_logic; -端口定義 q0,q1,q2,q3 : buffer std_logic_vector(3 downto 0); -分別定義四個(gè)計(jì) cout:out std_logic); 數(shù)端口,用于4 end x4cnt10; 個(gè)cnt10的設(shè)計(jì) architecture three of x4cnt10 issignal en1,en2,en3 : std_logic; -使能信號(hào)聲明beginprocess(clk,rst,ena,q0) -控制q0端的十進(jìn)制計(jì)數(shù)beginif rst=1 then q0 = 0000; elsif clkevent and clk=1 then if ena=1 then if q0=1001 then q0=0000;else q0=q0+1;end if; end if; end if; if q0=1001 then en1 =1; else en1 =0;end if; end process;process(clk,rst,en1,q1) -控制q1端的十進(jìn)制計(jì)數(shù) begin if rst=1 then q1 = 0000; elsif clkevent and clk=1 then if en1=1 then if q1=1001 then q1=0000;else q1=q1+1;end if; end if; end if; if q1=1001 then en2 =1; else en2 =0;end if; end process;process(clk,rst,en2,q2) -控制q2端的十進(jìn)制計(jì)數(shù) begin if rst=1 then q2 = 0000; elsif clkevent and clk=1 then if en2=1 and en1=1then if q2=1001 then q2=0000;else q2=q2+1;end if; end if; end if; if q2=1001 then en3 =1; else en3 =0;end if; end process;process(clk,rst,en3,q3) -控制q3端的十進(jìn)制計(jì)數(shù) begin if rst=1 then q3 = 0000; elsif clkevent and clk=1 then if en3=1 and en2=1 and en1=1then if q3=1001 then q3=0000;else q3=q3+1;end if; end if; end if; if q3=1001 then cout=1; else cout=0;end if; end process;end three;library ieee; -將設(shè)計(jì)元x4cnt10的聲明裝入my_pkg程序包中use ieee.std_logic_1164.all;package my_pkg1 iscomponent x4cnt10port(clk,rst,ena: in std_logic; q0,q1,q2,q3 : buffer std_logic_vector(3 downto 0); cout:out std_logic); end component; end;控制模塊Tctl源代碼程序;Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity Tct1 is Port(clk:in std_logic; -端口定義 ena,rst,load:out std_logic); End Tct1;Architecture one of Tct1 is Signal divclk :std_logic; -divclk信號(hào)聲明BeginProcess(clk)Beginif clkevent and clk=1 then divclk=not divclk; -clk上升沿時(shí),divclk取反end if ;End process;Process(clk,divclk)BeginIf clk=0 and divclk=0 then -clk和divclk同時(shí)為0時(shí),rst置1,否則rst清0rst=1;Else rst=0;End if;End process;Load=not divclk; -將divclk取反賦值到load端,將divclk的值賦給enaena=divclk;end one;Reg16鎖存器源代碼程序:Library ieee;Use ieee.std_logic_1164.all;Entity reg16 is Port(load:in std_logic; -端口定義 din:in std_logic_vector(15 downto 0); dout:out std_logic_vector(15 downto 0);End reg16;Architecture one of reg16 is BeginProcess(load,din)Beginif(loadevent and load=1) then -load為上升沿時(shí),把din值鎖存到dout中doutbt=00;qbt=01;qbt=10;qbt=11;qnull;end case;end process p1;p2: process(clk) -計(jì)數(shù)模塊掃描時(shí)鐘發(fā)生器begin -時(shí)鐘信號(hào)clk有效上升沿時(shí),cnt8開(kāi)始計(jì)數(shù)if clkevent and clk=1 then cnt8sgsgsgsgsgsgsgsgsgsgnull;end case;end process p3;end one; 分頻的主要源程序:Library ieee;Use ieee.std_logic_1164.all;Use iee

溫馨提示

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

評(píng)論

0/150

提交評(píng)論