I/O Devices
This page describes the included I/O Device components. These components are used to allow your processor to interact with the outside world in useful ways.
Module: IOController
This module routes signals to the various I/O Devices based on the address that it is given. Bits 6 and 7 of the address are used to determine which IO Device gets the routed signal and its output routed back to the system.
Port Description:
|
|
Name |
Dir |
Width |
Description |
IOAddress |
In |
32 |
Address that determines which I/O Device recieves the routed WE signal and has its response routed back to the processor. Bits 6 and 7 are used for this purpose. |
IODev1Input |
In |
32 |
I/O Device 1 sends its results back to this port |
IODev2Input |
In |
32 |
I/O Device 2 sends its results back to this port |
IODev3Input |
In |
32 |
I/O Device 3 sends its results back to this port |
IODev4Input |
In |
32 |
I/O Device 4 sends its results back to this port |
IODev1WE |
Out |
2 |
WriteEnable for I/O Device 1. Each I/O Device may use the WE signal in a different way. |
IODev2WE |
Out |
2 |
WriteEnable for I/O Device 2. Each I/O Device may use the WE signal in a different way. |
IODev3WE |
Out |
2 |
WriteEnable for I/O Device 3. Each I/O Device may use the WE signal in a different way. |
IODev4WE |
Out |
2 |
WriteEnable for I/O Device 4. Each I/O Device may use the WE signal in a different way. |
IOCtlOutput |
Out |
32 |
The data that is returned by the I/O Device. This data is picked from one of the 4 devices based on the address passed in. |
|
|
|
Module: MemoryMappedSerial
This module allows the processor to communicate with a PC to recieve programs via the RS232 serial port. The BIOS for the processor has been configured to recieve an entire program, then launch it by jumping to the program's start point. You can also use the serial port to send data back to the PC, where it will be displayed if you are running the bootloader software or some other serial terminal software. It is meant to be used in conjunction with Memory_Toplevel or some other memory management unit.
To use the serial controller, use the following addresses:
- 0 - Returns 1 if the serial device has input waiting to be read, 0 otherwise
- 1 - Returns the zero extended 1 byte command code for the instruction sent
- 2 - Returns 1 if the serial device can accept input to send, 0 otherwise
- 3 - SB to this address tells the serial component to remove the item from the front of the queue
- 4 - Returns the 32 bit data at the front of the queue for recieved data
- 8 - SW/SB to this address to send a word back to another serial device
The pins with names starting with "RS232" should be connected to output pins with the same names on your top level design.
Port Description:
|
|
Name |
Dir |
Width |
Description |
CLK |
In |
1 |
Clock that the processor is running on |
SerialClock |
In |
1 |
Clock at the speed that the serial device runs at (50 Mhz) |
Reset |
In |
1 |
Resets the Serial I/O Component. Must be used once to prepare for recieving data. |
RS232_RX_DATA |
In |
1 |
Incoming data from another serial device |
RS232_RTS_IN |
In |
1 |
RS232 flow control pin |
SerialIOAddress |
In |
6 |
Address to access - controls the functionality of the component |
SerialIOData |
In |
32 |
The data to send back to another serial device |
SerialIOWE |
In |
2 |
Write enable. Use SW with address 3 to get next data, 4 to clear for new data/send, 6 to send word back to connected serial device |
RS232_TX_DATA |
Out |
1 |
Outgoing data to another serial device |
RS232_CTS_OUT |
Out |
1 |
RS232 flow control pin |
DataOut |
Out |
32 |
Data retrieved from the Serial I/O Component |
|
|
|
Symbol:
|
|
|

|
|
Module: MemoryMappedBoardIO
This module countrols the LEDs and gets signals from the buttons on the board. If you store a number to the LEDs, the lowest 4 bits will be represented on the LEDs. You can load data from this location to determine if a button has been pushed.
The addresses to use with this module are as follows:
- 0 - Returns/Sets the status of the LEDs. The lowest 4 bits of the number stored are represented on the LEDs.
- 4 - Polls button 1, returns 1 if pressed, 0 otherwise. (Corresponds to the UP button on the board)
- 8 - Polls button 2, returns 1 if pressed, 0 otherwise. (Corresponds to the DOWN button on the board)
- 12 - Polls button 3, returns 1 if pressed, 0 otherwise. (Corresponds to the LEFT button on the board)
- 16 - Polls button 4, returns 1 if pressed, 0 otherwise. (Corresponds to the RIGHT button on the board)
- 20 - Polls button 5, returns 1 if pressed, 0 otherwise. (Corresponds to the ENTER button on the board)
Port Description:
|
|
Name |
Dir |
Width |
Description |
CLK |
In |
1 |
Clock pin |
IOAddress |
In |
6 |
The address to determine which functionality to poll/write to. |
IOData |
In |
32 |
The data to write to the device. Only the lower 4 bits are used, and only when storing to address 0. |
IOWE |
In |
2 |
Write Enable signal for the LEDs. Only used when address provided is 0. |
Reset |
In |
1 |
Resets the registers in this module |
IODataOut |
Out |
32 |
Data returned by the module. It corresponds to the button's status or the status of the LEDs depending on the address provided. |
nLEDBus |
Out |
4 |
The signals for the LEDs. These have already been inverted, so if a bit is set to 1, the LED will light up. |
|
|
Symbol:
|
|
|

|
|