intialization ve VHDL

A

amburose

Guest
Mám problém, když jsem intialize hodnoty v účetní části ...
syntézy a simulace je správné ..., ale v reálném čase už to mám odlišný výsledek od simulace ....

Knihovna IEEE;
použití IEEE.STD_LOGIC_1164.ALL;
použití IEEE.STD_LOGIC_ARITH.ALL;
použití IEEE.STD_LOGIC_UNSIGNED.ALL;Účetní jednotka je poslední
Port (A: v std_logic_vector (31 downto 0): = x "FE3A3AB2";
k: v std_logic_vector (31 downto 0): = x "00112233";
ČLK: v std_logic;
RST: v std_logic;
q: v std_logic_vector (1 downto 0);
d: z std_logic_vector (7 downto 0));
konec poslední;

Behaviorální architektura z poslední je
signál C, D1: std_logic_vector (31 downto 0): = x "00000000";
Počet signál: integer rozsahu 0 až 255: = 0;
signál CS: std_logic;
začít

proces (A, K, C, D1, CLK, RST)
začít
if (RST = '0 '), pak

d <= x "00";
en <= '0 ';
elsif (CLK = '1 'a clk'event), pak
d1 <= not (xnor k);
c (31) <= D1 (31);
loop1: pro i ve 30 downto 0 smyčka

c (i) <= c (i 1) XOR D1 (i);

konec smyčky loop1;

případ q je
když "00" => d <= c (31 downto 24);
když "01" => d <= c (23 downto 16);
když "10" => d <= c (15 downto 8);
když "11" => d <= c (7 downto 0);
když ostatní => d <= x "00";
konec případu;
end if;ukončení procesu;Behaviorální konce;
stejným způsobem i dát hodnotu uvnitř architektury .. mám perfektní výsledek

tj. ...

d1 <= not (x "FE3A3AB2" xnor x "00112233"), místo toho, d1 <= not (xnor k);im using Xilinx Navigator 6.3i projektu ...
je to softwarový problém ........ nebo co ještě .....
plz svou naléhavou ....

Díky ještě jednou sluch od U. ...

 
Nerad to říkám, ale může to být nástroj.Pokud si můžete třeba stáhnout nejnovější verzi ISE a zkuste to znovu.Váš kód vypadá dobře, a její není divu, že vaše skutečné výsledky liší od vašich simulace.

Novější verze nástroje ISE mají zpravidla stanovené omezení předchozích verzích, takže dá zkusit a dejte nám vědět, jak to vyjde.

E

 
viz nástrojem první ....

pak možná snaží, aby je v obou číselných hodnot v obecně pak přiřadit je k a k. .. nebo se konstanty a přiřadit jejich hodnoty a k. ... Můžete to udělat, protože se nemění po celou program

 
Č. varování ......
Kód je zde ... ale já mám stejný problém ....

Knihovna IEEE;
použití IEEE.STD_LOGIC_1164.ALL;
použití IEEE.STD_LOGIC_ARITH.ALL;
použití IEEE.STD_LOGIC_UNSIGNED.ALL;Účetní jednotka je poslední
Port (A: v std_logic_vector (31 downto 0);
k: v std_logic_vector (31 downto 0);
ČLK: v std_logic;
RST: v std_logic;
q: v std_logic_vector (1 downto 0);
d: z std_logic_vector (7 downto 0));
konec poslední;

Behaviorální architektura z poslední je
signál C, D1: std_logic_vector (31 downto 0): = x "00000000";

začít

proces (A, K, C, D1, CLK, RST)
začít
if (RST = '0 '), pak
d <= x "00";

elsif (CLK = '1 'a clk'event), pak
d1 <= not (xnor k), - ne (x "FE3A3AB2" xnor x "00112233");
c (31) <= D1 (31);
loop1: pro i ve 30 downto 0 smyčka

c (i) <= c (i 1) XOR D1 (i);

konec smyčky loop1;

případ q je
když "00" => d <= c (31 downto 24);
když "01" => d <= c (23 downto 16);
když "10" => d <= c (15 downto 8);
když "11" => d <= c (7 downto 0);
když ostatní => d <= x "00";
konec případu;
end if;ukončení procesu;Behaviorální konce;ale nyní web aktualizace 6.3i není k dispozici ......
Je to problém ...

 
Port (A: v std_logic_vector (31 downto 0): = x "FE3A3AB2";
k: v std_logic_vector (31 downto 0): = x "00112233";V "reálném" světě neexistuje žádný způsob, jak initilize vstupů jako například to, že budete muset použít skutečné signály, také

signál C, D1: std_logic_vector (31 downto 0): = x "00000000";

nikdy nebude fungovat, budete muset použít reset signál initilize tyto hodnoty.Pro tento jednoduchý nástroj kód HDL není problém

 
Citace:

signál C, D1: std_logic_vector (31 downto 0): = x "00000000";

nikdy nebude fungovat, budete muset použít reset signál initilize tyto hodnoty
 
Xilinx také podporuje HDL inicializace registrů v FPGA a CPLD.

Nikdy jsem třeba asynchronní reset v mém Xilinx FPGA projektů.

 
Signálu a přiřazení portu jsou vyřazeny v průběhu procesu syntézy.Tato funkce je pouze určen k simulaci a modelování účely.To je důvod, proč dostanete dva různé výsledky.

Jediné, co může dát pevnou hodnotu během definice je konstantní.

 
Citace:

Signálu a přiřazení portu jsou vyřazeny v průběhu procesu syntézy.
 
Jako obecné pravidlo: inicializace signálů (i přístavy proto, že jsou signály) nejsou syntetizovatelné.ani Xilinx ani Altera, Actel, QL, ...podporu tohoto.
Nicméně pro některé FPGA, můžete použít některé atributy (např. init pro Xilinx FPGA) inicializace RAM nebo LUT.

ale nezapomeňte, FPGA syntetizérů Vždy ignorovat inicializace signálů (zkuste se xst, firem Synplify, Leonardo a ... dostanete stejný výsledek).Nicméně pokud vím, pokud chcete, aby se ASIC můžete použít signál inicializace (i nepracují s ASIC).

 
amir81 napsal:

Jako obecné pravidlo: inicializace signálů (i přístavy proto, že jsou signály) nejsou syntetizovatelné.
ani Xilinx ani @ ltera, Actel, QL, ...
podporu tohoto.
 
Viz příklad z qu (at) RTU Příručka s kódem VHDL rejstříku s Reset a High Power-UP Level.
Kód:

SIGNAL q: STD_LOGIC: = '1 '; - q má výchozí hodnotu '1'

Procesu (CLK, reset)

BEGIN

IF (reset = '1 '), pak

q <= '0 ';

ELSIF (rising_edge (ČLK)) THEN

q <= D;

END IF;

Ukončit proces;
 
HDL zaregistrovat inicializaci v Xilinx ISE je popsána v uživatelské příručce XST kapitoly "Podpora VHDL jazyk" a "Verilog Podpora jazyků":
http://toolbox.xilinx.com/docsan/xilinx92/books/docs/xst/xst.pdf

 
Pomáhá to?
http://vhdlguru.blogspot.com/2010/03/some-tricky-coding-methods-using-vhdl.html

 

Welcome to EDABoard.com

Sponsor

Back
Top