intialization i VHDL

A

amburose

Guest
Jeg har problemer når jeg intialize værdien i virksomheden del ...
syntese og simulation er rigtigt ... men realtid Jeg fik andet resultat fra simulation ....

library IEEE;
brug IEEE.STD_LOGIC_1164.ALL;
brug IEEE.STD_LOGIC_ARITH.ALL;
brug IEEE.STD_LOGIC_UNSIGNED.ALL;enhed sidste er
Port (a: i std_logic_vector (31 downto 0): = x "FE3A3AB2";
k: i std_logic_vector (31 downto 0): = x "00112233";
CLK: i std_logic;
RST: i std_logic;
q: i std_logic_vector (1 downto 0);
d: out std_logic_vector (7 downto 0));
udgangen sidste;

architecture Behavioral sidste er
signal C, D1: std_logic_vector (31 downto 0): = x "00000000";
signal count: heltal mellem 0 til 255: = 0;
signal da: std_logic;
begynd

processen (A, K, C, D1, CLK, RST)
begynd
if (RST ='0 ')
og derefter

d <=
X "00";
da <='0 ';
elsif (CLK ='1 'og clk'event)
og derefter
d1 <= ikke (a xnor k);
c (31) <= d1 (31);
loop1: for jeg i 30 downto 0 sløjfe

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

udgangen loop loop1;

tilfælde q er
når "00" => d <= c (31 downto 24);
når "01" => d <= c (23 downto 16);
når "10" => d <= c (15 downto 8);
når "11" => d <= c (7 downto 0);
når andre => d <=
X "00";
ende sag;
udgangen, hvis;ende proces;udgangen Behavioral;
på samme måde, som jeg satte værdi inden for arkitektur .. Jeg fik perfekt resultat

dvs ...

d1 <= ikke (x "FE3A3AB2" xnor x "00112233"); i stedet for d1 <= ikke (a xnor k);im benytter xilinx projekt navigator 6.3i ...
er det software problem ........ eller hvad .....
plz sin påtrængende ....

Tak endnu en gang høre fra u. ...

 
Jeg hader at sige det, men det kunne være det værktøj.Hvis du kan, du har brug for at hente den nyeste version af ISE og prøv igen.Din kode ser fine og ikke overraskende, at din faktiske resultater er forskellige fra dine simulering.

De nyere versioner af ISE værktøj har normalt fastsat begrænsninger af de tidligere udgivelser, så giver at forsøge at lade os vide, hvordan tingene fungerer.

E

 
se med værktøjet første ....

derefter måske forsøge at sætte dem i både numeriske værdier i en generisk derefter overdrage dem til en og k. .. eller gøre konstanter og tildele deres værdier til en og k. ... du kan gøre, at da de ikke er ændret i hele program

 
Ingen advarsler ......
koden er her ... men jeg fik samme problem ....

library IEEE;
brug IEEE.STD_LOGIC_1164.ALL;
brug IEEE.STD_LOGIC_ARITH.ALL;
brug IEEE.STD_LOGIC_UNSIGNED.ALL;enhed sidste er
Port (a: i std_logic_vector (31 downto 0);
k: i std_logic_vector (31 downto 0);
CLK: i std_logic;
RST: i std_logic;
q: i std_logic_vector (1 downto 0);
d: out std_logic_vector (7 downto 0));
udgangen sidste;

architecture Behavioral sidste er
signal C, D1: std_logic_vector (31 downto 0): = x "00000000";

begynd

processen (A, K, C, D1, CLK, RST)
begynd
if (RST ='0 ')
og derefter
d <=
X "00";

elsif (CLK ='1 'og clk'event)
og derefter
d1 <= ikke (a xnor k) - ikke (x "FE3A3AB2" xnor x "00112233");
c (31) <= d1 (31);
loop1: for jeg i 30 downto 0 sløjfe

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

udgangen loop loop1;

tilfælde q er
når "00" => d <= c (31 downto 24);
når "01" => d <= c (23 downto 16);
når "10" => d <= c (15 downto 8);
når "11" => d <= c (7 downto 0);
når andre => d <=
X "00";
ende sag;
udgangen, hvis;ende proces;udgangen Behavioral;men nu web opdateringen af 6.3i ikke tilgængelig ......
er det problem ...

 
Port (a: i std_logic_vector (31 downto 0): = x "FE3A3AB2";
k: i std_logic_vector (31 downto 0): = x "00112233";I
det "virkelige" verden er der ingen måde at initilize input gerne, at du har brug for at anvende den reelle signaler, også

signal C, D1: std_logic_vector (31 downto 0): = x "00000000";

aldrig vil arbejde, du er nødt til at bruge reset signal til initilize disse værdier.Af denne simple HDL kode værktøj er ikke et problem

 
Citat:

signal C, D1: std_logic_vector (31 downto 0): = x "00000000";

aldrig vil arbejde, du er nødt til at bruge reset signal til initilize disse værdier
 
Xilinx støtter også HDL initialisering af registre i sin FPGAs og CPLDs.

Jeg
har aldrig behov for en asynkron reset i mit Xilinx FPGA projekter.

 
Signal og havn opgave er kasseret under syntesen proces.Denne funktion er kun beregnet til simulering og modellering formål.Dette er grunden til, at du får to forskellige resultater.

Det eneste, du kan give en fast værdi i løbet definition er en konstant.

 
som en generel regel: initialisering af signaler (også havne, fordi de er signaler) ikke synthesizable.hverken xilinx heller @ ltera, actel, QL, ...støtte det.
Men for nogle fpgas du kan bruge nogle attributter (såsom init for xilinx fpgas) at initialisere ram eller LUT.

men husk fpga synthesizere ALTID ignorere initializations af signaler (prøv med xst, synplify, Leonardo og ... vil du få samme resultat).Men så vidt jeg ved, hvis du vil foretage en ASIC kan du bruge signal initialisering (Jeg kan ikke arbejde med ASICs).

 
amir81 wrote:

som en generel regel: initialisering af signaler (også havne, fordi de er signaler) ikke synthesizable.
hverken xilinx heller @ ltera, actel, QL, ...
støtte det.
 
Se et eksempel fra qu (at) rtus håndbog med VHDL-kode for et register med Nulstil og High Power-Up Level.
Code:

SIGNAL q: STD_LOGIC: ='1 '- q har en standardværdi på'1'

PROCESS (CLK, reset)

BEGIN

IF (reset ='1 ') og derefter

q <='0 ';

ELSIF (rising_edge (CLK)) DEREFTER

q <= d;

END IF;

END PROCESS;
 
HDL register initialisering i Xilinx ISE er beskrevet i XST Brugermanual kapitler "VHDL Language Support" og "Verilog Language Support":
http://toolbox.xilinx.com/docsan/xilinx92/books/docs/xst/xst.pdf

 

Welcome to EDABoard.com

Sponsor

Back
Top