H
hlmwps
Guest
subjektas FreqMeter yra
port (Reset: In std_logic;
"CE": į std_logic;
bclk: in std_logic;
gclk: in std_logic;
Start: į std_logic;
num: integer į diapazonas 10-1.000;
daugiau: iš std_logic;
databus: iš std_logic_vector (47 downto 0)
)
pabaigos FreqMeter;
Architektūra Behavioral iš FreqMeter yra
signalas bz_count: integer;
signalas gc_count: sveikasis skaičius nuo 0 iki 1000;
signalas bz_ena, ena: std_logic;
signalas CLR: std_logic;
signalas tmp_start, tmp_over: std_logic;
signalas resetn, resetd: std_logic;
pradėti
databus <= conv_std_logic_vector (bz_count, 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
;
procesas ( "CE", pradedant) prasideda
jeigu CE = '0 'ir start = '0', tada
resetn <= '0 ';
elsif CE = '0 'ir rising_edge (pradžia), tada
resetn <= '1 ';
end if;
galutinio proceso;
procesas (bclk)
pradėti
jei rising_edge (bclk), tada
resetd <= resetn;
end if;
galutinio proceso;
CLR <= resetn ir (ne resetd);
virš <= tmp_over;
procesas (Reset, CLR, pradžia)
pradėti
jei reset = '0 'ar CLR = '1' tada
tmp_start <= '0 ';
elsif falling_edge (pradžia), tada
tmp_start <= '1 ';
end if;
galutinio proceso;
procesas (Reset, CLR, tmp_over, ena, tmp_start)
pradėti
jei reset = '0 'ar CLR = '1' ir (tmp_over = '1 'ir ena = '0'), tada
bz_ena <= '0 ';
elsif rising_edge (tmp_start), tada
bz_ena <= '1 ';
end if;
galutinio proceso;bzcounter: procesas (Reset, bclk, CLR, bz_ena, ENA)
pradėti
jei reset = '0 'ar CLR = '1' tada
bz_count <= 0;
elsif rising_edge (bclk), tada
jei bz_ena = '1 'ir ena = '1' tada
bz_count <= bz_count 1;
end if;
end if;
galutinio proceso;
gccounter: procesas (Reset, gclk, CLR, bz_ena)
pradėti
jei reset = '0 'ar CLR = '1' tada
gc_count <= 0;
tmp_over <= '0 ';
ena <= '0 ';
elsif falling_edge (gclk), tada
jei bz_ena = '1 'tada
gc_count <= gc_count 1;
jei gc_count = num tada
ena <= '0 ';
gc_count <= num-1;
tmp_over <= '1 ';
kitas
ena <= '1 ';
tmp_over <= '0 ';
end if;
end if;
end if;
galutinio proceso;
pabaigos Behavioral;Parašytas po 5 minučių:Aukščiau yra VHDL pvz apie dažnumu kovoti!
Aš imituoti jį ModelSim 6,0!Ji gali dirbti labai gerai, ir funkcija yra gerai!
Bet kai aš jį atsisiųsti į Xinlix CPLD XC95144XL, jo funkcija, neturi daryti gerai!
Prašome padėti man rasti kur yra klaida!
port (Reset: In std_logic;
"CE": į std_logic;
bclk: in std_logic;
gclk: in std_logic;
Start: į std_logic;
num: integer į diapazonas 10-1.000;
daugiau: iš std_logic;
databus: iš std_logic_vector (47 downto 0)
)
pabaigos FreqMeter;
Architektūra Behavioral iš FreqMeter yra
signalas bz_count: integer;
signalas gc_count: sveikasis skaičius nuo 0 iki 1000;
signalas bz_ena, ena: std_logic;
signalas CLR: std_logic;
signalas tmp_start, tmp_over: std_logic;
signalas resetn, resetd: std_logic;
pradėti
databus <= conv_std_logic_vector (bz_count, 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vėsus" border="0" />
;
procesas ( "CE", pradedant) prasideda
jeigu CE = '0 'ir start = '0', tada
resetn <= '0 ';
elsif CE = '0 'ir rising_edge (pradžia), tada
resetn <= '1 ';
end if;
galutinio proceso;
procesas (bclk)
pradėti
jei rising_edge (bclk), tada
resetd <= resetn;
end if;
galutinio proceso;
CLR <= resetn ir (ne resetd);
virš <= tmp_over;
procesas (Reset, CLR, pradžia)
pradėti
jei reset = '0 'ar CLR = '1' tada
tmp_start <= '0 ';
elsif falling_edge (pradžia), tada
tmp_start <= '1 ';
end if;
galutinio proceso;
procesas (Reset, CLR, tmp_over, ena, tmp_start)
pradėti
jei reset = '0 'ar CLR = '1' ir (tmp_over = '1 'ir ena = '0'), tada
bz_ena <= '0 ';
elsif rising_edge (tmp_start), tada
bz_ena <= '1 ';
end if;
galutinio proceso;bzcounter: procesas (Reset, bclk, CLR, bz_ena, ENA)
pradėti
jei reset = '0 'ar CLR = '1' tada
bz_count <= 0;
elsif rising_edge (bclk), tada
jei bz_ena = '1 'ir ena = '1' tada
bz_count <= bz_count 1;
end if;
end if;
galutinio proceso;
gccounter: procesas (Reset, gclk, CLR, bz_ena)
pradėti
jei reset = '0 'ar CLR = '1' tada
gc_count <= 0;
tmp_over <= '0 ';
ena <= '0 ';
elsif falling_edge (gclk), tada
jei bz_ena = '1 'tada
gc_count <= gc_count 1;
jei gc_count = num tada
ena <= '0 ';
gc_count <= num-1;
tmp_over <= '1 ';
kitas
ena <= '1 ';
tmp_over <= '0 ';
end if;
end if;
end if;
galutinio proceso;
pabaigos Behavioral;Parašytas po 5 minučių:Aukščiau yra VHDL pvz apie dažnumu kovoti!
Aš imituoti jį ModelSim 6,0!Ji gali dirbti labai gerai, ir funkcija yra gerai!
Bet kai aš jį atsisiųsti į Xinlix CPLD XC95144XL, jo funkcija, neturi daryti gerai!
Prašome padėti man rasti kur yra klaida!