Xbox dev units had a serial port that could be used for kernel debugging. It was a board that used a pc multi io chip with LPC port. Besides the serial port, it also had a ps/2 keyboard and mouse port, a floppy controller and some other buildin stuff. That chip has become hard to find on the market. You can still find them on Ebay and in China, but we all know that the quality there is not always guranteed and can go from and empty shell with pins to a full functional original one... I am curious if it would we possible to recreate the LPC comport using a low cost fpga development board. The LPC interface code exists as most modchip use it. Basically, the uart appears in the x86 IO space on port 0x3F8 or one of the other classic pc uart ports. It has the registerset of a 82C50 uart chip. I understand digital electronics and can program a little in c and assembler, but I am totally new to fpga design. When I finished highscool, fpga's were expensive components and you needed a lot of cash for their programming development. I understand this situation has changed, but it's very difficult to know where to start. If I understand correctly, some chip vendors already deliver free development tools, but some libraries like software cpu cores aren't free. Further, you seem to need a device like a jtag programmer to download your code to the fpga. It seems that there exist 2 major program languages for an fpga, vhld and verilog. So, every help is welcome. I think the project is ideal as it's probably not to complex, and an fpga is the most logic option for the job. (Flashing a led is something I can do without an fpga). If people got good links about how to get started with fpga's, links to good cheap development boards, links to the development tools, everything is usefull, as I am a total noob. It's an aspect of electronic design I never managed to understand. I am not going to create another modchip. On 1.0 - 1.4 xboxes, I prefer a softmod or tsop flash, and the 1.6(b) versions are not my favorite as they are not ram upgradable and use an undocumented video encoder chip. Thanks in advance for everyone taking time to respond.
Lattice has several Intellectual Property (IP) core designs for a multitude of functions. Some of interest include LPC bus controller and UARTs. Not sure how to combine them to support a serial port connection through the Xbox's LPC Debug port. I too have little experience with FPGA's/CPLD's, VHDL, etc. IP Cores of Interest 16450 UART core http://www.latticesemi.com/en/Produ...ellectualProperty/IPCore/DCDCores/D16450.aspx 16550 UART with FIFO http://www.latticesemi.com/en/Produ...ellectualProperty/IPCore/DCDCores/D16550.aspx 16750 UART with FIFO http://www.latticesemi.com/en/Produ...ellectualProperty/IPCore/DCDCores/D16750.aspx LPC Bus Controller http://www.latticesemi.com/en/Produ...igns/ReferenceDesigns02/LPCBusController.aspx UART 16450 Transceiver http://www.latticesemi.com/en/Produ.../ReferenceDesigns01/UART16550Transceiver.aspx FPGA and Logic Design Software Lattice has several design tools to support their line of FGPAs/CPLDs: Lattice Diamond Design Software (not sure if this is free [Update: It can be licensed for FREE but you have to request a license tied to a specific PCs 12 hex digit MAC address here.] though I see prices and mention of a USB Key dongle), ispLEVER Classic to name a few. And, older development software package was called ispVM System for CPLDs like the LC4032V ( I think these CPLDs are from the ispMACH 4000 series) used on the Aladdin XT plus 2 modchips. (There are links to this older dev software here on AG.)
Xilinx and Altera are two other big programmable logic device manufacturers. www.xilinx.com and www.altera.com (looks like Intel's rebranding it as Intel FPGA since their acquisition in late 2015.)
I was contemplating getting into kernel development a while ago. I began searching on how I could make my own serial port interface on LPC. NXP has a parallel UART interface that seems to be register compatible with the 82C50. Part number is SC16C550. All it needs is some transceiver logic provided by a CPLD. A really small CPLD like the LC4032V or XC2C32A would do just fine here, as long as it's just for a UART. I might cook up something in the future but don't hold your breath.
Do we need an uart chip like the SC16C550? Can't we use a (simplified) software uart core in the cpld? Maybe the LC4032V will be 2 small for that? If we would use an ftdi uart cable for the pc side usb connection, wouldn't that simplify things?
I think the SC16C550 would greatly reduce development time. For the cost and ease of soldering (offered in DIP package for novice solderers) it would be best suited here. Implementing a full software solution would most likely require a lot of work and a beefier CPLD/FPGA mainly to fully recreate a UART as the Xbox kernel expects it but also to properly generate baud rate clock tailored to "standard" baud rates. A dedicated IC would take care of all that. Bigger CPLD means more expensive and I wouldn't be surprised a 128 Macrocell CPLD/FPGA with a DCM (or whatever any other company than Xilinx calls their's) would be required to implement the modified LPC IO state machine (to account for missing LFRAME signal on non 1.0 boards) and a fully Xbox-compliant UART. It would most likely cost significantly more than a cheap 32 Macrocell CPLD + SC16C550. With that UART chip, it's basically putting in the LPC IO state machine in and interfacing the correct pins to the correct port addresses in it. UART will do the rest. Of course after that a USB-FTDI cable would be useful. I don't think it would be worth it to put in the necessary circuitry to create a real RS-232 interface.
I am following now (I think). The uart would interface the cpld using the 8 data lines, 3 address lines, /CS and /WR. The cpld would act as bridge between the LPC (with LFRAME missing) and the uart chip. The UART chip TXD and RXD can be connected to a ftdi cable (on TTL 5V level) You will need a clock source of 1.8432 Mhz for the uart as well. Not sure if the cpld can provide such?