FPGA技術課程設計-數(shù)字式競賽搶答器終稿_第1頁
FPGA技術課程設計-數(shù)字式競賽搶答器終稿_第2頁
FPGA技術課程設計-數(shù)字式競賽搶答器終稿_第3頁
FPGA技術課程設計-數(shù)字式競賽搶答器終稿_第4頁
FPGA技術課程設計-數(shù)字式競賽搶答器終稿_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、西南科技大學FPGA技術課程設計報告設計名稱:數(shù)字式競賽搶答器 姓 名: 學 號: 專業(yè)班級 通信1301 教 師: 徐鋒 西南科技大學信息工程學院制設 計 任 務 書設計名稱: 數(shù)字式競賽搶答器 組長姓名: 組員姓名(其他5人): 課題總設計要求:設計題目的要求: (1)設計一個可容納 3 組參賽的數(shù)字式搶答器,每組設一個按鈕,供搶答使用。 (2)搶答器具有第一信號鑒別和鎖存功能,使除第一搶答者外的按鈕不起作用。 (3)設置一個主持人“復位”按鈕。 (4)主持人復位后,開始搶答,第一信號鑒別鎖存電路得到信號后,有指示燈顯示搶 答組別,揚聲器發(fā)出 12 秒的音響。 (5)設置一個計分電路,每組

2、開始預置 100 分,由主持人記分,答對一次 1 0分,答錯 一次減 10 分。 組員(姓名) 張濤 的設計要求(由組長提供給組員):主要任務:設計搶答鑒別鎖存模塊輸入端口:group1,group2,group3,reset.輸出端口:group2:0功能描述:reset為主持人復位信號(開始搶答信號),當reset有一個低電平到來時(下降沿),該模塊開始鎖存輸入端口的信號,當其中有一個發(fā)生變化時,將輸入封鎖。然后將鎖存到的信號按下列真值表輸出:鎖存信號輸出信號group1group2group3group1group2011011001011011當信號還沒有被鎖存時,group輸出為00

3、。組員(姓名) 曾雪 的設計要求:主要任務:組別譯碼提醒模塊輸入信號:group2:0,clk輸出信號:warn,light2:0功能描述:模塊用于控制蜂鳴器及三個LED燈,其中warn控制蜂鳴器,light控制組別信號燈。當出現(xiàn)group信號從00變化到其它后,蜂鳴器發(fā)出12s聲響,頻率由表示已經搶答到,對應搶答到組別的LED燈亮。組員(姓名) 李明亮 的設計要求:主要任務:計分模塊輸入端口:group2:0,right,wrong輸出端口:score17:0,score27:0,score37:0功能描述:該模塊用于對各個組進行計分,并將結果輸出。當right每來一個下降沿觸發(fā)對應組別加分

4、功能,當wrong每來一個下降沿觸發(fā)對應組別扣分功能。其中加分功能和扣分功能有其他組員提供函數(shù)。score1,score2,score3分別對應于組別1,組別2,組別3的計分結果。由于只需考慮十位和百位,所以只需要8位的二進制數(shù),其中score的高4位表示得分的百位,低四位表示得分的十位數(shù)字。組員(姓名) 王翔 的設計要求:主要任務:組別分數(shù)動態(tài)掃描顯示模塊輸入端口:score17:0 ,score27:0,score37:0,group2:0輸出端口:wei7:0,duan6:0功能描述:該模塊主要實現(xiàn)對分數(shù),搶答到的組別的動態(tài)掃描,將它們動態(tài)顯示在數(shù)碼數(shù)碼管上。其中score1,score

5、2,score3分別表示當前得分,wei7:0和duan6:0分別表示位選和段選信號,clk為掃描時鐘。 組員(姓名) 林靜 的設計要求:主要任務:編寫2個函數(shù),分別實現(xiàn)計數(shù)模塊加分功能,扣分功能。 并在一個模塊進行仿真測試函數(shù)功能,直到正確。add:其參數(shù)為當前分數(shù),實現(xiàn)對參數(shù)的加分功能,每次加分為10分,并以八位二進制儲存百位和十位,其中高四位表示得分百位上的數(shù)字,低四位表示十位上的數(shù)字。reduce: 實現(xiàn)對參數(shù)的加分功能,每次扣分為10分,其他相同。 2015 年 4 月 20 日一 設計步驟1、 設計準備:根據(jù)設計需求,分析整個系統(tǒng)功能及設計任務,可知,系統(tǒng)需要四個模塊來實現(xiàn)其功能。

6、分別為:設計搶答鑒別鎖存模塊、組別譯碼搶答模塊、計分模塊、組別分數(shù)動態(tài)掃描模塊。初步選定設計方案,然后根據(jù)功能分配任務。2、 設計輸入:(1) 設計編寫搶答鎖存模塊代碼。(2) 設計編寫組別譯碼模塊。(3) 設計編寫計分模塊(4) 設計動態(tài)掃描模塊(5) 將以上四個模塊組合,設計出這四個模塊的頂層模塊。(6) 加上消抖模塊3、 功能仿真:在每個模塊設計完成后,對該模塊設計仿真波形,進行仿真。4、 引腳約束:根據(jù)功能設計及FPGA外圍電路設計,對引腳進行約束。二設計整體流程圖加減分搶答信號搶答按鈕主持人控制開關分組LED燈FPGA數(shù)碼顯示分數(shù)蜂鳴器響起復位三設計方案(可包含主控制電路狀態(tài)轉換圖)

7、1、 FPGA的具體模塊電路連接組合如下圖所示:Group1:0Cllkwrongright搶答鎖存模塊組別譯碼提醒模塊計分模塊組別分數(shù)動態(tài)掃描顯示模塊Light2:0Score7:0【&:0】2、 各個模塊的功能及設計方案;(1)搶答鎖存鑒別模塊功能:reset為主持人復位信號(開始搶答信號),當reset有一個低電平到來時(下降沿),該模塊開始鎖存輸入端口的信號,當其中有一個發(fā)生變化時,將輸入封鎖。然后將鎖存到的信號按真值表輸出。(2) 組別譯碼提醒模塊 功能:模塊用于控制蜂鳴器及三個LED燈,其中beep控制蜂鳴器,light控制組別信號燈。當出現(xiàn)group信號從00變化到其它后

8、,蜂鳴器發(fā)出12s聲響,表示已經搶答到,對應搶答到組別的LED燈亮。(3)計分模塊功能:該模塊用于對各個組進行計分,并將結果輸出。當right每來一個下降沿觸發(fā)對應組別加分功能,當wrong每來一個下降沿觸發(fā)對應組別扣分功能。score1,score2,score3分別對應于組別1,組別2,組別3的計分結果。由于只需考慮十位和百位,所以只需要8位的二進制數(shù),其中score的高4位表示得分的百位,低四位表示得分的十位數(shù)字。(4) 計分模塊的加分,扣分函數(shù)設計:Add:其參數(shù)為當前分數(shù),實現(xiàn)對參數(shù)的加分功能,每次加分為10分,并以八位二進制儲存百位和十位,其中高四位表示得分百位上的數(shù)字,低四位表示

9、十位上的數(shù)字。reduce: 實現(xiàn)對參數(shù)的加分功能,每次扣分為10分,其他相同。(5)動態(tài)掃描組別分數(shù)顯示模塊功能:該模塊主要實現(xiàn)對分數(shù),搶答到的組別的動態(tài)掃描,將它們動態(tài)顯示在數(shù)碼數(shù)碼管上。其中score1,score2,score3分別表示當前得分,wei7:0和duan6:0分別表示位選和段選信號.(6)前4個模塊的組合設計思路:根據(jù)設計方案具體的模塊連接,如1中圖所示,設計頂層模塊。輸入:總共3個按鍵輸入信號,一個時鐘輸入信號輸出:一個控制組別燈的信號,一個數(shù)碼管斷選和一個位選信號。具體設計如下:四. 頂層及各自模塊波形圖仿真分析1、 鑒別鎖存模塊波形設計:分析:開始時,group輸出

10、為00,當reset復位后,key2出現(xiàn)一低電平(第三組按下),group輸出11,當接著key1按下,group輸出不變,當再來了一個reset信號后,key又有效了,后面的也是如此。顯然實現(xiàn)了搶答鑒別鎖存功能。2、 組別譯碼提醒模塊:分析:當group由00變化到01,10,11,時顯然light對應真值表變化。而Warn開始以時鐘周期一半的頻率變化,由于需要在50個時鐘周期才能停止變化,所以為了更完整的驗證light信號的變化,設計group的變化時沒有根據(jù)實際時間來變化。3、 計分模塊:(1)分析:score表示分數(shù)百位和十位。開始時,初始分數(shù)為100分,當group為10時,righ

11、t來了一個低脈沖后,score2變?yōu)榱?h11;當group為01時,right來了一個低脈沖后,score1變?yōu)榱?h11;當group為11時,wrong來了一個低脈沖后,score3變?yōu)?h09;再對其他分析,顯然實現(xiàn)了功能。(2) 該模塊調用的加分,扣分函數(shù)的測試波形及分分析Add:Reduce:分析:這兩個函數(shù)都用時鐘信號(作為測試的輔助信號)對其測試,可以看到,add中實現(xiàn)了每次加1的功能,(由于百位和十位,相當于加了10),reduce實現(xiàn)了減一的功能。4、 動態(tài)掃描模塊: 分析:每來一個時鐘信號,位選按次序變化一次,斷選信號變化一次,對應于該位所顯示的分數(shù)的數(shù)碼管控制數(shù)值。比如

12、:第三位對應于用于控制score2百位,被選中時,score3位8h30,顯然對應斷選輸出8h06;其他位置可的同樣驗證。5、次頂層模塊分析:復位信號后,當key0出現(xiàn)一個脈沖,light變?yōu)?h1. Warn開始以時鐘頻率的一半變化。顯然實現(xiàn)了模塊1和模塊2的功能。 每來一個時鐘信號,位選按次序變化一次,斷選信號變化一次,對應于該位所顯示的分數(shù)的數(shù)碼管控制數(shù)值。開始時,由于每人開始都是100分,段選百位和十位應顯示1和0,對應斷選信號為7h01,7h4f;第八位用于顯示搶答到的組數(shù),當?shù)诎宋晃贿x打開時,對應斷選輸出為7h4f,恰好對應于所選組數(shù)第一組。當來了一個right低脈沖后,位選第一位

13、,第二位打開時(控制score1百位和十位),斷選信號輸出7h4f, 7h4f,對應于110分,顯然實現(xiàn)了加分功能和動態(tài)掃描功能。同樣可以驗證減分功能的真確性。五體會本次課程設計是一次對前段時間學習的考驗與檢測,通過這次對一個比較完整數(shù)字系統(tǒng)的設計,從最初的完全迷茫,到后來的題目選定,在到任務分配,與同學一起討論,查閱資料,解決遇到的問題,我真真切切地感受到了設計中的快樂與辛酸。有時候遇到了一個很簡單的錯誤,卻要找很久才能解決。有時候甚至苦惱,發(fā)怒。但是最欣喜的時刻莫過于當綠色的波形在眼前出現(xiàn)的那刻,那是一份努力的結果,每每都讓我感到了小小的興奮。設計過程,我發(fā)現(xiàn)了很多以前沒有注意到的問題,比

14、如,同一個變量不能在兩個always語句中進行賦值,盡管沒有語法錯誤,但是在綜合的時候會報錯。再比如,所有的輸入都應該是wire型變量,所以在例化時,中間變量都要設置成線網(wǎng)型的。再比如,在調用函數(shù)時,不能把輸入直接作為參數(shù)傳遞。多少天的屏幕守候,多少個夜晚的挑燈夜戰(zhàn),當時間的記憶寫滿辛酸的汗水,我想我收獲了艷陽下最豐碩的果實。六程序源碼(1)搶答鎖存鑒別模塊module snatch(key,reset,group );input2:0 key;input reset;output reg1:0 group;reg q;wire qiang,clk;assign qiang=(key0&

15、;key1&key2);assign clk=(qiang|q);always(negedge clk or negedge reset)if(!reset) begin q<=0;endelse q<=!q;always(negedge clk)begincase(key)3'b110:group<=2'b01;3'b101:group<=2'b10;3'b011:group<=2'b11;default:group<=2'b00;endcaseendendmodule(2) 組別譯碼提醒模塊

16、module warning(clk, group,light,warn );input clk;input 1:0 group;output reg2:0 light;output reg warn;reg ena;reg5:0 cnt;initialbeginwarn<=1'b1;cnt<=6'b0;endalways(posedge clk)beginif(ena)begincnt<=cnt+1'b1;if(cnt=6'b1111111)ena<=1'b0;endendalways(group) begincase(grou

17、p)2'b00: light <= 2'b000;2'b01: light <= 2'b001;2'b10: light <= 2'b010;2'b11: light <= 2'b100;endcaseif(group!=00)beginena<=1'b1;endendalways(cnt)warn<=warn+1'b1;endmodule(3)計分模塊module cont(group,score1,score2,score3,right,wrong );input right

18、,wrong;input1:0 group;output reg7:0 score1,score2,score3;reg7:0 s1,s2,s3;initialbegin s1<=8'b00010000; s2<=8'b00010000; s3<=8'b00010000; score1<=8'b00010000; score2<=8'b00010000; score3<=8'b00010000;endfunction7:0 add;input7:0 score_start;reg3:0 gao4,di4;beg

19、in gao4=score_start7:4;di4=score_start3:0+4'b1;if(di4=4'b1010)begindi4=4'b0000;gao4=gao4+4'b1;endadd=gao4,di4;endendfunctionfunction7:0 reduce;input7:0 score_start;reg3:0 gao4,di4;begin gao4=score_start7:4;di4=score_start3:0;if(di4=4'b0)begingao4=gao4-4'b1;di4=4'b1001;end

20、elsedi4=di4-4'b1;reduce=gao4,di4;endendfunctionalways(negedge right,negedge wrong)beginif(right=0) beginif(group=2'b01) s1=add(s1);if(group=2'b10) s2=add(s2);if(group=2'b11) s3=add(s3);score1=s1;score2=s2;score3=s3;end elsebeginif(group=2'b10) s1=reduce(s1);if(group=2'b10) s2

21、=reduce(s2);if(group=2'b11) s3=reduce(s3);score1=s1;score2=s2;score3=s3;endendendmodule(4)動態(tài)掃描組別分數(shù)顯示模塊module scan_led(group,score1,score2,score3,clk,wei,duan);input 7:0score1,score2,score3;input clk;input1:0 group;output reg6:0 duan;output reg7:0 wei;reg2:0 cnt_scan;reg3:0 dataout;initialbegincn

22、t_scan<=16'b0;endalways(posedge clk)cnt_scan<=cnt_scan+1'b1;always(cnt_scan)begincase(cnt_scan)3'b000:wei=8'b0000_0001;3'b001:wei=8'b0000_0010;3'b010:wei=8'b0000_0100;3'b011:wei=8'b0000_1000;3'b100:wei=8'b0001_0000;3'b101:wei=8'b0010_0000;3'b110:wei=8'b0100_0

溫馨提示

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

評論

0/150

提交評論