xilinx a jednorazovy hranou spusteny asynchronni reset
Jan Smrz
jan.smrz@htc.honeywell.cz
Pátek Červenec 2 09:05:43 CEST 2004
ladmanj@volny.cz wrote:
> Omlouvam se dovolil jsem si vystoupit z puvodniho threadu, protoze
> treba odrazoval od cteni slovem verilog, ktere zde neni zcela na
> miste.
>
> Mam posuvny registr, a potrebuji jej nulovat pri sestupne hrane,
> ale nesmi byt trvale v resetu pri nizke urovni. Proste reset
> pouze pri sestupne hrane.
>
> Nemel by nekdo z Vas radu jak na to? Netrvam na verilogu, treba
> si to nejak prelozim. Tisicere diky.
> Jakub Ladman
>
Pokud si pamatuji dobre na Xilinxy (i kdyz osobne mam zkusenost
spise se starsi radou 4000), tak v kazde bunce muzete mit citlivost na
hranu pouze na jeden signal (coz budou ve vasem pripade hodiny). Reset
citlivy na hranu tedy nemuzete implementovat jako asychronni, ale jako
synchronni.
Muzete to zkusit treba takhle (VHDL)
library ieee;
use ieee.std_logic_1164.all;
entity shift_reg is
port
(
reset : in std_logic;
clk : in std_logic;
data_in : in std_logic;
data_out : out std_logic_vector(20 downto 0)
);
end shift_reg;
architecture rtl of shift_reg is
signal reset_l : std_logic;
signal data_out_i : std_logic_vector(20 downto 0);
begin
shift_reg_P: process (clk)
begin
if clk = '1' and clk'event then
if reset = '0' and reset_l = '1' then
data_out_i <= (others => '0');
else
for n in 20 downto 1 loop
data_out_i(n) <= data_out_i(n - 1);
end loop;
data_out_i(0) <= data_in;
end if;
reset_l <= reset;
end if;
end process;
data_out <= data_out_i;
end rtl;
J.S.
Další informace o konferenci Hw-list