【正文】
end control3。 yi1:in std_logic_vector(3 downto 0)。 entity control3 is port( clk_dou:in std_logic。 END a。6 WHEN OTHERS= tmpg=0000000。2 WHEN0011= tmpg=1111001。 END PROCESS p2。cat=110111。cat=111101。 END PROCESS p1。)then if tmpc = 4 then tmpc=0。 SIGNAL tmpc:INTEGER RANGE 0 TO 4。段選輸出信號 cat:OUT STD_LOGIC_VECTOR(5 DOWNTO 0))。 use 。 end case。 when 3 =qout4=0011。 end case。 when 3 =qout3=0011。 end if。event and q8=39。 when others=qout5=0000。 when 3 =qout5=0011。 end case。 when 3 =qout2=0011。 end case。 when 3 =qout1=0011。 end if。 產(chǎn)生第一位隨機數(shù) yy=(y rem 6)+1。 elsif q439。 end process p3。 q6=q5。 p3:process(btn1,clk_dou)btn1 鍵防抖 begin if clk_dou39。 q1=btn0。event and clk_dou=39。 end if。event and clk_y=39。 else x=x+1。 begin p1:process(clk_x,clk_y) begin if clk_x39。 signal yy:integer range 0 to 6。 signal q1,q2,q3,q4:std_logic。乙第一位隨機數(shù)輸出 qout4: out std_logic_vector(3 downto 0)。第二位隨機數(shù)頻率 clk_dou:in std_logic。復(fù)位信號 btn0:in std_logic。 use 。產(chǎn)生第一位隨機數(shù)頻率 clk_y=clktmp4。 end process p5。 clktmp5=not clktmp5。 p5:process(clktmp2)—分頻到 20hz begin if clktmp239。 else tmp4=tmp4+1。event and clktmp1=39。 end if。139。 end if。 then if tmp2=49 then tmp2=0。 end process p1。 clktmp1=not clktmp1。 begin p1:process(clkin)分頻到 1MHz begin if clkin39。 signal clktmp2:std_logic。 signal tmp3:integer range 0 to 4。 時鐘信號輸入 clk_dian,clk_shu,clk_x,clk_y,clk_dou:out std_logic)。 ○ 5 點陣顯示模塊 如圖 , 以顯示甲為例 , 輸入為 v=01, 行輸出和列輸出顯示結(jié)果為漢字甲 , 蜂鳴器輸出 beep=1, 符合預(yù)設(shè)結(jié)果 。 ○ 2 隨機數(shù)模塊 如圖所示 , 當(dāng) btn0 被按下 , 經(jīng)過防抖測試 之后 , 產(chǎn)生隨機數(shù) 1和 4, btn1 被按下 , 經(jīng)過防抖測試之后 , 產(chǎn)生隨機數(shù) 3 和 6, reset撥上之后局數(shù)歸零,重新開始(圓角方形所示)。 ○ 5 點陣顯示模塊 點陣顯示模塊用于顯示勝利的一方。 cat[5..0]和 g[6..0]控制數(shù)碼管的位選和段選信號 。 qout12 是甲隨機數(shù)輸出信號, qout34 是乙隨機數(shù)輸出信號, qout5 是局數(shù)信號。 reset 用于使局數(shù)歸零,重新開始游戲。 二 、系統(tǒng)設(shè)計(包括設(shè)計思路、總體框圖、分塊設(shè)計) 整體設(shè)計思路 將整個游戲電路分為時鐘分頻模塊、隨機數(shù)產(chǎn)生模塊、數(shù)碼管顯示模塊、判斷控制模塊、點陣顯示模塊等五個模塊。在第六局比賽時,若重復(fù)進行步驟( 2)仍未出現(xiàn)勝者,以按鍵所得兩數(shù)之和最大者為獲勝方。 每按一次按鍵,代表擲一次骰子,可隨機得到 1~ 6 范圍內(nèi)的兩個數(shù)字。 基本要求: 電路可供甲乙二人游戲,游戲者甲使用的按鍵為 BTN0,游戲者乙使用的按鍵為 BTN1。 ( 3) 游戲局數(shù)最多進行六局。 自擬其它功能。 ○ 2 隨機數(shù)產(chǎn)生模塊 隨機數(shù)產(chǎn)生模塊用于產(chǎn)生隨機數(shù)和局數(shù)計數(shù) 。 clk_dou 為防抖時鐘。 qin15 分別接收隨機數(shù)產(chǎn)生模塊的 qout15信號。 V 是勝負結(jié)果 , 用于控制點陣顯示 。 三、 仿真波形及波形分析 ○ 1 分頻模塊 clk _do ubt n1jia1[ 3. .0]jia2[ 3. .0]y i1[ 3. .0]y i2[ 3. .0]ju[ 3. .0]v [1. .0]cont rol3ins t3clk inv [1. .0]beeprow [7. .0]col[ 7. .0]dianz henins t1 由于分頻比例太高,仿真到 1s 需要花費大量時間,故只仿真到20ms, 可觀察其中的 clk_x 和 clk_y 信號。 ○ 4 判斷控制模塊 如圖 , 僅以第一局為例 , 設(shè)置甲方為 5+2=7, 乙方為 1+1=2, 如方框內(nèi)所示; btn1 下降沿觸發(fā)比較 , v 的結(jié)果為 01,即甲方獲勝,如圓圈內(nèi)所示 ,仿真結(jié)果正確。 entity fenpinqi is port( clkin:in std_logic。 signal tmp2:integer range 0 to 49。 signal clktmp1:std_logic。 signal clktmp5:std_logic。 then i