Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

how to introduce a delay/wait signal in parameter sensitive process in vhdl

Status
Not open for further replies.

adityarajrulz

Newbie level 5
Joined
Jun 4, 2012
Messages
8
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Noida, India, India
Activity points
1,345
I have a code simulating a flash memory where it receives a reset signal, and after receiving that signal it starts working only after a particular time "reset time = 200 ns" if before the end of this 200ns the reset signal comes again then the 200ns need to be reconsidered and the "reset counter " needs to be started again.

I tried it using the understated code:



process ( flash_rst_n ) ----process for reset signal
begin
if(flash_rst_n'EVENT AND flash_rst_n = '0')
reset<='0';
else wait for 200;
reset:='1';
end if
end process

The status of flash is signified by variable "reset ".

reset = 1 : 200ns over and the flash can be further used,. !!!!


but the compiler gave the error that a wait signal cant be introduced in a process which is parameter sensitive.
How to go for it?
 

I have a code simulating a flash memory where it receives a reset signal, and after receiving that signal it starts working only after a particular time "reset time = 200 ns" if before the end of this 200ns the reset signal comes again then the 200ns need to be reconsidered and the "reset counter " needs to be started again.

but the compiler gave the error that a wait signal cant be introduced in a process which is parameter sensitive.
How to go for it?

You can't have a sensitivity list and wait statements inside the process. You have to go one way or the other. For your particular case, simply get rid of the sensitivity list and replace it with a wait signal at the start of the process like this...

process
begin
wait until flash_rst_n'event;
if(flash_rst_n'EVENT AND flash_rst_n = '0')
...
 

Try using this...

flash_reset_valid <= '1' when (flash_rst_n'stable(200 ns) and flash_rst_n = '0') else '0';

process(flash_reset_valid) is
begin
if rising_edge(flash_reset_valid) then

...whatever you want to do...

end if;
end process;

As I think you were wanting, this should reject 'flash_rst_n' low periods shorter than 200ns, while remaining ready for the next one that is 200ns or longer. Hope this helps...
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top