Contents
1設計目的及要求 2
1.1設計要求 2
1.2設計H的 2
2工作原理和系統框圖 2
3各部分選定方案及電路組成、相關器件說明 2
3.1各部分選定方案 2
3.2相關器件說明 3
4調試過程 8
4.1調試步驟 8
4.2調試過程中出現的錯誤及修正方案 8
5功能測試 10
6設計結論 12
7設計心得與總結 12
7.1設計心得 12
7.2設計總結 13
8參考文獻 13
9 附錄 14
9.1附錄一總體器件表及相關器件的功能表、管腳分布 14
9.2附錄二總體設計圖 14
9.3附錄三仿真結果 14
9.4附錄四小組各成員分工表及個人工作時間表 14
6設計結論
為了實現電梯控制器的設計,我們做了以下幾點工作:
(1)整個設計過程分為了早期的基本功能的實現,中期的加速修改功能添加以及后期的
系統的仿真分析和請教同學,完成了對主要模塊的仿真以及總體功能的測試。
(2)編寫可逆計數器模塊,通過正向和逆向計數,實現了電梯的上下樓功能;
(3)編寫比較器模塊,通過按鍵輸入與計數器輸入的比較,來控制計數器是正向計數還
是逆向計數;
(4)編寫計時器模塊,通過vivado自帶的分頻器和我們寫的分頻器進行二次分頻,從而
可以在七段數碼管上顯示出計數的過程;
(5)編寫譯碼器模塊,將譯碼器的輸入轉化成可以有七段數碼管綁定的管腳,從而實現
了整個電梯控制系統的顯示模塊;
(6)編寫節(jié)拍發(fā)生器模塊,通過FPGA有效的片選信號和段選信號實現了電梯所在樓層的
顯示和乘客想去樓層的顯示;
(7)后期我們進行了分模塊的仿真和總體功能的測試,對出現的問題進行了反復的測試
和調試。
7設計心得與總結
7.1設計心得
【就本次實驗來說】
(1)時鐘的分頻和調試花費了很長時間,EGO1開發(fā)板上給定的時鐘是100MHZ,頻率大快,剛開始時進行了2^15次方分頻,調試之后發(fā)現,頻率還是大快,計數器和計時器不 能顯示數字的變化過程,通過查閱資料后發(fā)現,FPGA內部自帶MMCM,于是進行了二次分頻,顯示恢復正常;
(2)綁定管腳之后,發(fā)現計數器總是在0和9之間變動,仔細查錯后發(fā)現,計數器和比較
器的兩個接口連接反了,調整連線后顯示恢復正常;
(3)譯碼器的編寫是本次實驗的一個亮點,通過譯碼器將計數和計時直接譯碼顯示在七
段數碼管上,既方便又簡單,避免了很多繁雜的小器件;
(4)節(jié)拍發(fā)生器的編寫也是本次實驗的一個亮點,開始實驗時不大了解七段數碼管的段選和片選,查閱資料和請教同學之后發(fā)現,編寫一個節(jié)拍發(fā)生器,前一時刻顯示電梯所在 樓層,后一時刻顯示乘客要去樓層,由于時鐘的脈沖較快,肉眼看來就是兩片數碼管同時 顯示的;
(5)七段數碼管的消隱,實驗時發(fā)現七段數碼管上各段都會亮,只不過不該亮的段顏色較晤,但也不易于區(qū)分,反復調試后發(fā)現是由于節(jié)拍發(fā)生器的時鐘脈沖大快,在進行片選 時出現了顯示的暫留,本文轉載自http://www.biyezuopin.vip/onews.asp?id=15000對節(jié)拍發(fā)生器進行再次分頻之后成功消隱;
(6)實驗后期,我對實驗的代碼進行了簡化,計時器、計數器、節(jié)拍發(fā)生器中都含有分
頻的代碼,于是我另做了分頻器,將重復的代碼刪去,簡化了代碼的風格。
7.2設計總結
【總的來說】
(1)對數字邏輯和Verilog語言進行了鞏固,運用更加熟練,對以后硬件方面的學習打
下堅實的基礎。
(2)做實驗要有充足的耐心,雖然會出現各種小bug,但通過思考、查閱資料、請教老師
同學之后總能解決的;
(3)一項成功的實驗離不開正確的實驗設計,確定實驗選題之后,我就開始了對整個實
驗框圖的設計,反復修改并驗證了可行性;
(4)把課上所學的知識運用到實踐,和同組同學合力實現了電梯控制器的設計。電梯是我們日常生店中每天都在使用的器件,通過這個設計拉近了學習與生店之間的距離,也讓 我更加了解自己的專業(yè)。
(5)對模塊化程序設計的感觸更加深刻,分模塊編寫最后組裝,給實驗的進行帶來了很
大方便。文章來源:http://www.zghlxwxcb.cn/news/detail-488090.html
計時器有一個暫停鍵與計數器的使能瑞相連,當SW1=SW0=0時,計時器的暫停鍵有效,計時器不計時;當SW1=1或SW0=1,計時器工作,且每次計時完成后歸0,并從下一次電梯開始工作時計時。
代碼:module clock( input show, input clk, input pause, input rst,
output reg sm_bit, output reg[6:0]sm_seg
);
reg [3:0]timesec0;
initial begin sm_bit=1; sm_seg=1; timesec0=0; end
always @(posedge clk) begin if(pause) begin if(timesec0==9)
timesec0=0; else
timesec0=timesec0+1; end
end
always@(posedge show) begin
case(timesec0)
0:sm_seg= 7’b1111110; //顯示0
1:sm_seg= 7’b0110000; //顯示1
2:sm_seg= 7’b1101101; //顯示2
3:sm_seg= 7’b1111001; //顯示3
4:sm_seg= 7’b0110011; //顯示4
5:sm_seg= 7’b1011011; //顯示5
6:sm_seg= 7’b1011111; //顯示6
7:sm_seg= 7’b1110000; //顯示7
8:sm_seg= 7’b1111111; //顯示8
9:sm_seg= 7’b1111011; //顯示9 default:
sm_seg= 7’b0000000; //不顯示
endcase end
endmodule
5)譯碼器
該譯碼器不同于一般的譯碼器,它有四個輸入七個輸出,四個輸入直接接A或B,通過譯碼
器與七段數碼管連接,顯示出來。
代碼:module translater(value,outled,en); input [3:0]value;
input en;
output reg [6:0]outled; always @(*)
begin if(!en)
outled=7’b0000001; else
case(value) 4’b0000:outled=7’b1111110; //顯示0
4’b0001:outled=7’b0110000; //顯示1
4’b0010:outled=7’b1101101; //顯示2
4’b0011:outled=7’b1111001; //顯示3
4’b0100:outled=7’b0110011; //顯示4
4’b0101:outled=7’b1011011; //顯示5
4’b0110:outled=7’b1011111; //顯示6
4’b0111:outled=7’b1110000; //顯示7
4’b1000:outled=7’b1111111; //顯示8
4’b1001:outled=7’b1111011; //顯示9 default:;
endcase end
endmodule
6)分頻裝置
因為時鐘的頻率大快了,實驗結果不明顯,所以我們采取分頻的裝置。
代碼:module FenPin( input inclk, output outclk
);
reg [31:0]timeclk;
assign outclk = timeclk[19]; initial begin
timeclk = 0; end
always@(posedge inclk)begin timeclk = timeclk +1;
end endmodule
文章來源地址http://www.zghlxwxcb.cn/news/detail-488090.html
到了這里,關于基于Vivado軟件實現電梯控制器仿真設計的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!