簡易數字跑表設計_第1頁
簡易數字跑表設計_第2頁
簡易數字跑表設計_第3頁
簡易數字跑表設計_第4頁
簡易數字跑表設計_第5頁
免費預覽已結束,剩余9頁可下載查看

下載本文檔

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

文檔簡介

1、西安郵電大學數字控制系統課程設計報告書院(系)名稱:自動化學院學生姓名:自動化專業名稱:自動11032014年9月1日至2014年9月12日乘法器設計一、設計要求:計時精度10ms,計時范圍59.99秒。(1) 對單人計時,能實現暫停、顯示及清零功能,在數碼管上實時顯示,設置啟動/暫停、清零按鍵;(2) 對多個人同時計時,在數碼管上實時顯示,并能回顯出六個時間。可控制顯示,設置清零、取時按鍵;(3) 采用狀態機設計;(4) 百分秒在數碼管上實時顯示,秒利用多個數碼管顯示BCD值。二、設計過程:1. 方案設計:1) 畫狀態圖:按鍵狀態輸出復位: 00開始: S0清 零: z=0;啟/ 停:01計

2、數:S1不清零: z=1;存/ 回顯:10暫停: S2存/ 回顯: S32)寫程序:在一個 module 模塊里,有多個 always 塊; 有分頻、計數、存儲、輸出等模塊; 測試模塊的輸入輸出與源程序的輸入輸出相反;2. 系統仿真:Verilog 仿真所需仿真環境: modelsim3. 管腳配置:1.四、軟件設計 :源程序秒高,秒module paobiao(clk,rst,pause,save,mg,md,bg,bd);/低,百分秒高,百分秒低input clk,rst,pause,save;output reg 3:0 mg,md,bg,bd;reg 15:0 zd,zz,zg;/中間

3、變量reg 17:0 count1;reg clk1;/100msreg pause_temp,save_temp;/ 取上升沿reg 13:0 count2,reg0,reg1,reg2,reg3,reg4,reg5;reg 2:0 count3;/reg 1:0 state,next_state;reg cn1;parameter S0=2'b00,S1=2'b01,S2=2'b11;/ 分頻always (posedge clk or negedge rst)begin if(!rst) count1<=0;else if(count1=200000) co

4、unt1<=0;/200000 else count1<=count1+1;end always (posedge clk ) begin if(!rst) clk1<=0;else if(count1=99999) clk1<=clk1;/99999else clk1<=clk1;end/ 總計時always (negedge clk1 or negedge rst)/clk1begin if(!rst) count2<=0;else if(state=S1) count2<=count2+1;/ else if(state=S2) count2&l

5、t;=count2;else count2<=count2;end/ 存儲個數計數always (negedge rst or negedge save)begin if(!rst) count3<=0;else if (next_state=S1) count3<=count3+1;else if (next_state=S2) count3<=count3-1;else count3<=count3;end/ 毫秒低位顯示結果always (negedge rst or posedge clk)begin if(!rst) bd<=0;else if(s

6、tate=S1) bd<=count2%10;else if(state=S2) begin case (count3)3'b000:bd<=reg0%10;3'b001:bd<=reg1%10;3'b010:bd<=reg2%10;3'b011:bd<=reg3%10;3'b100:bd<=reg4%10;3'b101:bd<=reg5%10;default:bd<=reg0%10;endcaseendelsebd<=bd;end/ 毫秒高位顯示結果always (negedge rst o

7、r posedge clk)begin if(!rst) bg<=0;else if(state=S1) bg<=(count2/10)%10;else if(state=S2) begin case (count3)3'b000:bg<=(reg0/10)%10;3'b001:bg<=(reg1/10)%10;3'b010:bg<=(reg2/10)%10;3'b011:bg<=(reg3/10)%10;3'b100:bg<=(reg4/10)%10;3'b101:bg<=(reg5/10)%10

8、;default:bg<=(reg0/10)%10;endcaseelseend bg<=bg;end/ 秒位顯示結果always (negedge rst or posedge clk)begin if(!rst) md<=0;else if(state=S1) md<=(count2/100)%10;else if(state=S2)begincase (count3)3'b000:md<=(reg0/100)%10;3'b001:md<=(reg1/100)%10;3'b010:md<=(reg2/100)%10;3

9、9;b011:md<=(reg3/100)%10;3'b100:md<=(reg4/100)%10;3'b101:md<=(reg5/100)%10;default:md<=(reg0/100)%10;endcase endelse md<=md;end/ 十秒位顯示結果always (negedge rst or posedge clk)begin if(!rst) mg<=0;else if(state=S1) mg<=(count2/1000)%10;else if(state=S2)begincase (count3)3'

10、;b000:mg<=(reg0/100)%10;3'b001:mg<=(reg1/100)%10;3'b010:mg<=(reg2/100)%10;3'b011:mg<=(reg3/100)%10;3'b100:mg<=(reg4/100)%10;3'b101:mg<=(reg5/100)%10;default:mg<=(reg0/100)%10;endcaseendelse mg<=mg;endalways (negedge rst or posedge clk)/ 定義當前狀態begin if(!rst

11、) state<=S0;/異步復位, S0 為初始狀態else state<=next_state;end/ 狀態轉移always (state or pause or pause_temp )begincase (state)S0:begin if(pause=0&&pause_temp=1)next_state<=S1;else next_state<=S0;endS1:begin if(pause=0&&pause_temp=1) next_state<=S2;else next_state<=S1;endS2:begi

12、n if(pause=0&&pause_temp=1) next_state<=S1;else next_state<=S2;enddefault:next_state<=S0;endcaseend/ 存數always(negedge rst or negedge save )begin if(!rst) beginreg0<=0; reg1<=0; reg2<=0; reg3<=0;reg4<=0;reg5<=0;endelsebegin if(count3=0) reg0<=count2;else if(count

13、3=1) reg1<=count2;else if(count3=2) reg2<=count2;else if(count3=3) reg3<=count2;else if(count3=4) reg4<=count2;else if(count3=5) reg5<=count2;else begin reg0<=0;reg1<=0;reg2<=0;reg3<=0;reg4<=0;reg5<=0;endendend/ 取啟停鍵上升沿always (posedge clk )begin if(!rst) pause_temp&l

14、t;=0;else pause_temp<=pause;end/ 取保存翻看上升沿always (posedge clk )begin if(!rst) save_temp<=0;else save_temp<=save;end endmodule 2. 測試程序module paobiao_tp;reg clk,rst,pause,save;wire3:0 mg,md,bg,bd;parameter DELY=10;paobiao u1(clk,rst,pause,save,mg,md,bg,bd);always #(DELY/2) clk=clk;initialbegin clk=0;pause=0;save=0;rst=0;#DELY rst=1;save=0;pause=0;#DELY pause=1;#DELY pause=0;#DELY save=1;endendmodule五、實驗結果1. 仿真圖像2. 硬件電路顯示 六、個人完成工作及心得體會我們組設計的是數字跑表, 我負責畫狀態圖和系統程序和仿真。畫狀態圖時由于對狀態機理解不到位, 畫的狀態圖有點問題, 后來經 老師指導改正了; 我負責寫仿真測試程序, 這需要對源程序的輸入輸

溫馨提示

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

評論

0/150

提交評論