Hi Daragoth,
Q. Do you want that you 'interceptor', call it I, appear as Y for X, or
not ?
On paper you can have this situation :
X <==> I <==> Y
Q. Do you have a timing constraint between X request (send) and Y
ackowledge (response) ?
If yes, what is the require minimum reply time for Y ?
The minimum reply time give you your necessary maximum time to make your
alterations, then that give you your frequency.
Based on your description, the communication seems be a serial once, you
need implement two bi-directional input/ouput (inout in vhdl), one for X
(name it p2x) and one for Y (name it p2y).
Inside your I device, the both ports (p2x and p2y) are demuxed according
to expected sens of communication.
Your device I wait some data from X (p2x is 'in', p2y is 'out', and data
are not altered). According to common serial protocol, you have
certainly a sequence to give start of trame, and another to give end of
trame (otherwise you need transmit a synchronization signal); look for
this end trame label, when you capture it, switch the ports
directionnality (p2x is 'out', p2y is 'in').
Now come the alteration circuit, capture returning data in a shift
register (name it bufferYin), frequency ? 1/3.95 10-6 s =~ 253 kHz,
extract shift register content in parallel for your treatment. Do any
alteration and put result into an other shift register (name it bufferYout).
And send the content of bufferYout to X, frequency ? same than bufferYin.
When transmission is ended, you can go back to your initial situation.
All this different steps can be control by a small FSM
(RECEIVEX,RECEIVEY,ALTERATION,SENDX)
According to your given timing you have (466-3.95*86 =) 126.30 us (at
most) to all the process.
Have fun

JaI
Daragoth wrote:
>Hello, I'm somewhat of a beginner to the VHDL programming environment
>and to electronic design in general and have a question. I have two
>devices that communicate with each other using a bi-directional data
>line. I have no way of altering these devices, I can only work with
>the data line going between them. What I know is that one device,
>let's call device X, sends a 32 bit command word every 6 ms to the
>other device, let's call device Y. Device Y responds by sending a 86
>bit word with data regarding its current state. This entire process
>takes about 466 us, which means every bit is active for about 3.95 us
>(there is negligible delay between the point where device Y receives
>the command and responds).
>
>What I would like to know is how I could intercept the data being sent
>from device Y to device X, check to see what it is, and based on this
>information, alter it using some code I wrote in VHDL (without
>creating any problems with device X, i.e. device X shouldn't "notice"
>any change). I know most of the basics of VHDL, but I'm (obviously)
>still new to it. I would greatly appreciate any help in the matter.
>Thanks.
>
>Sincerely,
>Darien A. Gothia
>
>