verilog kodas Hamminga kodera

S

sniya

Guest
labas
reikia verilog kodas Hamminga kodas
PLZ reply ...........

 
Man kodas pat VHDL. Check it out, ar ji yra naudinga jums, ar ne.
Jei NAUDINGA spauskite PAGALBA mygtuką.

Kodas Hamminga Atstumas Perdavimas
ir priėmimas.

- Programa Hamminga KODAS PERDAVIMO
IR PRIĖMIMO.
- (Kuriančio Hamminga kodas parellely, ssending tai serijiniu &
- Gauna lygiagrečiai klaidos detecttion & korekcijos.)
- (SVARBU: - priskirti PIN yra CPLDD Į CLK I / P, kuriuo galima pereiti
- Laikrodis su KEISTI APIE CPLLD tarybos.)

biblioteka IEEE;
naudoti IEEE.std_logic_1164.all;
naudoti IEEE.std_logic_arith.all;
naudoti IEEE.std_logic_unsigned.all;
subjektas hammgen yra
uostų (
d: ir STD_LOGIC_VECTOR (3 downto 0); - I / P žinutę bitai
CLK: į STD_LOGIC; - Laikrodis i / p
dešimties: į STD_LOGIC; - siùstuvas įjungti (Mux įjungti)
Nusidėti: į STD_LOGIC; - klaida įvedant I / P
ren: į STD_LOGIC; - imtuvas įjungti (Demux įjungti)
dh: iš STD_LOGIC_VECTOR (7 downto 1); - Apibrėžta
ir pataisymais Hamminga kodas.
klaida: iš STD_LOGIC_VECTOR (6 downto 0) - 7-segment o / p rodyti klaida.
);
pabaigos hammgen;

Architektūra hammgen_arch iš hammgen yra
signalo h STD_LOGIC_VECTOR (7 downto 1);
signalo mh: STD_LOGIC;
signalo dmh: STD_LOGIC_VECTOR (7 downto 1);
signalo sipoh: STD_LOGIC_VECTOR (7 downto 1);
signalo ripoh: STD_LOGIC_VECTOR (7 downto 1);
signalo sum1: STD_LOGIC;
signalo sum2: STD_LOGIC;
signalo sum4: STD_LOGIC;
signalo p1: STD_LOGIC;
signalo p2: STD_LOGIC;
signalo p4: STD_LOGIC;
signalo ru: STD_LOGIC_VECTOR (7 downto 1);
signalo sum5: STD_LOGIC;
signalo sum6: STD_LOGIC;
signalo sum8: STD_LOGIC;
signalo y: STD_LOGIC_VECTOR (7 downto 0);
signalo countx: STD_LOGIC_VECTOR (2 downto 0);
signalo countr: STD_LOGIC_VECTOR (2 downto 0);

pradėti
- Programos modulis Hamminga KODAS GENERATTION.

procesas (sum1, sum2, sum4, P1, P2, p4, d)
pradėtisum1<=d(0) xor d(1) xor d(3); -- Parity bits are found here. sum2 <= d (0) xor d (2) xor d (3);
sum4 <= d (1) xor d (2) xor d (3);
jei sum1 ='0 ', tada
p1 <='0 ';
kitas
p1 <='1 ';
end if;

jei sum2 ='0 ', tada
p2 <='0 ';
kitas
p2 <='1 ';
end if;

jei sum4 ='0 ', tada
p4 <='0 ';
kitas
p4 <='1 ';
end if;
galutinio proceso;

h (1) <= p1 - pariteto bitų sužinojo pirmiau minėtame procese blokas
h (2) <= P2 - yra įtraukti į registrą "h" (deklaruotas kaip signalas).
h (3) <= d (0);
h (4) <= p4;
h (5) <= d (1);
h (6) <= d (2);
h (7) <= d (3);

- Programos modulis Mux & xmit count & iintroducing klaida.

procesas (CLK, countx dešimt) - 3-bitų iki kovos o / p (countx) yra prijungtas
Begin - su Pasirinkite linijų, Mux kuri
jei CLK "renginys ir CLK ="
1 ", tada - didinamas ststus apie Pasirinkite eilutes
jei dešimt = "1", tada - automatiškai.
jei (countx < "111" arba countx = "111"), tada
countx <= countx 1;
kitas
countx <= "000";
end if;
kitas
countx <= "ZZZ";
end if;
end if;
galutinio proceso;

procesas (countx, CLK, h Nusidėti, mh) - šioje dalyje Hamminga kodas bitai siunčiami
Begin - kiaurai į Mux.Jei Nusidėti i / p yra = 1 klaida
jei clk'event ir CLK = "1", tada - yra įtrauktas į Hamminga kodas bitų (tai
atveju countx yra - kad šiek tiek papildo.)
kai "000" => - mh yra Mux o / p.
jei Nusidėti ='0 ', tada
mh <= h (7);
kitas
mh <= ne h (7);
end if;
kai "001" => mh <= h (6);
jei Nusidėti ='0 ', tada
mh <= h (6);
kitas
mh <= ne h (6);
end if;
kai "010" => mh <= h (5);
jei Nusidėti ='0 ', tada
mh <= h (5);
kitas
mh <= ne h (5);
end if;
kai "011" => mh <= h (4);
jei Nusidėti ='0 ', tada
mh <= h (4);
kitas
mh <= ne h (4);
end if;
kai "100" => mh <= h (3);
jei Nusidėti ='0 ', tada
mh <= h (3);
kitas
mh <= ne h (3);
end if;
kai "101" => mh <= h (2);
jei Nusidėti ='0 ', tada
mh <= h (2);
kitas
mh <= ne h (2);
end if;
kai "110" => mh <= h (1);
jei Nusidėti ='0 ', tada
mh <= h (1);
kitas
mh <= ne h (1);
end if;
kai kiti => NULL;
pabaigos atveju;
end if;
galutinio proceso;

- Programos modulis De mux & rec.skaičius.

proceso (-ų, CLK, countr, mh) - procesas (r, CLK, ren, ch, countr)
pradėti
jei CLK "renginys ir CLK ="
1 ", tada - A 3 bitų skaitiklis o / p
jei ren = "1", tada - panašus į mux,
jei (countr < "111" arba countr = "111"), tada - tai, kad pasirinkti
countr <= countr
1 - linijos.

dmh <= mh & dmh (7 downto 2); - Čia serijos iki parellel
kitur - konvertavimo gautą
countr <= "000"; - serijos Hamminga kodą iš
- Mux (ty mh signalas), yra pagamintas.
end if; - (Shift registre sąvoka)
kitas
countr <= "ZZZ";
dmh <= "zzzzzzz";
end if;
end if;
galutinio proceso;
sipoh <= dmh; - Kai serijos duomenų (mh) yra perkeliama, kad lygiagrečiai
- Kad TPĮ eina į LSB poziciją.Taigi Perstumti bitai
- Iš dmh (Demux o / p), kurie yra laikomi ssipoh registre
ripoh (7) <= sipoh (1) - (deklaruotas kaip signalas) bus perkelti į ripoh registre
ripoh (6) <= sipoh (2) - (deklaruotas kaip signalas), atvirkštine eilės tvarka.
ripoh (5) <= sipoh (3);
ripoh (4) <= sipoh (4);
ripoh (3) <= sipoh (5);
ripoh (2) <= sipoh (6);
ripoh (1) <= sipoh (7);

- Programa Hamminga KODAS APTIKIMO.

sum5 <= ripoh (1) xor ripoh (3) xor ripoh (5) xor ripoh (7); - klaidos aptikimo dalis
sum6 <= ripoh (2) xor ripoh (3) xor ripoh (6) xor ripoh (7);
sum8 <= ripoh (4) xor ripoh (5) xor ripoh (6) xor ripoh (7);y (0) <= ne sum8 o ne sum6 o ne sum5; - Dekoderis yra naudojamas iššifruoti
y (1) <= ne sum8 o ne sum6 ir sum5; - pozicijos, kad šiek tiek per klaidą.
y (2) <= ne sum8 ir sum6 ir ne sum5;
y (3) <= ne sum8 ir sum6 ir sum5;
y (4) <= sum8 ir ne sum6 ir ne sum5;
Y (5) <= sum8 ir ne sum6 ir sum5;
Y (6) <= sum8 ir sum6 ir ne sum5;
Y (7) <= sum8 ir sum6 ir sum5;en (1) <= y (1); - The dekoderio o / p eilutės atsižvelgiant į
en (2) <= y (2); - įjungti (lt, kuris yra deklaruotas kaip signalas) i / p
en (3) <= y (3); - su inverterių, siekiant papildyti bylą
lt (4) <= y (4); - klaida.Papildant tai padaryti per ateinančius
lt (5) <= y (5) - procesas bloko.
en (6) <= y (6);
en (7) <= y (7);

procesas (lt, ripoh)
pradėti
jei lt yra
- 7654321
kai "0000001" => dh <= ripoh (7 downto 2)
ir ne ripoh (1); - tik šiek tiek per klaidą papildo
kai "0000010" => dh <= ripoh (7 downto 3)
ir ne ripoh (2)
ir ripoh (1); - Poilsio laikomi nepakitę.
kai "0000100" => dh <= ripoh (7 downto 4)
ir ne ripoh (3) & ripoh (2 downto 1);
kai "0001000" => dh <= ripoh (7 downto 5)
ir ne ripoh (4) & ripoh (3 downto 1);
kai "0010000" => dh <= ripoh (7 downto 6)
ir ne ripoh (5) & ripoh (4 downto 1);
kai "0100000" => dh <= ripoh (7)
ir ne ripoh (6) & ripoh (5 downto 1);
kai "1000000" => dh <= ne ripoh (7) & ripoh (6 downto 1);
kai "0000000" => dh <= ripoh;
kai kiti => NULL;
pabaigos atveju;

galutinio proceso;

 

Welcome to EDABoard.com

Sponsor

Back
Top