版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目 錄</b></p><p> 摘要………………………………………………………………………2</p><p> 1設計目的……………………………………………………………… 2</p><p> 2設計內容 …………………………………………………………… 2</p><p>
2、2.1設計任務……………………………………………………………2</p><p> 2.2擴展 ……………………………………………………………2</p><p> 3系統(tǒng)方案及設計原理 ……………………………………………… 3</p><p> 3.1方案選擇 ………………………………………………………… 3</p><p> 3
3、.2數(shù)字鐘的基本工作原理 ………………………………………………3</p><p> 3.3底層元件接口……………………………………………………… 4</p><p> 3.4數(shù)字鐘設計的RTL電路…………………………………………… 5</p><p> 4設計步驟 ………………………………………………………………5</p><p>
4、5心得體會………………………………………………………………10</p><p> 6 程序代碼 ………………………………………………………… 10</p><p><b> 摘要:</b></p><p> 人類社會已進入到高度發(fā)達的信息化社會。信息化社會的發(fā)展離不開電子信息產(chǎn)品開發(fā)技術、產(chǎn)品品質的提高和進步。電子信息產(chǎn)品隨著科學技術的
5、進步,其電子器件和設計方法更新?lián)Q代的速度日新月異。實現(xiàn)這種進步的主要原因就是電子設計技術和電子制造技術的發(fā)展,其核心就是電子設計自動化(EDA,Electronics Design Automation)技術,EDA技術的發(fā)展和推廣應用又極大地推動了電子信息產(chǎn)業(yè)的發(fā)展。為保證電子系統(tǒng)設計的速度和質量,適應“第一時間推出產(chǎn)品”的設計要求,EDA技術正逐漸成為不可缺少的一項先進技術和重要工具。目前,在國內電子技術教學和產(chǎn)
6、業(yè)界的技術推廣中已形成“EDA熱”,完全可以說,掌握EDA技術是電子信息類專業(yè)學生、工程技術人員所必備的基本能力和技能。 </p><p> EDA技術在電子系統(tǒng)設計領域越來越普及,本設計主要利用VHDL語言在EDA平臺上設計一個電子數(shù)字鐘,它的計時為24小時小時制,顯示滿刻度為23時59分59秒,另外還具有校時功能和鬧鐘功能??偟某绦蛴蓭讉€各具不同功能的單元模塊程序拼接而成,其中包括分頻程序模塊、時
7、分秒計數(shù)和校時程序模塊、數(shù)據(jù)選擇器程序模塊、顯示程序模塊和例化程序模塊。并且使用QUARTUS II軟件進行電路波形仿真,下載到EDA實驗箱進行驗證。</p><p> 關鍵詞:數(shù)字鐘 EDA VHDL語言 </p><p><b> 一、設計目的</b></p><p> 1、熟練地運用數(shù)字系統(tǒng)的設計方法進行數(shù)字系統(tǒng)設計
8、;</p><p> 2、能進行較復雜的數(shù)字系統(tǒng)設計;</p><p> 3、按要求設計一個數(shù)字鐘。</p><p><b> 二、設計內容</b></p><p> 2.1、設計任務:設計一臺能顯示時、分、秒的數(shù)字鐘。具體要求如下:</p><p> 由實驗箱上的時鐘信號經(jīng)分頻產(chǎn)生秒脈
9、沖;</p><p> 計時計數(shù)器用24進制計時電路;</p><p> 可手動校時,能分別進行時、分的校正;</p><p><b> 整點報時;</b></p><p> 2.2、擴展:設置鬧時功能,當計時計到預定時間時,揚聲器發(fā)出鬧鈴信號,鬧鈴時間為4s,并可提前終止鬧鈴。</p><p
10、> 三、系統(tǒng)方案及設計原理。</p><p><b> 3.1、方案選擇:</b></p><p> 數(shù)字鐘無非就是分頻計數(shù),設計出60進制,24進制計數(shù)器,在這里,秒分計數(shù)是60進制,時計數(shù)是24進制,對1Hz信號進行60分頻也就產(chǎn)生了分計數(shù)脈沖,對1Hz進行60 * 60 分頻(對分60分頻)也就產(chǎn)生了時計數(shù)脈沖,為了方便校時,系統(tǒng)設計時未直接采用實驗
11、箱上的1Hz作為基準時鐘源,而是對65536Hz進行32768分頻產(chǎn)生秒脈沖,8192分頻作為校時與鬧鐘時間設置脈沖,為方便調鬧鐘,采用了數(shù)據(jù)選擇器選擇輸出正常走時或鬧鐘時間。為節(jié)省代碼,數(shù)碼管譯碼工作直接交給了實驗箱自帶的譯碼器,選擇工作模式0。</p><p> 3.2、數(shù)字鐘的基本工作原理:</p><p> 數(shù)字鐘以其顯示時間的直觀性、走時準確性作為一種計時工具,數(shù)字鐘的基本組
12、成部分離不開計數(shù)器,在控制邏輯電路的控制下完成預定的各項功能。數(shù)字鐘的基本原理方框圖如圖1:</p><p><b> 1Hz</b></p><p><b> 5HZ</b></p><p> 圖1 數(shù)字鐘的系統(tǒng)框圖</p><p> 圖3.1數(shù)字鐘實現(xiàn)原理框圖</p>&
13、lt;p> 該系統(tǒng)由振蕩器、分頻器、“時、分、秒”計數(shù)器、譯碼器及顯示器、校時電路、整點報時電路等組成。石英晶體振蕩器和分頻器產(chǎn)生整個系統(tǒng)的時基信號,它直接決定計時系統(tǒng)的精度?!懊胗嫈?shù)器”采用六十進制計數(shù)器,每累計60秒向“分計數(shù)器”進位;“分計數(shù)器”采用六十進制計數(shù)器,每累計60分向“時計數(shù)器”進位;“時計數(shù)器”采用二十四進制計數(shù)器,按照“24翻1”規(guī)律計數(shù)?!皶r、分、秒”計數(shù)器的輸出經(jīng)譯碼器送顯示器顯示。校時電路用來當計時出
14、現(xiàn)誤差時對“時、分、秒”進行校對調整。整點報時(鬧鐘)電路是根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)音頻發(fā)生器實現(xiàn)報時(鬧鈴)。</p><p> 3.3、底層元件接口:</p><p> component hour </p><p> port(rst,carry,en : in std_logic;</p><p> A
15、DJclk,ADJEN : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p><p> decade,unit : out std_logic_vector(3 downto 0));</p><p> end component;</p>
16、<p> component min</p><p> port(rst,carry,en : in std_logic;</p><p> ADJclk,ADJEN : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p&
17、gt;<p> carryout : out std_logic;</p><p> decade,unit : out std_logic_vector(3 downto 0));</p><p> end component;</p><p> component sec</p><p>
18、; port(rst,clk,en : in std_logic;</p><p> ADJEN : in std_logic;</p><p> carryout : out std_logic;</p><p> decade,unit : out std_logic_vector(3 downto 0));&l
19、t;/p><p> end component;</p><p> component alarm</p><p> port(clk,en,ADJclk : in std_logic;</p><p> alarmADJ : in std_logic;</p><p
20、> AlarmEn : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p><p> hour_unit : in std_logic_vector(3 downto 0);</p>
21、<p> hour_decade : in std_logic_vector(3 downto 0);</p><p> min_unit : in std_logic_vector(3 downto 0);</p><p> min_decade : in std_logic_vec
22、tor(3 downto 0);</p><p> ADJhour_unit : out std_logic_vector(3 downto 0);</p><p> ADJhour_decade : out std_logic_vector(3 downto 0);</p><p> ADJmin_unit
23、 : out std_logic_vector(3 downto 0);</p><p> ADJmin_decade : out std_logic_vector(3 downto 0);</p><p> sound : out std_logic);</p><p> end
24、component;</p><p> component PrescalClk </p><p> port(clkin : in std_logic;</p><p> clkout_1Hz : out std_logic;</p><p> clkout_4Hz : out
25、std_logic);</p><p> end component;</p><p> 3.4、數(shù)字鐘設計的RTL電路:</p><p><b> 圖2</b></p><p> 從RTL電路中可以看到,通過綜合后系統(tǒng)模塊劃分為分頻模塊、秒計數(shù)模塊、分計數(shù)模塊、時計數(shù)模塊、鬧鐘模塊,數(shù)據(jù)選擇輸出模塊,由于系統(tǒng)設
26、計時硬件平臺選用的是模式0,顯示部由硬件譯碼。分頻模塊產(chǎn)生正常走時的1Hz頻率與校時用的5Hz頻率,時分秒計數(shù)都可有外部按鍵清零,時分可分別進行校時,鬧鐘模塊可根據(jù)需要設置鬧鈴時間,輸出部分采用了數(shù)據(jù)選擇器,用于選擇輸出正常走時或鬧鐘設置時間。</p><p><b> 四、設計步驟</b></p><p> 步驟1:輸入設計項目和存盤</p>&l
27、t;p> 打開QUARTUSII,單擊“file”菜單,將鼠標移到New Project Wizard 選項單擊則顯示如圖3 </p><p> 圖3 建立 New Project</p><p> 在第一欄選擇或寫入工程文件名,第二、三欄中建立項目名和實體名,工程文件不能包含中文字符,項目名和實體必須保持一致,然后選擇目標器件如圖4</p><p>&
28、lt;b> 圖4選擇沒標器件</b></p><p> 目標器件一定要與實際所用器件一致,最后點擊finish完成彈出圖5</p><p> 圖5建立VHDL文件</p><p> 步驟2:輸入程序并運行編譯;</p><p> 在工具欄中點擊file→new,選擇VHDL File,點擊確定建立VHDL文件,在里
29、面鍵入程序,如圖6 </p><p><b> 圖6 輸入程序</b></p><p> 輸入完程序以后點擊工具欄中的保存,再點擊右方一個紫色的三角符號“”,然后運行程序,如果程序出現(xiàn)錯誤在改正。編譯通過后如圖7</p><p><b> 7 通過編譯</b></p><p><b>
30、; 步驟3:時序仿真:</b></p><p> 1.建立波形文件:選擇File->New,在Other File里選擇Vector Waveform File,單擊OK建立波形文件,在Edit->End Time選項中為仿真設置仿真時間。雙擊Name下的空白處,彈出Insert Nod or Bus對話框,單擊Node Finder如圖7</p><p>
31、圖7 選擇添加結點設置</p><p> 在圖8所示選定各個選擇項。</p><p><b> 圖8 選擇結點</b></p><p> 單擊OK,完成引腳輸入,加上輸入信號后波形文件存盤。</p><p> 2.運行仿真器。在Processing菜單下選擇StartSimulation項,直到Simulator
32、 was successful出現(xiàn),仿真結束。完成波形如圖9所示。</p><p><b> 圖9 仿真波形圖</b></p><p><b> 步驟4:引腳鎖定</b></p><p> 選擇AssignmentsAssignments Editor,鎖定引腳,輸入以后如下圖,設定完成以后再運行一次程序。</
33、p><p><b> 圖10 引腳鎖定</b></p><p><b> 步驟5:編程下載:</b></p><p> 1)首先將下載線把計算機的打印機口與目標板(如開發(fā)板或實驗板)連接好,打開電源</p><p> 2)下載方式設定。選擇ToolsProgrammer選項,跳出下圖左側所示的編
34、程器窗口,然后選擇Hardware Setup硬件設置選項,其窗口圖中左側所示。在其下拉菜單中選ByteBlaster(MV)編程方式,在Model欄選定JTAG模式。然后點擊start按鈕下載,進入下載模式,等待下載完成以后在試驗箱上進行調試檢測是否正確。</p><p><b> 五、心得體會</b></p><p> 經(jīng)過兩周EDA課程設計,使我受益匪淺。這
35、不僅增強了我對EDA設計的興趣,更鞏固了基本的電路設計流程、方法以及技巧。具備了這些基本知識,為今后的自主學習奠定了良好的基礎。在編寫時可以相互借鑒,這樣可以節(jié)省一定的時間,但在一個問題上糾結了很久,現(xiàn)還未明白,為什么一個變量在進程中只能被一個邊沿信號觸發(fā)進行修改,無奈之下選擇了另一種方法,通過一個控制端來進行選頻,以實現(xiàn)快速調時,在鬧鐘的處理上使用了數(shù)據(jù)選擇,設置鬧鈴時數(shù)碼管顯示鬧鐘時間。</p><p>
36、在設計中還是需要注意一些常見的問題,比如實體名、項目名等,還有在編寫VHDL文件時,一些文件名也是需要注意的;在編寫程序的過程中,信號與變量的使用是一個特需要注意的,進程中一個信號不應有多個復制源,信號的復值是在進程結束之時,而變量的復值是立即的,在書寫時容易出錯的地方是,信號的賦值與變量的賦值符號,信號作為全局的聯(lián)絡線,信號往往不允許在多個進程中被賦值,因為進程之間是并行的;整個系統(tǒng)是由多個底層元件組成,底層元件之間的相互連接是通過信
37、號實現(xiàn)。</p><p> 由于時間比較緊,在準備智能車比賽,就沒有挑戰(zhàn)難度高點的題了,但本人對FPGA是挺感興趣的,在今后的學習中我會把握時間好好學學。</p><p> 最后感謝姚老師對我們的指導,使得實驗能夠順利完成!</p><p><b> 六、程序代碼:</b></p><p><b> 1
38、分頻:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity PrescalClk is</p><p>
39、 port(clkin : in std_logic;</p><p> clkout_1Hz : out std_logic;</p><p> clkout_4Hz : out std_logic);</p><p><b> end ;</b></p><p&
40、gt; Architecture bhv of PrescalClk is</p><p><b> begin </b></p><p> process(clkin)</p><p> variable count1 : integer range 0 to 32768;</p><p> variable
41、 count2 : integer range 0 to 8192;</p><p><b> begin </b></p><p> if clkin 'event and clkin='1' then count1 := count1+1;count2:=count2+1;</p><p> if(count1
42、=32768) then clkout_1Hz<='1' ;</p><p> else clkout_1Hz<='0';</p><p><b> end if;</b></p><p> if(count2=8192) then clkout_4Hz<='1';<
43、/p><p> else clkout_4Hz<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> end;
44、</b></p><p><b> 2時計數(shù)模塊</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p>
45、; entity hour is</p><p> port(rst,carry,en : in std_logic;</p><p> ADJclk,ADJEN : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p><p> d
46、ecade,unit : out std_logic_vector(3 downto 0));</p><p><b> end ;</b></p><p> architecture bhv of hour is</p><p> signal clk : std_logic;</p><p>
47、<b> begin</b></p><p> process(carry,ADJ,ADJEN,ADJclk)</p><p><b> begin</b></p><p> if (ADJEN='1' and ADJ="1100" )then clk<=ADJclk;&l
48、t;/p><p> else clk<=carry;</p><p><b> end if;</b></p><p> end process;</p><p> process(rst,en,clk)</p><p> variable unitcount : std_logi
49、c_vector(3 downto 0);</p><p> variable decadecount : std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> if (rst='1') then unitcount:="0000";
50、decadecount:="0000";</p><p> elsif(en='1') then </p><p> if clk 'event and clk='1' then</p><p> if(unitcount<10) then unitcount:=unitcount+1;<
51、;/p><p> else unitcount:="0000";</p><p><b> end if;</b></p><p> if(unitcount=10) then decadecount:=decadecount+1;unitcount:="0000";</p><p&
52、gt;<b> end if;</b></p><p> if(decadecount=2 and unitcount=4) then unitcount:="0000";decadecount:="0000";</p><p><b> end if;</b></p><p>
53、;<b> end if;</b></p><p><b> end if;</b></p><p> decade<=decadecount;</p><p> unit<=unitcount;</p><p> end process;</p><p&g
54、t;<b> end;</b></p><p><b> 3分計數(shù)模塊:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;&l
55、t;/p><p> entity min is</p><p> port(rst,carry,en : in std_logic;</p><p> ADJclk,ADJEN : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0)
56、;</p><p> carryout : out std_logic;</p><p> decade,unit : out std_logic_vector(3 downto 0));</p><p><b> end ;</b></p><p> architecture bh
57、v of min is</p><p> signal clk : std_logic;</p><p><b> begin</b></p><p> process(carry,ADJ,ADJEN,ADJclk)</p><p><b> begin</b><
58、/p><p> if (ADJEN='1' and ADJ="0011" )then clk<=ADJclk;</p><p> else clk<=carry;</p><p><b> end if;</b></p><p> end process;</p&
59、gt;<p> process(rst,en,clk,ADJEN)</p><p> variable unitcount : std_logic_vector(3 downto 0);</p><p> variable decadecount : std_logic_vector(3 downto 0);</p><p><b>
60、; begin</b></p><p> if (rst='1') then unitcount:="0000";decadecount:="0000";</p><p> elsif(en='1') then </p><p> if (clk 'event and
61、 clk='1')then</p><p> if(unitcount<10) then unitcount:=unitcount+1;</p><p> else unitcount:="0000";</p><p><b> end if;</b></p><p>
62、 if(unitcount=10) then decadecount:=decadecount+1; unitcount:="0000";</p><p><b> end if;</b></p><p> if(decadecount=6 and unitcount=0) then unitcount:="0000";de
63、cadecount:="0000";</p><p> if ADJEN='0' then carryout<='1'; -- when ADJEN=1,donot generate carry</p><p> else carryout<='0';</p><p>
64、;<b> end if;</b></p><p> else carryout<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;&
65、lt;/b></p><p> decade<=decadecount;</p><p> unit<=unitcount;</p><p> end process;</p><p><b> end;</b></p><p><b> 4秒計數(shù)模塊:<
66、;/b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity sec is</p><p> port(rst,clk
67、,en : in std_logic;</p><p> ADJEN : in std_logic;</p><p> carryout : out std_logic;</p><p> decade,unit : out std_logic_vector(3 downto 0));</
68、p><p><b> end ;</b></p><p> architecture bhv of sec is</p><p><b> begin</b></p><p> process(rst,en,clk)</p><p> variable unitcoun
69、t : std_logic_vector(3 downto 0);</p><p> variable decadecount : std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> if (rst='1') then unitcount:=&qu
70、ot;0000";decadecount:="0000";</p><p> elsif(en='1') then</p><p> if clk'event and clk='1'then</p><p> if(unitcount<10) then unitcount:=uni
71、tcount+1;</p><p> else unitcount:="0000";</p><p><b> end if;</b></p><p> if(unitcount=10) then decadecount:=decadecount+1; unitcount:="0000";</
72、p><p><b> end if;</b></p><p> if(decadecount=6 and unitcount=0) </p><p> then unitcount:="0000";decadecount:="0000";</p><p> if(ADJEN=&
73、#39;0') then carryout<='1'; -- when ADJEN=1, donot generate carry</p><p> else carryout<='0';</p><p><b> end if;</b></p><p> else c
74、arryout<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> decade<=decadecount;<
75、;/p><p> unit<=unitcount;</p><p> end process;</p><p><b> end;</b></p><p><b> 5鬧鐘模塊:</b></p><p> library ieee;</p><
76、p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity alarm is</p><p> port(clk,en,ADJclk : in std_logic;</p><p> al
77、armADJ : in std_logic;</p><p> AlarmEn : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p><p> hour_unit
78、 : in std_logic_vector(3 downto 0);</p><p> hour_decade : in std_logic_vector(3 downto 0);</p><p> min_unit : in std_logic_vector(3 downto 0);</p>
79、<p> min_decade : in std_logic_vector(3 downto 0);</p><p> ADJhour_unit : out std_logic_vector(3 downto 0);</p><p> ADJhour_decade : out std_logic_ve
80、ctor(3 downto 0);</p><p> ADJmin_unit : out std_logic_vector(3 downto 0);</p><p> ADJmin_decade : out std_logic_vector(3 downto 0);</p><p> sound
81、 : out std_logic);</p><p><b> end;</b></p><p> architecture bhv of alarm is</p><p> signal hour1,hour2,min1,min2 : std_logic_vector(3 downto 0);</p>
82、<p><b> begin</b></p><p> process(en,alarmADJ,ADJ,ADJclk)</p><p> variable hour_decadecounnt,hour_unitcount,min_decadecount,min_unitcount : std_logic_vector(3 downto 0);<
83、/p><p><b> begin </b></p><p> if (en='1' and alarmADJ='1') then </p><p> if ADJclk 'event and ADJclk='1' then </p><p> if ADJ=&
84、quot;1100" then</p><p> if(hour_unitcount<10) then hour_unitcount:=hour_unitcount+1;</p><p> else hour_unitcount:="0000";</p><p><b> end if;</b><
85、;/p><p> if(hour_unitcount=10) then hour_decadecounnt:=hour_decadecounnt+1;hour_unitcount:="0000";</p><p><b> end if;</b></p><p> if(hour_decadecounnt=2 and ho
86、ur_unitcount=4) then hour_decadecounnt:="0000";hour_unitcount:="0000";</p><p><b> end if;</b></p><p> elsif ADJ="0011" then </p><p> if
87、(min_unitcount<10) then min_unitcount:=min_unitcount+1;</p><p> else min_unitcount:="0000";</p><p><b> end if;</b></p><p> if(min_unitcount=10) then min
88、_decadecount:=min_decadecount+1;min_unitcount:="0000";</p><p><b> end if;</b></p><p> if(min_decadecount=6 and min_unitcount=0) then min_decadecount:="0000";min
89、_unitcount:="0000";</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</
90、b></p><p> hour1<=hour_decadecounnt;</p><p> hour2<=hour_unitcount;</p><p> min1<=min_decadecount;</p><p> min2<=min_unitcount;</p><p>
91、 end process;</p><p> process(en,AlarmEn,ADJclk,clk,hour_unit,hour_decade,min_unit,min_decade,hour1,hour2,min1,min2)</p><p> variable count : std_logic_vector(3 downto 0);</p><p>
92、<b> begin</b></p><p> if(en='1' and AlarmEn='1') then </p><p> if(hour_unit=hour2 and hour_decade=hour1 and min_unit=min2 and min_decade=min1) then</p><
93、p> if clk 'event and clk='1' then </p><p> if (count<10) then count:=count+1;</p><p> else sound<='0';</p><p><b> end if;</b></
94、p><p><b> end if;</b></p><p> if(count<10) then sound<= ADJclk;</p><p><b> end if;</b></p><p> else count:="0000";sound <=&
95、#39;0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> ADJhour_decade<=hour1;</p><p> ADJhour_unit<=hour2;</p><p
96、> ADJmin_decade<=min1;</p><p> ADJmin_unit<=min2;</p><p> end process;</p><p><b> end;</b></p><p><b> 6頂層文件;</b></p><p&
97、gt; library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity DigitalClock is</p><p> port(clk,en,rst : in std_log
98、ic;</p><p> ADJEN : in std_logic;</p><p> AlarmEn : in std_logic;</p><p> alarmADJ : in std_logic;</p><p> ADJ : in std_logic_
99、vector(3 downto 0);</p><p> sound : out std_logic;</p><p> hour_unit : out std_logic_vector(3 downto 0);</p><p> hour_decade : out std_logic_vector(3 downto 0);</p>
100、<p> min_unit : out std_logic_vector(3 downto 0);</p><p> min_decade : out std_logic_vector(3 downto 0);</p><p> sec_unit : out std_logic_vector(3 downto 0);</p><p>
101、; sec_decade : out std_logic_vector(3 downto 0);</p><p> dote1 : out std_logic_vector(3 downto 0);</p><p> dote2 : out std_logic_vector(3 downto 0));</p><p><b>
102、; end ;</b></p><p> architecture bhv of DigitalClock is</p><p> component hour </p><p> port(rst,carry,en : in std_logic;</p><p> ADJclk,ADJEN : in std_log
103、ic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p><p> decade,unit : out std_logic_vector(3 downto 0));</p><p> end component;</p><p> component min
104、</p><p> port(rst,carry,en : in std_logic;</p><p> ADJclk,ADJEN : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p><p> carryout
105、 : out std_logic;</p><p> decade,unit : out std_logic_vector(3 downto 0));</p><p> end component;</p><p> component sec</p><p> port(rst,clk,en : in st
106、d_logic;</p><p> ADJEN : in std_logic;</p><p> carryout : out std_logic;</p><p> decade,unit : out std_logic_vector(3 downto 0));</p><p> end c
107、omponent;</p><p> component alarm</p><p> port(clk,en,ADJclk : in std_logic;</p><p> alarmADJ : in std_logic;</p><p> AlarmEn
108、 : in std_logic;</p><p> ADJ : in std_logic_vector(3 downto 0);</p><p> hour_unit : in std_logic_vector(3 downto 0);</p><p> hour_decade
109、 : in std_logic_vector(3 downto 0);</p><p> min_unit : in std_logic_vector(3 downto 0);</p><p> min_decade : in std_logic_vector(3 downto 0);</p>
110、<p> ADJhour_unit : out std_logic_vector(3 downto 0);</p><p> ADJhour_decade : out std_logic_vector(3 downto 0);</p><p> ADJmin_unit : out std_logic_
111、vector(3 downto 0);</p><p> ADJmin_decade : out std_logic_vector(3 downto 0);</p><p> sound : out std_logic);</p><p> end component;</p><
112、p> component PrescalClk </p><p> port(clkin : in std_logic;</p><p> clkout_1Hz : out std_logic;</p><p> clkout_4Hz : out std_logic);</p><
113、;p> end component;</p><p> signal carry1,carry2,clk_1Hz,clk_4Hz : std_logic;</p><p> signal hour1,hour2,min1,min2 ,ADJhour1,ADJhour2,ADJmin1,ADJmin2 : std_logic_vector(3 downto 0);</p&g
114、t;<p><b> begin</b></p><p> U1 : hour port map(rst=>rst,ADJclk=>clk_4Hz,en=>en,carry=>carry1,ADJEN=>ADJEN,ADJ=>ADJ,decade=>hour1,unit=>hour2);</p><p>
115、; U2 : min port map(rst=>rst,ADJclk=>clk_4Hz,en=>en,carry=>carry2,carryout=>carry1,ADJEN=>ADJEN,ADJ=>ADJ,decade=>min1,unit=>min2);</p><p> U3 : sec port map(rst=>rst,clk=>
116、;clk_1Hz,en=>en,carryout=>carry2,decade=>sec_decade,unit=>sec_unit,ADJEN=>ADJEN);</p><p> U4 : alarm port map(clk=>clk_1Hz,en=>en,ADJclk=>clk_4Hz,alarmADJ=>alarmADJ,AlarmEn=>Al
117、armEn,ADJ=>ADJ,</p><p> hour_unit=>hour2,hour_decade=>hour1,min_unit=>min2,min_decade=>min1,</p><p> ADJhour_decade=>ADJhour1,ADJhour_unit=>ADJhour2,ADJmin_decade=>ADJm
118、in1,ADJmin_unit=>ADJmin2 ,sound=>sound);</p><p> U5 : PrescalClk port map(clkin=>clk,clkout_1Hz=>clk_1Hz,clkout_4Hz=>clk_4Hz);</p><p> process(hour1,hour2,min1,min2,alarmADJ,ADJ
119、hour1,ADJhour2,ADJmin1,ADJmin2)</p><p><b> begin</b></p><p> if(alarmADJ='0') then</p><p> hour_decade<=hour1;</p><p> hour_unit<=hour2;&l
120、t;/p><p> min_decade<=min1;</p><p> min_unit<=min2;</p><p><b> else</b></p><p> hour_decade<=ADJhour1;</p><p> hour_unit<=ADJhour
121、2;</p><p> min_decade<=ADJmin1;</p><p> min_unit<=ADJmin2;</p><p><b> end if;</b></p><p> dote1<="1010";</p><p> dote2&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設計報告--數(shù)字鐘
- eda課程設計報告---數(shù)字鐘設計
- eda數(shù)字鐘課程設計
- 數(shù)字鐘--eda課程設計
- eda數(shù)字鐘課程設計
- eda課程數(shù)字鐘設計報告
- eda課程設計——多功能數(shù)字鐘
- eda數(shù)字鐘設計報告
- eda實現(xiàn)多功能數(shù)字鐘課程設計
- eda課程設計報告--基于vhdl的數(shù)字鐘的設計
- eda課程設計---基于fpga的數(shù)字鐘設計
- eda數(shù)字鐘課程設計--用vhdl語言實現(xiàn)數(shù)字鐘的設計
- eda課程設計--數(shù)字鐘的設計與制作
- 數(shù)字鐘課程設計報告
- 數(shù)字鐘課程設計報告
- 數(shù)字鐘課程設計報告
- 數(shù)字鐘課程設計報告
- EDA課程設計--數(shù)字鐘的設計與制作.doc
- 數(shù)字鐘課程設計報告(正文)
- 數(shù)字邏輯課程設計報告---數(shù)字鐘
評論
0/150
提交評論