H
hlmwps
Guest
jednotka je FreqMeter
port (reset: in std_logic;
CE: in std_logic;
bclk: in std_logic;
gclk: in std_logic;
štart: v std_logic;
num: číslo v rozsahu 10 až 1000;
cez: out std_logic;
databus: out std_logic_vector (47 downto 0)
);
koniec FreqMeter;
Behaviorálna architektúra z FreqMeter je
signálu bz_count: integer;
signálu gc_count: celé číslo v rozmedzí 0 až 1000;
signálu bz_ena, ena: std_logic;
signálu clr: std_logic;
signálu tmp_start, tmp_over: std_logic;
signálu resetne, resetd: std_logic;
začať
databus <= conv_std_logic_vector (bz_count, 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Chladný" border="0" />
;
Proces (CE, štart) begin
Ak CE = '0 'a spustiť = '0', potom
resetne <= '0 ';
elsif CE = '0 'a rising_edge (štart) then
resetne <= '1 ';
end if;
end process;
proces (bclk)
začať
Ak rising_edge (bclk), potom
resetd <= resetne;
end if;
end process;
clr <= resetne a (ne resetd);
viac ako <= tmp_over;
Proces (reset, CLR, štart)
začať
Ak reset = '0 'alebo clr = '1', potom
tmp_start <= '0 ';
elsif falling_edge (štart) then
tmp_start <= '1 ';
end if;
end process;
Proces (reset, CLR, tmp_over, ena, tmp_start)
začať
Ak reset = '0 'alebo clr = '1' alebo (tmp_over = '1 'a ena = '0') then
bz_ena <= '0 ';
elsif rising_edge (tmp_start), potom
bz_ena <= '1 ';
end if;
end process;bzcounter: process (reset, bclk, CLR, bz_ena, ENA)
začať
Ak reset = '0 'alebo clr = '1', potom
bz_count <= 0;
elsif rising_edge (bclk), potom
Ak bz_ena = '1 'a ena = '1', potom
bz_count <= bz_count 1;
end if;
end if;
end process;
gccounter: process (reset, gclk, CLR, bz_ena)
začať
Ak reset = '0 'alebo clr = '1', potom
gc_count <= 0;
tmp_over <= '0 ';
ena <= '0 ';
elsif falling_edge (gclk), potom
Ak bz_ena = '1 ', potom
gc_count <= gc_count 1;
Ak gc_count = num potom
ena <= '0 ';
gc_count <= num-1;
tmp_over <= '1 ';
iné
ena <= '1 ';
tmp_over <= '0 ';
end if;
end if;
end if;
end process;
koniec Behavioral;Pridané po 5 minútach:Vyššie uvedené je VHDL napr. o frekvencii počítadlo!
I simulovať s ModelSim 6.0!To môže fungovať veľmi dobre, a funkcia je dobrá!
Ale keď som si ho stiahnuť do Xinlix CPLD XC95144XL, jeho funkcia nerobí dobre!
Prosím, pomôžte mi nájsť, kde je chyba!
port (reset: in std_logic;
CE: in std_logic;
bclk: in std_logic;
gclk: in std_logic;
štart: v std_logic;
num: číslo v rozsahu 10 až 1000;
cez: out std_logic;
databus: out std_logic_vector (47 downto 0)
);
koniec FreqMeter;
Behaviorálna architektúra z FreqMeter je
signálu bz_count: integer;
signálu gc_count: celé číslo v rozmedzí 0 až 1000;
signálu bz_ena, ena: std_logic;
signálu clr: std_logic;
signálu tmp_start, tmp_over: std_logic;
signálu resetne, resetd: std_logic;
začať
databus <= conv_std_logic_vector (bz_count, 4
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Chladný" border="0" />
;
Proces (CE, štart) begin
Ak CE = '0 'a spustiť = '0', potom
resetne <= '0 ';
elsif CE = '0 'a rising_edge (štart) then
resetne <= '1 ';
end if;
end process;
proces (bclk)
začať
Ak rising_edge (bclk), potom
resetd <= resetne;
end if;
end process;
clr <= resetne a (ne resetd);
viac ako <= tmp_over;
Proces (reset, CLR, štart)
začať
Ak reset = '0 'alebo clr = '1', potom
tmp_start <= '0 ';
elsif falling_edge (štart) then
tmp_start <= '1 ';
end if;
end process;
Proces (reset, CLR, tmp_over, ena, tmp_start)
začať
Ak reset = '0 'alebo clr = '1' alebo (tmp_over = '1 'a ena = '0') then
bz_ena <= '0 ';
elsif rising_edge (tmp_start), potom
bz_ena <= '1 ';
end if;
end process;bzcounter: process (reset, bclk, CLR, bz_ena, ENA)
začať
Ak reset = '0 'alebo clr = '1', potom
bz_count <= 0;
elsif rising_edge (bclk), potom
Ak bz_ena = '1 'a ena = '1', potom
bz_count <= bz_count 1;
end if;
end if;
end process;
gccounter: process (reset, gclk, CLR, bz_ena)
začať
Ak reset = '0 'alebo clr = '1', potom
gc_count <= 0;
tmp_over <= '0 ';
ena <= '0 ';
elsif falling_edge (gclk), potom
Ak bz_ena = '1 ', potom
gc_count <= gc_count 1;
Ak gc_count = num potom
ena <= '0 ';
gc_count <= num-1;
tmp_over <= '1 ';
iné
ena <= '1 ';
tmp_over <= '0 ';
end if;
end if;
end if;
end process;
koniec Behavioral;Pridané po 5 minútach:Vyššie uvedené je VHDL napr. o frekvencii počítadlo!
I simulovať s ModelSim 6.0!To môže fungovať veľmi dobre, a funkcia je dobrá!
Ale keď som si ho stiahnuť do Xinlix CPLD XC95144XL, jeho funkcia nerobí dobre!
Prosím, pomôžte mi nájsť, kde je chyba!