[VHDL] Quartus 5.1, MAX7128 (d?ugawe...)

Witam,

Mam następujący problem: Chcę użyć pamięci (banków) o łącznej przestrzeni adresowej 24 bity. Z uP będę podawał po zresetowaniu maszyny stanu sygnałem "rst", w kolejnych taktach sygnału zegarowgo "clk" 3 porcje 8-bitowe adresu "Din". Po ich przesłaniu PLD ma wystawić na piny "Dout" podłączone do banków pamięci cały kompletny 24-bitowy adres. Dalsza zmiana sygnału "clk" ma nie mieć wpływu na adresy. Kod, którym chciałem to zrealizować (po skróceniu ilości bitów adresów) zamieszczam poniżej:

-------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all;

ENTITY Test_IO IS PORT( clk : IN STD_LOGIC; rst : IN STD_LOGIC; Din : IN STD_LOGIC_VECTOR(1 downto 0); Dout : OUT STD_LOGIC_VECTOR(3 downto 0) ); END Test_IO;

ARCHITECTURE Test_IO_architecture OF Test_IO IS TYPE t_state IS ( s0, s1, s2, s3 ); SIGNAL state, state_nx: t_state; BEGIN PROCESS ( clk, rst ) BEGIN IF rst = '0' THEN state <= s0; -- resetowanie ukladu / start maszyny ELSIF ( clk'EVENT and clk = '1' ) THEN state <= state_nx; -- przejscie do nastepnego stanu maszyny ELSE state <= state; END IF; END PROCESS;

PROCESS ( state, Din ) VARIABLE tmp1: STD_LOGIC_VECTOR(1 downto 0); VARIABLE tmp2: STD_LOGIC_VECTOR(1 downto 0); BEGIN CASE state IS WHEN s0 =>

state_nx <= s1; WHEN s1 =>

tmp1 := Din; state_nx <= s2; WHEN s2 =>

tmp2 := Din; state_nx <= s3; WHEN s3 =>

Dout <= tmp1 & tmp2; state_nx <= s3; END CASE; END PROCESS; END Test_IO_architecture;

-----------------------------------------

Na symulacji wygląda wszystko bardzo ładnie, ale zastanawia mnie warning: "Info: Found combinational loop of 1 nodes".

Poniżej wybrana część z komilacji projektu:

----------------------------------------- Info:

******************************************************************* Info: Running Quartus II Fitter Info: Version 5.1 Build 213 01/19/2006 Service Pack 1 SJ Web Edition Info: Processing started: Thu Feb 23 17:00:56 2006 Info: Command: quartus_fit --read_settings_files=off

--write_settings_files=off Test1 -c Test1 Info: Selected device EPM7128SLC84-15 for design "Test1" Info: Quartus II Fitter was successful. 0 errors, 0 warnings [...] Info:

******************************************************************* Info: Running Quartus II Timing Analyzer [...] Info: Command: quartus_tan --read_settings_files=off

--write_settings_files=off Test1 -c Test1 Info: Started post-fitting delay annotation Info: Delay annotation completed successfully Warning: Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|Dout[0]~46" Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|Dout[1]~42" Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|Dout[2]~38" Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|Dout[3]~34" Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|tmp2[0]~26" Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|tmp2[1]~22" Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|tmp1[0]~26" Info: Found combinational loop of 1 nodes Info: Node "Test_IO:inst|tmp1[1]~22" [..ciach..]

-----------------------------------------

Czy mam się tym przejmować - o co chodzi z grubsza wiem - ale nie mam pomysłu na wyeliminowanie przyczyny.

Pozdrawiam, Grzegorz Kępiński

Reply to
GrzegorzK
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.