對於fpga的verilog語言,,,規定乙個變數不能在多個always中被賦值.但是可以在多個alway塊中做判斷--結合狀態機思想
modulestate(key,led,clk);
input key;//
輸入按鍵
input clk;//
輸入時鐘48m
output
reg led;//
輸出led
reg state=0;//
記錄按鈕狀態
reg[27:0] cnt=0;//
計數器always@(*)
begin
if(key == 0)//
按下了 state = 1; //
狀態置一
else
if(cnt==48000000)//
到了計數值
state = 0;//
狀態復位
endalways@(posedge
clk)
begin
if(state == 1)//
如果狀態置一
cnt<=cnt+1
'b1;//開始計數
else
cnt<=0;//
鬆開或沒有按下,清零
endalways@(posedge
clk)
begin
if(state == 1)//
如果狀態置一
led <=1;//
燈亮else
led
<=0
;end
endmodule
按下按鍵燈就會亮,如果一直按著燈就會一直亮(
if(key == 0)//按下了),可以改變一下**,變成按下鬆開燈亮一秒後滅,就是加乙個鬆手檢測,或者做別的修改...state = 1; //狀態置一
else if(cnt==48000000)//到了計數值
state = 0;//狀態復位
一開始請教的群裡的大神給的**--狀態機思想
module relay(input clk,//輸入時鐘
input rst,//
輸入復位
input a, //
輸入訊號
output
reg b//
輸出);
reg[3:0] current_state=0,next_state=0;//
現在的狀態,下乙個狀態
reg[27:0] state_cnt=0;//
狀態計數
localparam sidle_state=0;//
空閒localparam sinput_high=1;//
輸入高localparam sinput_low=2;//
輸入低localparam soutput_pluse=3;//
輸出always@(posedge clk or
negedge
rst)
begin
if(~rst)
current_state
<= sidle_state;//
復位空閒
else
current_state
<= next_state;//
把下乙個狀態給它
endalways@(*)
begin
case
(current_state)
sidle_state:
//空閒態
begin
if(a==1)//
輸入為高
next_state <= sinput_high;//
賦為輸入高
else
next_state
<= current_state;//
賦為空閒
endsinput_high:
//輸入高
begin
if(a==0
) next_state = sinput_low;//
賦為輸入低
else
next_state = current_state;//
賦為空end
sinput_low:
//輸入低
begin
next_state = soutput_pluse;//
賦為埠輸出模式
endsoutput_pluse:
begin
if(state_cnt == 48000000
) next_state =sidle_state;
else
next_state = current_state;//
現在的狀態
enddefault: next_state =sidle_state;
endcase
endalways@(posedge clk or
negedge
rst)
begin
if(~rst)
begin
b<=0
;
endelse
begin
case
(next_state)
sidle_state:
//如果是空閒狀態
begin
endsoutput_pluse:
//如果是輸出狀態
b<=1;//
輸出高default
: b
<=0
;
endcase
endend
always@(posedge clk or
negedge
rst)
begin
if(~rst)
state_cnt
<= 0
;
else
if(next_state != current_state)//
如果上乙個狀態和現在的不一樣
state_cnt<=0
;
else
state_cnt
<=state_cnt+1
'b1;
endendmodule
FPGA之外,了解一下中斷
中斷是什麼?中斷的漢語解釋是半中間發生阻隔 停頓或故障而斷開。那麼,在計算機系統中,我們為什麼需要 阻隔 停頓和斷開 呢?舉個日常生活中的例子,比如說我正在廚房用煤氣燒一壺水,這樣就只能守在廚房裡,苦苦等著水開 如果水溢位來澆滅了煤氣,有可能就要發生一場災難了。等啊等啊,外邊突然傳來了驚奇的叫聲 怎...
把玩一下標準輸出
其實這樣子應該是能做遊戲的。終端的英文叫 terminal 就是那個黑黑的視窗 c 語言的命令列程式的輸入和輸出都是在終端裡完成的 輸入的東西交給終端,終端回顯出來給我們看,直到我們按下回車,終端才把我們輸入的內容交給我們寫的 c 語言程式。早年的終端就是乙個螢幕和鍵盤,到了今天就是電腦上的那個叫做...
整理了一下 發個關於埠的
關於埠的有 可能不全 系統服務及木馬預設埠表 win2k server ip策略拒絕多餘埠教程 原創 埠對映是什麼意思?windwos2000server埠對映是這樣做 如何關閉埠?怎樣知道對方的1080埠是否開了?堵住黑客常用的缺口 從禁止埠入手 使用ipsec阻止對tcp135埠的訪問 怎樣封堵...