用狀態機設計乙個二進位制序列檢測器,其功能是檢測乙個4位二進位制序列「1111」,及輸入序列中如果有四個或四個以上連續的「1」出現,輸出為1,其他情況下,輸出為0。其輸入、輸出如下所示:
輸入x:000 101 010 110 111 101 111 110 101
輸出z:000 000 000 000 000 100 001 110 000
用verilog語言實現如下:(說明:共設五個狀態s0、s1、s2、s3、s4,初始為s0,序列為「0000」,當檢測到1時,進入s1。接著每當識別乙個1時都會進入下乙個狀態,檢測到0時,回到s0狀態。當檢測到四個或四個以上的1時,輸出為1)
module ztjcq(x,z,clk,reset,state);
input x,clk,reset;
output z;
output[2:0]state;
reg[2:0]state;
reg z;
parameter s0='d0,s1='d1,s2='d2,s3='d3,s4='d4;
always@(posedge clk)
begin
if(reset)begin state<=s0;z<=0;end
else
ca***(state)
s0: begin
if(x==0) begin state<=s0;z<=0;end
else begin state<=s1;z<=0;end
ends1: begin
if(x==0) begin state<=s0;z<=0;end
else begin state<=s2;z<=0;end
ends2:begin
if(x==0) begin state<=s0;z<=0;end
else begin state<=s3;z<=0;end
ends3:begin
if(x==0) begin state<=s0;z<=0;end
else begin state<=s4;z<=1;end
ends4:begin
if(x==0) begin state<=s0;z<=0;end
else begin state<=s4;z<=1;end
enddefault: state<=s0;
endcase
endendmodule
序列檢測器
序列檢測器是在數字碼流中檢測特定序列,利用同步狀態機的方式可以較容易的實現。比如設計乙個檢測序列為10010的檢測器。st1 確定狀態機的狀態數亮 st2 確定每個狀態下的變數的值 st3 狀態之間切換的條件 st4 觸發狀態機的條件 module xulie x,z,clk,rst input x...
Verilog序列檢測器 兩例
序列檢測器在資料通訊,雷達和遙測等領域中用與檢測步識別標誌。它是一種用來檢測一組或多組序列訊號的電路。例如檢測器收到一組序列碼 1110010 後,輸出標誌1,否則,輸出0。考查這個例子,每收到乙個符合要求的序列碼就需要用乙個狀態進行記憶。序列碼長度為7位,需要7個狀態 另外,還需要增加乙個 未收到...
FPGA入門實驗之邊沿檢測器與序列檢測器
邊沿檢測就是隨著clk 時鐘訊號 的不斷變化,當輸入訊號cin 暫定 發生變化時,也就是由低電平變化到高電平或者從高電平變化到低電平時,由rising 定義為檢測上公升沿 輸出1表示檢測到cin的上公升沿 也就是由低電平到高電平 同理,定義乙個falling 下降沿檢測 當檢測到下降沿時輸出1。ou...