A
aeneas81
Guest
Kjære alle,
Jeg har skrevet følgende prosess for å beregne CRC-5 av en 11 bits data for usb formål.det tar en data med en klokke syklus og lagrer til et signal, så i de 12 klokken syklusen vil utføre beregningen.Men for noe ukjent grunn, qu (at) rtus II holde syntetiserte bort min registre, og jeg kunne ikke få riktig utgang.
btw, jeg har lest fra boka som variabler ikke holde den verdi som signaler gjøre, men jeg har sett koder med variabler som kan holde sin verdi over klokken kanten akkurat som signal gjør, hvordan komme?
Takk for din hjelp og råd.CRC-5-koden jeg jobber på:SIGNAL stuffed_dataSig: std_logic_vector (10 DOWNTO 0);
process (clk, rst, DIN)
variabel stuffed_data: std_logic_vector (10 DOWNTO 0);
variabel crc5_state: std_logic_vector (4 DOWNTO 0);
begynne
hvis RST = '1 'da
count <= 0;
out_crc5 <= "11111";
stuffed_dataSig <= "00000000000";
ELSIF clk'EVENT OG clk = '1 'THEN
IF teller <11 da
- Få inndata
stuffed_dataSig (count) <= din;
count <= teller 1;
- Å kontrollere at dataene blir lagret
testout <= stuffed_dataSig;
ELSIF count = 11 da - beregn CRC
stuffed_data: = stuffed_dataSig;
crc5_state: = "11111";
for i 0 i til 10 sløyfe
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 <= NOT crc5_state;
end if;
end if;
end process;
Jeg har skrevet følgende prosess for å beregne CRC-5 av en 11 bits data for usb formål.det tar en data med en klokke syklus og lagrer til et signal, så i de 12 klokken syklusen vil utføre beregningen.Men for noe ukjent grunn, qu (at) rtus II holde syntetiserte bort min registre, og jeg kunne ikke få riktig utgang.
btw, jeg har lest fra boka som variabler ikke holde den verdi som signaler gjøre, men jeg har sett koder med variabler som kan holde sin verdi over klokken kanten akkurat som signal gjør, hvordan komme?
Takk for din hjelp og råd.CRC-5-koden jeg jobber på:SIGNAL stuffed_dataSig: std_logic_vector (10 DOWNTO 0);
process (clk, rst, DIN)
variabel stuffed_data: std_logic_vector (10 DOWNTO 0);
variabel crc5_state: std_logic_vector (4 DOWNTO 0);
begynne
hvis RST = '1 'da
count <= 0;
out_crc5 <= "11111";
stuffed_dataSig <= "00000000000";
ELSIF clk'EVENT OG clk = '1 'THEN
IF teller <11 da
- Få inndata
stuffed_dataSig (count) <= din;
count <= teller 1;
- Å kontrollere at dataene blir lagret
testout <= stuffed_dataSig;
ELSIF count = 11 da - beregn CRC
stuffed_data: = stuffed_dataSig;
crc5_state: = "11111";
for i 0 i til 10 sløyfe
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 <= NOT crc5_state;
end if;
end if;
end process;