Difference between revisions of "FPGA Idler"

From UConn PAN
Jump to navigation Jump to search
m
 
m
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
== (010) Idle ==
+
:''See also [[Programming_the_Ethernet_controller|Programming the Ethernet Controller]]'' for a survey of modules and a general discussion of FPGA design approach.''
  
Block 010 continuously polls the interrupt registers on the CP2200/1 until the Receive FIFO Empty flag comes back as a zero.  On this condition it transitions to state 011.
+
= (010) Idler =
  
inputs
+
The Idler Block corresponding to state 010 continuously is the default module running an "idle process". It awaits an interrupt corresponding to "Receive FIFO non-empty", unpon which it transitions to state 011 - [[FPGA_Reader|Read]].
* ''Clk'': clock
 
* ''/Rst'': asynchronous, active-low reset
 
* ''state_in'': 3-bit state value
 
  
* ''TxRx_D'': 8-bit data from transceiver
 
* ''TxRx_Done'': pulse from transceiver to signal transfer complete
 
* ''TxRx_Go'': transceiver go line
 
* ''TxRx_R/W'': read/write flag for transceiver
 
* ''TxRx_Aout'': register address bus for transceiver
 
  
 +
== Programming Details ==
  
blocks
+
The Idler is essentially a state-conscious wrapper around an ''INTCatcher'' module instatiation to which the interrupt mask "1000" is passed (selecting the "Rx FIFO non-empty" interrupt as opposed to "Self-Initialization Complete" etc.) INTCatcher only returns a "Done" pulse when the requested interrupt was found so the change of state to "Read" (011) is set to trigger on this "Done" signal.
* '''Request INT0RD''' (0x76) register via <tt>reqFromAddr</tt> pulsed by the ''LoopEn'' signal from Looper (below).
+
 
* '''Looper'''
+
=== Ports ===
** Switch to determine if this state should loop on itself or continue to the next state.
+
 
** inputs
+
* ''Clk'': [in] clock
*** ''S_En'': state enable
+
* ''Rst: [in] asynchronous reset
*** ''TxRx_Done'': ''Done'' pulse from transceiver
+
 
*** ''TxRx_Data'': ''D_out'' bus from transceiver
+
* ''Eth_iINT'': [in] EC interrupt pin
** outputs
+
* ''state_in'': [in] 3-bit FPGA state value
*** ''LoopEn'': pulse to repeat fetch cycle; ''Loop'' <= ''S_En'' and ''TxRx_Done'' and ''TxRx_Data(6)''
+
 
*** ''Done'': pulse to finish state; connects to state counter as an enable; ''Done'' <= ''S_En'' and ''TxRx_Done'' and not ''TxRx_Data(6)''
+
[[FPGA_Transceiver|Transceiver]] Control Lines
*** ''New_St'': new state value to load into state register; goes to 011 when ''Done'' is high
+
* ''TxRx_Din'': [in]  EC control register return value
 +
* ''TxRx_Done'': [in] "Done" signal from [[FPGA_Transceiver|Transceiver]].
 +
* ''TxRx_Go'': [out] "Go" signal to read an EC control register byte
 +
* ''TxRX_RiW'': [out] active-high read, active-low write flag
 +
* ''TxRx_Aout'': [out] EC control register address (8-bit)

Latest revision as of 00:15, 3 June 2008

See also Programming the Ethernet Controller for a survey of modules and a general discussion of FPGA design approach.

(010) Idler

The Idler Block corresponding to state 010 continuously is the default module running an "idle process". It awaits an interrupt corresponding to "Receive FIFO non-empty", unpon which it transitions to state 011 - Read.


Programming Details

The Idler is essentially a state-conscious wrapper around an INTCatcher module instatiation to which the interrupt mask "1000" is passed (selecting the "Rx FIFO non-empty" interrupt as opposed to "Self-Initialization Complete" etc.) INTCatcher only returns a "Done" pulse when the requested interrupt was found so the change of state to "Read" (011) is set to trigger on this "Done" signal.

Ports

  • Clk: [in] clock
  • Rst: [in] asynchronous reset
  • Eth_iINT: [in] EC interrupt pin
  • state_in: [in] 3-bit FPGA state value

Transceiver Control Lines

  • TxRx_Din: [in] EC control register return value
  • TxRx_Done: [in] "Done" signal from Transceiver.
  • TxRx_Go: [out] "Go" signal to read an EC control register byte
  • TxRX_RiW: [out] active-high read, active-low write flag
  • TxRx_Aout: [out] EC control register address (8-bit)