步驟1:所需的設備/程序
能夠處理的計算機
Altera FPGA開發板DEs-115 Cyclone IV系列( )
Arduino LilyPad蜂鳴器(該部分的第三張圖片) )
用戶手冊(參考部分提供了鏈接)
面包板
電線
一個上拉電阻; 10K歐姆
耐心; Verilog代碼并非總是容易做到的
步驟2:框圖和模塊故障
請參閱底部的PDF
警報系統由三個模塊組成;主模塊,顯示模塊和聲音模塊。系統可以處于三種狀態:布防,撤防和觸發。
主模塊監視輸入并更改狀態變量的值。設防和撤防狀態的輸入是開關。觸發狀態的輸入是斷線傳感器。如果光束入射到傳感器,則輸入為1。相反,如果光束中斷并且沒有光入射到傳感器,則輸入為0,觸發狀態變為1。
顯示模塊將從主模塊獲得布防和撤防狀態的值。如果設防輸入變為高電平(1),則設防狀態將變為1,并且單詞‘on’將顯示在七段顯示器(SSD)中,該顯示器位于FPGA板上滑動開關上方。如果輸入變為低電平(0),則撤防狀態將更改為1,并且SSD會顯示“關閉”字樣。
聲音模塊還將獲得撤防,撤防和撤防的值。從主模塊觸發狀態。如果布防狀態為1,觸發狀態為1,則警報聲將響起。僅在撤防狀態更改為1時,聲音才會關閉。
步驟3:顯示模塊
如果警報為“ ON”或“ OFF”,則顯示模塊將使用SSD進行顯示。這使用了布防和撤防狀態變量的值。根據輸入,模塊將點亮顯示器的某些部分。請參閱本節的第二張圖片,以了解哪些片段將被點亮。請參閱本節的第一張圖片,以查看分段點亮時SSD的外觀。
在布防狀態為打開(輸入為1)時,將使用兩個顯示器,每個字母一個上的單詞。第一次顯示時,除數字6外的所有段均將點亮。第二個顯示屏將點亮0、1、2、4和5段(也可以使用2、4和6段)。
在撤防狀態為打開(輸入為1)時,三個顯示器將被使用;單詞“ off”的每個字母一個。第一個顯示屏將與系統打開時的第一個顯示屏相同。第二個和第三個顯示器的段0、4、5、6都將點亮。
SSD是低電平敏感的,這意味著當它們為0時它們會點亮。第二張圖片中的標簽表明您位置,其中應放置0以形成所需的形狀。例如,要使字母“ n”,段0、1、2、4和5必須點亮,這意味著所有這些位置都為零。其他位置(在這種情況下為位置3和6)將為1。因此,為了使字母“ n”成為要饋送到引腳的7位二進制數是0001001。由于每個板都不同,因此您可能必須保留
此項目所需的引腳可以在Altera DE2-115用戶手冊的第36至38頁上找到。請注意,SSD引腳每個顯示器有7個引腳,例如HEX0 [0]至HEX0 [6]。 7位二進制數的每個位置都將獲得這7個引腳之一。但是,盡管7位二進制數將從位置0到位置6,要獲得正確的引腳順序,它們必須遞減計數。
HEX0 [6]的位置為0,HEX0 [5]的位置為1,依此類推。
代碼如下:
模塊 armedStatusDisplay(armedState,SSD,SSD1,SSD2);
輸入武裝狀態; 《/p》
輸出規則 [6:0] SSD,SSD1,SSD2;
始終 @(armedState)
開始
SSD2 = 7‘b0000001;
如果(armedState == 1)
開始
SSD = 7’b1111111;
SSD1 = 7‘b0001001;
端
否則
開始
SSD = 7’b0111000;
SSD1 = 7‘b0111000;
端
端
endmodule
步驟4:聲音模塊
聲音模塊使用LilyPad蜂鳴器。它接收來自主模塊的輸入,如果滿足某些條件,它將發出警報。主模塊可以識別警報是否已布防(布防狀態= 1),以及在系統布防時(觸發狀態= 1)是否已經中斷了撞擊IR中斷光束傳感器的光。如果兩者均為1,則警報將響起。
代碼如下:
//警報模塊中的代碼來自
http://www.fpga4fun.com/MusicBox1.html并進行了修改
模塊 AlarmSound(揚聲器,clk,triggeredState);
輸入 clk;
輸入 triggerState;
輸出揚聲器;
參數 clkdivider = 25000000/440/2;
reg [23:0]音調;
總是 @(擺姿勢 clk)
如果(觸發狀態== 1)
音頻《=音頻+1;
reg [14:0]計數器;
始終 @( posege clk)
如果(triggeredState == 1)
開始
if (counter == 0)
counter 《=(tone [23]?clkdivider-1:clkdivider/2-1);
其他
counter 《= counter-1;
結束
r 例如揚聲器;
總是 @( posege clk)
如果(triggeredState == 1)
如果(counter == 0)
揚聲器《=?揚聲器;
結束模塊
步驟5:主模塊
該模塊將所有其他模塊拼湊在一起,以獲取完整的警報系統。它直接從紅外中斷光束傳感器接收信息,以確定觸發狀態,并識別系統是否處于布防或撤防狀態。該系統通過FPGA板底部的滑動開關進行布防。一針打開系統,一針關閉系統。開關的引腳位于用戶手冊第36頁上。
此模塊為其他兩個模塊提供輸入。
代碼如下:
//主模塊
模塊 finalproject(armedIn,beam,clk,disarmedIn,armedState,beamOut,disarmedState,揚聲器,SSD, SSD1,SSD2,triggertedState);
輸入 //SW0
輸入光束;
輸入 clk;
輸入 disarmedIn; //SW1
輸出 regarmedState = 0; //LEDR17
輸出 beamOut; //LEDG0
輸出 regdisarmedState = 1; //LEDR16
輸出揚聲器;
輸出 [6:0] SSD,SSD1 ,SSD2;
輸出 reg 觸發狀態= 0;
參數打開= 1;
參數關閉= 0;
分配 beamOut =梁; //如果光束斷開則在ledg0上指示
//監視所有輸入
始終 @(armedIn,disarmedIn,梁)
開始
如果(armedIn)
開始
武裝狀態《=開;
解除狀態《=關;
結束
如果(已撤防)
開始
武裝狀態《=關閉;
disarmedState 《=開;
TriggeredState 《=關;
結束
如果((光束== 0)&&(armedState == 1)&&(disarmedState == 0))
TriggeredState 《= on;
end
ArmedStatusDisplay display1(armedState,SSD,SSD1,SSD2); //在SSD上顯示警報的當前狀態
alarmSound alarm1(揚聲器,clk,triggeredState); //發出警報
endmodule
步驟6:演示
請觀看隨附的視頻以觀看我們的警報系統演示。
完整代碼如下:
模塊最終項目(armedIn,beam,clk,disarmedIn,armedState,beamOut,disarmedState,揚聲器,SSD,SSD1,SSD2,triggerState);
輸入 armarmIn ;
輸入光束;
輸入 clk;
輸入 disarmedIn;
輸出注冊表武裝狀態= 0;
輸出 beamOut;
輸出注冊表 disarmedState = 1;
輸出揚聲器;
輸出 [6:0] SSD,SSD1,SSD2;
輸出注冊表,觸發狀態= 0;
參數開啟= 1;
參數關閉= 0;
分配 beamOut =梁;//如果光束斷開則在ledg0上顯示
//始終注視所有輸入
@(armedIn,disarmedIn,beam)
開始
如果(armedIn)
開始
武裝狀態《=開啟;
撤防狀態《=關閉;
結束
如果(
開始
武裝狀態《=關閉;
解除狀態《=開啟;
觸發狀態《= off;
結束
如果((beam == 0)&&(armedState == 1)&&(disarmedState == 0))
TriggeredState 《= on;
end
ArmedStatusDisplay display1(armedState,SSD,SSD1,SSD2) ;//在SSD上顯示警報的當前狀態
alarmSound alarm1(speaker,clk,triggedState);//發出警報
endmodule
///警報模塊中的代碼來自http://www.fpga4fun.com/MusicBox1.html和修改
模塊 alarmSound(揚聲器,clk,triggerState);
輸入 clk;
輸入 triggerState;
輸出揚聲器;
參數 clkdivider = 25000000/440/2;
reg [23:0]音調;
始終 @( posege clk)
如果(triggeredState == 1)
tone 《= tone + 1;
reg [14:0]計數器;
始終 @(姿勢 clk)
如果(triggeredState == 1)
開始
如果(計數器== 0)
計數器《=(音調[23]?clkdivider-1:clkdivider/2-1);
其他
counter 《= counter-1;
結束
reg 揚聲器;
始終 @(《如果(triggeredState == 1)
如果(counter == 0),則
)
揚聲器《=?揚聲器;
終端模塊
模塊武裝狀態顯示(armedState,SSD, SSD1,SSD2);
輸入 armedState;
輸出注冊表 [6:0] SSD,SSD1,SSD2;
始終 @(armedState)
開始
SSD2 = 7’b0000001;
如果(armedState == 1)
開始
SSD = 7‘b1111111;
SSD1 = 7’b0001001;
結束
否則
開始
SSD = 7‘b0111000;
SSD1 = 7’b0111000;
結束
-
FPGA
+關注
關注
1631文章
21808瀏覽量
606808 -
報警系統
+關注
關注
5文章
651瀏覽量
75327
發布評論請先 登錄
相關推薦
STM32項目實戰:基于STM32U5的火災報警系統(LVGL),附項目教程/源碼

使用FPGA構建ADAS系統簡易過程
LoRa無線一鍵報警安防建設系統
基于 FPGA 的會議系統設計
基于FPGA的CCD工業相機系統設計
基于FPGA的圖像采集與顯示系統設計
基于STM32單片機的火災檢測報警系統設計

槍支離位報警系統的作用有哪些
無線太陽能紅外聲光報警器為主的入侵報警系統解決方案
城市綜合管廊火災自動報警系統設計與應用

防水淹廠房遠程報警系統解決方案及系統構成

淺談智慧管廊監控與報警系統設計

評論