我有一个问题,我的VHDL代码。在active-hdl中它可以很好地工作,但是当我尝试在使用ise设计xilinx的FPGA电路板上实现它时,我遇到了一个组件的问题。我发现该错误是:Vhdl错误,我不明白
ERROR:Xst:827 - "E:/proiect_final/dispozitiv_impartitor/src/generator_square_wave.vhd" line 16: Signal numar_intermediar<0> cannot be synthesized, bad synchronous description. The description style you are using to describe a synchronous element (register, memory, etc.) is not supported in the current software release.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity generator_square_wave is
port(clock,reset :in bit;
controler:std_logic_vector(2 downto 0);
numar:out std_logic_vector(7 downto 0);
data_clock:out bit);
end generator_square_wave ;
architecture descriere of generator_square_wave is
signal reset1:std_logic;
begin
process (clock,reset) -- here it shows me the error
variable numar_intermediar:bit_vector(3 downto 0):="0000";
variable numar_intermediar2:std_logic_vector(3 downto 0);
variable bitul:bit;
begin
reset1<=to_stdulogic(reset);
if rising_edge(reset1) then
numar_intermediar:="0001";
numar_intermediar2:=To_StdLogicVector(numar_intermediar);
numar(0)<=numar_intermediar2(0);
numar(1)<=numar_intermediar2(1);
numar(2)<=numar_intermediar2(2);
numar(3)<=numar_intermediar2(3);
numar(4)<='0';
numar(5)<='0';
numar(6)<='0';
numar(7)<='0';
else if(clock'event and clock ='1' and controler="001")then
bitul:=numar_intermediar(0);
numar_intermediar:=numar_intermediar srl 1;
numar_intermediar(3):=bitul;
numar_intermediar2:=To_StdLogicVector(numar_intermediar);
numar(0)<=numar_intermediar2(0);
numar(1)<=numar_intermediar2(1);
numar(2)<=numar_intermediar2(2);
numar(3)<=numar_intermediar2(3);
numar(4)<='0';
numar(5)<='0';
numar(6)<='0';
numar(7)<='0';
if(reset/='1' and controler/="001")then
numar<="00000000";
end if;
end if;
end if;
data_clock<=clock;
end process;
end descriere;
谢谢fru1tbat。如果你不介意,我还有一个问题。在代码的某处,在这一行有另一个我没有得到的错误:\t \t \t if(data_clock'event和data_clock ='1')then - ERROR:HDLCompiler:76 - Line 31:statement is not synthesizable因为它在NOT(时钟边沿)条件下不保持它的值 – user3653513
我没有注意到你在你的进程中分配了'data_clock'。你也应该使这个声明同时发生。 – fru1tbat
你能告诉我一般这个错误应该是什么意思吗?因为我的vhdl代码的另一个组件中有这个错误。同样,这段代码适用于VHDL,我认为它可能存在的问题是这是关于Suite ISE的错误。我也使用了rising_edge,但是这并没有解决我的问题(同样的错误) – user3653513