On 2006-06-05, Petter Urkedal wrote:
> Well, as soon as the client gives an instruction other than a re-fetch
> from the same address, read_out_valid goes low on the next cycle.  But,
> you probably mean that read_out_valid must only be asserted for one
> cycle after busy goes low.  I think, in fact, Howard's code did that,
> but out of maybe a maybe foolish eagerness to optimise, I didn't
> introduce the extra reg to do that.
> >> Some notes:
> >>
> >>   * In the test case of your orginial post, you wrote
> >>
> >>         do_read = 1;
> >>         while (busy) #20;
> >>         #20;
> >>
> >>     I assume this should be
> >>
> >>         do_read = 1;
> >>         #20;
> >>         while (busy) #20;
> >
> > You might be right.  I have to think about it.  The protocol is a bit
> > weird and best expressed with synchronous logic.
> >
> > If busy=0, and you want to send something (a read command), you pulse
> > do_read for one cycle.  If busy=1, you assert do_read and hold it
> > until one cycle after busy goes away.  Requests are transferred only
> > on cycles where busy=0.
> That makes sense, and read_out_valid actually comes to use in the test case:
> 
>     do_read = 1;
>     while (busy) #20;
>     #20;
>     while (!read_out_valid) #20;
>     // read_data is valid here

Parethetical, just to elaborate on this:
    I used 'while (busy) #20' to wait for read data to become available,
    assuming the client respected timing for writes, and always waited
    for reads to finish so that we were never busy on a new request.
    Dropping that assumption, I could have written

        do_read = 1;
        while (busy) #20;
        #20;
        do_read = 0;
        while (busy) #20;
        // read_data available

    OTOH, if we drop busy, as you indicated we might, I think the fetch
    sequence is

        do_read = 1; // assuming device is not busy
        #20;
        while (!read_out_valid) #20;
        // read_data is valid;

    which is basically the same as 'do_read = 1; #20; while (busy) #20;'.

What is the requirement for read_out_valid?  You said that it should
only be asserted in respose to a read request.  Does it also need to go
low a cycle later, or could it remain high until a new request is made?
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to