hvorfor er det ikke synthesizable?

T

trurl

Guest
Hei, Kan noen fortelle hvorfor følgende kode ikke kan syntetiseres? Xilinx sier signal acc ikke kan syntetiseres.
Code:
 library IEEE; bruk IEEE.STD_LOGIC_1164.ALL, bruk IEEE.STD_LOGIC_ARITH.ALL; enhet mac er Port (IN1: i signerte (11 downto 0); IN2: i signerte (11 downto 0); clk: i std_logic; rst: i std_logic; ACC: ut signerte (23 downto 0)); end mac; arkitektur atferdsmessige av mac er prod signal, reg: signert (23 downto 0); begynne prosessen (clk, RST, IN1, IN2) variabel sum: signert (23 downto 0); begynne prod.
 
Beskriv typen av Xilinx enheten brukes. Følgende uttalelse:
Code:
 ... if (rst'event og RST = '0 ') så ...
kan være problemet. Edge utløst reset er heller ikke implementet i de fleste av Xilinx enheter. Din design krever to, edge utløste innganger til registeret (RST og CLK). Prøv med asynkron reset. bis
 
Bis, takk. Siden jeg er en nybegynner, kan du forklare hva som er "asynkron reset" er det noe sånt som dette ... if (rst = '0 ') så ...
 
Jeg har prøvd det, gjorde det ikke fungere i eksperimentet mitt minst :-(
 
endre alle (signert) signaler, til (std_logic og std_logic_vector) signaler .. og bruke IEEE signerte pakken i begynnelsen av filen .. Prøv å syntetisere og mate meg BAQ med hva u får ..
 
Jeg tror bis_ er riktig. Mest flops, inkludert Xilinx FPGA flops, ikke har en edge-utløst reset-inngang. Jeg endret edge-utløst reset: [color = blue] if (rst'event og RST = '0 ') så [/color] til et ordinært nivå-sensitive (asynkron) reset: [color = blue] if (rst = '0 ') så [/color], og nå er det syntetiserer i ISE 9.1i.
 
Til echo47: Jeg har allerede prøvd det, det syntetiserer, men med denne får jeg feil bølgeformer i design mitt. Takk uansett.
 
[Quote = trurl] Hei, Kan noen fortelle hvorfor følgende kode ikke kan syntetiseres? Xilinx sier signal acc ikke kan syntetiseres.
Code:
 library IEEE; bruk IEEE.STD_LOGIC_1164.ALL, bruk IEEE.STD_LOGIC_ARITH.ALL; enhet mac er Port (IN1: i signerte (11 downto 0); IN2: i signerte (11 downto 0); clk: i std_logic; rst: i std_logic; ACC: ut signerte (23 downto 0)); end mac; arkitektur atferdsmessige av mac er prod signal, reg: signert (23 downto 0); begynne prosessen (clk, RST, IN1, IN2) variabel sum: signert (23 downto 0); begynne prod.
 
her er korrigert koden!
Code:
 library IEEE; bruk IEEE.STD_LOGIC_1164.ALL, bruk IEEE.STD_LOGIC_ARITH.ALL; enhet mac er Port (IN1: i signerte (11 downto 0); IN2: i signerte (11 downto 0); clk: i std_logic; rst: i std_logic; ACC: ut signerte (23 downto 0)); end mac; arkitektur atferdsmessige av mac er prod signal, reg: signert (23 downto 0); begynne prod.
 
[Quote = nand_gates] her er korrigert koden!
Code:
 library IEEE; bruk IEEE.STD_LOGIC_1164.ALL, bruk IEEE.STD_LOGIC_ARITH.ALL; enhet mac er Port (IN1: i signerte (11 downto 0); IN2: i signerte (11 downto 0); clk: i std_logic; rst: i std_logic; ACC: ut signerte (23 downto 0)); end mac; arkitektur atferdsmessige av mac er prod signal, reg: signert (23 downto 0); begynne prod.
 
Til omara007: Takk. Jeg har lagt IN1 og IN2 til følsomheten listen, fordi Xilinx var å gi advarsler om dem mangler i listen.
 
[Quote = trurl] For omara007: Takk. Jeg har lagt IN1 og IN2 til følsomheten listen, fordi Xilinx var å gi advarsler om dem mangler i listen. [/Quote] ignorere disse advarslene .. prøve å fjerne disse inngangene ..
 
if (rst'event og RST = '0 ') da og elsif (clk'event og clk = '0') da ikke kan brukes i en prosess!
 
Prøv koden nand_gates har lagt ut og ignorere eventuelle advarsler du får .. så fortelle oss om bølgen resultater
 
Jeg tror Xilinx allways syntetisere xx i utsagnet "hvis (xx'event og xx = '0 / 1 ')" som en clk pin av FlipFlop, er det bare én clk pin i en FF celle. Så det bør ikke være to slike uttalelser i en prosess. En prosess en klokke domene.
 
Til omara007: Jeg har prøvd koden som du nevnte. Bølgene er galt, gjør mac ikke enheten fungere ordentlig. Grunnen til at jeg bruker min (rst'event og RST = '0 ') utsagn er at jeg trenger å generere automatisk reset puls. Siden koden min ikke er synthesizable, kanskje du kan gi råd til hvordan å generere en kort RST puls mellom 2 clk pulser periodisk etter noen antall CLK pulser. Takk.
 
Prøv å designe en enkel counter (CNT) .. Når denne telleren teller 2 klokke sykluser, hevder en viss signal, la oss kalle det (xyz) .. Du kan bruke kombinatoriske "når" statement å tildele en verdi '1 'til (xyz) når (CNT) telleren er lik (2) .. Etter det kan du bruke dette signalet i en "hvis" statement å tvinge alle andre signaler i utformingen å være null .. men ikke kall det reset ..
 

Welcome to EDABoard.com

Sponsor

Back
Top