智能搶答器VHDL設(shè)計(jì)_第1頁
智能搶答器VHDL設(shè)計(jì)_第2頁
智能搶答器VHDL設(shè)計(jì)_第3頁
智能搶答器VHDL設(shè)計(jì)_第4頁
智能搶答器VHDL設(shè)計(jì)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 電子科技大學(xué)光電信息學(xué)院課程設(shè)計(jì)論文 課程名稱 現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn) 題目名稱 基于vhdl語言的fpga智能搶答器設(shè)計(jì)論文 學(xué) 號(hào) 姓 名 指導(dǎo)老師 陳學(xué)英 起止時(shí)間 11月11日-11月22日 2013年 11月 21日摘要 智力搶答器作為一種快速準(zhǔn)確判斷選手搶答先后的比賽工具,現(xiàn)如今經(jīng)常出現(xiàn)各類智力搶答,競(jìng)猜類比賽中。本文利用fpga開發(fā)平臺(tái)為基礎(chǔ),以vhdl語言進(jìn)行編程,在ise軟件上進(jìn)行開發(fā),實(shí)現(xiàn)電視中比賽選手搶答器的各項(xiàng)功能。其中,第二章簡(jiǎn)單介紹fpga開發(fā)平臺(tái)的特點(diǎn)、vhdl語言的特點(diǎn),以及大體的開發(fā)流程。第三章主要介紹了開發(fā)軟件ise和仿真軟件modelsim的使用。第四章主

2、要介紹智力搶答器的具體設(shè)計(jì)過程、原理設(shè)計(jì)、模塊化設(shè)計(jì)。第五章主要對(duì)各個(gè)模塊進(jìn)行仿真測(cè)試,以及對(duì)最后的整個(gè)系統(tǒng)進(jìn)行仿真測(cè)試。最后第六章,在基于整個(gè)系統(tǒng)仿真無誤的前提下進(jìn)行硬件編程下載,在實(shí)驗(yàn)硬件平臺(tái)上測(cè)試設(shè)計(jì)結(jié)果和智力搶答器的實(shí)用性。并對(duì)這次試驗(yàn)進(jìn)行總結(jié)。目錄一、實(shí)驗(yàn)?zāi)康亩?、?shí)驗(yàn)任務(wù)與要求三、實(shí)驗(yàn)原理、設(shè)計(jì)思路與方案四、單元模塊設(shè)計(jì)與仿真模塊功能、模塊符號(hào)及端口說明、模塊程序、仿真程序、仿真波形五、系統(tǒng)模塊設(shè)計(jì) 頂層模塊設(shè)計(jì)、系統(tǒng)管腳適配表、編程文件、下載成功標(biāo)志、硬件調(diào)試說明六、結(jié)論 1、 實(shí)驗(yàn)?zāi)康?在許多比賽活動(dòng)中,為了準(zhǔn)確、公正、直觀地判斷出第一搶答者,通常設(shè)置一臺(tái)搶答器。通過搶答器的數(shù)顯

3、,燈光和音響等手段指示出第一搶答者。同時(shí)還可以設(shè)置定時(shí)、記分犯規(guī)及獎(jiǎng)懲等多種功能。本設(shè)計(jì)采用手動(dòng)搶答的方式,有人搶答后,系統(tǒng)自動(dòng)封鎖其他人的搶答按鈕,使其不能再搶答,從而實(shí)現(xiàn)搶答功能。2、 實(shí)驗(yàn)任務(wù)與要求1.基本要求(1)、編號(hào)16號(hào)的選手在規(guī)定的時(shí)間內(nèi)按鍵搶答(2)、搶中編號(hào)鎖定顯示,其他無效(3)、主持按鍵控制清零和開始(4)、具有報(bào)警提示功能,分別提示搶答開始,有人搶答,定時(shí)時(shí)間到2.參數(shù)要求(1)、顯示組數(shù):6組(2)、報(bào)警延時(shí):300ms(3)、搶答時(shí)間:20s3、 實(shí)驗(yàn)原理、設(shè)計(jì)思路與方案 搶答信號(hào)輸入系統(tǒng)后,系統(tǒng)必須對(duì)最先搶到的選手進(jìn)行編碼,而后鎖存這個(gè)編碼,并將這個(gè)編碼顯示輸出

4、,所以需要用到編碼器、鎖存器和譯碼顯示電路。而選手搶答的有效時(shí)間為20s,而且系統(tǒng)在有人搶中,主持人按下開關(guān)以及20s計(jì)時(shí)到但無人搶答時(shí)這三種情況下要發(fā)出警報(bào),且警報(bào)時(shí)間延遲300ms后自動(dòng)停止,故需定時(shí)電路來確定這些時(shí)限,報(bào)警電路產(chǎn)生時(shí)延,并用時(shí)序控制電路來協(xié)調(diào)各個(gè)部分的工作,計(jì)時(shí)時(shí)間也要顯示出來。 當(dāng)主持人按鍵為啟動(dòng)開始狀態(tài)時(shí),警報(bào)器發(fā)出警報(bào),搶答編碼電路進(jìn)入工作狀態(tài),選手可以進(jìn)行搶答。同時(shí)搶答定時(shí)電路開始從20s遞減,顯示器顯示遞減,顯示器顯示遞減的時(shí)間,當(dāng)時(shí)間未減少到0s時(shí),有選手搶答,報(bào)警電路發(fā)出警報(bào),顯示器顯示選手編號(hào),并鎖存該選手的號(hào)碼直到主持人清零為止,此時(shí)搶答器的時(shí)間不再遞減

5、;當(dāng)時(shí)間減到0s時(shí),無選手搶答,報(bào)警電路發(fā)出警報(bào),提示選手不能再搶答,顯示器顯示搶答時(shí)間0s不動(dòng),選手號(hào)碼為無效號(hào)碼或者f。當(dāng)主持人按下清零信號(hào),系統(tǒng)顯示為初始狀態(tài)。四、單元模塊設(shè)計(jì)與仿真1.單元電路的劃分 根據(jù)搶答器所需要實(shí)現(xiàn)的功能,將整體電路劃分為:編碼鎖存電路(bmsc)、搶答定時(shí)電路(dsq)、報(bào)警器電路(bjq)、掃描顯示電路(scan)、譯碼電路(ymq)和按鍵消抖(xd)六個(gè)單元電路。2.1編碼鎖存電路(bmsc):(1) 該電路主要實(shí)現(xiàn)的功能是:當(dāng)主持人啟動(dòng)開始鍵,系統(tǒng)進(jìn)入工作狀態(tài),同時(shí)48mhz時(shí)鐘上升沿持續(xù)掃描6個(gè)選手的按鍵端口。當(dāng)?shù)褂?jì)時(shí)未到0,有選手搶答時(shí),則對(duì)該選手的按

6、鍵進(jìn)行編碼,并鎖存該選手編碼并將其輸出,同時(shí)其他選手的按鍵搶答無效。若無選手搶答,則持續(xù)掃描,直至下一輪搶答開始。本電路共有6個(gè)端口。4個(gè)輸入端口:系統(tǒng)時(shí)鐘、開始按鍵信號(hào)、定時(shí)時(shí)間到信號(hào)、選手搶答按鍵信號(hào)。2個(gè)輸出端口:選手按鍵編碼信號(hào)、有選手搶中信號(hào)。(2) 模塊程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;- uncomment the following library declaration if instantiating

7、- any xilinx primitives in this code.-library unisim;-use unisim.vcomponents.all;entity bmsc is port ( clk : in std_logic; start : in std_logic; sjd : in std_logic; xs : in std_logic_vector (5 downto 0); s : out std_logic_vector (3 downto 0); qz : out std_logic );end bmsc;architecture behavioral of

8、bmsc issignal q_z:std_logic;signal en:std_logic:=0;signal q:std_logic_vector(3 downto 0):=0000;beginstate:process(start) begin if start event and start =0 then en q = 0001; q_z q = 0010; q_z q = 0011; q_z q = 0100; q_z q = 0101; q_z q = 0110; q_z q =0000; end case; end if ; else q =0000; q_z =1; end

9、 if ; end if ; end process; s = q; qz 0);-outputssignal s : std_logic_vector(3 downto 0);signal qz : std_logic;begin- instantiate the unit under test (uut)uut: bmsc port map(clk = clk,start = start,sjd = sjd,xs = xs,s = s,qz = qz);tb : processbegin clk=0; wait for 100 ps;clk=1; wait for 100 ps;end p

10、rocess; stm: process begin start=1; xs=111111; sjd=1; wait for 50 ns ;start=0;wait for 100 ns;start=1;wait for 200 ns;xs=111101;wait for 200 ns;xs=110111;wait for 300 ns;start=0;wait for 100 ns;start=1;xs=111111;wait for 500 ns ;start=0;wait for 200 ns;start=1;wait for 100 ns;sjd=0;wait for 300 ns;x

11、s=011111;wait for 200 ns;end process;end; bmsc仿真波形 2.2定時(shí)電路(dsq)(1)該電路主要實(shí)現(xiàn)的功能是:規(guī)定20秒倒計(jì)時(shí)時(shí)間。本模塊共有5個(gè)端口,3個(gè)輸入端口:基準(zhǔn)時(shí)間源,開始鍵信號(hào),選手搶中信號(hào);兩個(gè)輸出端口:時(shí)間到報(bào)警信號(hào)和實(shí)時(shí)計(jì)數(shù)輸出端口。 為了實(shí)現(xiàn)按秒計(jì)時(shí),首先要設(shè)計(jì)一個(gè)分頻器來計(jì)算1hz的標(biāo)準(zhǔn)時(shí)間信號(hào)。(2) 模塊程序- company: - engineer: - - create date: 20:53:24 11/13/2013 - design name: - module name: dsp - behavioral -

12、project name: - target devices: - tool versions: - description: - dependencies: - revision: - revision 0.01 - file created- additional comments: -library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;- uncomment the following library declaration if ins

13、tantiating- any xilinx primitives in this code.-library unisim;-use unisim.vcomponents.all;entity dsp isport(clk:in std_logic; qz:in std_logic; start:in std_logic; sjd:out std_logic; t10:out std_logic_vector(3 downto 0); t0:out std_logic_vector(3 downto 0);end dsp;architecture behavioral of dsp issi

14、gnal cnt:integer range 1 to 24000000:=1;signal clk_1hz:std_logic:=1;signal en:std_logic:=0;signal m10,m0:std_logic_vector(3 downto 0);beginfp:process(clk) is begin if clk event and clk=1 then if cnt=24000000 then cnt =1;clk_1hz =not clk_1hz;else cnt =cnt+1;end if; end if;end process;state:process(st

15、art) begin if start event and start=0 then en = not en;end if;end process;jsq:process(en,qz,clk_1hz) is begin if en=0 then m10 =0010;m0=0000;sjd=1;elsif clk_1hz event and clk_1hz=1 then if qz=1 then if m10=0 and m0=0 then m10=0000;m0=0000; sjd=0; else if m0=0 and m10/=0 then m0=1001;m10 =m10-1; else

16、 m0 = m0-1;end if;end if;end if;end if;end process;t0 = m0;t10 clk,qz = qz,start = start,sjd = sjd,t10 = t10,t0 = t0);tb : processbegin clk=0; wait for 10 ns;clk=1; wait for 10 ns;end process; stim : processbegin start=1;qz=1; wait for 100 ns; start=0; wait for 100 ns; start=1; wait for 1100 us; sta

17、rt=0; wait for 100 ns; start=1; wait for 100 us; start=0; wait for 100 ns; start=1; wait for 200 us; qz=0; wait for 100 us; start=0; wait for 100 ns; start=1; wait for 100 us; end process;end; dsq仿真波形2.3報(bào)警電路(bjq)(1)該電路主要實(shí)現(xiàn)的功能是:在開始鍵按下、有選手搶答、計(jì)時(shí)時(shí)間到這三種情況下,報(bào)警器發(fā)出警報(bào),警報(bào)延時(shí)(學(xué)號(hào)+300)ms后結(jié)束。 本電路共有5個(gè)端口。4個(gè)輸入端口:基準(zhǔn)時(shí)間

18、源信號(hào)、開始鍵信號(hào)、選手搶中信號(hào)、時(shí)間到信號(hào)。1個(gè)輸出端口:報(bào)警信號(hào)。三路報(bào)警觸發(fā)信號(hào)最終要通過一個(gè)與門來進(jìn)行整合。(2)模塊程序- company: - engineer: - - create date: 20:55:37 11/13/2013 - design name: - module name: bjq - behavioral - project name: - target devices: - tool versions: - description: - dependencies: - revision: - revision 0.01 - file created- ad

19、ditional comments: -library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;- uncomment the following library declaration if instantiating- any xilinx primitives in this code.-library unisim;-use unisim.vcomponents.all;entity bjq isport(clk:in std_logic;

20、qz,sjd,start:in std_logic;bj:out std_logic);end bjq;architecture behavioral of bjq issignal bj1,bj2,bj3:std_logic;signal en:std_logic:=0;beginstate:process(start)beginif start event and start=0 thenen = not en;end if;end process;t1:process(clk,en)variable q:integer range 1 to 14400000:=1;beginif en=

21、0 thenbj1 =1; q:=1;elseif clk event and clk=1 thenif q=14400000 thenbj1 =1;elseq:=q+1;bj1=0;end if;end if;end if;end process;t2:process(clk,qz)variable q:integer range 1 to 14400000:=1;beginif qz=1 thenbj2 =1; q:=1;elseif clk event and clk=1 thenif q=14400000 thenbj2 =1;elseq:=q+1;bj2 =0;end if;end

22、if;end if;end process;t3:process(clk,sjd)variable q:integer range 1 to 14400000:=1;beginif sjd=1 thenbj3=1;q:=1;elseif clk event and clk=1 thenif q=14400000 thenbj3 =1;elseq:=q+1;bj3 =0;end if;end if;end if;end process;bj clk,qz = qz,sjd = sjd,start = start,bj = bj);tb : processbegin clk=0;wait for

23、10 ns;clk=1;wait for 10 ns;end process; stm_proc : processbegin start=1; qz=1; sjd=1; wait for 50 ns; start =0;wait for 100 ns; start =1;wait for 150 ms; qz=0;wait for 200 ms; sjd=0;wait for 280 ms; start=0;wait for 100 ns; start=1;wait for 1 ms;end process;end;bjq仿真波形2.4掃描顯示電路(scan)(1)該電路主要實(shí)現(xiàn)的功能是:對(duì)

24、倒計(jì)時(shí)時(shí)間和搶到的選手號(hào)碼進(jìn)行顯示。本電路共有6個(gè)端口。4個(gè)輸入端口:系統(tǒng)時(shí)鐘、選手號(hào)碼、時(shí)間十位數(shù)據(jù)、時(shí)間個(gè)位數(shù)據(jù);2個(gè)輸出端口:輸出的三位掃描信號(hào),顯示數(shù)據(jù)信號(hào)。(2) 模塊程序- company: - engineer: - - create date: 20:57:27 11/13/2013 - design name: - module name: scan - behavioral - project name: - target devices: - tool versions: - description: - dependencies: - revision: - revis

25、ion 0.01 - file created- additional comments: -library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;- uncomment the following library declaration if instantiating- any xilinx primitives in this code.-library unisim;-use unisim.vcomponents.all;entity s

26、can isport ( clk : in std_logic; s : in std_logic_vector (3 downto 0); t10 : in std_logic_vector (3 downto 0); t0 : in std_logic_vector (3 downto 0); dig : out std_logic_vector (2 downto 0); dout : out std_logic_vector (3 downto 0);end scan;architecture behavioral of scan issignal cnt:integer range

27、1 to 24000:=1;signal clk1k:std_logic:=0;signal q:std_logic_vector(2 downto 0):=000;beginprocess(clk)beginif clkevent and clk=1 thenif cnt=24000 thencnt=1;clk1k=not clk1k;elsecnt=cnt+1;end if;end if;end process;process(clk1k)beginif clk1k event and clk1k=1 thenif q=111 thenq=000;elseqdout dout dout d

28、out =1111;end case;end process;dig0);signal t10 : std_logic_vector(3 downto 0) := (others=0);signal t0 : std_logic_vector(3 downto 0) := (others=0);-outputssignal dig : std_logic_vector(2 downto 0);signal dout : std_logic_vector(3 downto 0);begin- instantiate the unit under test (uut)uut: scan port map(clk = clk,s = s,t10 = t10,t0 = t0,dig = dig,dout = dout);tb : processbegin clk=0; wait for

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論