當前位置:編程學習大全網 - 源碼下載 - VHDL數字時鐘完整程序代碼(要求要有元件例化,並且有按鍵消抖),謝謝啦啦啦啦

VHDL數字時鐘完整程序代碼(要求要有元件例化,並且有按鍵消抖),謝謝啦啦啦啦

圖11

程序如下:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity xuan21 is

Port ( alarm,a,b: in std_logic;

y:out std_logic);

end xuan21 ;

architecture one of xuan21 is

begin

process(alarm,a,b)

begin

if alarm='0' then y<=a;else y<=b;

end if;

end process;

end one;

仿真波形如下圖12:

圖12

(2)三位二選壹:

模塊圖如圖13。用以進行正常計時時間與鬧鈴時間顯示的選擇,alarm輸入為按鍵。當alarm按鍵未曾按下時二選壹選擇器會選擇輸出顯示正常的計時結果,否則當alarm按鍵按下時選擇器將選擇輸出顯示鬧鈴時間顯示。

圖13

程序如下:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity x213 is

Port ( alarm : in std_logic;

y:out std_logic_vector(3 downto 0);

a,b: in std_logic_vector(3 downto 0));

end x213;

architecture one of x213 is

begin

process(alarm,a,b)

begin

if alarm='0' then y<=a;else y<=b;

end if;

end process;

end one;

仿真結果如下圖14:

圖14

8、整點報時及鬧時:

模塊圖如圖15。在59分51秒、53秒、55秒、57秒給揚聲器賦以低音512Hz信號,在59分59秒給揚聲器賦以高音1024Hz信號,音響持續1秒鐘,在1024Hz音響結束時刻為整點。當系統時間與鬧鈴時間相同時給揚聲器賦以高音1024Hz信號。鬧時時間為壹分鐘。

圖15

程序如下:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity voice is

Port ( hou1,huo0,min1,min0,sec1,sec0,hh,hl,mh,ml: std_logic_vector(3 downto 0);

in_1000,in_500:in std_logic;

q : out std_logic);

end voice;

architecture one of voice is

begin

process(min1,min0,sec1,sec0)

begin

if min1="0101" and min0="1001" and sec1="0101" then

if sec0="0001" or sec0="0011" or sec0="0101" or sec0="0111"

then q<=in_500;

elsif sec1="0101" and sec0="1001" then q<=in_1000;

else q<='0';

end if;

else q<='0';

end if;

if min1=mh and min0=ml and hou1=hh and huo0=hl then

q<=in_1000;

end if;

end process;

end one;

仿真波形如下圖16

圖16

9、頂層原理圖:

三、感想

通過這次設計,既復習了以前所學的知識,也進壹步加深了對EDA的了解,讓我對它有了更加濃厚的興趣。特別是當每壹個子模塊編寫調試成功時,心裏特別的開心。但是在畫頂層原理圖時,遇到了不少問題,最大的問題就是根本沒有把各個模塊的VHD文件以及生成的器件都全部放在頂層文件的文件夾內,還有就是程序設計的時候考慮的不夠全面,沒有聯系著各個模式以及實驗板的情況來編寫程序,以至於多考慮編寫了譯碼電路而浪費了很多時間。在波形仿真時,也遇到了壹點困難,想要的結果不能在波形上得到正確的顯示

:在分頻模塊中,設定輸入的時鐘信號後,卻只有二分頻的結果,其余三個分頻始終沒反應。後來,在數十次的調試之後,才發現是因為規定的信號量範圍太大且信號的初始值隨機,從而不能得到所要的結果。還有的仿真圖根本就不出波形,怎麽調節都不管用,後來才知道原來是路徑不正確,路徑中不可以有漢字。真是細節決定成敗啊!總的來說,這次設計的數字鐘還是比較成功的,有點小小的成就感,終於覺得平時所學的知識有了實用的價值,達到了理論與實際相結合的目的,不僅學到了不少知識,而且鍛煉了自己的能力,使自己對以後的路有了更加清楚的認識,同時,對未來有了更多的信心。

四、

參考資料:

1、潘松,王國棟,VHDL實用教程〔M〕.成都:電子科技大學出版社,2000.(1)

2、崔建明主編,電工電子EDA仿真技術北京:高等教育出版社,2004

3、李衍編著,EDA技術入門與提高王行西安:西安電子科技大學出版社,2005

4、侯繼紅,李向東主編,EDA實用技術教程北京:中國電力出版社,2004

5、沈明山編著,EDA技術及可編程器件應用實訓北京:科學出版社,2004

6、侯伯亨等,VHDL硬件描述語言與數字邏輯電路設計西安: 西安電子科技大學出版社,1997

7、辛春艷編著,VHDL硬件描述語言北京:國防工業出版社,2002 就這些

  • 上一篇:(高分)如何把壹個手機的幾個java文件合並成壹個java文件?
  • 下一篇:誰哪有《納尼亞傳奇》的下載地址?
  • copyright 2024編程學習大全網