» »

VHDL problem

VHDL problem

VolkD ::

V VHDL sem anpisal 24 bitni seštevalnik. Prevajalnik sporoči, da svari ne more povezati, ker ima na razpolago premalo resurcv.
Nekaj časa sem se trudil razmisliti, kako bi to rešil. Nato pa sem napravil sledeče :

entity adder24 is
    Port ( BSTEP : in STD_LOGIC_VECTOR ( 7 downto 0);
	        STEP : in  STD_LOGIC_vector(15 downto 0);
           COUNT : out  STD_LOGIC_VECTOR (7 downto 0);
			  CLOCK : in STD_LOGIC);
end adder24;

architecture Behavioral of adder24 is
signal co_int : STD_LOGIC_VECTOR (16 downto 0):="00000000000000000";
signal co     : STD_LOGIC_VECTOR (7 downto 0):="00000000";
 
begin
   process(CLOCK)
	begin
		if CLOCK='1' and CLOCK'event then
			co_int <= co_int + STEP;
			co <= co	+ co_int(16);
			co <= co	+ BSTEP;
	   end if;
	end process;
   COUNT <= co; 
end Behavioral;


Stvar se prevede, še več !
Prevajalnik pravi, da sem porabil vsega skupaj 12 macrocelic !!! Kako je to mogoče ??
Je tu opisano vezje res 24 bitni adder ??
help me!
Preden zaspiš zapri oči. Preden zapreš oči, ustavi avto.

BluPhenix ::

Kaj tisti oklepaj pri CLOCK: std_logic) imaš tudi v programu?

A je treba sploh CLOCK definirat kot input? Jaz se ne spomnem, da bi to kdaj delali, saj ob compilanju uporabi interni CLOCK.

Tudi vem da smo pisali CLK'event.

Sem že malo pozabil tole. Bom pogledal pa ti povem.
Podpisa ni več, ker so me poskušali asimilirati.

VolkD ::

Ja tisto je prav. Saj pravim sintaksa je v redu, ker se stvar skompajla. Verjetno pa je problem v mojem razumevanju definicije SIGNAL .
Moja logika pravi, da če imam signal , ki definira vektorsko polje veliko 17 bitov, bi stvar morala porabiti najmanj 17 makrocelic. Sicer to še nisem spravil v čip pa poskusil, če dela pravilno. Zdelo se mi je, da rezultat ne more biti pričakovan, pa sem se ustavil. Še posebej me je šokiralo dejstvo da Koda ki ima definiran en sam signal dolžine 24bitov porabi toliko resourcev, da je ni mogoče strpati v dotični čip (xc9572). Tale, ki naj bi delala isto pa..!!??
Preden zaspiš zapri oči. Preden zapreš oči, ustavi avto.

VolkD ::

Še bolj nerazumljivo mi je sledeče

entity adder24 is
    Port ( BSTEP : in STD_LOGIC_VECTOR ( 7 downto 0);
	        STEP : in  STD_LOGIC_vector(15 downto 0);
           COUNT : out  STD_LOGIC_VECTOR (7 downto 0);
			  COUNT1 : OUT STD_LOGIC_vector(7 downto 0);
			  CLOCK : in STD_LOGIC);
end adder24;

architecture Behavioral of adder24 is
signal co_int : STD_LOGIC_VECTOR (16 downto 0):="00000000000000000";
signal co     : STD_LOGIC_VECTOR (7 downto 0):="00000000";
 
begin
   process(CLOCK)
	begin
		if CLOCK='1' and CLOCK'event then
			co_int <= co_int + STEP;
			co <= co	+ co_int(16);
			co <= co	+ BSTEP;
	   end if;
	end process;
   COUNT <= co; 
	COUNT1(7 downto 0) <= co_int(7 downto 0);
end Behavioral;


Dodane vrstice porabijo zdaj za 12 makrocelic več, torej skupno 24. Kar tudi ni logično, saj sem v bistvu obstoječ register le povezal na zunanje pine.

Mi kdo lahko to razloži?
Preden zaspiš zapri oči. Preden zapreš oči, ustavi avto.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java[naloga]

Oddelek: Šola
18884 (691) Bizkit45
»

Analiza kode: goto rabimo po pameti

Oddelek: Novice / Znanost in tehnologija
2913799 (10359) one too many
»

vector::iterator problemi, brisanje podatkov iz vektorja

Oddelek: Programiranje
81121 (972) mn
»

std containers vs. own custom containers

Oddelek: Programiranje
93763 (3584) Mmm'Aah
»

kazalci in polje

Oddelek: Programiranje
51674 (1595) rasta

Več podobnih tem