班級:學號:班內序號:
姓名:2014/11/7
目錄設計課題 3
系統設計 4
設計思路 4
總體框圖 4
分塊介紹 7
**波形 9
源程式 11
功能說明 29
資源利用情況 29
故障及問題分析 30
總結和結論 30
簡易迷宮設計
設計並實現乙個簡易迷宮遊戲機。
基本要求:
1、用 8×8 點陣進行遊戲顯示。
2、迷宮遊戲如圖 1 所示,採用雙色點陣顯示,其中紅色led 為迷宮牆壁,綠色led
表示人物。通過btn0~btn3 四個按鍵控制迷宮中的人物進行上下左右移動,使人
物從起始點出發,走到迷宮的出口,遊戲結束。
3、普通計時模式:通過按鍵btn7 啟動遊戲,必須在30 秒內找到出口,否則遊戲失敗,
用兩個數碼管進行倒計時顯示。遊戲勝利或者失敗均要在8×8 點陣上有相應的畫面
出現。4、迷宮中的人物在行走過程中,如果碰到牆壁,保持原地不動。
提高要求:
1、多種迷宮地圖可以選擇。
2、在計時的基礎上增加計步的功能,每按一次控制按鍵步數加1,碰壁不計算步數,
計步結果用數碼管顯示。
3、為遊戲增加提示**,在不同時間段採用不同頻率的訊號控制蜂鳴器發聲報警。
4、增加其他遊戲模式。
5、自擬其它功能。
§1.設計思路
程式採用分模組設計的思路,將具體任務分解成為不同的功能模組,利用component編寫,再通過主程式通過port map語句呼叫連線。主程式中包括各個子元件的定義及連線語句,子程式分別為分頻器模組、防抖模組、點陣顯示模組、迷宮人物座標控制模組、倒計時控制模組、數碼管選擇模組和數碼管顯示模組。
§2.總體框圖
(1)頂層框圖
(2)對外介面
clk_in
start
reset
round
(3)邏輯劃分框圖
seg7
catrowred,green sech,secl count
out_state
clk_out1(點陣掃瞄)
start clk_out3(1hz)
reset k_l,r,u,dclk_out2(控制)
clk_out4(200hzclk_in
(4)asm圖 reset=1
stuck=0 and
m_l/r/u/d=1
start=1/reset=1
win=1
reset=1
stuck=0 and
m_l/r/u/d=1 stuck=1
stuck=1 or time_up=1
m_l/r/u/d=0
reset=1
time_up=1
stuck=1/
m_l/r/u/d=0
reset=1
(5)控制器邏輯流程圖
nyyynnynyn y
nyn n
n n
y y
§3.分塊介紹
(1)分頻器
component fenpin --divide the frequency to the wanted
port(clk_in:in std_logic;
clk_out1:out std_logic;
clk_out2:out std_logic;
clk_out3:out std_logic;
clk_out4:out std_logic);
end component;
輸入時鐘為50mhz,通過分頻輸出10khz(用於點陣掃瞄),10hz(用於點陣控制),1hz(用來計數),200hz(用於防抖設計)。
(2)迷宮控制器
component control --logically control the labyrinthine
port(round:in std_logic;
clk_1:in std_logic;
p_rst:in std_logic;
p_start:in std_logic;
m_left,m_right,m_up,m_down:in std_logic;
out_state:out std_logic;
out_y_g:out std_logic_vector(3 downto 0);
out_x_g:out std_logic_vector(3 downto 0));
end component;
通過按鍵輸入的高低電平來控制迷宮點陣。
當選關撥碼開關為低電平時,執行迷宮地圖1,復位按鍵重置初始座標,當各個方向按鍵為高電平時,判斷那些座標的下一位置是牆壁,通過if語句是座標點位於當前位置不移動,反之則向規定方向移動一步。當座標位於出口時,勝利輸出狀態為1。
當選關撥碼開關為高電平時,執行迷宮地圖2,其他基本同上。
(3)點陣顯示控制器
component show_control --control the sweep of rectangle
port(
clk_2:in std_logic;
s_start:in std_logic;
round:in std_logic;
s_reset:in std_logic;
time_up:in std_logic;
win:in std_logic;
x_g:in std_logic_vector(3 downto 0);
y_g:in std_logic_vector(3 downto 0);
row:out std_logic_vector(7 downto 0);
red:out std_logic_vector(7 downto 0);
green:out std_logic_vector(7 downto 0));
end component;
當開始撥碼開關為低電平時,點陣顯示遊戲初始介面go;為高電平時,根據選關開關狀態,顯示迷宮1或2。
當time_up=1時,遊戲失敗,顯示破碎的心;當time_up=0時,遊戲正常進行。(由計時器提供)
當狀態win=1時,顯示完整的心;當win=0時,遊戲正常進行。(由迷宮控制器提供)
為保證點陣亮度一致,選擇行掃瞄,通過向量row中某路選通(即電平為1),顯示該行點陣,並由高頻時鐘訊號掃瞄,產生視覺停留效果,得到點陣顯示。
(4)計時器
component led_control --control the countdown
port(res:in std_logic;
start:in std_logic;
win:in std_logic;
clk_in:in std_logic;
state_out:out std_logic;
sec_outl:out std_logic_vector(3 downto 0);
sec_outh:out std_logic_vector(3 downto 0));
end component;
由乙個從0到30的變數計數,初始值為30,每當遇到1hz的時鐘上公升沿時,計數器減一,直到計數器減為0,使失敗狀態為1,或到輸入勝利狀態為1,停止計時。
由sec_outl,sec_outh將時間的高低位分開,以便與分別控制兩個數碼管,顯示倒計時。
(5)數碼管選擇器
component led_select --select data in digital blinking
port(sech,secl:in std_logic_vector(3 downto 0);
clk_select:in std_logic;
q:out std_logic_vector(5 downto 0);
dataout:out std_logic_vector(3 downto 0));
end component;
30s計時的高低位分別對應不同的cat管腳,使相鄰的兩個數碼管顯示對應數字,並將計數值提供給數碼管顯示器。
(6)數碼管控制器
component led --segment decoder
port(count:in std_logic_vector(3 downto 0);
seg7:out std_logic_vector(6 downto 0));
end component;
不同的計數值對應不同數碼管管腳的高低電平,是數碼管顯示正確的數字。
(7)防抖
component shake_prv is --shake prevention
port(
clk : in std_logic;
btn_in : in std_logic;
btn_out : out std_logic
);end component;
通過低頻時鐘訊號(200hz)將判斷按鍵按下的時間延長以達到防抖的效果。
**波形
開始介面(go)start=1,依次行掃瞄row,點陣紅色顯示go。
失敗介面(破碎的心)time_up=1,依次行掃瞄row,點陣紅色顯示broken heart。
成功介面(完整的心)win=1,依次行掃瞄row,點陣紅色顯示heart。
行走受阻:下行遇障,stuck為高電平。
源**主程式:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity moon_maze is
port(clk_in:in std_logic;
start:in std_logic;
reset:in std_logic;
round:in std_logic;
北郵數電綜合實驗報告
目錄任務要求 3 系統設計 4 設計思路 4 設計框圖 4 分塊介紹 6 波形 6 vhdl源程式 10 功能說明 25 元器件清單 25 故障及問題分析 26 實驗總結 26 題目六 點陣賽車遊戲 基本要求 1 用8 8點陣進行5秒倒計時顯示,如下圖所示。2 當5秒倒計時結束後,點陣顯示下圖所示的...
北郵模電綜合實驗報告修復的
電子電路綜合實驗設計 實驗名稱 階梯波發生器的設計與實現 學院 班級 學號 姓名 班內序號 實驗6 階梯波發生器的設計與實現 一.摘要 階梯波是一種特殊波形,在一些電子裝置及儀表中用處極大。本實驗電路是由窄脈衝 鋸齒波發生器構成。通過將運算放大器的幾個典型電路 方波發生器 積分器和遲滯電壓比較器,加...
北郵通訊原理實驗報告
北京郵電大學 學院 資訊與通訊工程學院 班級 姓名 姓名 1 了解dsb sc am訊號的產生以及相干解調的原理和實現方法。2 了解dsb sc am訊號波形以及振幅頻譜特點,並掌握其測量方法。3 了解在傳送dsb sc am訊號加導頻分量的條件下,收端用鎖相環提取載波的原理及其實現方法。4 掌握鎖...