On Wednesday, April 6, 2016 at 8:20:35 AM UTC-4, Rick C. Hodgin wrote:> My next step is to construct the board that has the 132-pin socket, and > the mated ports for the GPIO cables that the HSMC-to-GPIO board has.And the level converters and any debug ports or vias for the scope. Best regards, Rick C. Hodgin
Using an FPGA to drive the 80386 CPU on a real motherboard
Started by ●April 5, 2016
Reply by ●April 6, 20162016-04-06
Reply by ●April 6, 20162016-04-06
On Tuesday, April 5, 2016 at 9:22:32 PM UTC-4, rickman wrote:> On 4/5/2016 5:11 PM, Rick C. Hodgin wrote: > > On Tuesday, April 5, 2016 at 4:13:28 PM UTC-4, rickman wrote: > >> Opto-isolation is pretty slow compared to 40 MHz, but maybe there are > >> faster converters these days. Why do you need isolation? > > > > I may not need it. However, when I was working on stepper motors back > > in the mid-90s, I believe we used them to maintain a low power draw on > > the circuits we were monitoring. > > Optos are the opposite of low power draw on busses. Enough current is > required to drive an LED on the sensing side. Optos are typically used > to provide isolation from circuits that can have ground swings or > otherwise be noisy or have high voltage spikes, like motor circuits.Got it. Makes perfect sense. Best regards, Rick C. Hodgin
Reply by ●April 6, 20162016-04-06
On 4/6/2016 8:20 AM, Rick C. Hodgin wrote:> On Wednesday, April 6, 2016 at 12:35:43 AM UTC-4, rickman wrote: >> On 4/5/2016 10:47 PM, Rick C. Hodgin wrote: >>> >>> Alright ... suppose I target this from another angle. What if I take >>> the CPU completely off the 80386 motherboard, and create a custom socket >>> connected to my FPGA, and I provide it with everything it requires? >>> >>> The Am386 CPUs operated at speeds from 0 MHz to 40 MHz. Since they can >>> actually clock at any speed, I could take the CPU completely away from the peculiar and bizarre 80386 motherboard design, and instead provide the >>> facilities which basically allow the FPGA to be its motherboard, feeding >>> it whatever it's required. >>> >>> Possible? >> >> Sure. Booting one of these things may be a bit complicated, but not >> likely any worse than booting a modern high end ARM processor. Likely a >> lot easier. > > Agreed. The 80386 manuals document the power-on state, and provided I > setup the SRAM emulation to point to the correct addresses with proper > 80386 binary code, it should start processing away like gangbusters. :-) > > My next step is to construct the board that has the 132-pin socket, and > the mated ports for the GPIO cables that the HSMC-to-GPIO board has. > > Do you have any particular recommendation as to where I should go to get > the board manufactured? I've seen a host of online services where you > either use their tools, or provide a black-and-white bitmap for each > layer outlining the vias, pin locations, and wires, along with scaling > info.There are a number of places to have PCBs made, but I would avoid strongly using a bitmap graphic file to convey the design data. PCBs are complex beasts and if you have never done a PCB design before, I suggest you spend a lot of time learning how to do that. I like oshpark.com, but there is also www.pcb-pool.com/ You will want to use a PCB layout package and either use Gerber file output to have the boards built, or some fab houses will take the native format files of the layout package. One place I found would accept many different kinds. I think they prefer that because it is not hard to send Gerber data that can be misinterpreted. Gerber is a lousy format really because it was the proprietary format of one company and never intended to be a universal tool.>>> BTW, if I haven't said so you, I greatly appreciate your assistance and >>> advice. It is very kind of you to help me in this way, and much, very >>> much appreciated. >> >> No problem. This an interesting if not mysterious project. > > :-) I don't want to spend a lot of time trying to get it to work, but if > I can, it would be really nice to be able to have my CPU side-by-side with > a real-world product, able to test out compatibility.You should be able to design one board with an FPGA, a 386 socket and a 386 plug which will work for any of the three things you have talked about doing, emulating the mobo with your FPGA, emulating the 386 with your FPGA and monitoring the 386 in a real mobo with the FPGA. 386 Chip ____________ ++++++++++++ FPGA ============== _____________ |||||||||||| ,,,,,,,,,,,,, =================================================== PCB |||||||||||| Plugs into 386 Mobo When emulating the 386 unplug it from the socket. When emulating the mobo, unplug from the mobo. When monitoring the 386 in operation plug in the 386 and plug the board into the mobo. If you aren't in a hurry, I can help you with the PCB design. I can use this as a learning tool to come up to speed with KiCAD which I've been meaning to do.> And if it works, then for my ARM-based ISA, I would do something similar > with a slower ARM core, something also around 32 MHz or so. > > Best regards, > Rick C. Hodgin >-- Rick
Reply by ●April 6, 20162016-04-06
On Wednesday, April 6, 2016 at 11:51:16 AM UTC-4, rickman wrote:> On 4/6/2016 8:20 AM, Rick C. Hodgin wrote: > > :-) I don't want to spend a lot of time trying to get it to work, but if > > I can, it would be really nice to be able to have my CPU side-by-side with > > a real-world product, able to test out compatibility. > > You should be able to design one board with an FPGA, a 386 socket and a > 386 plug which will work for any of the three things you have talked > about doing, emulating the mobo with your FPGA, emulating the 386 with > your FPGA and monitoring the 386 in a real mobo with the FPGA. > > 386 Chip > ____________ > ++++++++++++ FPGA > ============== _____________ > |||||||||||| ,,,,,,,,,,,,, > =================================================== PCB > |||||||||||| > Plugs into 386 Mobo > > When emulating the 386 unplug it from the socket. When emulating the > mobo, unplug from the mobo. When monitoring the 386 in operation plug > in the 386 and plug the board into the mobo. > > If you aren't in a hurry, I can help you with the PCB design. I can use > this as a learning tool to come up to speed with KiCAD which I've been > meaning to do.I think this sounds like a great solution. I've never programmed an FPGA outside of the dev board and dev environment (Quartus), so I have no idea how I'd program the on-board FPGA as you indicate. If it's possible, your design looks amazing. How is the FPGA programmed when it's not on a dev board? Is it that certain pins feed into its programming mechanism, and those would be wired to a usb port we'd add to the board for that purpose? Best regards, Rick C. Hodgin
Reply by ●April 6, 20162016-04-06
On 4/6/2016 12:08 PM, Rick C. Hodgin wrote:> On Wednesday, April 6, 2016 at 11:51:16 AM UTC-4, rickman wrote: >> On 4/6/2016 8:20 AM, Rick C. Hodgin wrote: >>> :-) I don't want to spend a lot of time trying to get it to work, but if >>> I can, it would be really nice to be able to have my CPU side-by-side with >>> a real-world product, able to test out compatibility. >> >> You should be able to design one board with an FPGA, a 386 socket and a >> 386 plug which will work for any of the three things you have talked >> about doing, emulating the mobo with your FPGA, emulating the 386 with >> your FPGA and monitoring the 386 in a real mobo with the FPGA. >> >> 386 Chip >> ____________ >> ++++++++++++ FPGA >> ============== _____________ >> |||||||||||| ,,,,,,,,,,,,, >> =================================================== PCB >> |||||||||||| >> Plugs into 386 Mobo >> >> When emulating the 386 unplug it from the socket. When emulating the >> mobo, unplug from the mobo. When monitoring the 386 in operation plug >> in the 386 and plug the board into the mobo. >> >> If you aren't in a hurry, I can help you with the PCB design. I can use >> this as a learning tool to come up to speed with KiCAD which I've been >> meaning to do. > > I think this sounds like a great solution. I've never programmed an > FPGA outside of the dev board and dev environment (Quartus), so I have > no idea how I'd program the on-board FPGA as you indicate. If it's > possible, your design looks amazing. > > How is the FPGA programmed when it's not on a dev board? Is it that > certain pins feed into its programming mechanism, and those would be > wired to a usb port we'd add to the board for that purpose?MCUs have a various means of programming them which often allow the use of a simple USB port and a small chip. FPGAs have two ways of programming... JTAG and a proprietary serial interface, each brand and sometimes even family of FPGAs are different. The proprietary interfaces are often very similar, but the programmers are different. I just buy a cable from the makers and live with that. There are "universal" cables sold on eBay but I've never tried one so I don't know how well they work. I should as I have manufacturing needs and only have one cable with no spares. I should either buy a new cable or try using one of the universal ones. If you have an eval board, it may have a chip on board to handle the programming or it may require a cable. I have an iCEblink40 (Lattice) eval board that uses USB. Looks like they use an AT90USB2 with custom programming to bring up the FPGA. I bet other manufacturers do similar things on their low end boards. If you can get the code you could copy that, or just tie into the signals and use that programmer with your FPGA. I like some of the Lattice chips because they have Flash. Once you program them the programmer is no longer needed. If you are going to use a RAM configured part you need something to program the FPGA every time you power it up, so might as well design an MCU programmer onto your board. -- Rick
Reply by ●April 6, 20162016-04-06
On Wednesday, April 6, 2016 at 12:38:45 PM UTC-4, rickman wrote:> On 4/6/2016 12:08 PM, Rick C. Hodgin wrote: > > On Wednesday, April 6, 2016 at 11:51:16 AM UTC-4, rickman wrote: > >> On 4/6/2016 8:20 AM, Rick C. Hodgin wrote: > >>> :-) I don't want to spend a lot of time trying to get it to work, but if > >>> I can, it would be really nice to be able to have my CPU side-by-side with > >>> a real-world product, able to test out compatibility. > >> > >> You should be able to design one board with an FPGA, a 386 socket and a > >> 386 plug which will work for any of the three things you have talked > >> about doing, emulating the mobo with your FPGA, emulating the 386 with > >> your FPGA and monitoring the 386 in a real mobo with the FPGA. > >> > >> 386 Chip > >> ____________ > >> ++++++++++++ FPGA > >> ============== _____________ > >> |||||||||||| ,,,,,,,,,,,,, > >> =================================================== PCB > >> |||||||||||| > >> Plugs into 386 Mobo > >> > >> When emulating the 386 unplug it from the socket. When emulating the > >> mobo, unplug from the mobo. When monitoring the 386 in operation plug > >> in the 386 and plug the board into the mobo. > >> > >> If you aren't in a hurry, I can help you with the PCB design. I can use > >> this as a learning tool to come up to speed with KiCAD which I've been > >> meaning to do. > > > > I think this sounds like a great solution. I've never programmed an > > FPGA outside of the dev board and dev environment (Quartus), so I have > > no idea how I'd program the on-board FPGA as you indicate. If it's > > possible, your design looks amazing. > > > > How is the FPGA programmed when it's not on a dev board? Is it that > > certain pins feed into its programming mechanism, and those would be > > wired to a usb port we'd add to the board for that purpose? > > MCUs have a various means of programming them which often allow the use > of a simple USB port and a small chip. FPGAs have two ways of > programming... JTAG and a proprietary serial interface, each brand and > sometimes even family of FPGAs are different. The proprietary > interfaces are often very similar, but the programmers are different. I > just buy a cable from the makers and live with that. There are > "universal" cables sold on eBay but I've never tried one so I don't know > how well they work. I should as I have manufacturing needs and only > have one cable with no spares. I should either buy a new cable or try > using one of the universal ones. > > If you have an eval board, it may have a chip on board to handle the > programming or it may require a cable. I have an iCEblink40 (Lattice) > eval board that uses USB. Looks like they use an AT90USB2 with custom > programming to bring up the FPGA. I bet other manufacturers do similar > things on their low end boards. If you can get the code you could copy > that, or just tie into the signals and use that programmer with your FPGA. > > I like some of the Lattice chips because they have Flash. Once you > program them the programmer is no longer needed. If you are going to > use a RAM configured part you need something to program the FPGA every > time you power it up, so might as well design an MCU programmer onto > your board.I think I asked you this before in 2014?? Do you live anywhere near Indiana? I would be willing to drive out and spend a weekend with you sometime on this project, listening and learning, seeing and experiencing. I'd even be willing to buy you lunch for it. :-) Best regards, Rick C. Hodgin
Reply by ●April 6, 20162016-04-06
On Wednesday, April 6, 2016 at 12:38:45 PM UTC-4, rickman wrote:> If you have an eval board, it may have a chip on board to handle the > programming or it may require a cable. I have an iCEblink40 (Lattice) > eval board that uses USB. Looks like they use an AT90USB2 with custom > programming to bring up the FPGA.Is it this one? http://www.digikey.com/product-detail/en/ICE40HX1K-BLINK-EVN/220-1581-ND/3198285 Best regards, Rick C. Hodgin
Reply by ●April 6, 20162016-04-06
On 4/6/2016 12:45 PM, Rick C. Hodgin wrote:> On Wednesday, April 6, 2016 at 12:38:45 PM UTC-4, rickman wrote: >> On 4/6/2016 12:08 PM, Rick C. Hodgin wrote: >>> On Wednesday, April 6, 2016 at 11:51:16 AM UTC-4, rickman wrote: >>>> On 4/6/2016 8:20 AM, Rick C. Hodgin wrote: >>>>> :-) I don't want to spend a lot of time trying to get it to work, but if >>>>> I can, it would be really nice to be able to have my CPU side-by-side with >>>>> a real-world product, able to test out compatibility. >>>> >>>> You should be able to design one board with an FPGA, a 386 socket and a >>>> 386 plug which will work for any of the three things you have talked >>>> about doing, emulating the mobo with your FPGA, emulating the 386 with >>>> your FPGA and monitoring the 386 in a real mobo with the FPGA. >>>> >>>> 386 Chip >>>> ____________ >>>> ++++++++++++ FPGA >>>> ============== _____________ >>>> |||||||||||| ,,,,,,,,,,,,, >>>> =================================================== PCB >>>> |||||||||||| >>>> Plugs into 386 Mobo >>>> >>>> When emulating the 386 unplug it from the socket. When emulating the >>>> mobo, unplug from the mobo. When monitoring the 386 in operation plug >>>> in the 386 and plug the board into the mobo. >>>> >>>> If you aren't in a hurry, I can help you with the PCB design. I can use >>>> this as a learning tool to come up to speed with KiCAD which I've been >>>> meaning to do. >>> >>> I think this sounds like a great solution. I've never programmed an >>> FPGA outside of the dev board and dev environment (Quartus), so I have >>> no idea how I'd program the on-board FPGA as you indicate. If it's >>> possible, your design looks amazing. >>> >>> How is the FPGA programmed when it's not on a dev board? Is it that >>> certain pins feed into its programming mechanism, and those would be >>> wired to a usb port we'd add to the board for that purpose? >> >> MCUs have a various means of programming them which often allow the use >> of a simple USB port and a small chip. FPGAs have two ways of >> programming... JTAG and a proprietary serial interface, each brand and >> sometimes even family of FPGAs are different. The proprietary >> interfaces are often very similar, but the programmers are different. I >> just buy a cable from the makers and live with that. There are >> "universal" cables sold on eBay but I've never tried one so I don't know >> how well they work. I should as I have manufacturing needs and only >> have one cable with no spares. I should either buy a new cable or try >> using one of the universal ones. >> >> If you have an eval board, it may have a chip on board to handle the >> programming or it may require a cable. I have an iCEblink40 (Lattice) >> eval board that uses USB. Looks like they use an AT90USB2 with custom >> programming to bring up the FPGA. I bet other manufacturers do similar >> things on their low end boards. If you can get the code you could copy >> that, or just tie into the signals and use that programmer with your FPGA. >> >> I like some of the Lattice chips because they have Flash. Once you >> program them the programmer is no longer needed. If you are going to >> use a RAM configured part you need something to program the FPGA every >> time you power it up, so might as well design an MCU programmer onto >> your board. > > I think I asked you this before in 2014?? Do you live anywhere near > Indiana? I would be willing to drive out and spend a weekend with > you sometime on this project, listening and learning, seeing and > experiencing. I'd even be willing to buy you lunch for it. :-)I am in Maryland, VA and WV near Charlestown. I do a lot of my electronic thinking in VA. I asked google how far it is to Indiana and it said 630 miles to an arbitrary point north of Indianapolis. I doubt a trip is really necessary. We can exchange emails. gnuarm dot 2007 at arius dot com -- Rick
Reply by ●April 6, 20162016-04-06
On 4/6/2016 1:37 PM, Rick C. Hodgin wrote:> On Wednesday, April 6, 2016 at 12:38:45 PM UTC-4, rickman wrote: >> If you have an eval board, it may have a chip on board to handle the >> programming or it may require a cable. I have an iCEblink40 (Lattice) >> eval board that uses USB. Looks like they use an AT90USB2 with custom >> programming to bring up the FPGA. > > Is it this one? > > http://www.digikey.com/product-detail/en/ICE40HX1K-BLINK-EVN/220-1581-ND/3198285I have a similar one with the iCE40LP1K chip which is lower power and less speed. -- Rick
Reply by ●April 6, 20162016-04-06
On 4/6/2016 1:37 PM, Rick C. Hodgin wrote:> On Wednesday, April 6, 2016 at 12:38:45 PM UTC-4, rickman wrote: >> If you have an eval board, it may have a chip on board to handle the >> programming or it may require a cable. I have an iCEblink40 (Lattice) >> eval board that uses USB. Looks like they use an AT90USB2 with custom >> programming to bring up the FPGA. > > Is it this one? > > http://www.digikey.com/product-detail/en/ICE40HX1K-BLINK-EVN/220-1581-ND/3198285I started a thread in comp.arch.embedded about PCB makers. You may also need assembly help too. Many FPGAs are BGA which can be tricky to assemble at home. -- Rick





