Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > Bit Reset

Reply
Thread Tools

Bit Reset

 
 
Hans
Guest
Posts: n/a
 
      10-21-2004
Hi

This problem is a bit hard to explain, but I'll try anyway.

I have a register in my system, which contains a bit. When the user writes
a 1 to this bit, it signals to the system that it should perform a task.
Once the task is complete I would like to clear the bit. If the bit isn't
cleared the system will get stuck in an endless loop.

Does anyone know any good techniques for clearing a bit, which is settable
by the user? Or in other words, how can I set the bit in one process and
then clear it in another?

Surely this is a common problem.

Thanks for any help.


 
Reply With Quote
 
 
 
 
rickman
Guest
Posts: n/a
 
      10-21-2004
Hans wrote:
>
> Hi
>
> This problem is a bit hard to explain, but I'll try anyway.
>
> I have a register in my system, which contains a bit. When the user writes
> a 1 to this bit, it signals to the system that it should perform a task.
> Once the task is complete I would like to clear the bit. If the bit isn't
> cleared the system will get stuck in an endless loop.
>
> Does anyone know any good techniques for clearing a bit, which is settable
> by the user? Or in other words, how can I set the bit in one process and
> then clear it in another?


You want a finite state machine (FSM). You need at least three states
and possibly four. I'll draw a diagram. Use a non-proportional font to
view.

~TRIGGER ~DONE TRIGGER
--- ----- ------
| | | | | |
V | TRIGGER V | DONE V | ~TRIGGER
+--> IDLE -------> START -------> FINISHED -------+
| |
+------------------------------------------------------+

If your trigger is short enough that it is guaranteed to be gone by the
time the task is done, then you can eliminate the FINISHED state.
Otherwise you will need more than one bit.

--

Rick "rickman" Collins

http://www.velocityreviews.com/forums/(E-Mail Removed)
Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design URL http://www.arius.com
4 King Ave 301-682-7772 Voice
Frederick, MD 21701-3110 301-682-7666 FAX
 
Reply With Quote
 
 
 
 
rickman
Guest
Posts: n/a
 
      10-21-2004
rickman wrote:
>
> Hans wrote:
> >
> > Hi
> >
> > This problem is a bit hard to explain, but I'll try anyway.
> >
> > I have a register in my system, which contains a bit. When the user writes
> > a 1 to this bit, it signals to the system that it should perform a task.
> > Once the task is complete I would like to clear the bit. If the bit isn't
> > cleared the system will get stuck in an endless loop.
> >
> > Does anyone know any good techniques for clearing a bit, which is settable
> > by the user? Or in other words, how can I set the bit in one process and
> > then clear it in another?

>
> You want a finite state machine (FSM). You need at least three states
> and possibly four. I'll draw a diagram. Use a non-proportional font to
> view.
>
> ~TRIGGER ~DONE TRIGGER
> --- ----- ------
> | | | | | |
> V | TRIGGER V | DONE V | ~TRIGGER
> +--> IDLE -------> START -------> FINISHED -------+
> | |
> +------------------------------------------------------+
>
> If your trigger is short enough that it is guaranteed to be gone by the
> time the task is done, then you can eliminate the FINISHED state.
> Otherwise you will need more than one bit.


I sort of goofed up. Just like you need to make sure your TRIGGER
signal is gone before you return to the IDLE state, you need to make
sure your DONE signal is gone before you reach the START state. I guess
you could combine these conditions and still only have a single bit
FSM. But this will depend on the timing of the TRIGGER and DONE signals
and the particulars of your design. For the most general case where you
know nothing about the TRIGGER and DONE signals, you need a four state
machine which will require 2 bits minimum.

--

Rick "rickman" Collins

(E-Mail Removed)
Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design URL http://www.arius.com
4 King Ave 301-682-7772 Voice
Frederick, MD 21701-3110 301-682-7666 FAX
 
Reply With Quote
 
Tom Verbeure
Guest
Posts: n/a
 
      10-22-2004
How about something like this:
- Trigger is a signal from the user
- TaskDone is a signal from the task


process(Clk)
begin
if rising_edge(Clk)
if Trigger = '1' then
ActiveBit <= '1';
end if;

if TaskDone = '1' then
ActiveBit <= '0';
end if;
end process;
This seems to be too straightforward.
Did I miss something?


Tom

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
What is the point of having 16 bit colour if a computer monitor can only display 8 bit colour? How do you edit 16 bit colour when you can only see 8 bit? Scotius Digital Photography 6 07-13-2010 03:33 AM
You will not be able to reset the access - can't reset. jc MCAD 0 12-09-2007 08:58 PM
CISCO 7XX / 761 password reset or reset to factory defaults Philipp Flesch Cisco 3 06-18-2006 07:47 PM
64 bit - Windows Liberty 64bit, Windows Limited Edition 64 Bit, Microsoft SQL Server 2000 Developer Edition 64 Bit, IBM DB2 64 bit - new ! vvcd Computer Support 0 09-17-2004 08:15 PM
64 bit - Windows Liberty 64bit, Windows Limited Edition 64 Bit,Microsoft SQL Server 2000 Developer Edition 64 Bit, IBM DB2 64 bit - new! Ionizer Computer Support 1 01-01-2004 07:27 PM



Advertisments