EDA實習報告

2021-09-28 09:13:50 字數 4968 閱讀 3970

貴州師範大學學生

實習報告

科目:eda實習

專業: 電氣工程及其自動化

班級: 10電氣

姓名: 李啟應

學號: 101401010202

實驗專案名稱:數字電子鐘的設計

實驗專案性質:普通試驗

所屬課程名稱:vhdl程式設計

一、 實驗目的

1 學習 vhdl語言的一些基本特點。

2 掌握vhdl程式的基本結構。

3掌握vhdl程式設計方法。

4 要能夠用vhdl語言讀懂並編寫eda程式,對eda設計的總體框架能有較好的把握,掌握各模組的呼叫方式。

二、 實驗內容和要求

設計乙個數字時鐘,顯示時(2位),分(2位),秒(2位),具體要求是:具有時分秒計數顯示功能,以24小時迴圈計時;數碼管動態顯示時,分,秒;具有清零功能。

在軟體工具平台上,進行vhdl語言的各模組程式設計輸入、編譯實現和**驗證。

三、 實驗主要儀器裝置和材料

計算機,開發環境max-plusii,zy11eda實驗系統,vhdl語言。

四、 實驗方法、步驟及結果測試

1、 設計思路:

數字鐘的主體是計數器,它記錄並顯示接收到的秒脈衝個數,其中秒和分位60進製計數器,小時為24進製計數器,分別產生3位bcd碼。bcd碼經解碼,驅動後接數碼顯示電路。

根據實驗要求,將設計分為5個主要部分,時功能模組、分功能模組、秒功能模組、掃瞄器功能模組和7段led功能模組。 在時、分、秒模組中,包括復位和預置數,其主要思路如下:

秒鐘的模組:設計乙個60進製的計數器,以clk為其時鐘訊號,每60個clk後產生乙個進製訊號cf給分鐘模組,作為分鐘程序的響應訊號。

秒鐘模組vhdl程式見附錄1:

**波形如下:

封裝如下圖:

分鐘的模組:同理於秒鐘的模組,設計乙個60進製的計數器,以cfm為其時鐘訊號,每60個cfm後產生乙個進製訊號cfm給小時模組,作為小時模組程序的響應訊號。

分鐘模組vhdl程式見附錄二:

**波形如下:

封裝如下圖:

小時的模組:為24進製計數器,在分的進製訊號cfm的激發下計數,從0到23的時候產生乙個訊號cfh,全部清0,重新開始計時。

小時模組vhdl程式見附錄三:

**波形如下:

封裝如下圖:

掃瞄器模組:在掃瞄器內部,有乙個3-8解碼器的片選訊號,當3-8解碼器的片選訊號為000時,片選訊號選中7段led模組中的秒的個位,當3-8解碼器的片選訊號為001時,片選訊號選中7段led模組中的秒的十位,當3-8解碼器的片選訊號為010時,片選訊號選中7段led模組中的分的個位,當3-8解碼器的片選訊號為011時,片選訊號選中7段led模組中的分的十位,當3-8解碼器的片選訊號為100時,片選訊號選中7段led模組中的時的個位,當3-8解碼器的片選訊號為101時,片選訊號選中7段led模組中的時的十位,就這樣動態掃瞄,當輸入的時鐘訊號頻率很高的時候,就形成了我們的時鐘。

掃瞄器模組vhdl程式見附錄四:

**波形如下:

封裝如下圖:

7段led模組:根據動態掃瞄器的片選訊號來依次點亮我們所需的時間。

7段led模組vhdl程式見附錄五:

**波形如下:

封裝如下圖:

綜合以上5大模組,把它們用線連線起來就得到我們的總的電路圖:如下圖所示:

其工作原理為:掃瞄器3-8解碼器的片選訊號根據時分秒的輸入選中7段led模組,然後再由時分秒中產生的3位bcd碼來輸出秒的個位,十位、時的個位,十位、小時的個位,十位。

4.總結:

在實驗這兩周的時間裡,我們做過dc觸發器、dq觸發器、3-8解碼器、二選一電路和四選一電路等,最後綜合做了數字時鐘電路,通過這次實習,我對用vhdl來程式設計有了更深的了解,在要程式設計的時候,我學會了分模組進行,因為一開始的時候設計乙個時鐘系統比較麻煩,沒有分模組之前總是會有差錯,而之後思路就會比較清晰,有明確的方案,在對照書本裡的程式設計規則與語句,就完成了這次的設計,總之就是獲益良多。

附錄1:秒鐘模組vhdl程式

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity second is

port(clk,reset:in std_logic;

cf:out std_logic;

second1_out:out std_logic_vector(3 downto 0);

second10_out:out std_logic_vector(2 downto 0));

end entity second;

architecture one of second is

signal second1n:std_logic_vector(3 downto 0);

signal second10n:std_logic_vector(2 downto 0);

begin

second1_out<=second1n;

second10_out<=second10n;

process(clk,reset)

begin

if(reset='1') then

second1n<="0000";

second10n<="000";

elsif(clk' event and clk='1') then

if(second1n="1001")then

second1n<="0000";

if(second10n="101")then

second10n<="000";

cf<='1';

else second10n<=second10n+1;

end if;

else second1n<=second1n+1;

end if;

end if;

end process;

end architecture one;

附錄二:分鐘模組vhdl程式

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity minute is

port(clk,reset:in std_logic;

cf:out std_logic;

minute1_out:out std_logic_vector(3 downto 0);

minute10_out:out std_logic_vector(2 downto 0));

end entity minute;

architecture one of minute is

signal minute1n:std_logic_vector(3 downto 0);

signal minute10n:std_logic_vector(2 downto 0);

begin

minute1_out<=minute1n;

minute10_out<=minute10n;

process(clk,reset)

begin

if(reset='1') then

minute1n<="0000";

minute10n<="000";

elsif(clk' event and clk='1') then

if(minute1n="1001")then

minute1n<="0000";

if(minute10n="101")then

minute10n<="000";

cf<='1';

else minute10n<=minute10n+1;

end if;

else minute1n<=minute1n+1;

end if;

end if;

end process;

end architecture one;

附錄三:小時模組vhdl程式

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity hour is

port(clk,reset:in std_logic;

hour1_out:out std_logic_vector(3 downto 0);

hour10_out:out std_logic_vector(1 downto 0));

end entity hour;

architecture one of hour is

signal hour1n:std_logic_vector(3 downto 0);

signal hour10n:std_logic_vector(1 downto 0);

begin

hour1_out<=hour1n;

hour10_out<=hour10n;

process(clk,reset)

begin

if(reset='1') then

hour1n<="0000";

hour10n<="00";

elsif(clk' event and clk='1') then

if(hour1n="1001"or(hour1n="0011"and hour10n="0010"))then

hour1n<="0000";

if(hour10n="10")then

hour10n<="00";

else hour10n<=hour10n+1;

end if;

else hour1n<=hour1n+1;

end if;

end if;

end process;

end architecture one;

附錄四:掃瞄器模組vhdl程式

library ieee;

EDA設計報告

實驗一單級放大電路 1 實驗目的 1 掌握放大電路靜態工作點的調整和測試方法 2 掌握放大路動態引數的測試方法 3 觀察靜態工作點的選擇對輸出波形及電壓放大倍數的影響。2.實驗內容 1 設計乙個分壓偏置的單管電壓放大電路,要求訊號源頻率5khz 峰值10mv 負載電阻5.1k 電壓增益大於50。2 ...

EDA實驗報告

張佳興2220131738 電氣工程及其自動化1班 1 verilog語言反應硬體特性舉例 1.module cc clk,en,cout input output,這三個語句用verilog語言定義了乙個邏輯器件,module後邊括號內為埠名稱,每個埠都對應硬體的乙個引腳,引腳的輸入輸出性質都由i...

EDA實驗報告

lcd模組介面電路設計 八行顯示 課程名稱 eda技術 專業班級通訊工程一班 學號 201009110122 姓名於振超 一 實驗目的 1.熟悉quartus ii軟體的使用及設計流程 2.用vhdl編寫 源程式並檢測脈衝的存在 二 實驗器材 pc機一台 紅色颶風二代開發板 usb線一根 usb b...