版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 一、課程設(shè)計(jì)的性質(zhì)、目的和任務(wù)………………………………3</p><p> 二、課程設(shè)計(jì)基本要求……………………………………………3</p><p> 三、設(shè)計(jì)課題要求…………………………………………………3</p><p> 四、課程設(shè)計(jì)所需要儀器…
2、………………………………………4</p><p> 五、設(shè)計(jì)步驟………………………………………………………4</p><p> 1、整體設(shè)計(jì)框圖…………………………………………………4</p><p> 2、各個模塊的設(shè)計(jì)與仿真………………………………………4</p><p> 2.1分頻模塊………………………………………………………
3、……4</p><p> 2.2計(jì)數(shù)器模塊…………………………………………………………6</p><p> 2.3控制模塊…………………………………………………………10</p><p> 2.4數(shù)碼管分配………………………………………………………13</p><p> 2.5顯示模塊…………………………………………………………14&
4、lt;/p><p> 2.6報時模塊…………………………………………………………16</p><p> 六、調(diào)試中遇到的問題及解決的方法……………………………18</p><p> 七、心得體會………………………………………………………18</p><p> 一、課程設(shè)計(jì)的性質(zhì)、目的和任務(wù)</p><p> 創(chuàng)新
5、精神和實(shí)踐能力二者之中,實(shí)踐能力是基礎(chǔ)和根本。這是由于創(chuàng)新基于實(shí)踐、源于實(shí)踐,實(shí)踐出真知,實(shí)踐檢驗(yàn)真理。實(shí)踐活動是創(chuàng)新的源泉,也是人才成長的必由之路。</p><p> 通過課程設(shè)計(jì)的鍛煉,要求學(xué)生掌握電路的一般設(shè)計(jì)方法,具備初步的獨(dú)立設(shè)計(jì)能力,提高綜合運(yùn)用所學(xué)的理論知識獨(dú)立分析和解決問題的能力,培養(yǎng)學(xué)生的創(chuàng)新精神。</p><p> 二、課程設(shè)計(jì)基本要求</p><
6、;p> 掌握現(xiàn)代大規(guī)模集成數(shù)字邏輯電路的應(yīng)用設(shè)計(jì)方法,進(jìn)一步掌握電子儀器的正確使用方法,以及掌握利用計(jì)算機(jī)進(jìn)行電子設(shè)計(jì)自動化(EDA)的基本方法。</p><p><b> 三、設(shè)計(jì)課題要求</b></p><p> (1)構(gòu)造一個24小時制的數(shù)字鐘。要求能顯示時、分、秒。</p><p> ?。?)要求時、分、秒能各自獨(dú)立的進(jìn)行調(diào)
7、整。</p><p> ?。?)能利用喇叭作整點(diǎn)報時。從59分50秒時開始報時,每隔一秒報時一秒,到達(dá)00分00秒時,整點(diǎn)報時。整點(diǎn)報時聲的頻率應(yīng)與其它的報時聲頻有明顯區(qū)別。</p><p> #設(shè)計(jì)提示(僅供參考):</p><p> ?。?)對頻率輸入的考慮</p><p> 數(shù)字鐘內(nèi)所需的時鐘頻率有:基準(zhǔn)時鐘應(yīng)為周期一秒的標(biāo)準(zhǔn)信號。
8、報時頻率可選用1KHz和2KHz左右(兩種頻率相差八度音,即頻率相差一倍)。另外,為防止按鍵反跳、抖動,微動開關(guān)輸入應(yīng)采用寄存器輸入形式,其時鐘應(yīng)為幾十赫茲。</p><p> ?。?)計(jì)時部分計(jì)數(shù)器設(shè)計(jì)的考慮</p><p> 分、秒計(jì)數(shù)器均為模60計(jì)數(shù)器。</p><p> 小時計(jì)數(shù)為模24計(jì)數(shù)器,同理可建一個24進(jìn)制計(jì)數(shù)器的模塊。</p>&
9、lt;p> ?。?)校時設(shè)計(jì)的考慮</p><p> 數(shù)字鐘校準(zhǔn)有3個控制鍵:時校準(zhǔn)、分校準(zhǔn)和秒校準(zhǔn)。</p><p> 微動開關(guān)不工作,計(jì)數(shù)器正常工作。按下微動開關(guān)后,計(jì)數(shù)器以8Hz頻率連續(xù)計(jì)數(shù)(若只按一下,則計(jì)數(shù)器增加一位),可調(diào)用元件庫中的邏輯門建一個控制按鍵的模塊,即建立開關(guān)去抖動電路(見書70頁)。</p><p> ?。?)報時設(shè)計(jì)的考慮<
10、;/p><p> 可以將高頻時鐘分頻得到約2KHz和1KHz的音頻,作為數(shù)字鐘的報時頻率。當(dāng)電子鐘顯示XX:59:50時,數(shù)字鐘開始報時“DO",持續(xù)一秒,而且每隔一秒報一下,直至顯示XX:00:00時報“DI",持續(xù)一秒后停止。最后輸出至喇叭。應(yīng)調(diào)用元件庫中的邏輯門建一個控制報時的模塊。</p><p> ?。?)建一個七段譯碼的模塊</p><p&
11、gt; 因在系統(tǒng)可編程器件實(shí)驗(yàn)箱上的數(shù)碼管沒有經(jīng)過譯碼,故要用AHDL語言寫一個七段譯碼的模塊,且應(yīng)考慮數(shù)碼管為共陽極。數(shù)碼管上的點(diǎn)(D2、D4、D6)應(yīng)置Vcc。</p><p> 四、課程設(shè)計(jì)所需要儀器</p><p><b> 1、計(jì)算機(jī)一臺</b></p><p> 2、quartusⅡ軟件</p><p&g
12、t;<b> 3、FPGA開發(fā)板</b></p><p><b> 五、設(shè)計(jì)步驟</b></p><p><b> 1、模塊介紹</b></p><p> 分頻模塊:產(chǎn)生1Hz、1KHz、2KHz頻率</p><p> 計(jì)數(shù)器模塊:生成60進(jìn)制、24進(jìn)制計(jì)數(shù)器<
13、/p><p> 控制模塊:按鍵控制、按鍵消抖</p><p> 顯示模塊:7段數(shù)碼管顯示器,分別顯示小時、分鐘、秒</p><p> 報時模塊:進(jìn)行整點(diǎn)報時</p><p> 2、各個模塊的設(shè)計(jì)與仿真</p><p><b> 2.1分頻模塊</b></p><p>
14、 CLK晶振頻率50MHZ,分成2KHZ,1KHZ,1HZ的信號。基準(zhǔn)1HZ信號作為時鐘計(jì)時的秒計(jì)數(shù)時鐘信號;分頻的1KHZ,2KHZ信號用于報時電路的不同聲訊。</p><p><b> 程序代碼:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;<
15、/p><p> entity fre is</p><p><b> port(</b></p><p> clk ,sel: in std_logic;</p><p> clk1hz,clk1khz,clk2khz:out std_logic);</p><p><b> en
16、d fre;</b></p><p> architecture beh of fre is</p><p> signal data1khz,data2khz,data1hz : std_logic := '0';</p><p><b> begin</b></p><p> cl
17、k1hz <= data1hz;</p><p> clk1khz <= data1khz;</p><p> clk2khz <= data2khz;</p><p> clk1khz_pro : process(clk) --產(chǎn)生1khz信號</p><p> v
18、ariable cnt : integer range 0 to 24999;</p><p><b> begin </b></p><p> if clk'event and clk='1' then </p><p> if cnt = 24999 then </p><p> cn
19、t := 0 ; data1khz <= not data1khz;</p><p><b> else </b></p><p> cnt := cnt + 1;</p><p><b> end if;</b></p><p><b> end if;</b>
20、</p><p> end process clk1khz_pro;</p><p> clk2khz_pro : process(clk) --產(chǎn)生2khz信號</p><p> variable cnt : integer range 0 to 12499;</p><p><
21、;b> begin </b></p><p> if clk'event and clk='1' then </p><p> if cnt = 12499 then </p><p> cnt := 0 ; data2khz <= not data2khz;</p><p><b
22、> else </b></p><p> cnt := cnt + 1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process clk2khz_pro;</p><
23、p> clk1hz_pro : process(data1khz) --產(chǎn)生1hz 信號</p><p> variable cnt : integer range 0 to 499;</p><p><b> begin</b></p><p> if data1khz'eve
24、nt and data1khz='1' then</p><p> if sel='0' then cnt:=0;</p><p> else if cnt = 499 then</p><p> cnt := 0 ;data1hz <= not data1hz ;</p><p><b>
25、; else</b></p><p> cnt := cnt + 1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p
26、> end process clk1hz_pro;</p><p><b> end beh;</b></p><p><b> 輸入模塊電路圖:</b></p><p><b> 2.2計(jì)數(shù)器模塊</b></p><p> 由秒計(jì)數(shù)器,分計(jì)數(shù)器,時計(jì)數(shù)器組成了
27、最基本的數(shù)字鐘計(jì)時電路,兩個六十進(jìn)制計(jì)數(shù)器與二十四進(jìn)制計(jì)數(shù)器組合構(gòu)成。</p><p><b> 程序代碼:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.
28、all;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> entity shuzizhong is</p><p><b> port(</b></p><p> clk_change : in std_logic;</p><p> s_
29、en,m_en,h_en:in std_logic;</p><p> sel:in std_logic;</p><p> secout,minout,hourout :out std_logic;</p><p> sl,sh,ml,mh,hl,hh:out std_logic_vector(3 downto 0);</p><p>
30、; a:out std_logic_vector(15downto 0)</p><p><b> );</b></p><p> end shuzizhong;</p><p> architecture behav of shuzizhong is</p><p> signal low_rega,high
31、_rega,low_regb,high_regb,low_regc,high_regc :std_logic_vector(3 downto 0):="0000";</p><p> signal sout,mout,hout :std_logic :='0';</p><p><b> begin</b></p>
32、<p> --秒的60進(jìn)制進(jìn)制 </p><p> counter_sec_l : process(clk_change,s_en)</p><p><b> begin</b></p><p> sl<=lo
33、w_rega;sh<=high_rega;ml<=low_regb;mh<=high_regb;hl<=low_regc;hh<=high_regc;</p><p> if clk_change'event and clk_change='1' then</p><p> if s_en='1' then <
34、/p><p> if low_rega="1001" then</p><p> low_rega <= "0000";</p><p><b> else </b></p><p> low_rega <= low_rega+'1';</
35、p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process counter_sec_l;</p><p> counte
36、r_sec_h : process(clk_change,s_en,low_rega)</p><p><b> begin</b></p><p> if clk_change'event and clk_change='1' then</p><p> if s_en='1' then</
37、p><p> if low_rega="1001" then </p><p> if high_rega ="0101"then</p><p> high_rega <= "0000";</p><p><b> else</b></p>
38、;<p> high_rega <= high_rega+'1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p>
39、<b> end if;</b></p><p> end process counter_sec_h;</p><p> sout <= '1' when low_rega="1001" and high_rega="0101" else '0'; </p><p
40、> ----分鐘的60進(jìn)制設(shè)置</p><p> counter_min_l : process(clk_change,m_en)</p><p><b> begin</b></p><p> if clk_change'event and clk_change='1' then</p>&
41、lt;p> if m_en='1' then</p><p> if sout='1'or sel='0' then </p><p> if low_regb="1001" then</p><p> low_regb <= "0000";</p>
42、;<p><b> else </b></p><p> low_regb <= low_regb+'1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p>&l
43、t;b> end if;</b></p><p><b> end if;</b></p><p> end process counter_min_l;</p><p> counter_min_h : process(clk_change,m_en,low_regb)</p><p><
44、;b> begin</b></p><p> if clk_change'event and clk_change='1' then</p><p> if sout='1'or sel='0' then</p><p> if m_en='1' then</p&
45、gt;<p> if low_regb="1001" then</p><p> if high_regb ="0101"then</p><p> high_regb <= "0000";</p><p><b> else </b></p>
46、<p> high_regb <= high_regb+'1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p>&l
47、t;b> end if;</b></p><p><b> end if;</b></p><p> end process counter_min_h;</p><p> mout <= '1' when low_regb="1001" and high_regb="
48、;0101"and sout='1' else '0'; </p><p> --小時的24進(jìn)制設(shè)置</p><p> counter_hour_l : process(clk_change,h_en)</p><p><b> begin</b></p><p> if
49、 clk_change'event and clk_change='1' then</p><p> if h_en='1' then</p><p> if mout='1'or sel='0' then </p><p> if low_regc="1001"or
50、hout='1' then</p><p> low_regc <= "0000";</p><p><b> else </b></p><p> low_regc <= low_regc+'1';</p><p><b> end
51、if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process counter_hour_l;</p>
52、<p> counter_hour_h : process(clk_change,h_en,hout)</p><p><b> begin</b></p><p> if clk_change'event and clk_change='1' then</p><p> if mout='
53、1'or sel='0' then</p><p> if h_en='1' then</p><p> if hout='1' then</p><p> high_regc<="0000"; </p><p> else if low_regc=&q
54、uot;1001" then</p><p> high_regc <= high_regc+'1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;<
55、;/b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process counter_hour_h;</p><p> hout <= '1' when low_regc="
56、;0011" and high_regc="0010" else '0';</p><p> secout<=sout;minout<=mout;hourout<=hout;</p><p> a<=high_regb&low_regb&high_rega&low_rega ;</p&g
57、t;<p> end behav;</p><p><b> 輸入模塊電路圖:</b></p><p><b> 2.3控制模塊</b></p><p> 分五個狀態(tài)0狀態(tài)正常計(jì)時,按下按鍵進(jìn)入下一狀態(tài)開始調(diào)時模式1,按下按鍵進(jìn)入調(diào)秒模式2,按下按鍵進(jìn)入調(diào)分模式3,按下按鍵進(jìn)入調(diào)小時模式4.按下按鍵恢
58、復(fù)正常計(jì)時模式。</p><p><b> 程序代碼:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p>
59、entity key_press is</p><p> port( set ,mode: in std_logic;</p><p> clk1khz,clk1hz: in std_logic;</p><p> secout,minout: in std_logic;</p><p> clk_change,clk2hz_en
60、:out std_logic ;</p><p> sel,s_ce,m_ce,h_ce:out std_logic;</p><p> s_en,m_en,h_en:out std_logic );</p><p> end key_press;</p><p> architecture beh of key_press i
61、s</p><p> signal key1,key2:std_logic;</p><p> signal sce_reg, mce_reg ,hce_reg:std_logic ;</p><p> signal ssl,ssen,mmen,hhen:std_logic;</p><p> signal con : integ
62、er range 0 to 4 :=0;</p><p> --按鍵按下(延時)</p><p><b> begin </b></p><p> key_press2 : process(set,clk1khz)</p><p> variable cnt :integer range 0 to 999;<
63、;/p><p><b> begin </b></p><p> if set='0' then</p><p> if clk1khz'event and clk1khz='1'then</p><p> if cnt=50 and set='0' then&
64、lt;/p><p> cnt :=cnt+1; key2 <= '1';</p><p> else cnt:=cnt+1;key2 <= '0';</p><p><b> end if;</b></p><p><b> end if;</b>&l
65、t;/p><p><b> else </b></p><p> cnt:=0; key2<='0';</p><p><b> end if;</b></p><p> end process key_press2; </p><p> key_
66、press1 : process(mode,clk1khz)</p><p> variable cnt :integer range 0 to 999;</p><p><b> begin </b></p><p> if mode='0' then</p><p> if clk1khz
67、39;event and clk1khz='1'then</p><p> if cnt=50 and mode='0' then</p><p> cnt :=cnt+1; key1 <= '1';</p><p> else cnt:=cnt+1;key1 <= '0';</
68、p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> else </b></p><p> cnt:=0; key1<='0';</p><p><b&g
69、t; end if;</b></p><p> end process key_press1;</p><p> count : process(key1,key2) </p><p><b> begin </b></p><p> if key1'event and key1='
70、;1' then</p><p> if con=4 then</p><p><b> con<=0;</b></p><p><b> else </b></p><p> con<=con+1;</p><p><b> end
71、if;</b></p><p><b> end if;</b></p><p> end process count;</p><p> con_pro : process(con)</p><p><b> begin</b></p><p> ca
72、se con is</p><p> when 0 => ssl<='1';</p><p> sce_reg <= '0';ssen <='1';</p><p> mce_reg <= '0';mmen <='1';</p>&
73、lt;p> hce_reg <= '0';hhen <='1';</p><p> clk2hz_en <='0';</p><p> when 1 => ssl<='0';</p><p> sce_reg <= '0';ssen &l
74、t;='1';</p><p> mce_reg <= '0';mmen <='1';</p><p> hce_reg <= '0';hhen <='1';</p><p> clk2hz_en <='1';</p>&
75、lt;p> when 2 => ssl<='0';</p><p> sce_reg <= '1';ssen <='1';</p><p> mce_reg <= '0';mmen <='0';</p><p> hce_reg <
76、= '0';hhen <='0';</p><p> clk2hz_en <='1';</p><p> when 3 => ssl<='0';</p><p> sce_reg <= '0';ssen <='0';</p&
77、gt;<p> mce_reg <= '1';mmen <='1';</p><p> hce_reg <= '0';hhen <='0';</p><p> clk2hz_en <='1';</p><p> when 4 =>
78、 ssl<='0';</p><p> sce_reg <= '0';ssen <='0';</p><p> mce_reg <= '0';mmen <='0';</p><p> hce_reg <= '1';hhen <
79、;='1';</p><p> clk2hz_en <='1';</p><p> when others => ssl<='0';</p><p> sce_reg <= '0';ssen <='1';</p><p> m
80、ce_reg <= '0';mmen <='1';</p><p> hce_reg <= '0';hhen <='1';</p><p> clk2hz_en <='0';</p><p><b> end case;</b>&
81、lt;/p><p> end process con_pro;</p><p> sel_pro : process(ssl)</p><p><b> begin </b></p><p> case ssl is</p><p> when '0'=> s_ce&l
82、t;=sce_reg;</p><p> m_ce<=mce_reg;</p><p> h_ce<=hce_reg;</p><p> clk_change<=key2;</p><p> when '1'=> s_ce<=ssen;</p><p> m_ce
83、<=mmen;</p><p> h_ce<=hhen;</p><p> clk_change<=clk1hz;</p><p> when others=> s_ce<=ssen;</p><p> m_ce<=secout;</p><p> h_ce<=min
84、out;</p><p> clk_change<=clk1hz;</p><p><b> end case;</b></p><p> end process sel_pro;</p><p> sel<=ssl;s_en<=ssen;m_en<=mmen;h_en<=hhen;
85、</p><p><b> end beh;</b></p><p><b> 輸入模塊電路圖:</b></p><p><b> 2.4數(shù)碼管分配</b></p><p><b> 程序代碼:</b></p><p>
86、library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity display is</p><p><b> port(</b></p><p> datain : in std_logic_vector(3 downto 0);<
87、/p><p> dataout : out std_logic_vector(7 downto 0));</p><p> end display;</p><p> architecture duan of display is</p><p><b> begin</b></p><p>
88、 process(datain)</p><p><b> begin</b></p><p> case datain is</p><p> when "0000" => dataout <="11000000"; --dp,g,f,e,d,c,b,a</p><
89、;p> when "0001" => dataout <="11111001";</p><p> when "0010" => dataout <="10100100";</p><p> when "0011" => dataout <=&
90、quot;10110000";</p><p> when "0100" => dataout <="10011001";</p><p> when "0101" => dataout <="10010010";</p><p> when &q
91、uot;0110" => dataout <="10000010";</p><p> when "0111" => dataout <="11111000";</p><p> when "1000" => dataout <="10000000&q
92、uot;;</p><p> when "1001" => dataout <="10010000";</p><p> when "1010" => dataout <="10111111";</p><p> when "1011"
93、=> dataout <="10000011";</p><p> when "1100" => dataout <="10100111";</p><p> when "1101" => dataout <="10100001";</p>
94、<p> when "1110" => dataout <="10000110";</p><p> when "1111" => dataout <="10001110";</p><p> when others => null;</p>&l
95、t;p><b> end case;</b></p><p> end process;</p><p><b> end ;</b></p><p><b> 輸入模塊電路圖:</b></p><p><b> 2.5顯示模塊</b>&l
96、t;/p><p> 使用七段數(shù)碼管顯示小時、分鐘與秒</p><p><b> 程序代碼:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity scan is</p>
97、<p><b> port(</b></p><p> clk1khz : in std_logic;</p><p> sl,sh,ml,mh,hl,hh : in std_logic_vector(3 downto 0);</p><p> clk2hz_en : in std_logi
98、c;</p><p> s_ce,m_ce,h_ce : in std_logic;</p><p> en_out : out std_logic_vector(7 downto 0);</p><p> dataout : out std_logic_vector(3 downto 0));</p>
99、;<p><b> end scan;</b></p><p> architecture beh of scan is</p><p> signal cnt : integer range 0 to 7;</p><p> signal en
100、 : std_logic_vector(7 downto 0);</p><p> signal clk2hz : std_logic; </p><p> signal h_ce_reg,m_ce_reg,s_ce_reg : std_logic;</p><p><b> begin<
101、/b></p><p> h_ce_reg <= not h_ce;</p><p> m_ce_reg <= not m_ce;</p><p> s_ce_reg <= not s_ce;</p><p> cnt_pro : process(clk1khz)</p><p><
102、;b> begin</b></p><p> if clk1khz'event and clk1khz='1' then</p><p> if cnt = 7 then</p><p><b> cnt <= 0;</b></p><p><b> e
103、lse </b></p><p> cnt <= cnt + 1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process cnt_pro;</p><p> c
104、lk2hz_pro :process(clk1khz)</p><p> variable c : integer range 0 to 499 := 0;</p><p><b> begin</b></p><p> if clk1khz'event and clk1khz='1' then</p>
105、<p> if clk2hz_en ='1' then</p><p> if c =499 then</p><p> c := 0 ; clk2hz <= not clk2hz;</p><p><b> else </b></p><p> c := c + 1;<
106、;/p><p><b> end if;</b></p><p><b> else</b></p><p> clk2hz <= '0';</p><p><b> end if;</b></p><p><b>
107、 end if;</b></p><p> end process clk2hz_pro;</p><p> scan_pro : process(cnt,sl,sh,ml,mh,hl,hh)</p><p><b> begin</b></p><p> case cnt is</p>
108、<p> when 0 => dataout <= sl;en <= "11111110";</p><p> when 1 => dataout <= sh;en <= "11111101";</p><p> when 2 => dataout <= ml;en <= &qu
109、ot;11110111";</p><p> when 3 => dataout <= mh;en <= "11101111";</p><p> when 4 => dataout <= hl;en <= "10111111";</p><p> when 5 =>
110、dataout <= hh;en <= "01111111";</p><p> when 6 => dataout <= "1010";en <= "11111011";</p><p> when 7 => dataout <= "1010";en <=
111、"11011111"; </p><p> when others => null;</p><p><b> end case;</b></p><p> end process scan_pro;</p><p> en_out <= en or ((clk2hz &
112、clk2hz) or (h_ce_reg & h_ce_reg)) & clk2hz & ((clk2hz & clk2hz) or (m_ce_reg & m_ce_reg)) & clk2hz & ((clk2hz & clk2hz) or (s_ce_reg & s_ce_reg));</p><p><b> end be
113、h;</b></p><p><b> 輸入模塊電路圖:</b></p><p><b> 2.6報時模塊</b></p><p> 利用蜂鳴器進(jìn)行整點(diǎn)報時</p><p><b> 程序代碼:</b></p><p> libra
114、ry ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p><b> --整點(diǎn)報時</b></p
115、><p> entity baoshi is</p><p><b> port(</b></p><p> clk1khz,clk2khz : in std_logic;</p><p> a:in std_logic_vector(15 downto 0);</p><p> sel:i
116、n std_logic;</p><p> bell:out std_logic);</p><p> end baoshi;</p><p> architecture zhong of baoshi is</p><p> signal c1,ring:std_logic;
117、 </p><p><b> begin</b></p><p> ring_bell :process(clk1khz,clk2khz)</p><p> begin </p><p><b> case a is</b></p><p>
118、 when "0101100101010000" => c1<=clk1khz;</p><p> when "0101100101010010" => c1<=clk1khz;</p><p> when "0101100101010100" => c1<=clk1khz;</p&g
119、t;<p> when "0101100101010110" => c1<=clk1khz;</p><p> when "0101100101011000" => c1<=clk1khz;</p><p> when "0000000000000000" => c1<=cl
120、k2khz;</p><p> when "0011000000000000" => c1<=clk2khz;</p><p> when others => c1<='0';</p><p><b> end case;</b></p><p> en
121、d process ring_bell; </p><p> bs: process(c1) </p><p><b> begin</b></p><p> if sel='1' then</p><p> if c1='1' then</p><p&g
122、t; ring<='0';</p><p> else ring<='1';</p><p><b> end if;</b></p><p> end if; </p><p> end process bs; </p>
123、<p> bell<=ring; </p><p> end zhong; </p><p><b> 輸入模塊電路圖:</b></p><p><b> 整體模塊電路圖</b></p><p> 六、調(diào)試中遇到的問題及解決的方法
124、:</p><p> 1、編程時,經(jīng)常導(dǎo)致語法錯誤,如:“;”沒有寫上,變量類型沒有預(yù)先標(biāo)明,前后變量名字由于缺少一個或多一個字母而導(dǎo)致出錯。</p><p> 解決辦法:對照錯誤,認(rèn)真檢查程序,看哪個地方的標(biāo)點(diǎn),變量沒有寫上或標(biāo)明。2、進(jìn)行編譯或波形仿真時,經(jīng)常得到的不是預(yù)想中的結(jié)果。</p><p> 解決辦法:將需要編譯或進(jìn)行仿真的實(shí)體文件置頂,經(jīng)檢錯無
125、誤后,進(jìn)行波形仿真,在仿真之前需要合理設(shè)置仿真結(jié)束時間和信號周期。</p><p> 3、在控制時間的顯示的時候,由于變量太多多發(fā)現(xiàn)不能完全的控制住變量,導(dǎo)致顯示的時候出現(xiàn)了亂碼,數(shù)碼管顯示不正常</p><p> 解決辦法:減少變量,仔細(xì)推敲,合理命名。</p><p><b> 七、心得體會</b></p><p&
126、gt; 一個多星期的課程設(shè)計(jì)讓我受益匪淺,也讓我真正明白理論與實(shí)踐相結(jié)合的重要性。通過具體實(shí)踐才能讓自己清楚哪些知識已經(jīng)掌握,哪些知識仍需鞏固加強(qiáng)。與此同時,我也對EDA以及VHDL語言有了進(jìn)一步了解,對于其結(jié)構(gòu)、語法、功能等認(rèn)識不少。當(dāng)然,我目前所做的還僅僅只是一些基本操作,要想真正將其融會貫通還需要今后更多的學(xué)習(xí)與實(shí)踐。</p><p> 雖然只是一個小設(shè)計(jì),我卻也從中學(xué)到了不少設(shè)計(jì)流程和一些相關(guān)問題。設(shè)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 整點(diǎn)報時數(shù)字鐘課程設(shè)計(jì)
- eda課程設(shè)計(jì)--數(shù)字鐘的設(shè)計(jì)與制作
- EDA課程設(shè)計(jì)--數(shù)字鐘的設(shè)計(jì)與制作.doc
- eda數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘--eda課程設(shè)計(jì)
- eda數(shù)字鐘課程設(shè)計(jì)
- eda課程設(shè)計(jì)報告---數(shù)字鐘設(shè)計(jì)
- 數(shù)字鐘eda課程設(shè)計(jì)報告
- eda課程設(shè)計(jì)報告--數(shù)字鐘
- 數(shù)字鐘課程設(shè)計(jì)---多功能數(shù)字鐘的設(shè)計(jì)與制作
- 課程設(shè)計(jì)---數(shù)字鐘的設(shè)計(jì)與制作
- eda課程設(shè)計(jì)——多功能數(shù)字鐘
- eda課程設(shè)計(jì)---基于fpga的數(shù)字鐘設(shè)計(jì)
- 課程設(shè)計(jì)---數(shù)字鐘的設(shè)計(jì)與制作 (2)
- eda數(shù)字鐘課程設(shè)計(jì)--用vhdl語言實(shí)現(xiàn)數(shù)字鐘的設(shè)計(jì)
- eda課程數(shù)字鐘設(shè)計(jì)報告
- eda實(shí)現(xiàn)多功能數(shù)字鐘課程設(shè)計(jì)
- 具有整點(diǎn)報時及校時功能的數(shù)字鐘系統(tǒng)設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 數(shù)電課程設(shè)計(jì)--數(shù)字鐘的設(shè)計(jì)與制作
- 數(shù)電課程設(shè)計(jì)--數(shù)字鐘的設(shè)計(jì)與制作
評論
0/150
提交評論