在家實在閒的沒事兒幹,翻出來了大三上學期的eda課的小實驗,也就是設計乙個二愣子交通燈啦,只會自己按設定好的時間閃,紅燈、綠燈,黃燈和轉向燈;
以下是這個小實驗的完整的程式:
module traffic(
input clk,
output reg r1,
output reg y1,
output reg g1,
output reg b1,
output reg r2,
output reg y2,
output reg g2,
output reg b2
);parameter yellow_time = 5;
parameter green_time = 20;
parameter blue_time = 10;
reg [2:0] state;
always @(posedge clk)
case (state)
0: /*南北綠,東西紅*/
begin
r1 <= 1'b0;
y1 <= 1'b0;
g1 <= 1'b1;
b1 <= 1'b0;
r2 <= 1'b1;
y2 <= 1'b0;
g2 <= 1'b0;
b2 <= 1'b0;
end1: /*南北黃,東西紅*/
begin
r1 <= 1'b0;
y1 <= 1'b1;
g1 <= 1'b0;
b1 <= 1'b0;
r2 <= 1'b1;
y2 <= 1'b0;
g2 <= 1'b0;
b2 <= 1'b0;
end2: /*南北左轉,東西紅*/
begin
r1 <= 1'b0;
y1 <= 1'b0;
g1 <= 1'b0;
b1 <= 1'b1;
r2 <= 1'b1;
y2 <= 1'b0;
g2 <= 1'b0;
b2 <= 1'b0;
end3: /*南北紅,東西綠*/
begin
r1 <= 1'b1;
y1 <= 1'b0;
g1 <= 1'b0;
b1 <= 1'b0;
r2 <= 1'b0;
y2 <= 1'b0;
g2 <= 1'b1;
b2 <= 1'b0;
end4: /*南北紅,東西黃*/
begin
r1 <= 1'b1;
y1 <= 1'b0;
g1 <= 1'b0;
b1 <= 1'b0;
r2 <= 1'b0;
y2 <= 1'b1;
g2 <= 1'b0;
b2 <= 1'b0;
enddefault: /*南北紅,東西左轉*/
begin
r1 <= 1'b1;
y1 <= 1'b0;
g1 <= 1'b0;
b1 <= 1'b0;
r2 <= 1'b0;
y2 <= 1'b0;
g2 <= 1'b0;
b2 <= 1'b1;
endendcase
always @(posedge clk)
begin
reg [4:0] count;
begin
if(count == 0)
begin
if(state == 5)
state <= 0;
else
state <= state +1;
case (state)
0:count = yellow_time;
1:count = blue_time;
2:count = green_time;
3:count = yellow_time;
4:count = blue_time;
default:
count = green_time;
endcase
endelse
count = count - 1;
end
end
endmodule
這個是引腳配置,書上都有噠,就是順序老是配反,搞得我改了好幾遍(其實本人很細心得啦qaq)。
這個是最後的那個原理圖
交通燈控制
問題描述,十字路,東西方向和南北方向燈,綠20s黃5s紅25s,倒計時顯示時間,另外,警車救護車等特殊狀態,都顯紅燈,且時間顯示不斷閃爍,通過之後,恢復原狀態。以下是我編寫的源 library ieee use ieee.std logic 1164.all use ieee.std logic u...
智慧型交通燈
交通燈有很多種型別,下面這個,還是比較簡單的。東西 a 南北 b 兩幹道交於乙個十字路口,各幹道有一組紅 黃 綠三色的指示燈,要求用微控制器控制交通燈,實現以下功能 1 a 道和b道上均有車輛要求通過時,a b道輪流放行。a道放行5分鐘 除錯時改為5秒鐘 b道放行4分鐘 除錯時改為4秒鐘 4 綠燈轉...
ewb交通燈報告和檔案 基於EWB的交通燈設計
本文著眼於目前普遍應用在城市道路上的交通燈控制系統,從課程設計的題目要求出發,設計了乙個十字路口主次街道的交通燈控制電路。首先進行交通燈狀態變換的分析和交通燈總體框架的設計,接著提出了2種電路設計方案,通過優劣比較後選定了方案2。電源電路由555定時器產生1hz的脈衝訊號 根據交通燈的四種執行狀態依...