• 方案介紹
    • 二?? 設計流程:
    • 三 部分VHDL程序
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

EDA程序設計-萬年歷設計(VHDL語言)

2024/10/04
2336
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

有需要資料的可了解一下.docx

共1個文件

一?? 課程設計的目的及意義

1.0設計目的

本次設計的目的就是在掌握計算機組成原理理論的基礎上,了解EDA技術,掌握VHDL硬件描述語言的設計方法和思想,通過學習的VHDL語言結合電子電路的設計知識理論聯(lián)系實際,掌握所學的課程知識,例如本課程設計就是基于所學的計算機原理中的數(shù)控分頻器基礎之上的,通過本課程設計,達到鞏固和綜合運用計算機原理中的知識,理論聯(lián)系實際,鞏固所學理論知識,并且提高自己通過所學理論分析、解決計算機實際問題的能力。進一步加深對計算機原理以及數(shù)字電路應用技術方面的了解與認識,進一步熟悉數(shù)字電路系統(tǒng)設計、制作與調試的方法和步驟

1.1設計意義

??鞏固所學課堂知識,理論聯(lián)系實際,提高分析、解決計算機技術實際問題的獨立工作能力。為了進一步了解計算機工作組成原理與系統(tǒng)結構,深入學習EDA技術,用VHDL技術,用VHDL語言去控制將會使我們對本專業(yè)知識可以更好地掌握。熟悉QUARUS II軟件的應用。熟悉EDA實驗開發(fā)系統(tǒng)的基本使用。學習用VHDL基本單元電路的時間應用。進一步掌握EDA的多層次設計方法

1.2 設計要求

    1. Quartus中編寫VHDL程序實現(xiàn)年、月、日、時、分、秒各模塊的功能。

(2) 將各模塊在原理圖中連接起來實現(xiàn)百年歷計時功能。

(3) 將年、月、日和時、分、秒兩種模式分別在試驗箱模式7下顯示,并設置鍵8為模式的切換鍵,鍵3 為調整數(shù)鍵,鍵6為在當前模式下切換調整位鍵。將各端口引腳綁定好并下載到實驗箱實現(xiàn)其功能,觀察是否能實現(xiàn)相應功能效果,如是否可以進位,是否能判斷閏年等等。

二?? 設計流程:

?2.0? 萬年歷原理

秒、分是60進制,時是24進制,日31天由月1.3.5.7.8.10.12控制,日28/29由2月和潤年控制,日30由月4.6.9.11控制。原理如下圖:

2.1 原理框圖

根據(jù)實驗要求,截得實驗原理框圖如下:

2.2 原理框圖中各子模塊的VHDL語言表述及生成模塊框圖:

2.3 VHDL設計流程

(1)設計輸入根據(jù)電路設計所提出的要求,將程序輸入到VHDL編輯器中區(qū)編輯。

(2)功能及模擬用VHDL,模擬器對編輯后的程序進行模擬,如果達不到設計要求,則可以重新修改程序,直到通過功能模擬。

(3)邏輯綜合與優(yōu)化,將通過功能模擬的程序放到VHDL編譯器中,進行邏輯、綜合與優(yōu)化。

三 部分VHDL程序

3.0? 60進制計數(shù)器

library ieee;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT60 IS

PORT(CLK:IN STD_LOGIC;

CQ1,CQ2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);

COUT:OUT STD_LOGIC);

END CNT60;

ARCHITECTURE behav OF CNT60 IS

BEGIN

PROCESS(CLK)

VARIABLE Q1,Q2: STD_LOGIC_VECTOR (3 DOWNTO 0);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

Q1:=Q1+1;

IF Q1>9 THEN Q1:="0000";Q2:=Q2+1;

END;

3.1? ?24進制計數(shù)器

library ieee;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY cnt24 IS

PORT(CLK:IN STD_LOGIC;

CQ1,CQ2:OUT STD_LOGIC_VECTOR (3 DOWNTO 0);

PROCESS(CLK)

VARIABLE Q1,Q2: STD_LOGIC_VECTOR (3 DOWNTO 0);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

Q1:=Q1+1;

IF Q1>9 THEN Q1:="0000";Q2:=Q2+1;

END IF;

IF Q2=2? AND Q1=4 THEN Q1:="0000";Q2:="0000";COUT<='1';

ELSE COUT<='0';

END IF;

END IF;

CQ1<=Q1;CQ2<=Q2;

END PROCESS;

END;

3.2 天計數(shù)模塊

Library ieee;

USE IEEE.STD_LOGIC _UNSIGNED.ALL;

USE IEEE.STD_LOGIC _1164.all;

Entity day is

Port( clk : in std_logic;

a,b : in std_logic;

T1,T2 : out std_logic_vector(3 downto 0);

PROCESS(clk,a,b)

begin

IF CLK'EVENT AND CLK='1' THEN

Q1<=Q1+1;

IF Q1=9 THEN Q1<="0000";Q2<=Q2+1;

end if;

ab<=a&b;

case ab is

when"00"=>

if Q2=3 AND Q1=1 THEN

  • 有需要資料的可了解一下.docx
    下載

相關推薦