版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、西安電子科技大學(xué)VHDL數(shù)字系統(tǒng)設(shè)計(jì)與測(cè)試作業(yè) 題 目 數(shù)字頻率計(jì) 學(xué) 院 電子工程學(xué)院 專(zhuān) 業(yè) 電子與通信工程 學(xué) 號(hào) 學(xué)生姓名 授課教師 鐘樺 撰寫(xiě)日期: 2015 年 6 月 9 日 數(shù)字頻率計(jì)題目要求:1.用VHDL完成12位十進(jìn)制數(shù)字頻率計(jì)的設(shè)計(jì)及仿真。2.頻率測(cè)量范圍:1Hz10KHz,分成兩個(gè)頻段,即1999Hz,1KHz10KHz,用三位數(shù)碼管顯示測(cè)量頻率,用LED顯示表示單位,如亮綠燈表示Hz,亮紅燈表示KHz。3.具有自動(dòng)校驗(yàn)和測(cè)量?jī)煞N功能,即能用標(biāo)準(zhǔn)時(shí)鐘校驗(yàn)、測(cè)量精度。4.具有超量程報(bào)警功能,在超出目前量程檔的測(cè)量范圍時(shí),發(fā)出燈光和音響信號(hào)。問(wèn)題分析:測(cè)量頻率的基本原理是
2、在單位時(shí)間內(nèi)檢測(cè)信號(hào)的脈沖個(gè)數(shù),計(jì)數(shù)器對(duì)CP1信號(hào)進(jìn)行計(jì)數(shù),在1秒定時(shí)結(jié)束后,將計(jì)數(shù)器結(jié)果送鎖存器鎖存,同時(shí)將計(jì)數(shù)器清零,為下一次采樣測(cè)量做好準(zhǔn)備。根據(jù)題目要求,將系統(tǒng)分為以下幾個(gè)模塊:1、測(cè)量/校驗(yàn)選擇模塊(selett)2、測(cè)頻控制信號(hào)發(fā)生器(二分頻)(fenpin)3、與電路模塊(andd)4、計(jì)數(shù)器模塊(counter)5、送存選擇、報(bào)警模塊(tostore)6、鎖存模塊(lockstore)7、掃描顯示模塊(scann)通過(guò)以上分析,給出各模塊程序代碼,并對(duì)各個(gè)模塊進(jìn)行分別敘述說(shuō)明。1、 測(cè)量/校驗(yàn)選擇模塊(selett)輸入信號(hào):選擇信號(hào)selet被測(cè)信號(hào)meas測(cè)試信號(hào)test輸
3、出信號(hào):cp1當(dāng)selet=0時(shí),為測(cè)量狀態(tài),cp1=meas;當(dāng)selet=1時(shí),為校驗(yàn)狀態(tài),cp1=test。校驗(yàn)與測(cè)量共用一個(gè)電路,只是被測(cè)信號(hào)cp1不同而已。-測(cè)量/校驗(yàn)選擇library ieee;use ieee.std_logic_1164.all;entity selett is port(selet,test,meas:in std_logic; cp1:out std_logic);end selett;architecture behv of selett is -type statetype is(meas,test); -signal present_state,ne
4、xt_state:statetype:=meas; begin process(selet) begin case selet is when '1'=>cp1<=test; when '0'=>cp1<=meas; when others=>cp1<=null; end case; end process;end behv;仿真驗(yàn)證其正確性從上圖可以看出,當(dāng)selet=0時(shí),cp1輸出信號(hào)為meas,當(dāng)selet=1時(shí),輸出信號(hào)為test,符合設(shè)計(jì)要求。2、測(cè)頻控制信號(hào)發(fā)生器(二分頻)(fenpin)輸入信號(hào):1HZ時(shí)鐘信號(hào)
5、(clk)輸出信號(hào):1秒定時(shí)信號(hào)(周期為2秒)(clk_out)此模塊實(shí)際上就是一個(gè)二分頻的計(jì)數(shù)器,代碼如下:-分頻library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(clk:in std_logic; clk1:out std_logic);end fenpin;architecture behav of fenpin isbegin process(clk) variable count:integer:=1; begin if(clk'even
6、t and clk='1') then if count=1 then count:=0; clk1<='1' else count:=count+1; clk1<='0' end if; end if; end process;end behav;仿真驗(yàn)證其正確性由仿真結(jié)果可以看出,二分頻電路正確,符合設(shè)計(jì)要求。3、與電路模塊(andd)輸入信號(hào):二分頻時(shí)鐘(clk2), 測(cè)量/校驗(yàn)選擇模塊輸出信號(hào)(cp2)輸出信號(hào):與信號(hào)(cp)代碼如下:-與電路library ieee;use ieee.std_logic_1164.all;e
7、ntity andd is port(clk2,cp2:in std_logic; cp:out std_logic);end andd;architecture behv of andd isbegin cp<=clk2 and cp2;end behv;仿真驗(yàn)證其正確性由仿真結(jié)果可以看出,與電路正確,符合設(shè)計(jì)要求。4、計(jì)數(shù)器模塊(counter)由題目要求,計(jì)數(shù)的范圍應(yīng)該是00009999,因此,計(jì)數(shù)器模塊的內(nèi)部應(yīng)由四個(gè)十進(jìn)制計(jì)數(shù)器q4,q3,q2,q1組成。另外,由于系統(tǒng)設(shè)置了溢出信號(hào)c。輸入信號(hào):計(jì)數(shù)時(shí)鐘(cp)。 片選信號(hào)(rd)輸出信號(hào):計(jì)數(shù)輸出信號(hào)千位:q4,百位:q3,十
8、位:q2,個(gè)位:q1溢出信號(hào):c代碼如下-計(jì)數(shù)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter is port(rd,cp:in std_logic; c:out std_logic; q4,q3,q2,q1:out std_logic_vector(3 downto 0);end counter;architecture behv of counter is signal c1,c2,c3,c4:std_logic; begin cnt1:process(rd,cp)
9、 variable cn1:std_logic_vector(3 downto 0); begin if rd='1' then if cp'event and cp='1' then if cn1="1001" then cn1:="0000" c1<='1' else cn1:=cn1+1; c1<='0' end if; end if; end if; q1<=cn1; end process cnt1;cnt2:process(c1,rd) variable
10、 cn2:std_logic_vector(3 downto 0);begin if rd='1' then if c1'event and c1='1' then if cn2="1001" then cn2:="0000" c2<='1' else cn2:=cn2+1; c2<='0' end if; end if; - else -cn2:="0000" -c2<='0' end if; q2<=cn2;end pr
11、ocess cnt2;cnt3:process(c2,rd) variable cn3:std_logic_vector(3 downto 0);begin if rd='1' then if c2'event and c2='1' then if cn3="1001" then cn3:="0000" c3<='1' else cn3:=cn3+1; c3<='0' end if; end if; end if; q3<=cn3;end process cnt3;
12、cnt4:process(c3,rd) variable cn4:std_logic_vector(3 downto 0);begin if rd='1' then if c3'event and c3='1' then if cn4="1001" then cn4:="0000" c<='1' else cn4:=cn4+1; c<='0' end if; end if; end if; q4<=cn4;end process cnt4;end behv;仿真驗(yàn)證
13、其正確性從仿真結(jié)果可以看出,rd=1時(shí)計(jì)數(shù),rd=0時(shí)不計(jì)數(shù)。設(shè)定rd的周期為1us,cp的周期為10ns,則在rd=1的時(shí)間內(nèi)應(yīng)該計(jì)數(shù)50次,從圖中可以看出仿真結(jié)果符合預(yù)期。5、送存選擇、報(bào)警模塊(tostore)輸入信號(hào):量程檔控制開(kāi)關(guān)(k)四位十進(jìn)制信號(hào)(qb4,qb3,qb2,qb1)溢出信號(hào)輸入(cc)輸出信號(hào):三位十進(jìn)制信號(hào)(dd3,dd2,dd1)報(bào)警信號(hào)(alert)當(dāng)k=0時(shí),選擇1999Hz量程,輸出信號(hào)為qb3,qb2,qb1,如果qb4>0,報(bào)警.當(dāng)k=1時(shí),選擇1K10KHz量程,輸出信號(hào)為qb4,qb3,qb2,如果c>0,報(bào)警。代碼如下:-存送選擇、報(bào)
14、警電路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tostore is port(qb4,qb3,qb2,qb1:in std_logic_vector(3 downto 0); cc,k:in std_logic; dd3,dd2,dd1:out std_logic_vector(3 downto 0); alert:out std_logic);end tostore;architecture behv of tostore is begin process(qb4,qb3,
15、qb2,qb1,cc,k) begin if k='0' then dd3<=qb3; dd2<=qb2; dd1<=qb1; if qb4>"0000" or cc>'0' then alert<='1' else alert<='0' end if; elsif k='1' then dd3<=qb4; dd2<=qb3; dd1<=qb2; if cc>'0' then alert<='1
16、9; else alert<='0' end if; else alert<='0' end if; end process;end behv; 仿真驗(yàn)證其正確性仿真中設(shè)定qb4=4,qb2=2,qb3=3,qb1=1,從仿真結(jié)果圖中可以看出,當(dāng)k=0時(shí), dd3=qb3, dd2=qb2, dd1=qb1,應(yīng)為qb4>0,所以報(bào)警信號(hào)alert=1;當(dāng)k=1時(shí),dd3=qb4,dd2=qb3,dd1=qb2,當(dāng)cc=0時(shí),報(bào)警信號(hào)alert=0,當(dāng)cc>0時(shí),報(bào)警,alert=1。因此,仿真結(jié)果符合要求。6、鎖存模塊(lockstore
17、)輸入端口:片選信號(hào)(ld)量程選擇開(kāi)關(guān)(k)輸入數(shù)據(jù)(d3,d2,d1)輸出端口:輸出數(shù)據(jù)(data3,data2,data1) 綠燈(led_green)-表示單位hz 紅燈(led_red)-表示單位Khz代碼如下-鎖存電路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lockstore is port(ld,k:in std_logic; d3,d2,d1:in std_logic_vector(3 downto 0); data3,data2,data1:out std_
18、logic_vector(3 downto 0); led_green,led_red:out std_logic);end lockstore;architecture behv of lockstore is begin process(d3,d2,d1,ld,k) begin if(ld='1') then data3<=d3; data2<=d2; data1<=d1; if k='0' then led_green<='1' -led_green->hz led_red<='0' -l
19、ed_red-Khz else led_green<='0' -led_green->hz led_red<='1' -led_red-Khz end if; end if; end process;end behv;仿真驗(yàn)證其正確性片選信號(hào)ld=1時(shí),data3=d3,data2=d2,data1=d1,當(dāng)k=0時(shí)綠燈亮,選擇的單位為hz;當(dāng)k=1時(shí),紅燈亮,選擇的單位為Khz。所以,由上圖可以,仿真結(jié)果符合要求。7、掃描顯示模塊(scann)此模塊要完成三件事情:(1) 通過(guò)掃描時(shí)鐘產(chǎn)生數(shù)碼管掃描信號(hào)。(2) 顯示小數(shù)點(diǎn)(3) 七段譯碼由于
20、顯示的數(shù)碼管要加上小數(shù)點(diǎn),因此,要在譯碼產(chǎn)生的7位數(shù)之后加上一位point,point的值由k和掃描信號(hào)有關(guān),當(dāng)k=1,掃描信號(hào)=110時(shí),point=1,其他情況都為0。輸入端口:掃描時(shí)鐘(clkk) 單位選擇開(kāi)關(guān)(k) 輸入數(shù)據(jù)(d_3,d_2,d_1)輸出端口:掃描信號(hào)(selout) 數(shù)碼管(led) 小數(shù)點(diǎn)(point)代碼如下:-掃描顯示電路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scann is port(clkk,k:in std_logic; d_3,d_2
21、,d_1:in std_logic_vector(3 downto 0); -qq:out std_logic_vector(3 downto 0); selout:out std_logic_vector(2 downto 0); led:out std_logic_vector(6 downto 0); point:out std_logic); end scann;architecture behv of scann is signal qq:std_logic_vector(3 downto 0); signal sel:std_logic_vector(1 downto 0); si
22、gnal selout2:std_logic_vector(2 downto 0); -signal point1:std_logic;begin p1:process(clkk,d_3,d_2,d_1) variable scannum:std_logic_vector(1 downto 0); variable qq1:std_logic_vector(3 downto 0); begin if clkk'event and clkk='1' then if scannum="10" then scannum:="00" el
23、se scannum:=scannum+1; end if; end if; case scannum is when "00"=>qq1:=d_1; when "01"=>qq1:=d_2; when "10"=>qq1:=d_3; when others=>qq1:=null; end case; sel<=scannum; qq<=qq1; end process p1; p2:process(sel) variable selout1:std_logic_vector(2 downto 0)
24、; -variable scannum:std_logic_vector(1 downto 0); begin -if clkk'event and clkk='1' then -if scannum="10" then - scannum:="00" - else - scannum:=scannum+1; - end if; - end if; case sel is when "00"=>selout1:="001" when "01"=>selout1
25、:="010" when "10"=>selout1:="100" when others=>selout1:=null; end case; selout2<=selout1; end process p2; selout<=selout2; p3:process(selout2,k) begin if(k='1' and selout2="100") then point<='1' else point<='0' end if;
26、 end process p3; p4:process(qq) begin case qq is when "0000"=>led<="0111111"&point; when "0001"=>led<="0000110"&point; when "0010"=>led<="1011011"&point; when "0011"=>led<="1001111"&am
27、p;point; when "0100"=>led<="1100110"&point; when "0101"=>led<="1101101"&point; when "0110"=>led<="1111101"&point; when "0111"=>led<="0000111"&point; when "1000"=>led&l
28、t;="1111111"&point; when "1001"=>led<="1101111"&point; when others=>led<="0000000"&point; end case; end process p4;end behv;仿真驗(yàn)證其正確性仿真設(shè)定輸入d_1=4,d_2=5,d_3=6,從仿真結(jié)果可以看出掃描和譯碼正確;從圖中可以看出只有當(dāng)selout=100,k=1同時(shí)成立時(shí),小數(shù)點(diǎn)才顯示。因此,仿真結(jié)果符合要求。8、頂層模塊頂層模塊代碼-t
29、op circuit descriptionlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freqcounter is port(clk,clkk,meas,test,selet,k:in std_logic; led:out std_logic_vector(7 downto 0); selout:out std_logic_vector(2 downto 0); alert,led_green,led_red,point:out std_logic); -clk1,cp1:ou
30、t std_logic; -dd3,dd2,dd1:out std_logic_vector(3 downto 0); -data3,data2,data1:out std_logic_vector(3 downto 0); -q4,q3,q2,q1:out std_logic_vector(3 downto 0); end freqcounter;architecture behv of freqcounter is signal s1,s2,s3,s4:std_logic; signal sq1,sq2,sq3,sq4:std_logic_vector(3 downto 0); signa
31、l sd1,sd2,sd3:std_logic_vector(3 downto 0); signal sdd1,sdd2,sdd3:std_logic_vector(3 downto 0); signal sled:std_logic_vector(3 downto 0);component fenpin is port(clk:in std_logic; clk1:out std_logic);end component fenpin;component selett is port(selet,test,meas:in std_logic; cp1:out std_logic); end
32、component selett; component andd is port(clk2,cp2:in std_logic; cp:out std_logic); end component andd; component counter is port(rd,cp:in std_logic; c:out std_logic; q4,q3,q2,q1:out std_logic_vector(3 downto 0); end component counter; component tostore is port(qb4,qb3,qb2,qb1:in std_logic_vector(3 d
33、ownto 0); cc,k:in std_logic; dd3,dd2,dd1:out std_logic_vector(3 downto 0); alert:out std_logic); end component tostore; component lockstore is port(ld,k:in std_logic; d3,d2,d1:in std_logic_vector(3 downto 0); data3,data2,data1:out std_logic_vector(3 downto 0); led_green,led_red:out std_logic); end c
34、omponent lockstore; component scann is port(clkk,k:in std_logic; d_3,d_2,d_1:in std_logic_vector(3 downto 0); selout: out std_logic_vector(2 downto 0); led:out std_logic_vector(7 downto 0); end component scann; begin u1:fenpin port map(clk=>clk,clk1=>s1); u2:selett port map(selet=>selet,test=>test,meas=>meas,cp1=>s2); u3:andd port map(clk2=>s1,cp2=>s2,cp=>s3); u4:counter port map(rd=>s1,cp=>s3,c=>s4,q4=>sq4,q3=>sq3,q2=>sq2,q1=>sq1); u5:tostore port map(qb4=>sq4,qb3=>sq3,qb2=>sq2,qb1=>sq1,cc=>s4,k=>k,dd3=>sd3,dd2=&g
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度三方勞務(wù)派遣與派遣人員培訓(xùn)合同3篇
- 2024年度供應(yīng)鏈金融質(zhì)押擔(dān)保貸款合同3篇
- 2024年標(biāo)準(zhǔn)設(shè)備維護(hù)保養(yǎng)服務(wù)協(xié)議模板一
- 2024年版特許經(jīng)營(yíng)合同服務(wù)內(nèi)容詳解與標(biāo)的約定
- 2024年嬰幼兒奶粉OEM貼牌生產(chǎn)合作協(xié)議3篇
- 洛陽(yáng)科技職業(yè)學(xué)院《現(xiàn)代生活化學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度版權(quán)質(zhì)押合同標(biāo)的及質(zhì)押條件和質(zhì)押期限
- 2025鄉(xiāng)鎮(zhèn)醫(yī)療機(jī)構(gòu)聘用合同
- 汽車(chē)用品貨車(chē)司機(jī)勞動(dòng)合同
- 咨詢行業(yè)客服聘用合同
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期期末生物試題【含答案解析】
- 經(jīng)方論治冠心病九法
- 《體育校本課程的建設(shè)與開(kāi)發(fā)》課題研究實(shí)施方案
- 抵制不健康讀物“讀書(shū)與人生”
- (醫(yī)學(xué)課件)帶狀皰疹PPT演示課件
- 特種設(shè)備使用單位落實(shí)使用安全主體責(zé)任監(jiān)督管理規(guī)定(第74號(hào))宣貫
- 人工智能與生命科學(xué)融合
- 小學(xué)生憤怒情緒管理策略
- 醫(yī)務(wù)科管理制度培訓(xùn)的效果評(píng)估與持續(xù)改進(jìn)
- 手術(shù)器械采購(gòu)?fù)稑?biāo)方案(技術(shù)標(biāo))
- MSOP(測(cè)量標(biāo)準(zhǔn)作業(yè)規(guī)范)測(cè)量SOP
評(píng)論
0/150
提交評(píng)論