rilevatore di sequenza

M

mallikmarasu

Guest
Ciao a tutti
Voglio sapere rilevatore di sequenza usando matchines Stato

e voglio matchines informazioni abt Stato

 
Ecco il codice per una sequenza
di 11.010-------------------------------------------------- ----------------------------------------
Modulo seqdet_11010 (clk, reset, in, out);

input clk, reset, in;
output out;

reg out;

parametro st0 = 3'b000,
ST1 = 3'b001,
ST2 = 3'b010,
ST3 = 3'b011,
ST4 = 3'b100;
reg [2:0] CurrentState, nextstate;sempre @ (o CurrentState)
begin: pettine

caso (CurrentState)

st0: if (in == 1'b0)
iniziare
nextstate <= st0;
out <= 1'b0;
fine

altro
iniziare
nextstate <= st1;
out <= 1'b0;
fine

st1: if (in == 1'b0)
iniziare
nextstate <= st0;
out <= 1'b0;
fine

altro
iniziare
nextstate <= ST2;
out <= 1'b0;
fineST2: if (in == 1'b0)
iniziare
nextstate <= ST3;
out <= 1'b0;
fine

altro
iniziare
nextstate <= ST2;
out <= 1'b0;
fine

ST3: if (in == 1'b0)
iniziare
nextstate <= st0;
out <= 1'b0;
fine

altro
iniziare
nextstate <= ST4;
out <= 1'b0;
fine

ST4: if (in == 1'b0)
iniziare
nextstate <= st0;
out <= 1'b1;
fine

altro
iniziare
nextstate <= ST2;
out <= 1'b0;
finedefault: begin
out <= 1'b0;
nextstate <= st0;
fine

endcase

finesempre @ (clk posedge o ripristinare posedge)

begin: seq
if (reset == 1'b1)
iniziare
CurrentState <= st0;
fine

altro
CurrentState <= nextstate;
fine

endmodule-------------------------------------------------- -------------------------------------------

`include" seqdet.v "

Modulo seq_det_tb ();

reg clk;
reg reset;
reg in;
wire out;

seqdet_11010 u1 (clk, reset, in, out);

iniziale

clk = 1'b1;
sempre
# 5 ~ clk = clk;

iniziale
iniziare
reset = 1'b0;
# 10 reset = 1'b1;
# 10 reset = 1'b0;
fine

iniziale
iniziare
in = 1'b1;
# 40 in = 1'b1;
# 10 = 1'b0;
# 10 = 1'b1;
# 10 = 1'b0;
fine

iniziale
iniziare
$ dumpvars ();
$ dumpfile ( "seqdet.vcd");
# 200 $ finish;
fine

endmodule-------------------------------------------------- ---------------------------------------------Buona fortuna

 
Ciao. U se volete scrivere in VHDL il codice per il 1010 potrebbe essere rivelatore sequenza come mostrato.library IEEE;
uso IEEE.std_logic_1164.ali;
entità seq_detect è
port (x, clk: in std_logic;
z: out std_logic);
fine seq_detect;
beh architettura di seq_detect è
Stato tipo è (reset, G0, G1, G2);
segnale di corrente: stato: = reset;
iniziare
process (clk)
iniziare
if (clk = '1 'e clk'EVENT) poi
caso in esame è
quando reset =>
se x = '0 'then
corrente <= reset;
altro
corrente <= G0;
end if;
quando G0 =>
se x = '1 'then
corrente <= g1;
altro
corrente <= G0;
end if;
quando g1 =>
se x = '1 'then
corrente <= g2;
altro
corrente <= g1;
end if;
quando g2 =>
se x = '1 'then
corrente <= reset;
altro
corrente <= g2;
end if;
end case;
end if;
end process;
z <= '1 'quando la corrente = g2 else '0';
end beh;

 

Welcome to EDABoard.com

Sponsor

Back
Top