北郵數電綜合實驗報告

2021-03-04 09:59:31 字數 4649 閱讀 2514

目錄任務要求 3

系統設計 4

設計思路 4

設計框圖 4

分塊介紹 6

**波形 6

vhdl源程式 10

功能說明 25

元器件清單 25

故障及問題分析 26

實驗總結 26

題目六、點陣賽車遊戲

基本要求:

1、 用8×8點陣進行5秒倒計時顯示,如下圖所示。

2、 當5秒倒計時結束後,點陣顯示下圖所示的賽道和賽車的初始位置,賽車遊戲開始,並開始計時,用兩個數碼管顯示時間。圖中的紅色表示賽道,黃色表示賽車的初始位置,箭頭表示賽車行進的方向。

3、 用btn1~btn3三個按鍵分別控制賽車的左移、前進、右移,最終使賽車在不碰撞賽道的情況下走完全程(即圖2中的綠色位置),遊戲結束,點陣顯示「v」圖案,數碼管顯示走完全程所耗費的時間。

4、 當遊戲時間超過59秒,或者賽車在行進過程中碰撞賽道,遊戲失敗,點陣顯示「x」圖案。

5、 通過按鍵btn0進行復位,控制點陣返回到圖1所示的初始狀態。

提高要求:

1、 有多種遊戲賽道可選,5秒倒計時顯示後賽道隨機出現。

2、 賽車的初始位置隨機出現。

3、 在賽車行進過程中,賽道中隨機出現障礙物(用8×8點陣中的乙個led表示),通過btn1~btn3三個按鍵的控制躲避障礙物,走完全程。若賽車碰到障礙物和賽道,則遊戲失敗。

程式採用自頂向下設計的思路,先將主程式啟動,然後依次啟動子程式,主程式為點陣倒計時部分,子程式包括數碼管顯示部分、點陣賽道顯示部分、賽車移動部分、邏輯判斷部分。

系統結構圖

a**圖

(1) 輸入部分:設計方案中有七個輸入端,時鐘訊號輸入clk接外部時鐘,為計數器提供有效的時鐘邊沿進行計數;復位訊號輸入reset為低電平有效,當reset=0時,計數器復位到初始狀態「000」,同時賽道恢復最初狀態,當reset=1時,計數器正常計數;啟動訊號輸入start為高電平有效,當start=1時,倒計時部分啟動。另有四個輸入端控制賽車移動,分別對應左移、右移、前進、後退。

(2) 處理部分:設計方案中此部分包含2個模組:

邏輯判斷模組:判斷代表賽車的點所在的行與列是否在賽道範圍內,如不在則輸出失敗訊號,如在賽道內進行下一步判斷。

按鍵掃頻模組:通過分頻器調整乙個時鐘訊號,對賽車移動的控制按鍵進行判斷,是否移動賽車。

(3) 輸出部分:由解碼電路,數碼管根據a-g以及cat1-cat6的輸出顯示數字圖形,點陣根據row0-7,cul(r)0-7,cul(g)0-7的輸出顯示賽道及賽車,利用人眼的視覺延緩效應,當時鐘訊號clk的頻率》50hz,實驗中取100hz以上較佳,但同時不可過大,最大到1-2khz,就可看到預期實驗結果。

倒計時「5」

倒計時「4」:

倒計時「3」:

倒計時「2」:

倒計時「1」:

固定賽道:

數碼管計時:

左移,圈出來的表示賽車位置,可見向左移動了一格:

前進:右移:

成功,顯示紅色的v:

失敗,顯示紅色的x:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity car is

port(

clk:in std_logic;--pin18

start,reset:in std_logic;--btn

l,r,f,b:in std_logic;--btn

ashow:out std_logic_vector(23 downto 0);--row7-row0 cul0-cul7(r) cul0-cul7(g) 點陣顯示

nstate:out std_logic_vector(5 downto 0);--cat5-cat0 數碼管狀態

nshow:out std_logic_vector(7 downto 0));--abcdefgp 數碼管顯示

end car;

architecture main of car is

signal **t : integer range 0 to 25000;

signal **t1 : integer range 0 to 25000000;

signal **t2 : integer range 0 to 5000000;

signal clk_tmp : std_logic;

signal clk_tmp1 : std_logic;

signal tclk: std_logic;

signal clk_tmp2 : std_logic;

signal row: std_logic_vector(7 downto 0);

signal cul: std_logic_vector(15 downto 0);

signal aclk: std_logic;

signal useclk: std_logic;

shared variable tend : integer range 0 to 1;

signal tostart : std_logic;

shared variable sai : integer range 1 to 3;

shared variable lab : integer range -1 to 1;

shared variable rrr : integer range 0 to 3000;

shared variable rr : integer range 0 to 3000;

signal preset : std_logic; --邏輯判斷模組重置

signal areset : std_logic; --點陣模組重置

signal nreset : std_logic; --數碼管重置

signal treset : std_logic; --計時器重置

signal pwork : std_logic; --邏輯判斷模組工作

signal awork : std_logic; --點陣工作

signal nwork : std_logic; --數碼管工作

signal twork : std_logic; --計時器工作

signal worked : std_logic;

signal vic : std_logic; -- 成功

signal fal : std_logic; -- 失敗

type nst is array(0 to 9)of std_logic_vector(7 downto 0);

signal nshowed:nst;

shared variable ashan:integer range 0 to 9;

shared variable shan :integer range 0 to 4;

shared variable aashan :integer range 0 to 7;

shared variable aa1shan :integer range 0 to 3;

shared variable a1shan :integer range 0 to 9;

shared variable x :integer range -2 to 5;

shared variable y :integer range 0 to 7;

shared variable ttime4 :integer range 0 to 9;

shared variable ttime3 :integer range 0 to 9;

shared variable ttime2 :integer range 0 to 9;

shared variable ttime1 :integer range 0 to 9;

shared variable ttime :integer range 0 to 9;

begin

nshowed(1)<="01100000";

nshowed(2)<="11011010";

nshowed(3)<="11110010";

nshowed(4)<="01100110";

nshowed(5)<="10110110";

nshowed(6)<="10111110";

nshowed(7)<="11100000";

nshowed(8)<="11111110";

nshowed(9)<="11110110";

nshowed(0)<="11111100";

ransaidao:process(clk)

begin

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

if(rrr=3000)then

rrr:=0;

else

rrr:=rrr+1;

end if;

if(rrr<=1000)then

sai:=1;

elsif(rrr>1000 and rrr<=2000)then

sai:=2;

else

sai:=3;

end if;

end if;

end process;

rancar:process(clk)

北郵數電綜合實驗報告迷宮

班級 學號 班內序號 姓名 2014 11 7 目錄設計課題 3 系統設計 4 設計思路 4 總體框圖 4 分塊介紹 7 波形 9 源程式 11 功能說明 29 資源利用情況 29 故障及問題分析 30 總結和結論 30 簡易迷宮設計 設計並實現乙個簡易迷宮遊戲機。基本要求 1 用 8 8 點陣進行...

北郵模電綜合實驗報告修復的

電子電路綜合實驗設計 實驗名稱 階梯波發生器的設計與實現 學院 班級 學號 姓名 班內序號 實驗6 階梯波發生器的設計與實現 一.摘要 階梯波是一種特殊波形,在一些電子裝置及儀表中用處極大。本實驗電路是由窄脈衝 鋸齒波發生器構成。通過將運算放大器的幾個典型電路 方波發生器 積分器和遲滯電壓比較器,加...

北郵通訊原理實驗報告

北京郵電大學 學院 資訊與通訊工程學院 班級 姓名 姓名 1 了解dsb sc am訊號的產生以及相干解調的原理和實現方法。2 了解dsb sc am訊號波形以及振幅頻譜特點,並掌握其測量方法。3 了解在傳送dsb sc am訊號加導頻分量的條件下,收端用鎖相環提取載波的原理及其實現方法。4 掌握鎖...