【正文】
數(shù)字系統(tǒng)設(shè)計(jì)與硬件描述語(yǔ)言期末考試作業(yè)題目: 數(shù)字式競(jìng)賽搶答器設(shè)計(jì) 學(xué)院: 電子信息工程 專(zhuān)業(yè): 電子信息工程 學(xué)號(hào): 姓名: 一、 選題設(shè)計(jì)描述1. 功能介紹此設(shè)計(jì)用于競(jìng)賽的四人搶答,有如下的功能:(1) 具有多路搶答功能,臺(tái)數(shù)設(shè)計(jì)為四;(2) 具有搶答器開(kāi)始后30秒倒計(jì)時(shí),30秒后無(wú)人搶答顯示超時(shí),并報(bào)警;(3) 能顯示超前搶答犯規(guī),并警報(bào);(4) 能顯示各組得分,大隊(duì)加分,答錯(cuò)扣分;當(dāng)系統(tǒng)復(fù)位,主持人按下?lián)尨痖_(kāi)始按鍵,處于使能狀態(tài),搶答開(kāi)始,某路搶答鍵按下時(shí),該路信號(hào)將其他路信號(hào)鎖存,同時(shí)搶答鈴聲響起,直至此路按鍵松開(kāi),顯示該路組號(hào)。2. 算法簡(jiǎn)介本設(shè)計(jì)采用分層設(shè)計(jì)思想,分為:信號(hào)鑒別模塊、計(jì)時(shí)模塊、計(jì)分模塊、BCD譯碼模塊、分頻器,還有頂層模塊。信號(hào)鑒別模塊。此模塊主要實(shí)現(xiàn)搶答器的搶答功能,并能夠分辨是正常搶答還是提前搶答,選取最先按下的一路信號(hào),鎖存其余信號(hào),實(shí)現(xiàn)信號(hào)選取功能。在此模塊中,用到的信號(hào)為搶答信號(hào)a、b、c、d。搶答使能信號(hào)en;搶答結(jié)果信號(hào)states;警報(bào)時(shí)鐘信號(hào)clk2;復(fù)位信號(hào)rst;提前搶答信號(hào)fangui。計(jì)時(shí)模塊。此模塊主要實(shí)現(xiàn)搶答過(guò)程中的計(jì)時(shí)功能,在搶答開(kāi)始后進(jìn)行30秒的倒計(jì)時(shí),且在30秒后顯示無(wú)人搶答報(bào)警信號(hào)。其中有搶答時(shí)鐘信號(hào)clk;系統(tǒng)復(fù)位信號(hào)rst;搶答使能信號(hào)en;無(wú)人搶答警報(bào)信號(hào)warn;計(jì)時(shí)中止信號(hào)stop;計(jì)時(shí)十位個(gè)位信號(hào)tb,ta。計(jì)分模塊。此模塊主要實(shí)現(xiàn)給四個(gè)搶答器計(jì)分的功能,初始條件下,為每個(gè)搶答器信號(hào)預(yù)制5分,當(dāng)某組搶答且回答正確時(shí)加一分,答錯(cuò)減一分,未獲答題機(jī)會(huì)時(shí)保持不變。其中設(shè)有時(shí)鐘信號(hào)clk;復(fù)位信號(hào)rst;搶答使能信號(hào)en;搶答結(jié)果顯示信號(hào)states;記分加減信號(hào)add(add=‘1’時(shí)為加,add=‘0’時(shí)為減);四個(gè)信號(hào)的得分顯示信號(hào)a_out,b_out,c_out,d_out。BCD譯碼模塊。此模塊主要實(shí)現(xiàn)將搶答結(jié)果信號(hào)顯示在bcd七段譯碼器上。其中輸入信號(hào)a;輸出譯碼結(jié)果信號(hào)q。分頻器。此模塊主要實(shí)現(xiàn)時(shí)鐘分頻功能。在開(kāi)頭對(duì)時(shí)鐘信號(hào)進(jìn)行一次千分頻。其中時(shí)鐘輸入信號(hào)clkin,輸出信號(hào)clk。頂層模塊。將前幾個(gè)模塊綜合在一起,形成一個(gè)整體。分頻器輸出作為其他模塊所需的時(shí)鐘信號(hào),使整個(gè)系統(tǒng)正常運(yùn)轉(zhuǎn)。二、 程序源代碼及說(shuō)明搶答信號(hào)鑒別模塊的程序:library ieee。use 。use 。entity qdjb is port(clk2,en,rst:in std_logic。 a,b,c,d:in std_logic。 fangui:out std_logic。 states:out std_logic_vector(3 downto 0))。end qdjb。architecture one of qdjb issignal sinor,fanguif,tmp:std_logic。signal t:std_logic_vector(5 downto 0)。beginsinor=a or b or c or d。p1:process(a,rst,b,c,d,tmp) begin if rst=39。139。 then 復(fù)位信號(hào)有效,系統(tǒng)復(fù)位。 tmp=39。139。states=0000。 elsif tmp=39。139。 then if a=39。139。 then 判斷哪路信號(hào)變化,進(jìn)行選取 states=0001。tmp=39。039。 對(duì)states進(jìn)行置數(shù) elsif b=39。139。 then states=0010。tmp=39。039。 elsif c=39。139。 then states=0011。tmp=39。039。 elsif d=39。139。 then states=0100。tmp=39。039。 else tmp=39。139。states=0000。 end if 。 end i