potrebujejo pomoč pri tem, pls

A

aeneas81

Guest
Dear all,
Napisal sem naslednji postopek za izračun CRC-5 11 bitni podatkov za usb namen.traja eno podatkov na uro cikel in shrani na signal, nato pa na 12 urni ciklus bo opravil izračun.Vendar, za neznanega razloga, qu (at) rtus II vztrajati sintetizirani mojo registre, in jaz ne bi mogla dobiti pravi rezultat.
btw, sem brati knjigo, ki nima spremenljivke je vrednost, kot signali delati, vendar sem videl oznake s spremenljivkami, da lahko imajo njegova vrednost več kot uro rob tako kot signal počne, kako to?
Hvala za vašo pomoč in nasvet.CRC-5 code I'm working on:SIGNAL stuffed_dataSig: std_logic_vector (10 downto 0);

proces (CLK, dalje, din)
spremenljivka stuffed_data: std_logic_vector (10 downto 0);variable crc5_state : std_logic_vector(4 DOWNTO 0); začeti

če rst = '1 'then

count <= 0;

out_crc5 <= "11111";

stuffed_dataSig <= "00000000000";

ELSIF clk'EVENT IN CLK = '1 'Nato

ČE trombocitov <11 pa
- Zaslužiti vhodnih podatkov
stuffed_dataSig (count) <= din;
count <= count 1;

- Preveriti, da se podatki, shranjeni
testout <= stuffed_dataSig;

ELSIF count = 11 Nato - izračun CRC
stuffed_data: = stuffed_dataSig;
crc5_state: = "11111";

for i in 0-10 loop

crc5_state (0): = stuffed_data (i) xor crc5_state (4);
crc5_state (1): = crc5_state (0);
crc5_state (2): = crc5_state (1) xor crc5_state (4) xor stuffed_data (i);
crc5_state (3): = crc5_state (2);
crc5_state (4): = crc5_state (3);

end loop;

out_crc5 <= NE crc5_state;

end if;

end if;

koncu postopka;

 
Živjo,

Problem vašega algoritma, je thatyou poskusite izračunati v KOP za zanko na koncu štetja procesa.
Vaš zanke ne sme storiti za pouk (kot v programsko opremo), vendar v števec zanke.Torej, v vsakem ciklu uro, vrednost CRC5 je izpopolnilo_Ob koncu števec (= 11) je pripravljena svojo vrednost in ga je mogoče izhod za uporabo.

Ne uporabljajte spremenljivke v synthesisable VHDL: vaš funkcionalno simulacija (s modelsim za ex) bo predstavljal vašo modela in ne ocene oznako SW ...

poskusite kodo, ki izgleda nekako takole:
SIGNAL stuffed_dataSig: std_logic_vector (10 downto 0);
SIGNAL crc5_state: std_logic_vector (4 downto 0);

proces (CLK, dalje, din)

začeti

če rst = '1 'then

count <= 0;
crc5_state <= "11111";
out_crc5 <= "11111";

ELSIF clk'EVENT IN CLK = '1 'Nato

ČE trombocitov <11 pa
count <= count 1;

crc5_state (0) <= din xor crc5_state (4);
crc5_state (1) <= crc5_state (0);
crc5_state (2) <= crc5_state (1) xor crc5_state (4) xor din;
crc5_state (3) <= crc5_state (2);
crc5_state (4) <= crc5_state (3);

ELSIF count = 11 Nato - izračun CRC

out_crc5 <= NE crc5_state;

end if;

end if;

koncu postopka;

PS: nisem poskusil to oznako ...

Upam, da bo to pomagalo vam

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
 
živjo,
hvala za odgovor in kodo storitve.
Vendar pa imam vprašanje v mislih, če je proces, ki temelji na števec, ne bi bilo meni desetletjih?jaz pošteno upanje, da bi bilo mogoče narediti asap bratranac včasih bo veliko več kot 11 bitov predelanih, včasih tudi do nekaj KB ...in moj program ne more privoščiti, da toliko časa, dokler obstajajo drug postopek, da poteka po crc so bili ustvarjeni.Hvala za vaše dragocene nasvete

Rgds

 
Živjo,

v resnici, bo calculatuion CRC se izvaja v pretoka podatkov.Na vsakem ciklu ura, imaš nove podatke, in ob vsaki uri cikla, se ti podatki upošteva pri izračunu CRC.
V svojem prejšnjem kodo, ste še vedno števec, ki samo za števila, med 11 uro ciklov, nato pa v 1 uri cikel, poskusite za izračun CRC (s slabo kodiranje).

To naj bi hkrati ...<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top