電子鐘
組員
呂衛偉:200840720126
張奎:200840830133
侯從彬:200840830133
萬遠程:200840830133
李傳迪:200840830133
楊占勝:200840830133
指導教師:陳衛兵
壹、電子鐘的設計原理:
電子鐘主要有四個模塊組成: 掃描電路、計數模塊電路、BCD
碼轉換電路、顯示器驅動電路。
由CP送入1HZ的時鐘信號,並輸入計數60的分頻計秒電路。在計數至6o瞬間. 進位至計數60的分頻計分分頻使分頻計分電路加1。而計秒電路也消除為0重新再計秒。計分電路與計時電路功能同上。計數輸出的二進制數通過BCD碼轉換電路將其轉為BCD碼,再通過掃描電路選擇輸出的BCD碼。送至顯示驅動電路.再將其結果轉換成相應的十進制數在七段數碼顯示管上顯示.並通過掃描電路控制數碼管的顯示。最終在數碼顯示管上可以看到秒,分,時的顯示結果
二、設計實現
本程序總***有十二個部分依次是產生脈沖信號、60秒計數器、60分計數器、24時計數器、毫秒計數器、秒計數器、月份判斷、年月日。
設計過程:仿真圖和源程序
(1).秒鐘模塊
秒是這次電子鐘設計的最底層模塊.其核心是壹個60進制計數器,以外來時鐘信號作為其觸發時鐘信號,當外來信號進入clk時鐘信號端,其內部的60進制計數器便開始工作,對信號源進行計數.計數結果由count輸出至數碼管顯示秒鐘時間.當計數到60時,其值置零,並向外輸出壹個進位信號C,這個進位信號便為下個分鐘模塊的輸入時鐘信號
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity miao is
port(rst,clk:in std_logic;
d:in std_logic_vector(1 downto 0);
clk1:out std_logic);
end miao;
architecture do of miao is
signal d1:std_logic_vector(1 downto 0);
begin
process(clk,d)
begin
if rst='1' then
d1<="00";
ELSif clk'event and clk='1'then
if d1="11"then
d1<=d;clk1<='1';
else d1<=d1+1; clk1<='0';
end if;
end if;
end process;
end do;
(2).分鐘模塊
分鐘模塊核心也是壹個60進制計數器,其功能的實現是將秒模塊的進位信號進行計數,計數結果由dout輸至數碼管顯示,當計數至60是數值置零,並向外輸出進位信號c.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fen is
port(zs1,clk2,rst1:in std_logic;
d1: in std_logic_vector(5 downto 0);
fe :out std_logic_vector(5 downto 0);
clk3:out std_logic);
end fen;
architecture do of fen is
signal d0:std_logic_vector(5 downto 0);
begin
process(clk2,d1,zs1,rst1)
begin
if rst1='1'then
d0<="000000";
elsif clk2'event and clk2='1'then
if d0="111111"then
clk3<='1';d0<="000000";
elsif zs1='1'then
d0<=d1;
else d0<=d0+1;clk3<='0';
end if;
end if;
end process;
fe<=d0;
end do;
(3)時、星期計數模塊
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity shi is
port(clk5 :in std_logic;
xs:out std_logic_vector(4 downto 0);
xinqi:out std_logic_vector(2 downto 0));
end shi;
architecture do of shi is
signal d3:std_logic_vector(4 downto 0);
signal d4:std_logic_vector(2 downto 0);
signal clk6:std_logic;
begin
r1:process(clk5)
begin
if clk5'event and clk5='1'then
if d3="11000"then
d3<="00000";clk6<='1';
else d3<=d3+1;clk6<='0';
end if;
end if;
end process r1;
r2: process(clk6)
begin
if clk6'event and clk6='1'then
if d4="111"then
d4<="001";
else d4<=d4+1;
end if;
end if;
end process r2;
xs<=d3;xinqi<=d4;
end do;
(4)年月日計數
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity haos is
port(clk8,zr,zy:in std_logic;
g2:in std_logic_vector(4 downto 0);
g1: in std_logic_vector(3 downto 0);
ri :out std_logic_vector(4 downto 0);
yue: out std_logic_vector(3 downto 0));
end haos;
architecture do of haos is
signal clk9:std_logic;
signal w1:std_logic_vector(4 downto 0);
signal w2:std_logic_vector(3 downto 0);
begin
r1: process(clk8,zr,g2)
begin
if zr='1'then
w1<=g2;
elsif clk8'event and clk8='1'then
if w1="11110"then
w1<="00001";clk9<='1';
else w1<=w1+1;clk9<='0';
end if;
end if;
end process r1;
r2:process(clk9)
begin
if zy='1'then
w2<=g1;
elsif clk9'event and clk9='1'then
if w2="1100"then
w2<="0001";
else w2<=w2+1;
end if;
end if;
end process r2;
ri<=w1;yue<=w2;
end do;
最後將這幾個模塊(GDF)連接壹起就可以了.
根據實際情況做引腳鎖定,引腳表見附錄。
課程設計心得
設計語言主要是采用VHDL語言的自頂向下的設計方法。EDA中,自頂向下的設計方法,就是在整個設計流程中各設計環節逐步求精的過程,應用VHDL運行自頂向下的設計,就是使用VHDL模型在所有綜合級別上對硬件進行說明、建模和仿真測試。頂層文件采用了原理圖的方法設計,使各模塊之間的層次關系清晰。
在多功能電子鐘實際設計過程中,所有的模塊都是通過不同進制的計數器來實現其主要功能的,各模塊之間是通過進位信號連接在壹起的。前壹級的進位信號作為下壹級的計數clk信號,通過層次關系使設計思路清晰壹開始由於程序的設計考慮置位調整。沒有好的思路,走了不少彎路。後來(有人)想到了在程序裏設置總控制端,於是解決了問題。和同學的合作使我的程序更加優化。
通過這次課設,也給我帶來以下壹些收獲:
1、 進壹步熟悉maxplus II軟件的使用和操作方法,以及硬件實現時的下載方法與運行方法;
2、 對VHDL語言的自頂向下設計方法有了進壹步的認識;在底層文件具備的條件下,使用原理圖可以使設置更加簡單。使程序清晰,增加可讀性。
3、 鍛煉了我獨立思考和解決問題的能力,也認識到團隊合作的重要性。
4、 熟悉了寫電子設計試驗報告的方法,為寫畢業設計論文奠定了壹定的基礎。
5、 當然本次課程設計也存在壹些不足之處,月的功能沒有設置好,很多擴展功能沒有實現,比如說秒表,鬧鈴等等
謝辭
首先,在這裏感謝學校給我們安排了這次課設,使我們有壹個可以自己動手的機會,通過動手,進壹步熟悉自己所學的理論知識,體會自己動手得出結果的那種感覺。
再次,在這要感謝我們的指導老師,陳衛兵老師和實驗室老師在我們的實踐過程中不提自己的辛苦,耐心回答我們所問的所有問題,幫助我們解決壹些程序和調試,在這表示感謝!
感謝這次課程設計中給我幫助的同學,是妳們的幫助,我才順利的完成了課程設計任務。
謝謝妳們的幫助!
參考文獻
[1]盧毅.賴傑. VHDL與數字電路設計. 北京:科學出版社, 2001
[2]潘松. VHDL使用教程. 成都:電子科技出版社,2000
[3]黃繼業. EDA技術實用教程.科學出版社,2002
[4]徐誌軍.CPLD/FPGA的開發與應用.北京電子工業出版社,2002
[5]曾繁泰,侯亞寧,崔元明.可編程器件應用導論,2001