Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

LAST_VALUE attribute

Status
Not open for further replies.

gemstar

Programmer
Oct 29, 2008
4
0
0
GB
hi there, am trying to synthesis a generic clock divider I have created. it works fine in simulation with modelsim but xilinx syntheses tool xst is not happy. - see code below:


library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;


entity generic_clk_divider is
generic
(
g_DIV_VALUE : integer := 5
);

port
(
n_RST : in std_logic;
CLK_IN : in std_logic;
CLK_OUT : out std_logic
);
end entity generic_clk_divider;

architecture RTL of generic_clk_divider is

subtype t_COUNTER is natural range 0 to g_DIV_VALUE*2 - 1;

signal count : t_COUNTER := 0;

begin

clk_gen : process(n_RST, CLK_IN, count)
begin
if((rising_edge(CLK_IN) or falling_edge(CLK_IN)) and count < t_COUNTER'high) then
count <= count + 1;
elsif((rising_edge(CLK_IN) or falling_edge(CLK_IN)) and count = t_COUNTER'high) then
count <= t_COUNTER'low;
end if;

if(count >= (t_COUNTER'HIGH +1)/2) then
CLK_OUT <= '0';
else
CLK_OUT <= '1';
end if;

if(n_RST = '0') then
count <= 0;
end if;
end process clk_gen;

end architecture RTL;

error i get is:

ERROR:Xst:818 - <path_to_File> LAST_VALUE must be used with clk'event condition.

So... i tried changing the lines

if((rising_edge(CLK_IN) or falling_edge(CLK_IN)) and count < t_COUNTER'high) then...

to

if(((CLK_IN'event and CLK_IN = '1') or (CLK_IN'event and CLK_IN = '0')) and count < t_COUNTER'high) then...

but get the same error, so i added the last_value attribute:

if(((CLK_IN'event and CLK_IN = '1' and LAST_VALUE = '0') or (CLK_IN'event and CLK_IN = '0' and LAST_VALUE = '1')) and count < t_COUNTER'high) then..

but now i get an error on the same line saying:
ERROR:HDLParsers:808 - <path_to_File> can not have such operands in this context.

I cannot work out what is going on atall - don't know what the actual initial problem was anyway and am having bigger problems trying to resolve it.

Can anybody enlighten me.. my brain is starting to melt

cheers


 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top