Waarom is het niet synthetiseerbare?

T

trurl

Guest
Hoi,

Kan iemand vertellen waarom de volgende code niet kan worden gesynthetiseerd?

Xilinx zegt acc signaal kan niet worden gesynthetiseerd.

Code:

library IEEE;

gebruik IEEE.STD_LOGIC_1164.ALL;

gebruik IEEE.STD_LOGIC_ARITH.ALL;entiteit mac is

Port (in1: in ondertekend (11 Downto 0);

IN2: in ondertekend (11 Downto 0);

clk: in std_logic;

rst: in std_logic;

acc: out ondertekend (23 Downto 0));

eind mac;architectuur gedrag van Mac is

signaal Prod, reg: ondertekend (23 Downto 0);

beginnen

proces (CLK, RST, in1, in2)

variabele som: ondertekend (23 Downto 0);

beginnen

prod <= in1 * in2;

if (rst'event en rst = '0 ') then

reg <= (OVERIG => '0 ');

elsif (clk'event en CLK = '0 ') then

som: = prod reg;

reg <= som;

acc <= reg;

end if;

einde proces

end gedrag;
 
Beschrijf het type van de Xilinx apparaat wordt gebruikt.De volgende verklaring:Code:

...

if (rst'event en rst = '0 ') then

...

 
Bis, dank je.

Sinds ik ben een beginner bent, kunt u uitleggen wat "async reset"
is iets als dit
...
if (rst = '0 ') then
...

 
Ik heb het geprobeerd, deed het niet in mijn experiment ten minste

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />
 
veranderen alle (ondertekend) signalen, tot (std_logic en std_logic_vector) signalen ..en gebruik de IEEE ondertekende pakket in het begin van het bestand ..
Probeer te synthetiseren en mij voeden BAQ met wat u te krijgen ..

 
Ik denk dat bis_ juist is.Meeste flops, waaronder Xilinx FPGA flops, hebben geen edge-leverde reset-ingang.Ik veranderde uw rand-geactiveerd reset: if (rst'event en RST = '0 ') theneen gewone niveau-gevoelige (asynchroon) reset: if (rst = '0 ') then

en nu synthetiseert in ISE 9.1i.

 
Om echo47:

Ik heb al geprobeerd, het synthetiseert, maar met deze krijg ik verkeerd golfvormen in mijn ontwerp.Thanks anyway.

 
trurl wrote:

Hoi,Kan iemand vertellen waarom de volgende code niet kan worden gesynthetiseerd?Xilinx zegt acc signaal kan niet worden gesynthetiseerd.Code:

library IEEE;

gebruik IEEE.STD_LOGIC_1164.ALL;

gebruik IEEE.STD_LOGIC_ARITH.ALL;entiteit mac is

Port (in1: in ondertekend (11 Downto 0);

IN2: in ondertekend (11 Downto 0);

clk: in std_logic;

rst: in std_logic;

acc: out ondertekend (23 Downto 0));

eind mac;architectuur gedrag van Mac is

signaal Prod, reg: ondertekend (23 Downto 0);

beginnen

proces (CLK, RST, in1, in2)

variabele som: ondertekend (23 Downto 0);

beginnen

prod <= in1 * in2;

if (rst'event en rst = '0 ') then

reg <= (OVERIG => '0 ');

elsif (clk'event en CLK = '0 ') then

som: = prod reg;

reg <= som;

acc <= reg;

end if;

einde proces

end gedrag;
 
hier wordt gecorrigeerd code!
Code:

library IEEE;

gebruik IEEE.STD_LOGIC_1164.ALL;

gebruik IEEE.STD_LOGIC_ARITH.ALL;entiteit mac is

Port (in1: in ondertekend (11 Downto 0);

IN2: in ondertekend (11 Downto 0);

clk: in std_logic;

rst: in std_logic;

acc: out ondertekend (23 Downto 0));

eind mac;architectuur gedrag van Mac is

signaal Prod, reg: ondertekend (23 Downto 0);

beginnen

prod <= in1 * in2;

acc <= reg;

proces (clk, rst)

beginnen

if (rst = '0 ') then

reg <= (OVERIG => '0 ');

elsif (clk'event en CLK = '0 ') then

reg <= prod reg;

end if;

einde proces

end gedrag;
 
nand_gates wrote:

hier wordt gecorrigeerd code!Code:

library IEEE;

gebruik IEEE.STD_LOGIC_1164.ALL;

gebruik IEEE.STD_LOGIC_ARITH.ALL;entiteit mac is

Port (in1: in ondertekend (11 Downto 0);

IN2: in ondertekend (11 Downto 0);

clk: in std_logic;

rst: in std_logic;

acc: out ondertekend (23 Downto 0));

eind mac;architectuur gedrag van Mac is

signaal Prod, reg: ondertekend (23 Downto 0);

beginnen

prod <= in1 * in2;

acc <= reg;

proces (clk, rst)

beginnen

if (rst = '0 ') then

reg <= (OVERIG => '0 ');

elsif (clk'event en CLK = '0 ') then

reg <= prod reg;

end if;

einde proces

end gedrag;
 
Om omara007:

Bedankt.Ik voegde in1 en in2 naar de gevoeligheid lijst, omdat Xilinx waarschuwingen over hen ontbreekt in de lijst is het geven.

 
trurl wrote:

Om omara007:Bedankt.
Ik voegde in1 en in2 naar de gevoeligheid lijst, omdat Xilinx waarschuwingen over hen ontbreekt in de lijst is het geven.
 
if (rst'event en rst = '0 ') then
en
elsif (clk'event en CLK = '0 ') then
kan niet worden gebruikt in een proces!

 
Probeer de code nand_gates heeft gepost en negeren enige waarschuwing je ..dan ons vertellen over de golf resultaten

 
Ik denk dat Xilinx altijd xx synthetiseren in de verklaring van "if (xx'event en XX = '0 / 1 ')" als een clk pin van de flipflop, is er slechts een clk pin FF in een cel.Dus er mag niet worden twee van dergelijke uitspraken in een proces.Een proces van een klok domein.

 
Om omara007:

Ik heb geprobeerd de code die u noemde.De golven zijn verkeerd, de mac apparaat werkt niet goed.

De reden dat ik mijn (rst'event en RST = '0 ') verklaring is dat ik nodig heb om automatisch reset puls te genereren.Sinds mijn code niet synthetiseerbare is, kan worden kon je hoe je een korte puls RST tussen 2 clk pulsen genereren adviseren periodiek na een aantal CLK pulsen.Bedankt.

 
trurl wrote:

Om omara007:Ik heb geprobeerd de code die u noemde.
De golven zijn verkeerd, de mac apparaat werkt niet goed.De reden dat ik mijn (rst'event en RST = '0 ') verklaring is dat ik nodig heb om automatisch reset puls te genereren.
Sinds mijn code niet synthetiseerbare is, kan worden kon je hoe je een korte puls RST tussen 2 clk pulsen genereren adviseren periodiek na een aantal CLK pulsen.
Bedankt.
 

Welcome to EDABoard.com

Sponsor

Back
Top