EDA課程設(shè)計百進(jìn)制計數(shù)器_第1頁
EDA課程設(shè)計百進(jìn)制計數(shù)器_第2頁
EDA課程設(shè)計百進(jìn)制計數(shù)器_第3頁
EDA課程設(shè)計百進(jìn)制計數(shù)器_第4頁
EDA課程設(shè)計百進(jìn)制計數(shù)器_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

鄭州航空工業(yè)管理學(xué)院EDA技術(shù)及應(yīng)用》課程設(shè)計報告2012 屆 通信工程 專業(yè)1213071 班級題目: 百進(jìn)制計數(shù)器姓 名 學(xué)號同組人2014 年6月 25日任務(wù)書百進(jìn)制計數(shù)器設(shè)計要求(1) 技術(shù)范圍為 0~199(2) 可以在數(shù)碼管上顯示出計數(shù)值, 且數(shù)值為十進(jìn)制數(shù)(3) 計數(shù)方向:雙向(即可遞增遞減計數(shù))在EDA實驗箱上完成。1.晶振為 48MHz2.FPGA器件為ALTERA 的EP1C6Q240C83.采用數(shù)碼管顯示一、設(shè)計方案規(guī)劃:整體規(guī)劃(確定輸入與輸出)時鐘輸入

clk,

遞增遞減控制

dir,

輸入按鍵

key,

數(shù)碼管選擇輸出引腳

dig,

數(shù)碼管段輸出引腳

seg,具體如下:inputclk;// 輸入時鐘inputdir;// 遞增遞減控制鍵input[1:0]key;// 輸入按鍵output[2:0]dig;// 數(shù)碼管選擇輸出引腳output[7:0]seg;// 數(shù)碼管段輸出引腳功能劃分與模塊劃分a.秒信號產(chǎn)生部分分頻模塊:計算機(jī)本身頻率較大,顯示時間短,為顯示人眼可見,將高頻率改為低頻率,即增減周期。按鍵消抖處理部分按鍵消抖模塊:作為機(jī)械開關(guān)鍵盤,在按鍵操作時,機(jī)械觸點的彈性以及電壓突跳等原因,在觸點閉合或開啟的瞬間出現(xiàn)電壓抖動,所以處理后消除誤觸發(fā)。計數(shù)處理部分遞增遞減計數(shù)模塊:計數(shù)要求在 0-199之間可增可減。數(shù)碼管動態(tài)掃描顯示部分選擇掃描顯示數(shù)據(jù)和選擇數(shù)碼管顯示位顯示譯碼部分顯示相對應(yīng)的數(shù)據(jù)各功能或各模塊的功能細(xì)分,分頻模塊定義clk上升沿觸發(fā)器定義計數(shù)器寄存器,計數(shù)部分b.按鍵消抖模塊key 輸入按鍵key_done 按鍵消抖輸出遞增遞減計數(shù)模塊清零部分控制鍵 dir,遞增部分,遞減部分,sum計數(shù)緩存器數(shù)碼管動態(tài)掃描顯示部分顯示不同各位的數(shù)據(jù),選擇對應(yīng)的不同數(shù)碼管,dig數(shù)碼管選擇顯示譯碼部分共陽數(shù)碼管,低電平有效, seg數(shù)碼管譯碼結(jié)果二、各模塊的實現(xiàn)方法,技術(shù)、要點分頻模塊:always@(posedgeclk)// 定義clk上升沿觸發(fā)器。分頻 //秒信號產(chǎn)生部分beginq=q+1'b1;if(q==26'd24000000)beginq=0;//sec=~sec;//

計數(shù)器清零致位秒標(biāo)志endend按鍵消抖: always@(posedgeq[16])begindout1<={dir,key};dout2<=dout1;dout3<=dout2;endalways@(negedgekey_done[0])beginkeyen=~keyen;endregr_dir;always@(negedgekey_done[2])beginr_dir=~r_dir;end計數(shù)塊遞增計數(shù):always@(posedgesecornegedgekey_done[1])//200 進(jìn)制計數(shù)beginif(!key_done[1])// 是清零鍵嗎?sum<=12'h000;elsebeginif(r_dir)beginif(!keyen)beginif(sum>12'h198)sum<=12'h000;elsesum[3:0]<=sum[3:0]+4'h1; // 個位加1if(sum[3:0]==4'h9)beginsum[3:0]<=0;sum[7:4]<=sum[7:4]+4'h1; // 十位加1if(sum[7:4]==4'h9)beginsum[7:4]<=0;sum[11:8]<=sum[11:8]+4'h1;// 百位加1endif(sum==12'h199)sum[11:0]<=12'h000;endendend遞減計數(shù):

elseif(!keyen)beginif(sum==12'h000)sum<=12'h199;elsesum[3:0]<=sum[3:0]-4'h1;//

個位減

1if(sum[3:0]==4'h0)beginsum[3:0]<=4'h9;sum[7:4]<=sum[7:4]-4'h1;//

十位減

1if(sum[7:4]==4'h0)beginsum[7:4]<=4'h9;sum[11:8]<=sum[11:8]-4'h1;//

百位減

1endif(sum==12'h000)sum[11:0]<=12'h199;endend數(shù)碼管動態(tài)掃描顯示部分 :always@(posedgeclk) //count[17:15]begincase(q[16:15])2'd0:disp_temp=sum[3:0];2'd1:disp_temp=sum[7:4];2'd2:disp_temp=sum[11:8];

大約1ms改變一次//選擇掃描顯示數(shù)據(jù)//顯示個位//顯示十位// 顯示百位2'd3:disp_temp=4'hf;

//為15,全滅endcasecase(q[16:15])2'd0:dig_r=3'b110;2'd1:dig_r=3'b101;2'd2:dig_r=3'b011;default:dig_r=3'b111;

//選擇數(shù)碼管顯示位//選擇第一個數(shù)碼管顯示//選擇第二個數(shù)碼管顯示//選擇第三個數(shù)碼管顯示//選擇第四個數(shù)碼管顯示endcaseend七段碼顯示模塊:

always@(posedgeclk)//

顯示譯碼

,共陽數(shù)碼管

(低電平有效,即為0時亮)begincase(disp_temp)4'h0:seg_r=8'hc0;4'h1:seg_r=8'hf9;

//顯示//顯示

014'h2:seg_r=8'ha4;//顯示24'h3:seg_r=8'hb0;//顯示34'h4:seg_r=8'h99;//顯示44'h5:seg_r=8'h92;//顯示54'h6:seg_r=8'h82;//顯示64'h7:seg_r=8'hf8;//顯示74'h8:seg_r=8'h80;//顯示84'h9:seg_r=8'h90;//顯示9default:seg_r=8'hff;//不顯示endcaseend三、模塊的編寫modulecount199(clk,key,dir,dig,seg);inputclk;// 輸入時鐘inputdir;// 遞增遞減控制input[1:0]key;//

輸入按鍵output[2:0]dig;//output[7:0]seg;//reg[7:0]seg_r;//reg[2:0]dig_r;//reg[25:0]q;//

數(shù)碼管選擇輸出引腳數(shù)碼管段輸出引腳定義數(shù)碼管輸出寄存器定義數(shù)碼管選擇輸出寄存器定義計數(shù)器寄存器 分頻計數(shù)器,最大

2^6*2^20<64*10^6

分頻reg[3:0]disp_temp;//reg[11:0]sum;//regsec,keyen;//

定義顯示數(shù)據(jù)寄存器計數(shù)緩存器定義標(biāo)志位reg[2:0]dout1,dout2,dout3;//

寄存器wire[2:0]key_done;//

按鍵消抖輸出assigndig=dig_r;//assignseg=seg_r;//always@(posedgeclk)//

輸出數(shù)碼管選擇輸出數(shù)碼管譯碼結(jié)果定義clk上升沿觸發(fā)器。分頻

//秒信號產(chǎn)生部分beginq=q+1'b1;if(q==26'd24000000)beginq=0;//sec=~sec;//

計數(shù)器清零致位秒標(biāo)志endend//按鍵消抖處理部分assignkey_done=(dout1|dout2|dout3);always@(posedgeq[16])begindout1<={dir,key};dout2<=dout1;dout3<=dout2;end

//按鍵消抖輸出always@(negedgekey_done[0])beginkeyen=~keyen;endregr_dir;always@(negedgekey_done[2])beginr_dir=~r_dir;endalways@(posedgesecornegedgekey_done[1])//200begin

進(jìn)制計數(shù)if(!key_done[1])//

是清零鍵嗎

?sum<=12'h000;elsebeginif(r_dir)beginif(!keyen)beginif(sum>12'h198)sum<=12'h000;elsesum[3:0]<=sum[3:0]+4'h1;if(sum[3:0]==4'h9)beginsum[3:0]<=0;sum[7:4]<=sum[7:4]+4'h1; //

//

個位加1十位加

1if(sum[7:4]==4'h9)beginsum[7:4]<=0;sum[11:8]<=sum[11:8]+4'h1;//百位加1endif(sum==12'h199)sum[11:0]<=12'h000;endendendelseif(!keyen)beginif(sum==12'h000)sum<=12'h199;elsesum[3:0]<=sum[3:0]-4'h1;//

個位減

1if(sum[3:0]==4'h0)beginsum[3:0]<=4'h9;sum[7:4]<=sum[7:4]-4'h1;//

十位減

1if(sum[7:4]==4'h0)beginsum[7:4]<=4'h9;sum[11:8]<=sum[11:8]-4'h1;//

百位減

1endif(sum==12'h000)sum[11:0]<=12'h199;endendendend//數(shù)碼管動態(tài)掃描顯示部分always@(posedgeclk)//count[17:15]

大約

1ms改變一次begincase(q[16:15])2'd0:disp_temp=sum[3:0];2'd1:disp_temp=sum[7:4];2'd2:disp_temp=sum[11:8];

//選擇掃描顯示數(shù)據(jù)//顯示個位//顯示十位// 顯示百位2'd3:disp_temp=4'hf;

//為

15,全滅endcasecase(q[16:15])

//選擇數(shù)碼管顯示位2'd0:dig_r=3'b110;2'd1:dig_r=3'b101;2'd2:dig_r=3'b011;default:dig_r=3'b111;endcaseend

選擇第一個數(shù)碼管顯示選擇第二個數(shù)碼管顯示選擇第三個數(shù)碼管顯示選擇第四個數(shù)碼管顯示always@(posedgeclk)// 顯示譯碼,共陽數(shù)碼管(低電平有效,即為 0時亮)begincase(disp_temp)4'h0:seg_r=8'hc0; //顯示04'h1:seg_r=8'hf9; //顯示14'h2:seg_r=8'ha4; //顯示24'h3:seg_r=8'hb0; //顯示34'h4:seg_r=8'h99; //顯示44'h5:seg_r=8'h92; //顯示54'h6:seg_r=8'h82; //顯示64'h7:seg_r=8'hf8; //顯示74'h8:seg_r=8'h80; //顯示84'h9:seg_r

溫馨提示

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

最新文檔

評論

0/150

提交評論