資源下載地址:https://download.csdn.net/download/sheziqiong/85628810
資源下載地址:https://download.csdn.net/download/sheziqiong/85628810
數(shù)字邏輯與數(shù)字系統(tǒng)設(shè)計(jì)之電梯控制器設(shè)計(jì)
一、設(shè)計(jì)目的及要求
設(shè)計(jì)要求
-
電梯最少可以往返于0—9層樓。
-
乘客要去的樓層數(shù)A可手動(dòng)輸入并顯示,按取消鍵可清除本次輸入。
-
可自動(dòng)顯示電梯運(yùn)行的樓層數(shù)B
-
當(dāng)A>B時(shí),電梯上升;
當(dāng)A<B時(shí),電梯下降;
當(dāng)A=B時(shí),電梯停止運(yùn)行并開門;
-
可以自動(dòng)顯示電梯每一次啟停之間的運(yùn)行時(shí)間
-
任何時(shí)候按下復(fù)位鍵,電梯回到1層。
設(shè)計(jì)目的
目的是對(duì)“數(shù)字邏輯”課程內(nèi)容全面、系統(tǒng)的總結(jié)、鞏固和提高。根據(jù)數(shù)字邏輯的特點(diǎn),選擇相應(yīng)的題目,在老師的指導(dǎo)下,由學(xué)生獨(dú)立完成。通過(guò)實(shí)驗(yàn)使我們掌握數(shù)字邏輯電路設(shè)計(jì)的基本方法和技巧,正確運(yùn)用vivado軟件及實(shí)驗(yàn)室多功能學(xué)習(xí)機(jī)硬件平臺(tái),完成所選題目的設(shè)計(jì)任務(wù),并掌握數(shù)字邏輯電路測(cè)試的基本方法,訓(xùn)練學(xué)生的動(dòng)手能力和思維方法。通過(guò)實(shí)驗(yàn),一方面提高運(yùn)用數(shù)字邏輯電路解決實(shí)際問(wèn)題的能力,另一方面使學(xué)生更深入的理解所學(xué)知識(shí),為以后的計(jì)算機(jī)硬件課程的學(xué)習(xí)奠定良好的基礎(chǔ)。
二、工作原理和系統(tǒng)框圖
工作原理
本實(shí)驗(yàn)使用板上的四個(gè)開關(guān)來(lái)模擬電梯的叫梯按鍵,其中每個(gè)按鈕有兩個(gè)狀態(tài)0和1,4個(gè)組成了電梯的叫樓層,將這4位二進(jìn)制數(shù)字看成8421BCD碼,轉(zhuǎn)換成十進(jìn)制數(shù)字。
對(duì)于電梯按鍵,當(dāng)沒(méi)用用戶叫梯時(shí),叫梯的數(shù)碼管BIT5(G1)顯示為0;當(dāng)有用戶叫梯時(shí),控制叫梯的數(shù)碼管顯示為用戶所叫的電梯樓層。
電梯運(yùn)行時(shí),顯示電梯運(yùn)行層數(shù)的數(shù)碼管BIT1(G2)顯示電梯運(yùn)行的層數(shù),假設(shè)電梯每運(yùn)行一層的時(shí)間為1s,則該數(shù)碼管BIT1(G2)數(shù)碼管在轉(zhuǎn)變?yōu)椤?”之前顯示的數(shù)字即為電梯運(yùn)行的時(shí)間。
當(dāng)SW1-N4 為1時(shí),電梯回到0層。
系統(tǒng)框圖
三、各部分模塊具體功能及設(shè)計(jì)思路
各部分選定方案
1.目的:電梯可以往返于0~9層樓,顯示當(dāng)前電梯的樓層B
? 實(shí)現(xiàn)方法:用計(jì)數(shù)器來(lái)實(shí)現(xiàn)0~9之間的變化,并通過(guò)譯碼器接到數(shù)碼管(BIT8)上顯示
2.目的:手動(dòng)輸入要去的樓層A ,按取消鍵可清除本次輸入。
? 實(shí)現(xiàn)方法:A 用四個(gè)開關(guān)來(lái)表示,通過(guò)譯碼器接到7段數(shù)碼管(BIT5)上顯示相應(yīng)的樓層數(shù)A。
3.目的:當(dāng)A>B 時(shí),電梯上升;當(dāng)A<B 時(shí),電梯下降;當(dāng)A=B 時(shí),電梯停止運(yùn)行。
? 實(shí)現(xiàn)方法:通過(guò)比較器來(lái)比較A 與B 的大小,若A>B 電梯上升,否則電梯下降,
4.目的:可以自動(dòng)顯示電梯每一次啟停之間的運(yùn)行時(shí)間。
? 實(shí)現(xiàn)方法;繼承3)的實(shí)現(xiàn)方法,若A>B 則計(jì)數(shù)器正向計(jì)數(shù),若A<B 則計(jì)數(shù)器逆向計(jì)數(shù)。
5.目的:按下復(fù)位鍵時(shí),電梯回到0層
? 實(shí)現(xiàn)方法:當(dāng)復(fù)位啟動(dòng)時(shí),則不論A 怎么輸入,電梯都停在第0層。
相關(guān)模塊
比較器(Compare)
輸入電梯所在樓層B ,乘客要去的樓層 A ,輸出O1O2,當(dāng)A>B 時(shí),輸出01;當(dāng)A<B 時(shí),輸出10;當(dāng)A=B 時(shí),輸出00;
代碼:
module Compare(A,B,O1,O2);
input [3:0]A;//要去的樓層A
input [3:0]B;//電梯所在樓層B
output O1;
output O2;
assign O1 = (A>B);//A>B 輸出01
assign O2 = (A<B); //A<B 輸出10
endmodule
復(fù)位模塊(IfReset)
輸入reset 和In ,In 是一個(gè)4位的數(shù)組。當(dāng)reset=1時(shí),Out=0,電梯無(wú)論在幾樓都會(huì)回到0樓;當(dāng)reset==0時(shí),輸出Out=In ,接著運(yùn)行下面的功能。
代碼:
module IfReset (In, Out, reset);
input [3:0] In;
input reset;
output reg [3:0]Out;
always begin #2
if(reset)
Out = 0;//如果reset = 1 則清零
else
Out = In;//如果reset!=1 則輸入即為輸出
end
endmodule
節(jié)拍發(fā)生器(BeatGenerator)
由于數(shù)碼管只有七個(gè)管腳,AB 不能同時(shí)顯示在同一個(gè)數(shù)碼管上,所以通過(guò)節(jié)拍發(fā)生器來(lái)選擇顯示。因?yàn)闀r(shí)鐘頻率高達(dá)100MHz,所以肉眼所見的是A 和B 同時(shí)顯示。
代碼:
module BeatGenerator(in1,in2,clk,sec,Out);
input [6:0]in1;//輸入A
input [6:0]in2;//輸入B
input clk;//時(shí)鐘信號(hào)
output reg [1:0]sec;
output reg [6:0]Out;
reg [7:0]ControlLED;//七段數(shù)碼管
initial //初始化變量
begin
sec = 1;
Out = in1;
ControlLED = 0;
end
always @(posedge clk)
begin
ControlLED = ControlLED + 1;
if(sec==1) //分頻顯示
begin
Out =in2;
end
else
begin
Out=in1;
end
end
always @(negedge ControlLED)
begin
if(sec==1)
begin
sec=2;
end
else
begin
sec=1;
end
end
endmodule
分頻模塊(FrequenceDivide)
將100MHz的時(shí)鐘信號(hào)轉(zhuǎn)換為肉眼可見的信號(hào)
代碼:
module FrequenceDivide(inClk, outClk);
input inClk; //輸入時(shí)鐘信號(hào)
output outClk;//輸出時(shí)鐘信號(hào)
reg [31:0]timeClk;//暫存時(shí)鐘信號(hào)(32位)
assign outClk = timeClk[19];//每2^20ns 時(shí)鐘沿變化一次
initial begin
timeClk = 0;
end
always@(posedge inClk)
begin
timeClk = timeClk + 1;
end
endmodule
譯碼器(Decoder)
將4位的A和B轉(zhuǎn)換為七段數(shù)碼管顯示對(duì)應(yīng)的數(shù)字
代碼:
module Decoder(floor, outLED, on);
input [3:0]floor;//樓層
input on;//運(yùn)行狀態(tài) 運(yùn)行on=1,未運(yùn)行on=0
output reg[6:0]outLED;//輸出的顯示
always @(*)
begin
if(!on)
outLED=7’b0000001;//未運(yùn)行狀態(tài)
else
case(floor)
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: outLED= 7’b1001111; /E(error) endcase
end
endmodule
計(jì)時(shí)器(clock)
計(jì)時(shí)器有一個(gè)暫停鍵與計(jì)數(shù)器的使能端相連,當(dāng)switch1=switch0=0時(shí),計(jì)時(shí)器的暫停鍵有效,計(jì)時(shí)器不計(jì)時(shí);當(dāng)switch1=1或switch0=1,計(jì)時(shí)器工作,且每次計(jì)時(shí)完成后歸零,并從下一次電梯開始工作時(shí)計(jì)時(shí)。
代碼:
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
可逆計(jì)數(shù)器
module counter(
input clk,
input switch0,
input switch1,
output reg[3:0] sl_reg
);
initial begin
sl_reg = 0;
end
always @(posedge clk)
begin
case({switch0,switch1})
2’b01:sl_reg=sl_reg-1;
2’b10:sl_reg=sl_reg+1;
default:;
endcase
end
endmodule
四、調(diào)試過(guò)程
- 檢查Verilog 代碼是否有語(yǔ)法錯(cuò)誤(由vivado 自動(dòng)檢測(cè))
- 檢查各個(gè)IP 核的功能是否正確,看它的仿真波形圖是否正確
- 檢查邏輯圖中的IP 核連線是否正確,人工代特值進(jìn)入電路看是否有輸出錯(cuò)誤。
- 至此調(diào)試過(guò)程結(jié)束
附錄:各模塊仿真結(jié)果
1比較器
2復(fù)位模塊
3節(jié)拍發(fā)生器
4譯碼器
5計(jì)時(shí)器
6可逆計(jì)數(shù)器文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-785705.html
資源下載地址:https://download.csdn.net/download/sheziqiong/85628810
資源下載地址:https://download.csdn.net/download/sheziqiong/85628810文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-785705.html
到了這里,關(guān)于基于FPGA和Verilog實(shí)現(xiàn)的9層電梯控制器仿真設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!