FSM - konečný automat

E

elecs_gene

Guest
Ahoj kluci,
by mohla být u být příjemný pomoci mne v rozvojových stavu stroje pro odhalování násobky 5 .. to je výstup je 1 případné násobek 5 je detekována .. vstup přichází sériově .. po každém vstupu, musíte uložit v jakémsi nekonečných rejstříku a zkontrolujte, zda násobek 5 ..

mukund

 
Můžete vysvětlit, o slova formát vstupu.Je to celé číslo, binární, BCD, 2 číslice, číslice n?

 
vstup je binární .. skutečný problém je, že násobky 5 nenásledují vzor jako --- 101 na 5,1010 za 10,1111 za 15, atd. ... to je problém ..

s ohledem

 
ahoj
pokud u říkají u mít až k cvičení rozdělení, jak lze u implementovat pomocí FSM? Kromě toho by mělo být dost dobré pro zjištění jakýchkoli násobek 5 ..

jde o

 
Pokud váš vstup je bit sériové s MSB první, pak si můžete zkontrolovat, zda je současný bit řetězec jste obdrželi, je dělitelné 5.

Já nevím, jak si můžete ověřit dělitelnost pouze pomocí sekvence bitů.Přidáte-li odčítání jednotku a registr, stav stroje bude být jednoduché.Budete potřebovat zvláštní podmínku uvést, když jste na konci čísla.

 
je zemřít zemřít, musí být model v FSM?musí to být mnohem jednodušší, kdyby jste model chování režimu.jen zachytit sériový vstup, jej převést na integer a zkontrolujte, zda hodnoty mod 5 se rovná 0 bude dělat práci.

 
Myslím si, že lepším řešením je nekonečno ROM ...Pokud nemůžete najít periodicity v počtu násobit 5 let.

v druhém použití jednotky Divider ...ale pokud budete potřebovat rychlost není to lepší řešení ...

 
Ano

Myslím si, že ROM je lepší řešení než FSM nebo aritmetický jednotky.Musíte vytvořit vhodné ROM stolu a přímo detekovat násobky pěti.Pro 8-bit vstupní data, která potřebujete pouze 256 bajtů paměti.Připojte vstupní data autobusem na adresovou sběrnici ROM a používání ROM výstupní sběrnice pro detekci.

 
Mám jednoho režimu do mind.it je něco podobného.Musíte mít vlastní buffer porovnat příchozí stream.Já jsem za předpokladu, že proud přichází s LSB přijíždějí jako první.Nyní nejprve uložit hodnotu 5 v bufferu říct temp buffer.

pokud teplota buffer se rovná proudu buffer.
(
soubor rozdělit o 5 výstup vysoké.
zvýšení temp buffer o 5.
)
jinak if (
stream buffer hodnota je vyšší než teplota buffer
(
zvýšení temp buffer o 5.
soubor rozdělit o 5 výstup nízké.
)
jiný
(
temp buffer si zachovává svou hodnotu.
soubor rozdělit o 5 výstup nízké.
)

 
Zde jde řešení!
Nápad tady je musíme převést nekonečné bin ne.do BCD bychom měli pouze
hledat BCD LSB, je-li 0 nebo 5 ne.je dělitelné 5!
Zbytek kódu vysvětlí!
Doufám, že to pomůže

Citace:

Modul div5 (

/ / Výstupy

y,

/ / Vstupy

CLK, reset_n, d

);

vstup CLK, reset_n;

vstup d;

výstup y;reg [03:00] q_reg;

reg [03:00] q_reg_nx;přiřadit y = (q_reg == 5) | | (q_reg == 0);Vždy @ (posedge CLK nebo negedge reset_n)

if (! reset_n)

q_reg <= 0;

jiný

q_reg <= q_reg_nx;Vždy @ (d nebo q_reg) Nástup / / posun a desetinná upravit LSB

q_reg_nx = (q_reg [02:00], d);

if (q_reg_nx> 9 | | q_reg [3])

q_reg_nx = (q_reg [02:00], d) 6;

konec

endmodule / / div5
 
Proč se obtěžovat s přechodem na BCD?

Pokud jste dělit o 5, zbytek 0 znamená, že číslo je dělitelné 5.

 
HI tkbits
Zkontrolujte prosím, zda vymezení problému první!
To říká, že číslo je nekonečné posuvný registr, do kterého jsme posunutí data v bitech!

 
LSD čísla BCD je zbytek rozdělit o 10 operací.

Takže jen vydělte 5 a zkontrolujte, zda zbytek 0.

 

Welcome to EDABoard.com

Sponsor

Back
Top