EDA課程設(shè)計(jì) 簡易數(shù)字頻率計(jì)設(shè)計(jì) 09通信本2班_第1頁
EDA課程設(shè)計(jì) 簡易數(shù)字頻率計(jì)設(shè)計(jì) 09通信本2班_第2頁
EDA課程設(shè)計(jì) 簡易數(shù)字頻率計(jì)設(shè)計(jì) 09通信本2班_第3頁
EDA課程設(shè)計(jì) 簡易數(shù)字頻率計(jì)設(shè)計(jì) 09通信本2班_第4頁
EDA課程設(shè)計(jì) 簡易數(shù)字頻率計(jì)設(shè)計(jì) 09通信本2班_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄1 引言 . . 1 2 簡易數(shù)字頻率計(jì)設(shè)計(jì)原理 . . 22.1基本原理 . . 2 2.2原理框圖 . . 2 3 各模塊程序及仿真 . . 43.1測頻控制發(fā)生器ctr 模塊的設(shè)計(jì) . 4 3.2待測信號計(jì)數(shù)器counter 模塊的設(shè)計(jì) . . 5 3.3鎖存器regist 模塊的設(shè)計(jì) . . 8 3.4頂層模塊的設(shè)計(jì) . . 12 3.5 引腳鎖定 . . 14 4 心得體會 . . 16 參考文獻(xiàn) . . 17 附 錄 . . 181 引言EDA 技術(shù)是以硬件語言為主要的描述方式,以EDA 軟件為主要的設(shè)計(jì)軟件,以大規(guī)模課編程邏輯器件為載體的數(shù)字電路的設(shè)計(jì)過程。其設(shè)計(jì)的靈活性使

2、得EDA 技術(shù)得以快速發(fā)展和廣泛應(yīng)用。本設(shè)計(jì)以Quartus 軟件為設(shè)計(jì)平臺,采用VHDL 語言現(xiàn)數(shù)字頻率計(jì)的整體設(shè)計(jì)。電子設(shè)計(jì)自動化(EDA )逐漸成為重要的設(shè)計(jì)手段,已經(jīng)廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域,電子設(shè)計(jì)自動化是一種實(shí)現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動化設(shè)計(jì)的技術(shù),它與電子技術(shù),微電子技術(shù)的發(fā)展密切相關(guān),它吸收了計(jì)算機(jī)科學(xué)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計(jì)算機(jī)作為工作平臺,促進(jìn)了工程發(fā)展。EDA 的一個重要特征就是使用硬件描述語言(HDL )來完成的設(shè)計(jì)文件,VHDL 語言是經(jīng)IEEE 確認(rèn)的標(biāo)準(zhǔn)硬件語言,在電子設(shè)計(jì)領(lǐng)域受到了廣泛的接受。EDA 技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在ED

3、A 軟件平臺上,有硬件描述語言VHDL 完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作,最終形成集成電子系統(tǒng)或?qū)I(yè)集成芯片的一門新技術(shù)。EDA 技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動強(qiáng)度。隨著數(shù)字電子技術(shù)的發(fā)展,頻率測量成為一項(xiàng)越來越普遍的工作,因此頻率計(jì)常受到人們的青睞。眾所周知,頻率信號易于傳輸,抗干擾性強(qiáng),可以獲得較好的測量精度。因此,頻率檢測是電子測量領(lǐng)域最基本的測量之一。本設(shè)計(jì)基于我們對EDA 技術(shù)、數(shù)字電子技術(shù)的基礎(chǔ)知識的理解,用VHDL 硬件描述語言進(jìn)行

4、模塊電路的設(shè)計(jì),用元件例化語句寫出頻率計(jì)的頂層文件,要求我們設(shè)計(jì)一個四位十進(jìn)制的簡易數(shù)字頻率計(jì),對1HZ-10MHZ 的方波信號進(jìn)行測量,測量的方波頻率值要在4位數(shù)碼管上進(jìn)行顯示,根據(jù)不同的待測方波信號,頻率計(jì)分為4個量程進(jìn)行測量,四個量程分別為乘1,乘10,乘100,乘1000量程,要有一個整體復(fù)位控制,并且當(dāng)量程選擇不恰當(dāng)或者超出10MHZ 時(shí)要有錯誤報(bào)告。附錄中是用多進(jìn)程實(shí)現(xiàn)的簡易頻率計(jì)設(shè)計(jì),實(shí)現(xiàn)了本設(shè)計(jì)要求的所有功能。2 簡易數(shù)字頻率計(jì)設(shè)計(jì)原理2.1基本原理數(shù)字頻率計(jì)的主要功能是測量周期信號的頻率。頻率計(jì)的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時(shí)鐘,對比測量其他信號的頻率。頻率是

5、單位時(shí)間(1秒)內(nèi)方波信號發(fā)生周期變化的次數(shù)。在給定的1秒時(shí)間內(nèi)對方波信號波形計(jì)數(shù),并將所計(jì)數(shù)值顯示出來,就能讀取被測信號的頻率。數(shù)字頻率計(jì)首先必須獲得相對穩(wěn)定與準(zhǔn)確的時(shí)間,然后通過計(jì)數(shù)器計(jì)算這一段時(shí)間間隔內(nèi)的方波脈沖個數(shù)并顯示出來。這就是數(shù)字頻率計(jì)的基本原理。脈沖信號的頻率就是在單位時(shí)間內(nèi)所產(chǎn)生的脈沖個數(shù),其表達(dá)式為f N T ,其中f 為被測信號的頻率,N 為計(jì)數(shù)器所累計(jì)的脈沖個數(shù),T 為產(chǎn)生N 個脈沖所需的時(shí)間。本設(shè)計(jì)要求基準(zhǔn)時(shí)鐘的頻率為6MHZ ,所以需要分頻設(shè)計(jì)產(chǎn)生脈寬為1秒的脈沖。再利用這個脈寬為1秒的脈沖計(jì)數(shù),計(jì)數(shù)器所記錄的結(jié)果,就是被測信號的頻率。因?yàn)榇郎y方波信號的頻率在1HZ

6、-10MHZ ,所以僅用四位7段數(shù)碼管無法完全正確顯示,所以需要選擇恰當(dāng)?shù)牧砍虂盹@示待測風(fēng)波信號的頻率,當(dāng)量程選擇不當(dāng)或者頻率超出10MHZ 時(shí),用一個LED 燈點(diǎn)亮來警告我們這樣測量有錯誤。2.2原理框圖本設(shè)計(jì)要求用基準(zhǔn)時(shí)鐘信號(f=6MHZ)的控制完成對1HZ-10MHZ 的方波信號進(jìn)行測量,使得所測量的方波頻率值在4位7段數(shù)碼管上進(jìn)行顯示,并根據(jù)不同的待測方波信號,將頻率計(jì)分為4個量程進(jìn)行測量,四個量程分別為乘1,乘10,乘100,乘1000量程,量程的選擇分為手動和自動兩種。當(dāng)手動選擇量程時(shí),自動量程顯示為零,手動量程部分依手動所選量程而定;當(dāng)手動選擇信號不工作時(shí),頻率計(jì)自動選擇比較合

7、適的量程進(jìn)行顯示,手動量程部分顯示為零。而且此頻率計(jì)具有記憶功能,在測量過程中不刷新數(shù)據(jù),等數(shù)據(jù)測量過程結(jié)束后才顯示測量值,顯示測量的頻率值,并保存到下一次測量結(jié)束。數(shù)字頻率計(jì)還有一個整體的異步清零端,隨時(shí)可以進(jìn)行清零操作。此外,數(shù)字頻率計(jì)還有一個不能正確顯示待測方波信號頻率時(shí)的警告燈。數(shù)字頻率計(jì)通過測頻控制發(fā)生器將基準(zhǔn)信號轉(zhuǎn)換成所需要的控制信號clk1和en ,待測信號計(jì)數(shù)器在en 的控制下對待測信號進(jìn)行測量并通過鎖存器在clk1的控制下按要求進(jìn)行顯示,數(shù)字頻率計(jì)包括測頻控制發(fā)生器ctr 、待測信號計(jì)數(shù)器counter 、鎖存器regist 三個功能模塊,其原理框圖如圖1所示。 其中a 是手

8、動選擇量程輸入端,sd 代表手動量程的顯示,rst 是整體異步清零輸入端,clk 是頻率為6MHZ 的基準(zhǔn)時(shí)鐘,clkin 是待測的方波信號,b 是顯示是否超出了頻率計(jì)的測量范圍,zd 是在手動選擇量程不工作時(shí)頻率計(jì)進(jìn)行的自動選擇合適的量程顯示,q1q4是四位數(shù)值從高位到低位的顯示結(jié)果。圖1 原理框圖3 各模塊程序及仿真此設(shè)計(jì)運(yùn)用元件例化的方法進(jìn)行功能的實(shí)現(xiàn),所以各個模塊即使相互獨(dú)立又是彼此聯(lián)系的,三個模塊共同完成方波信號的測量。3.1測頻控制發(fā)生器ctr 模塊的設(shè)計(jì)本設(shè)計(jì)要求為該模塊ctr 提供的基準(zhǔn)信號頻率為6MHZ ,所以要做一個12M 分頻器控制產(chǎn)生一個脈寬為1秒的周期信號en 和一個

9、鎖存信號clk1。rst 為高電平時(shí)進(jìn)行整體異步清零。當(dāng)en 處于高電平的時(shí)候?qū)斎氲拇郎y方波信號進(jìn)行計(jì)數(shù)測量,當(dāng)en 處于低電平的時(shí)候停止計(jì)數(shù),并保持所計(jì)數(shù)值。當(dāng)clk1是上升沿的時(shí)候?qū)⑺3值臄?shù)值輸出顯示。此測頻控制發(fā)生器的程序如下: library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity ctr isport(clk,rst: in std_logic;clk1,en: buffer std_logic; end ctr;

10、architecture bhv of ctr is begin process(clk,rstvariable c:integer range 0 to 12000000; begin if rst='1' then en<='0' elsif clk'event and clk='1' thenc:=c+1;if c=6000000 then c:=0;en<=not en;end if;end if;clk1<=not(clk or en;end process;end bhv;此測頻控制發(fā)生器的仿真結(jié)果如圖2所示

11、。 此模塊如果仿真12M 分頻器很困難,為了看到仿真效果,改成20倍分頻器,得到了此仿真結(jié)果。如果按程序下載,在硬件上能很清楚的看到由6MHZ 的基準(zhǔn)信號得到了脈寬為1秒的控制信號en 和控制輸出信號clk1,rst 實(shí)現(xiàn)了整體異步清零的功能。3.2待測信號計(jì)數(shù)器counter 模塊的設(shè)計(jì)該模塊通過ctr 模塊所產(chǎn)生的脈寬為1秒的en 信號來對待測信號進(jìn)行計(jì)數(shù)。用28位二進(jìn)制數(shù)d 進(jìn)行對待測信號的計(jì)數(shù),同時(shí)用sel 表示自動量程根據(jù)所得數(shù)值d 變化,sel 為“0001”時(shí)代表乘1,sel 為“0010”時(shí)代表乘10,sel 為“0100”時(shí)代表乘100,sel 為“1000”時(shí)代表乘1000

12、。如果測量選擇量程太小或者待測方波信號頻率超出10MHZ ,均無法正確顯示測量結(jié)果,則將b 置高電平進(jìn)行警告。此待測信號計(jì)數(shù)器的程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity counter isport(en,clkin,rst:in std_logic;a:in std_logic_vector(3 downto 0;sel:out std_logic_vector(3 downto 0;d :out std_l

13、ogic_vector(27 downto 0; b:out std_logic;end counter;architecture bhv of counter issignal dd: std_logic_vector(27 downto 0;圖2 測頻控制發(fā)生器的仿真結(jié)果beginprocess(rst,en,clkinbeginif rst='1' thendd<=(others=>'0'b<='0' elsif en='1' thenif clkin'event and clkin='1&

14、#39; thenif dd(27 downto 0="1001100110011001100110011001" thendd<=(others=>'0' b<='1'elsif dd(23 downto 0="100110011001100110011001" then dd<=dd+"011001100110011001100111"elsif dd(19 downto 0="10011001100110011001" thendd<=dd+&qu

15、ot;01100110011001100111"elsif dd(15 downto 0="1001100110011001" thendd<=dd+"0110011001100111"elsif dd(11 downto 0="100110011001" thendd<=dd+"011001100111" elsif dd(7 downto 0="10011001" then dd<=dd+"01100111"elsif dd(3 downto

16、0="1001" thendd<=dd+"0111"elsedd<=dd+'1'end if; end if;if dd(27 downto 24>"0000" thensel<="1000"elsif dd(23 downto 20>"0000" thensel<="0100"elsif dd(19 downto 16>"0000" thensel<="0010"else

17、sel<="0001"end if; elsedd<=(others=>'0' end if;if dd(27 downto 24>"0000" thenif a="1000" thenb<='0'elsif a="0000" thenb<='0'elseb<='1'end if; elsif dd(23 downto 20>"0000" thenif a="1000&quo

18、t; thenb<='0'elsif a="0100" thenb<='0'elsif a="0000" thenb<='0'elseb<='1'end if; elsif dd(19 downto 16>"0000" thenif a="1000" thenb<='0'elsif a="0100" thenb<='0'elsif a="0010&q

19、uot; thenb<='0'elsif a="0000" thenb<='0'elseb<='1' end if;elseb<='0'end if;end process;process(enbeginif en'event and en='0' thend<=dd;end if;end process;end bhv;此待測信號計(jì)數(shù)器的仿真結(jié)果如圖3所示。 該模塊實(shí)現(xiàn)了在en 為高電平時(shí)對輸入的待測信號clkin 進(jìn)行測量,當(dāng)en 為低電平時(shí)停止測量并將

20、所計(jì)數(shù)值輸出,即在1秒內(nèi)待測信號的脈沖數(shù),也就是待測信號的頻率值。sel 為根據(jù)所計(jì)數(shù)值自動合理選擇的量程,此時(shí)sel 為“0001”,代表乘1HZ 的量程,即所測方波信號的頻率在9999HZ 之內(nèi)。3.3鎖存器regist 模塊的設(shè)計(jì)該模塊用于實(shí)現(xiàn)記憶顯示,在測量過程中不刷新新的數(shù)據(jù),直到測量過程結(jié)束后,鎖存顯示測量結(jié)果,并且保存到下一次測量結(jié)束。其功能是對四位BCD 碼進(jìn)行鎖存并且轉(zhuǎn)換成為對應(yīng)的4組七段碼,用于驅(qū)動數(shù)碼管。其中rst 為高電平時(shí)對鎖存器進(jìn)行異步清零。rst 為低電平時(shí)正常工作。輸入信號a 對鎖存器進(jìn)行控制即手動選擇量程,當(dāng)a 為“0001”時(shí),代表選擇乘1檔,自動量程顯示為

21、零,手動量程顯示乘1HZ ,只輸出計(jì)數(shù)所得值d 的低四位并顯示在四個十進(jìn)制數(shù)碼管上;當(dāng)a 為“0010”時(shí),代表選擇乘10檔,自動量程顯示為零,手動量程顯示乘10HZ ,只輸出計(jì)數(shù)所得值d 的次低四位并顯示在四個十進(jìn)制數(shù)碼管圖3 待測信號計(jì)數(shù)器的仿真結(jié)果上;當(dāng)a 為“0100”時(shí),代表選擇乘100檔,自動量程部分清零,手動量程顯示乘100HZ ,只輸出計(jì)數(shù)所得值d 的次高四位并顯示在四個十進(jìn)制數(shù)碼管上;當(dāng)a 為“1000”時(shí),代表選擇乘1000檔,自動量程部分清零,手動量程顯示乘1000HZ ,只輸出計(jì)數(shù)所得值d 的高四位并顯示在四個十進(jìn)制數(shù)碼管上。當(dāng)a 為“0000”時(shí),代表不進(jìn)行手動選擇,

22、則手動量程顯示為零,自動量程部分根據(jù)所計(jì)數(shù)值進(jìn)行合理選擇。sel 為“0001”代表所測得的頻率值在09999HZ 之內(nèi),則自動量程顯示乘1HZ ,輸出所測數(shù)值的有效部分并顯示在四個十進(jìn)制數(shù)碼管上;sel 為“0010”代表所測得的頻率值在1000099999HZ 之內(nèi),則自動量程顯示乘10HZ ,輸出所測數(shù)值的有效部分的高四位并顯示在四個十進(jìn)制數(shù)碼管上;sel 為“0100”代表所測得的頻率值在100000999999HZ 之內(nèi),則自動量程顯示乘100HZ ,輸出所測數(shù)值的有效部分的高四位并顯示在四個十進(jìn)制數(shù)碼管上;sel 為“1000”代表所測得的頻率值在10000009999999HZ

23、之內(nèi),則自動量程顯示乘1000HZ ,輸出所測數(shù)值的有效部分的高四位并顯示在四個十進(jìn)制數(shù)碼管上。此鎖存與譯碼器的程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity regist isport(clk1,rst:in std_logic;d:in std_logic_vector(27 downto 0;sel,a:in std_logic_vector(3 downto 0;zd,sd:out std_logic_vec

24、tor(3 downto 0;q1,q2,q3,q4:out std_logic_vector(3 downto 0;end regist;architecture bhv of regist isbeginprocess(rst,clk1beginif rst='1' thenq1<=(others=>'0'q2<="0000"q3<="0000"q4<="0000"zd<="0000"elsif(clk1'event and clk1=

25、'1' thenif(a="0000" thenif sel="1000" thenq1<=d(27 downto 24;q2<=d(23 downto 20;q3<=d(19 downto 16;q4<=d(15 downto 12;zd<="1000"sd<="0000"elsif sel="0100" thenq1<=d(23 downto 20;q2<=d(19 downto 16;q3<=d(15 downto 12

26、;q4<=d(11 downto 8;zd<="0100"sd<="0000"elsif sel="0010" thenq1<=d(19 downto 16;q2<=d(15 downto 12;q3<=d(11 downto 8;q4<=d(7 downto 4;zd<="0010"sd<="0000"elsif sel="0001" thenq1<=d(15 downto 12;q2<=d(11 downt

27、o 8;q3<=d(7 downto 4;q4<=d(3 downto 0;zd<="0001"sd<="0000"end if;elsif(a="0001" thenq1<=d(15 downto 12;q2<=d(11 downto 8;q3<=d(7 downto 4;q4<=d(3 downto 0;zd<="0000"sd<="0001"elsif(a="0010" thenq1<=d(19 down

28、to 16;q2<=d(15 downto 12;q3<=d(11 downto 8;q4<=d(7 downto 4;zd<="0000"sd<="0010"elsif(a="0100" thenq1<=d(23 downto 20;q2<=d(19 downto 16;q3<=d(15 downto 12;q4<=d(11 downto 8;zd<="0000"sd<="0100"elsif(a="1000"

29、; thenq1<=d(27 downto 24;q2<=d(23 downto 20;q3<=d(19 downto 16;q4<=d(15 downto 12;zd<="0000"sd<="1000"end if;end if;end process;end bhv;此鎖存與譯碼器的仿真結(jié)果如圖4所示。 該模塊的仿真為了將各個功能都清晰的顯示出來將sel 進(jìn)行了提前設(shè)置,并不是根據(jù)所測頻率值進(jìn)行的自動選擇。Sel 是輸入信號,前提我們已經(jīng)知道sel 和a 不能同時(shí)工作,所以為了使用a ,將sel 人為的提前設(shè)成“0

30、000”了,不過如此提前將sel 的值進(jìn)行設(shè)定并不影響整體的功能。此仿真圖中a 為“0001”代表乘1量程,只顯示所計(jì)數(shù)值d 的低四位,即十六進(jìn)制的“0” “3” “6” “8”“9”,此時(shí)手動量程sd 顯示為“0001”, 自動量程zd 顯示“0000”代表不工作。3.4頂層模塊的設(shè)計(jì)該模塊用元件調(diào)用(元件例化語句)實(shí)現(xiàn)本設(shè)計(jì)要求的整體功能。頂層文件的作用是將三個底層文件聯(lián)系到一起,共同實(shí)現(xiàn)該簡易數(shù)字頻率計(jì)數(shù)器的功能。此處定義了en0,d0,sel0,clko 等四個信號進(jìn)行底層文件之間以及底層與頂層之間的連接。此模塊的程序如下所示:library ieee;use ieee.std_log

31、ic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity pin isport(rst,clk,clkin:in std_logic;q1,q2,q3,q4:out std_logic_vector(3 downto 0;sd,zd:out std_logic_vector(3 downto 0;a:in std_logic_vector(3 downto 0;b:out std_logic;end pin;圖4 鎖存器的仿真結(jié)果architecture bhv of pin iscompon

32、ent ctrport(clk,rst : in std_logic;clk1,en : buffer std_logic;end component;component counterport(en,clkin,rst :in std_logic;a:in std_logic_vector(3 downto 0;sel :out std_logic_vector(3 downto 0;d :out std_logic_vector(27 downto 0;b :out std_logic; end component;component registport(clk1,rst:in std_

33、logic;d:in std_logic_vector(27 downto 0;sel,a:in std_logic_vector(3 downto 0;zd,sd:out std_logic_vector(3 downto 0;q1,q2,q3,q4:out std_logic_vector(3 downto 0;end component;signal clk0: std_logic;signal en0: std_logic;signal d0: std_logic_vector(27 downto 0;signal sel0: std_logic_vector(3 downto 0;b

34、eginU1:ctr port map(clk,rst,clk0,en0;U2:counter port map(en0,clkin,rst,a,sel0,d0,b;U3:regist port map(clk0,rst,d0,sel0,a,zd,sd,q1,q2,q3,q4;end bhv;此模塊的仿真結(jié)果如圖6所示: 由于頂層模塊調(diào)用ctr 模塊,所以仿真時(shí)遇到類似的問題,我們改用12倍分頻器來仿真, 則在6個基準(zhǔn)信號周期時(shí)間內(nèi)對待測信號計(jì)數(shù),所以得到的數(shù)值除以6就是待測信號與基準(zhǔn)信號的頻率倍數(shù)關(guān)系。所以整體功能仿真結(jié)果顯示,基準(zhǔn)信號周期為200ns ,即頻率為5MHZ ,所以此待測信號的

35、頻率為50MHZ 。當(dāng)a 為“0001”時(shí),代表選擇乘1HZ 的量程,即顯示低四位,此時(shí),手動量程顯示為“0001”表示乘1HZ 量程,自動量程顯示為“0000”表示不工作。當(dāng)a 為“0010”時(shí),代表選擇乘10HZ 的量程,即顯示次低四位,此時(shí),手動量程顯示為“0010”表示乘10HZ 量程,自動量程顯示為“0000”表示不工作。當(dāng)rst 為高電平時(shí),輸出均為0,則進(jìn)行了整體異步清零。3.5 引腳鎖定硬件下載前,進(jìn)行引腳鎖定,各引腳鎖定情況如圖6所示。圖5 整體仿真結(jié)果 引腳鎖定完成后,再次對設(shè)計(jì)文件進(jìn)行編譯。重新編譯完成后,執(zhí)行QuartusII 主窗口“Processing”菜單下“St

36、art Programming”,將配置文件下載到ACEX1K 系統(tǒng)的目標(biāo)芯片EP1K30144-3上,下載適配后,將clk0的6MHZ 頻率用短路帽短路,再將clk5的各個頻率段不同時(shí)用短路帽進(jìn)行短路并觀察數(shù)碼管上的顯示數(shù)字,檢查是否正確,同時(shí)還可以按動鍵1到鍵4進(jìn)行手動選擇量程,查看各個部分是否能夠完成其功能。可以按鍵8進(jìn)行異步清零。最右邊四個數(shù)碼管從左向右是從高位到低位的顯示的頻率。最左邊數(shù)碼管顯示手動選擇的量程數(shù)值,左邊第二個是自動默認(rèn)選擇的量程數(shù)值。硬件電路簡捷,體積小,所有電路都在一塊芯片里,因此性能穩(wěn)定。圖6 引腳鎖定圖4 心得體會作為通信專業(yè)的學(xué)生,第一次真正體會到自己要完成一

37、個大型的程序還真不是件容易的事。通過這學(xué)期學(xué)的EDA 技術(shù),再加上這幾天邊查資料邊請教老師,終于理清了頭緒,完成了此次課程設(shè)計(jì)。剛開始拿到本次程序設(shè)計(jì)題的時(shí)候確實(shí)有點(diǎn)兒興奮,心想著盡量要獨(dú)立快速而又高質(zhì)量的完成這次課程設(shè)計(jì)。但是大概思路有了,覺得特別復(fù)雜,我害怕了,一陣慌亂后,終于定下心來了終于找到了一個比較類似的VHDL 程序的簡易數(shù)字頻率計(jì)設(shè)計(jì)。這也使得我今天的程序頗有類同的感覺??戳藥妆檎n題設(shè)計(jì)要求和書上給的源程序后對如何寫這一方面的程序有了一定的了解,于是就嘗試著自己開始作起了這個系統(tǒng)的總體框圖。平時(shí)覺得老師講課時(shí)都特別簡單清楚,但是現(xiàn)在自己拿到一個設(shè)計(jì)要求時(shí),亂陣腳了,但是經(jīng)過努力,

38、先把封裝圖畫了出來,最終把原理框圖畫出來了。時(shí)間過得真快,馬上到周四了,要進(jìn)實(shí)驗(yàn)室做仿真和下載的時(shí)候了,剛開始在實(shí)驗(yàn)室有點(diǎn)著急,但是老師的新要求提出時(shí),我冷靜了,修改程序,做調(diào)試,在最后終于成功的完成了符合設(shè)計(jì)要求的程序,下載后仍有點(diǎn)小問題需要修改。但是畢竟得到了老師的肯定,我的信心更足了。下午又重新整理了自己的思路,功夫不負(fù)有心人,終于把問題都解決了。通過這次EDA 課程設(shè)計(jì),我對課堂上所學(xué)到的理論知識的理解加深了許多, 自己動腦、動手設(shè)計(jì)的能力也得到了較大提高。在這次課程設(shè)計(jì)的過程中,我對 VHDL 語言有了更深的認(rèn)識。通過查閱相關(guān)資料和動手設(shè)計(jì)我發(fā)現(xiàn)我以前對 VHDL 語言的認(rèn)識太過膚淺

39、,認(rèn)為 VHDL 語言只能用于設(shè)計(jì)小型的電路系統(tǒng)。但有了更深刻的認(rèn)識之后我發(fā)現(xiàn)學(xué)好 VHDL 語言可以設(shè)計(jì)出大規(guī)模的、功能復(fù)雜的電路系統(tǒng)。我發(fā)現(xiàn)了動手實(shí)踐的重要性。動手實(shí)踐是理論知識得以靈活運(yùn)用的必要前提,也是今后走上工作崗位之后能夠很好的完成設(shè)計(jì)工作的技術(shù)保證。只有遇到實(shí)際問題并根據(jù)自己對課堂上獲得的專業(yè)知識的理解來解決才能真正的提高自己的能力。這也提醒我在平時(shí)的學(xué)習(xí)生活中不能一味埋頭于課本知識,當(dāng)今社會競爭越來越激烈,社會對人才的要求越來越全面,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,必須靠實(shí)踐作支撐。雖然課設(shè)完成了,但是我意識到,我對FPGA 技術(shù)僅僅只是停留在入門的階段,想要有更大的發(fā)展,更深入的研

40、究,還需要更多的努力與實(shí)踐。因此在學(xué)習(xí)之余我們應(yīng)該積極參加各種與專業(yè)知識有關(guān)的實(shí)踐活動和知識競賽,鞏固所學(xué)的理論知識,多注重培養(yǎng)實(shí)際動手能力和專業(yè)技術(shù)能力,這樣才能在以后的工作崗位上有所作為。參考文獻(xiàn)1 Voknei A.Pedroni.VHDL 數(shù)字電路設(shè)計(jì)教程. 電子工業(yè)出版社,2008.52 潘松,黃繼業(yè). EDA 技術(shù)實(shí)用教程(第二版). 科學(xué)出版社,2005.23 焦素敏. EDA 應(yīng)用技術(shù). 清華大學(xué)出版社,2002.4附 錄library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ie

41、ee.std_logic_arith.all;entity gaoli isport(rst,clk,clkin:in std_logic;a:in std_logic_vector(3 downto 0; q1,q2,q3,q4:out std_logic_vector(3 downto 0;sd:out std_logic_vector(3 downto 0;zd:out std_logic_vector(3 downto 0;b:out std_logic;end gaoli;architecture bhv of gaoli issignal clk1:std_logic;signal

42、 en:std_logic;signal bb:std_logic;signal dd:std_logic_vector(27 downto 0;signal d:std_logic_vector(27 downto 0;signal sel:std_logic_vector(3 downto 0;beginprocess(clk,rstvariable c:integer range 0 to 6000000;beginif rst='1' thenclk1<='0'en<='0'elsif clk'event and cl

43、k='1' thenc:=c+1;if c=6000000 thenc:=0;en<=not en; end if;end if; clk1<= not ( clk or en;end process;process(rst,en,clkinbeginif rst='1' thendd<=(others=>'0'bb<='0'elsif en='1' thenif clkin'event and clkin='1' thenif dd(27 downto 0=&

44、quot;1001100110011001100110011001" then dd<=(others=>'0' bb<='1'elsif dd(23 downto 0="100110011001100110011001" then dd<=dd+"011001100110011001100111"elsif dd(19 downto 0="10011001100110011001" then dd<=dd+"01100110011001100111&q

45、uot;elsif dd(15 downto 0="1001100110011001" then dd<=dd+"0110011001100111"elsif dd(11 downto 0="100110011001" thendd<=dd+"011001100111"elsif dd(7 downto 0="10011001" thendd<=dd+"01100111"elsif dd(3 downto 0="1001" thendd&

46、lt;=dd+"0111"else dd<=dd+'1'end if;end if;if dd(27 downto 24>"0000" thensel<="1000"elsif dd(23 downto 20>"0000" thensel<="0100"elsif dd(19 downto 16>"0000" thensel<="0010"else sel<="0001"e

47、nd if;else dd<=(others=>'0'bb<='0'課程設(shè)計(jì)說明書 end if; if dd(27 downto 24>"0000" then if a="1000" then bb<='0' elsif a="0000" then bb<='0' else bb<='1' end if; elsif dd(23 downto 20>"0000" then if a=&q

48、uot;1000" then bb<='0' elsif a="0100" then bb<='0' elsif a="0000" then bb<='0' else bb<='1' end if; elsif dd(19 downto 16>"0000" then if a="1000" then bb<='0' elsif a="0100" then bb<=&

49、#39;0' elsif a="0010" then bb<='0' elsif a="0000" then bb<='0' else bb<='1' end if; else bb<='0' end if; 20 課程設(shè)計(jì)說明書 end process; process(en begin if en'event and en='0' then d<=dd; b<=bb; end if; end process; process(rst,clk1 begin if rst

溫馨提示

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

最新文檔

評論

0/150

提交評論