FPGA應(yīng)用與開發(fā)實(shí)踐教程 課件 項(xiàng)目5 秒表電路設(shè)計(jì)_第1頁(yè)
FPGA應(yīng)用與開發(fā)實(shí)踐教程 課件 項(xiàng)目5 秒表電路設(shè)計(jì)_第2頁(yè)
FPGA應(yīng)用與開發(fā)實(shí)踐教程 課件 項(xiàng)目5 秒表電路設(shè)計(jì)_第3頁(yè)
FPGA應(yīng)用與開發(fā)實(shí)踐教程 課件 項(xiàng)目5 秒表電路設(shè)計(jì)_第4頁(yè)
FPGA應(yīng)用與開發(fā)實(shí)踐教程 課件 項(xiàng)目5 秒表電路設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

秒表電路設(shè)計(jì)項(xiàng)目5StopwatchCircuitDesign學(xué)習(xí)目標(biāo)Learninggoal01GRADUATIONTHESIS課程導(dǎo)引CourseGuide應(yīng)用場(chǎng)景Application02任務(wù)描述Taskdescription03任務(wù)實(shí)施Implementation04問(wèn)題探究Qexploration05鞏固練習(xí)Practice06挑戰(zhàn)進(jìn)階Advanced073學(xué)習(xí)目標(biāo)LearninggoalC掌握共陰極數(shù)碼管和共陽(yáng)極數(shù)碼管的電路原理目標(biāo)1掌握數(shù)碼管動(dòng)態(tài)掃描顯示的原理目標(biāo)3掌握利用JTAG接口編程串行配置器件的方法(掉電后配置不丟失)目標(biāo)4掌握用移位寄存器實(shí)現(xiàn)按鍵消抖的原理和程序設(shè)計(jì)目標(biāo)24應(yīng)用場(chǎng)景Application跑馬燈系統(tǒng)秒表是作為一種專用精確計(jì)時(shí)工具,具備開啟、停止和重置的功能,廣泛應(yīng)用于運(yùn)動(dòng)比賽、科學(xué)實(shí)驗(yàn)、個(gè)人訓(xùn)練和工業(yè)生產(chǎn)等。其基本功能有:計(jì)時(shí)顯示復(fù)位重啟多組數(shù)據(jù)保存5任務(wù)描述Taskdescription本項(xiàng)目要求使用FPGA控制兩個(gè)數(shù)碼管,顯示00-99秒的計(jì)時(shí),任務(wù)要求如下:任務(wù)要求1設(shè)置兩個(gè)按鍵,一個(gè)復(fù)位,另一個(gè)按鍵實(shí)現(xiàn)計(jì)時(shí)的開始、暫停和清零三種模式的切換;任務(wù)要求2FPGA開發(fā)板上電后,兩個(gè)數(shù)碼管顯示“00”;任務(wù)要求4第三次按下按鍵,秒計(jì)時(shí)清零,數(shù)碼管顯示“00”;第四次開始每次按下按鍵,重復(fù)(3)-(5)的過(guò)程;任務(wù)要求3第一次按下按鍵,啟動(dòng)秒計(jì)時(shí),數(shù)碼管顯示在“00”到“99”循環(huán)秒計(jì)時(shí);第二次按下按鍵,秒計(jì)時(shí)暫停;任務(wù)要求5復(fù)位鍵按下后,數(shù)碼管回到任務(wù)(2)狀態(tài)。6任務(wù)實(shí)施TaskImplementation1.本項(xiàng)目使用的軟硬件資源與電路原理開發(fā)平臺(tái):QuartusPrime硬件描述語(yǔ)言:VerilogHDLFPGA芯片:采用AlteraCycloneIVE系列的EP4CE6E22C8,有6000多個(gè)邏輯單元和92個(gè)可用IO口。開發(fā)板資源:采用IntelEP4CE6開發(fā)板,5V直流電為FPGA等元件提供所需的各種電壓,并可向外輸出5V、3.3V電壓;配有EPCS4配置芯片、JTAG下載端口和50MHz有源晶振,F(xiàn)PGA所有引腳均通過(guò)2.54mm標(biāo)準(zhǔn)排針引出。7任務(wù)實(shí)施TaskImplementation開發(fā)板上共有8個(gè)共陽(yáng)數(shù)碼管,由兩個(gè)四位一體的數(shù)碼管構(gòu)成。采用PNP三極管來(lái)驅(qū)動(dòng)并且控制數(shù)碼管選通點(diǎn)亮,數(shù)碼管段碼共用8段控制信號(hào),100歐電阻是限流保護(hù)電阻。在本項(xiàng)目中只使用了兩位數(shù)碼管,對(duì)應(yīng)于途中LED7和LED8位驅(qū)動(dòng)的兩個(gè)數(shù)碼管。8任務(wù)實(shí)施TaskImplementationFPGA板載4個(gè)用戶按鍵輸入,每個(gè)按鍵都是直接連接FPGA芯片上一個(gè)引腳,當(dāng)有按鍵按下對(duì)應(yīng)的引腳為邏輯低電平,否則為高電平,本設(shè)計(jì)使用K1中作為按鍵輸入,對(duì)應(yīng)PIN59引腳。另外,板載1個(gè)復(fù)位控制按鍵,對(duì)應(yīng)rst,沒(méi)有按下為高電平,按下為低電平,F(xiàn)PGA開始復(fù)位。板載4個(gè)用戶按鍵電路原理圖復(fù)位電路9任務(wù)實(shí)施TaskImplementation外部時(shí)鐘clk、復(fù)位信號(hào)rst、數(shù)碼管的八個(gè)段選信號(hào)和兩個(gè)位選信號(hào)、以及一個(gè)按鍵與FPGA芯片的IO連接關(guān)系:數(shù)碼管段選

段選:

A:141低電平點(diǎn)亮B:143C:1D:3E:10F:30G:32DP:34數(shù)碼管位選位選:

LED7:132對(duì)應(yīng)最右側(cè)的兩個(gè)數(shù)碼管,輸出低電平選中相應(yīng)的數(shù)碼管LED8:128外部時(shí)鐘clk2350MHz復(fù)位rst88低電平復(fù)位按鍵key59按鍵按下為低電平10任務(wù)實(shí)施TaskImplementation2.數(shù)碼管動(dòng)態(tài)顯示其優(yōu)點(diǎn)是占用硬件資源少,功耗小,但軟件工作量大。動(dòng)態(tài)掃描顯示就是逐位輪流點(diǎn)亮:通過(guò)位選信號(hào)選擇當(dāng)前需要顯示的“位”,字形碼僅對(duì)位選被選中的數(shù)碼管有效。段選信號(hào)(字形碼)輸出,用于驅(qū)動(dòng)被選中的位顯示相應(yīng)數(shù)字。循環(huán)步驟1-2,實(shí)現(xiàn)多位數(shù)碼管的動(dòng)態(tài)顯示。實(shí)現(xiàn)逐位掃描,動(dòng)態(tài)顯示。(每只數(shù)碼管點(diǎn)亮的間隔不要超過(guò)20ms)。如顯示器的位數(shù)不大于8位,位選端只需要一個(gè)8位I/O口進(jìn)行動(dòng)態(tài)掃描,而段選端也只需一個(gè)8位I/O。位選信號(hào)段選信號(hào)分頻技術(shù)-1秒時(shí)鐘信號(hào)生成狀態(tài)控制-啟動(dòng)/暫停/清零切換按鍵處理-消抖與負(fù)脈沖輸出顯示驅(qū)動(dòng)-雙數(shù)碼管動(dòng)態(tài)掃描通過(guò)計(jì)數(shù)器對(duì)高頻時(shí)鐘信號(hào)進(jìn)行分頻處理,產(chǎn)生精確的1Hz基準(zhǔn)時(shí)鐘信號(hào)采用觸發(fā)器或者延時(shí)判斷實(shí)現(xiàn)消抖,輸出穩(wěn)定負(fù)脈沖信號(hào)通過(guò)按鍵實(shí)現(xiàn)秒計(jì)時(shí)在啟動(dòng)、暫停和清零三種功能之間切換利用人眼視覺暫留效應(yīng),分時(shí)復(fù)用驅(qū)動(dòng)兩個(gè)數(shù)碼管顯示計(jì)時(shí)數(shù)值,每個(gè)數(shù)碼管點(diǎn)亮的時(shí)間在10ms左右3.技術(shù)分析任務(wù)實(shí)施TaskImplementation12任務(wù)實(shí)施TaskImplementation4.設(shè)計(jì)框架跑馬燈電路頂層符號(hào)跑馬燈硬件設(shè)計(jì)框圖主要模塊:(1)分頻器模塊:得到頻率為1Hz的時(shí)鐘信號(hào);(2)按鍵消抖模塊:通過(guò)消抖模塊得到一個(gè)穩(wěn)定的負(fù)脈沖信號(hào);(3)功能切換模塊:秒計(jì)時(shí)在啟動(dòng)、暫停和清的切換;(4)數(shù)碼管顯示譯碼模塊:兩位數(shù)碼管。13任務(wù)實(shí)施TaskImplementation5.技術(shù)設(shè)計(jì)5.1分頻器模塊設(shè)計(jì)分頻器設(shè)計(jì)電路符號(hào)通過(guò)對(duì)外部輸入50MHz的clk進(jìn)行分頻,得到一個(gè)周期為1秒的clk_1s信號(hào),參考代碼如下:modulediv_1Hz(clk,rst,clk_1s);inputclk,rst;outputclk_1s;reg[30:0]count_1s;always@(posedgeclkornegedgerst)beginif(!rst)count_1s=0;elseif(count_1s==24999999)begincount_1s<=0;clk_1s<=~clk_1s;endelsecount_1s<=count_1s+1'b1;endendmodule14任務(wù)實(shí)施TaskImplementation5.2按鍵消抖模塊設(shè)計(jì)按鍵消抖原理圖按鍵消抖模塊符號(hào)消抖電路:3個(gè)輸入端和1個(gè)輸出端,其中clk為50MHz的外部時(shí)鐘,rst為復(fù)位信號(hào),key為按鍵信號(hào),outp為消抖后的輸出。消抖原理:抖動(dòng)一般在5ms左右,輸入的cclk時(shí)鐘信號(hào)必須足夠低,一般可選190Hz,經(jīng)過(guò)三個(gè)周期結(jié)束之前即可以消除抖動(dòng),在輸出端outp得到穩(wěn)定的負(fù)脈沖信號(hào)。key按下后為低電平,經(jīng)過(guò)消抖后可在輸出端outp得到一個(gè)穩(wěn)定的負(fù)脈沖信號(hào),通過(guò)識(shí)別outp的下降沿,判斷按鍵key按下。常用消抖電路:計(jì)數(shù)器型消抖電路D觸發(fā)器型消抖電路狀態(tài)機(jī)型消抖電路其它方法15任務(wù)實(shí)施TaskImplementation5.2按鍵消抖模塊設(shè)計(jì)modulexiaodou(clk,rst,key,outp);

inputclk,rst,key;outputoutp;wireoutp;

wireclkk;reg[17:0]q;always@(posedgeclk)beginq<=q+1;endassignclkk=q[17]; //產(chǎn)生消抖時(shí)鐘clkkregdelay1;regdelay2;regdelay3;always@(posedgeclkkornegedgerst)

//用移位寄存器實(shí)現(xiàn)消抖beginif(!rst)begindelay1<=1'b0;delay2<=1'b0;delay3<=1'b0;endelsebegindelay1<=~key;delay2<=delay1;delay3<=delay2;endendassignoutp=~(delay1&delay2&delay3);//通過(guò)連續(xù)賦值獲取消抖后的輸出endmodule16任務(wù)實(shí)施TaskImplementation5.3功能切換模塊設(shè)計(jì)按鍵消抖模塊符號(hào)clk_1s:分頻器模塊的輸出1Hz信號(hào),outp:按鍵消抖模塊的輸出,rst:復(fù)位信號(hào)count:本模塊的秒計(jì)時(shí)輸出,取值00~99。實(shí)現(xiàn)功能的切換啟動(dòng)模式:當(dāng)mode=1時(shí),通過(guò)1Hz時(shí)鐘驅(qū)動(dòng)count遞增,[0,99]暫停模式:mode=2時(shí)切斷時(shí)鐘輸入,保持當(dāng)前計(jì)數(shù)值不變清零模式:mode=0觸發(fā)時(shí)直接重置count為0并返回等待狀態(tài)程序結(jié)構(gòu):1個(gè)always語(yǔ)句塊用于改變模式變量1個(gè)always語(yǔ)句塊通過(guò)模式變量切換功能17任務(wù)實(shí)施TaskImplementationmodulemode_switch(outp,rst,clk_1s,count);inputoutp,rst,clk_1s;output[7:0]count;reg[7:0]count;reg[1:0]mode=2'b00;//控制秒表模式//識(shí)別按鍵,切換mode的值always@(negedgeoutpornegedgerst)beginif(!rst)mode=1;//復(fù)位時(shí),mode為1,即啟動(dòng)秒計(jì)時(shí)elseif(mode<3)mode=mode+1;else mode=1;endalways@(posedgeclk_1s)begincase(mode)2'b01:beginif(count==99)count<=0;elsecount<=count+1’b1;end//秒計(jì)時(shí)啟動(dòng)2'b10:begincount<=count;end//秒計(jì)時(shí)暫停2'b11:begincount<=0;end//秒計(jì)時(shí)清零endcaseendendmodule18任務(wù)實(shí)施TaskImplementation5.4數(shù)碼管顯示譯碼模塊設(shè)計(jì)按鍵消抖模塊符號(hào)clk:外部時(shí)鐘信號(hào),rst:復(fù)位信號(hào)count:功能切換模塊的秒計(jì)時(shí)shi_wei:十位位選控制信號(hào),低電平選中g(shù)e_wei:個(gè)位位選控制信號(hào),低電平選中seg[7:0]:數(shù)碼管的段碼控制信號(hào),8位

19任務(wù)實(shí)施TaskImplementationmoduledecode(clk,rst,count,shi_wei,ge_wei,seg);inputclk,rst;input[7:0]count;outputshi_wei,ge_wei;output[7:0]seg;regshi_wei,ge_wei;reg[7:0]seg;reg[3:0]data;//要譯碼的數(shù)字:0-9//位控制計(jì)數(shù)器cnt20ms,一次溢出的時(shí)間近似20msreg[19:0]cnt20ms;always@(posedgeclkornegedgerst)beginif(!rst)cnt20ms=0;elsecnt20ms<=cnt20ms+1;end//數(shù)碼管動(dòng)態(tài)掃描,輪流選中個(gè)位和十位數(shù)碼管并顯示alwaysbegincase(cnt20ms[19])1'b0:beginshi_wei=1;ge_wei=0;data[3:0]<=count/10;end//1'b1:beginshi_wei=0;ge_wei=1;data[3:0]<=count%10;end//default:beginshi_wei=‘bx;ge_wei=‘bx;data[3:0]<='bx;endendcaseend20任務(wù)實(shí)施TaskImplementation//完成共陽(yáng)數(shù)碼管的譯碼alwaysbegincase(data[3:0])4'b0000:seg[7:0]<=~8'b11111100;4'b0001:seg[7:0]<=~8'b01100000;4'b0010:seg[7:0]<=~8'b11011010;4'b0011:seg[7:0]<=~8'b11110010;4'b0100:seg[7:0]<=~8'b01100110;4'b0101:seg[7:0]<=~8'b10110110;4'b0110:seg[7:0]<=~8'b10111110;4'b0111:seg[7:0]<=~8'b11100000;

4'b1000:seg[7:0]<=~8'b11111110;4'b1001:seg[7:0]<=~8'b11110110;4'b1010:seg[7:0]<=~8'b11101110;4'b1011:seg[7:0]<=~8'b00111110;4'b1100:seg[7:0]<=~8'b10011100;4'b1101:seg[7:0]<=~8'b01111010;4'b1110:seg[7:0]<=~8'b10011110;4'b1111:seg[7:0]<=~8'b10001110;default:seg[7:0]<='bx;endcaseendendmodule21任務(wù)實(shí)施TaskImplementation5.5模塊整合秒表電路設(shè)計(jì)框圖modulemiaobiao(clk,rst,key,shi_wei,ge_wei,seg);inputclk,rst,key;output[7:0]seg;outputshi_wei,ge_wei;wireclk_1s;wireoutp;wire[7:0]count;

//調(diào)用分頻器模塊div_1Hzx0(clk,rst,clk_1s);//調(diào)用按鍵消抖模塊xiaodoux1(clk,rst,key,outp);

//調(diào)用功能切換模塊mode_switchx2(outp,rst,clk_1s,count);//調(diào)用數(shù)碼管顯示譯碼模塊decodex3(clk,rst,count,shi_wei,ge_wei,seg);endmodule22任務(wù)實(shí)施TaskImplementation5.6板級(jí)驗(yàn)證板級(jí)驗(yàn)證的流程:1.創(chuàng)建項(xiàng)目并輸入設(shè)計(jì)文件:按照新建項(xiàng)目的向?qū)Р襟E,選定路徑,創(chuàng)建秒表電路設(shè)計(jì)項(xiàng)目miaobiao;分別創(chuàng)建秒表電路設(shè)計(jì)的頂層模塊miaobiao.v、分頻器模塊div_1Hz.v、按鍵消抖模塊xiaodou.v、功能切換模塊mode_switch.v和數(shù)碼管顯示譯碼模塊decode.v,并輸入代碼并保存;23任務(wù)實(shí)施TaskImplementation2.設(shè)計(jì)處理,設(shè)計(jì)處理:將miaobiao.v文件設(shè)為頂層進(jìn)行編譯處理24任務(wù)實(shí)施TaskImplementation3.引腳約束,根據(jù)項(xiàng)目需求,對(duì)兩個(gè)數(shù)碼管的位選控制信號(hào)shi_wei和ge_wei、數(shù)碼管的段碼控制信號(hào)seg、一個(gè)按鍵輸入key、時(shí)鐘輸入clk以及復(fù)位信號(hào)rst進(jìn)行引腳約束,約束關(guān)系見圖書5-1。約束完成后重新編譯。25任務(wù)實(shí)施TaskImplementation4.器件編程,將開發(fā)板通過(guò)USB-Blaster連接至電腦,利用JTAG接口編程串行配置器件(掉電后配置不丟失)。在File菜單下拉菜單中選擇convert/programmingfiles,在彈出對(duì)話框選擇生成文件類型為“JTAGIndirectConfigurationFile(.jic)”和存儲(chǔ)配置芯片型號(hào)“EPCS4”,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論