6502.org http://forum.6502.org/ |
|
65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardware http://forum.6502.org/viewtopic.php?f=10&t=5249 |
Page 1 of 10 |
Author: | ElEctric_EyE [ Fri Aug 17, 2018 2:02 am ] |
Post subject: | 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardware |
Woz had it right when they released a built in assembler to their Apple stand alone computer. No Java, no makefiles, etc. (BTW, thanks to Bitwise for making his software built around Java in order to compile the opcodes of the 65Org16 and produce the makefile!) My PVB project would have been dead in it's tracks if not for his effort and help! Also, for those that don't know, the 65Org16 is a modified version of Arlet Ottens' softcore based on the 6502. That 8-bit core was running over 100+MHz (110 IIRC) on my original PVB. BigEd was involved too. He was the original catalyst in thinking how easy it would be to expand Arlet's core to 16-bits... I took the bait, spent over a year testing the ALU and CPU and learning Verilog along the way and now I aim to complete a 3rd design. This one should be alot of fun, although a little expensive. The software will initially be focused on creating an assembler/disassembler for the simplest version of the 65Org16. It will be the fastest but more importantly the easiest to start with when coding an assembler/disassembler. I assume. Never done it before! The hardware will consist of 2 Spartan 6's and 4 2MBx18 Synchronous RAMs' rated @250MHz. Master/Slave CPU's will be possible with a communication bus between the 2 Spartan 6's. It's looking like 18-pins are available for this function. Bi-directional high speed serial might be optimal... Video overlay from slave while page flipping will be definite possibilities for the video hardware. Each Spartan 6 will control 2 of the SyncRams. All IC's are SMT, but no BGA, so I can build & troubleshoot myself. Many resolutions will be possible. In the PVB project I believe I was able to go all the way down to 320x240, maybe lower. The highest resolutions possible, due to the speed of the SyncRAM's will be 1920x1080 @148.5MHz and 1600x1200 @162MHz. The 1920x1080 resolution will be native as the main clock, while it is programmable, boots up @148.5MHz. The 1600x1200 does take less videoRAM but needs a faster clock, still under 250MHz so all this should be possible. For V1.2 I've added a PCM9211 with SPDIF In/Pass thru SPDIF optical Transceiver connectors. Also, there is an optical out SPDIF connector. I will be getting into the Spartan 6's capability as a SPDIF transmitter. It is available in CoreGen. Code: QTY PRICE USea DESCRIPTION PART# SUPPLIER DESIGNATION Comment -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 $13.95 148.5MHz 1.8V Prog CMOS Osc 336-5315-ND DigiKey U1 2 $20.86 144-pin QFP Spartan 6 XC6SLX9-3TQG144I DigiKey U2,U3 2 $.71 8-pin QFN 1.8V 8Mb SPI FLASH W25Q80EWZPIG-ND DigiKey U19,U20 1 $8.84 48-pin QFP VideoDAC 296-13049-5-ND DigiKey U12 1 $2.16 20-pin QFN USB to UART MCP2200-I/MQ-ND DigiKey U11 1 $5.07 8-pin WDFN 1.8V 256Mb FLASH S25FS256SDSNFI000 DigiKey U8 1 $3.60 20-pin SSOP 3.3V SDCard control CH376T Obsolete - eBay U10 4 $47.59 100-pin QFP 1.8V 2Mx18 SyncRAM GS8320Z18AGT-250V Avnet U4,U5,U6,U7 1 $.36 TinyLogic Inverter SOT23 NC7SZ04P5XCT-ND DigiKey U9 1 $2.81 12-pin DFN T-Screen Controller SX8651IWLTRTCT-ND DigiKey U16 1 $5.40 IC TXRX DGTL AUDIO 216KHZ 296-27688-1-ND DigiKey U21 2 $.43 SOT23-5 Inverter LED driver SN74LVC1G04 DigiKey U22,U23 1 $2.89 Micro SD Card Connector HR1964CT-ND DigiKey K6 1 $1.86 VGA Connector 609-2802-ND DigiKey K3 1 $0.48 USB Connector ED2989-ND DigiKey K5 1 $5.04 2mmx5.5mm 11A Power Connector SC1937-ND DigiKey K1 1 $5.70 Mating 11A Male Power Connector SC1950-ND DigiKey 1 $0.77 4-pin FFC Connector 609-1883-1-ND DigiKey K2 1 $.84 6-pin JTAG Connector A121761-ND DigiKey K4 1 $1.58 Optical Receiver Module 1080-1508-ND DigiKey K7 2 $1.86 Optical Transmitter Module 1080-1524-ND DigiKey K8,K9 1 $5.25 TO-263-5 1.8V 3A VReg LP3966ES-1.8/NOPB-ND DigiKey VR1 1 $.70 SOT223 1.2V 1A VReg MCP1826S-1202E/DB-ND DigiKey VR2 1 $.70 SOT223 1.8V 1A VReg MCP1826S-1802E/DB-ND DigiKey VR5 1 $.70 SOT223 2.5V 1A VReg MCP1826S-2502E/DB-ND DigiKey VR4 1 $.70 SOT225 3.3V 1A VReg MCP1826S-3302E/DB-ND DigiKey VR3 4 $.60 SOT363 Volt LVL Trans SN74AVC1T45DRLR DigiKey U13,U14,U15,U24 2 $2.68 SOT23-3 3.3V PWR On RST DS1818R-20+T&RCT-ND Digikey U17,U18 1 $.49 0603 Yellow LED 1.8V 475-2794-1-ND DigiKey D2 3 $.43 0603 Red LED 1.8V 475-2506-1-ND DigiKey D1,D3,D4 2 $.70 Moment Push switch SPST SMD SW415-ND DigiKey S1,S2 2 $2.29 1210 68uF 6.3V Cap 445-3954-1-ND DigiKey C1,C116 5V In Decoupling,VR3out 60 $.10 0402 .1uF 10V Cap 1276-1443-1-ND DigiKey C2-C49,C94-C99,C104,C111,C113,C114-C115,C119-C122, C124-C125,C126-C127, C132 SyncRams,SD,U1,U8-U11,U16,U12,U12,U21,K7-K8,K9 50 $.13 0402 .33uF 10V Cap 1276-6665-1-ND DigiKey C50-C91,C112 FPGAs,VR5out 1 $.20 0805 4.7uF 16V Cap 1276-1065-1-ND DigiKey C100,C101 USB,JTAG 1 $1.20 1210 33uF 10V Cap 445-7733-1-ND DigiKey C107 VR1out 3 $.10 0402 1uF 6.3V Cap 1276-1235-1-ND DigiKey C108,C109,C116 VR2out,VR4out 5 $.15 0805 10uF 6.3V Cap 1276-2404-1-ND DigiKey C117,C118,C123,C130,C131 U21 1 $.10 0402 .068uF 16V Cap 1276-1269-1-ND DigiKey C128 U21 Filter 1 $.10 0402 4700pF 50V Cap 490-4915-1-ND DigiKey C129 U21 Filter 1 $.10 0402 10K Res RR05P10.0KDCT-ND DigiKey R1 VR1 2 $.11 0603 100 Res RR08P100DCT-ND DigiKey R2,R13 U10 LEDs,U21 LEDs 4 $.45 0402 4.7K Res P4.7KDCCT-ND DigiKey R3-R4,R6-R7 I2C, FPGAs Init_B 2 $.10 0402 330 Res 311-330JRCT-ND DigiKey R5,R8 FPGAs Done 3 $.10 0402 75 Res 311-75.0LRCT-ND DigiKey R9-R11 RGBout 1 $.22 0402 680 Res P680DECT-ND DigiKey R12 U21 Filter 2 $.10 0805 500mA ferrite bead 1276-6330-1-ND DigiKey F1,F2 5V Filter,3.3V Filter Initial goal is to have a 1080p flat panel display running a 65Org16 @75MHz+, with video double buffering to start. Simple graphics through a hardware HDL plotter are the initial possibilty. Character magnification will be a necessity. Other I/O, especially large SDHC cards, would be used for storage and transfer of 1080p pics. Also, there is a large 256Mb SPI Flash onboard. The other SPI flash ICs used to configure the Spartan 6's will be 8Mb. Cheers! EDIT(9/1/2018): Some very useful info will be garnered from this initial 1080p project. EDIT(9/4/2018): Added incomplete parts list. EDIT(9/5/2018): Updated parts list. EDIT(9/9/2018): Updated parts list. EDIT(9/10/2018): Updated parts list. EDIT(9/11/2018): Added Block Diag. EDIT(9/16/2018): Updated parts list. Cleaned up Block diag. Added more detail to explain goals. EDIT(10/25/2018): Updated parts list. EDIT(11/19/2018): Also, more useful info from this 65Org16.x Dev Board. Updated parts list. EDIT(11/20/2018): Updated parts list. EDIT(11/21/2018): Updated parts list. EDIT(12/14/2018): Updated parts list. EDIT(12/18/2018): Updated parts list. EDIT(1/2/2019): Added views of each layer of the board layout. Revised intentions: no 2nd monitor output. Updated credits for newer members, my oversight. EDIT(2/1/2019): Updated parts list. Complete? EDIT(2/4/2019): Updated parts list. Added U21 & U22. EDIT(2/8/2019): Updated parts list. Removed U22(ADAU1701). Added Optical Rx/Tx modules and other stuff. EDIT(2/11/2019): Updated parts list. Updated layout pics to V1.1 production run. EDIT(2/16/2019): Updated parts list. Added schematic for JTAG interface. EDIT(3/3/2019): Updated parts list. Updated JTAG I/F. Updated board layout pics to V1.2. Updated capabilities description.Some good video timings HERE. Updated Master/Slave S6 in the V1.2 JTAG schematic. |
Author: | GARTHWILSON [ Fri Aug 17, 2018 3:00 am ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
Quote: Woz had it right when they released a built in assembler to their Apple stand alone computer. No Java, no makefiles, etc. I like that! Quote: I would like to attempt a hardware/software project around 'a version' of the 65Org16. It will be initially be focused on creating an assembler [...] I jotted down some requests a few years ago at http://wilsonminesco.com/AssyDefense/as ... uests.html . See also the middle of my page "Local variables and environments" (in the 6502 stacks treatise) where it says, "I would like to use macros to automate" and then the piece of code following that paragraph, and the paragraph after that. Edit: And long time no hear! It's great to have you back! |
Author: | BigEd [ Fri Aug 17, 2018 7:23 am ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
It would be great to see a native assembler! |
Author: | ElEctric_EyE [ Fri Aug 17, 2018 8:38 am ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
I'm going to base it loosely on an old C-64 program called Micromon 64. Time to dig out the old hardware and floppy's. I hope it all still works! I could use an emulator on the PC, but what fun is that? Plus, I say a simplified version of the 65Org16 because currently the # of opcodes is outrageous. https://github.com/ElEctric-EyE/verilog-6502/blob/65Org16-master/supporting-macros.a65 The PVB video graphics project was a great way to verify that all these commands work, including the barrel shifters. |
Author: | MichaelM [ Fri Aug 17, 2018 12:10 pm ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
EEyE: Great to read a new post from you. I look forward to seeing more posts on this project. |
Author: | ElEctric_EyE [ Fri Aug 17, 2018 10:46 pm ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
MichaelM wrote: EEyE: Great to read a new post from you. I look forward to seeing more posts on this project. Michael, thanks for the kind words. Progress will be abit slow in the beginning as the brain gets firing on all 8 cylinders. I think it would be wise to use an FTDI FT232H http://www.ftdichip.com/Support/Documen ... FT232H.pdf to interface a USB keyboard to the FPGA. Also, another FT232H to communicate direct to a PC or a USB memory stick. These are USB 2.0 devices. Scratch the SDHC card idea. I am investigating an HDMI interface for video output. If it turns out to bee too complicated, I'll just do a VGA out using a high speed videoDAC. Worked very well before. The SyncRAMs and Spartan 6's have been ordered. |
Author: | ElEctric_EyE [ Tue Aug 21, 2018 8:32 pm ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
Today I got the Windows 10 64-bit to run ISE14.7 using someone else's fix I posted about Here. Using ISE14.7 I successfully synthesized/implemented and generated a program file using an old PVB project file. I wasn't quite up to the HDL line or circle/ellipse generator yet. It was right after I had all 5 PVB running simultaneously. This gives me a great head start although my head hurts. I do see some other back up Verilog project files for line and circle generation, so maybe will be able to make more quicker progress than I originally thought. |
Author: | ElEctric_EyE [ Fri Aug 24, 2018 12:53 am ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
Progress report: Got in the 4 SyncRams and 2 Spartan 6's. Been doing abit of research into HDMI transmitters for 1080p on a modern flat screen display. Not alot of displays have a VGA input anymore and surprisingly there's not alot of HDMI transmitter IC's available... Initially was looking at the Lattice Sil 1136, but that looks too complicated. Now reviewing NXP's TDA19988. Seems like a much easier IC to manage. Neither is expensive and both have solderable packages. Will be focusing on the board layout very soon. |
Author: | LIV2 [ Fri Aug 24, 2018 7:00 am ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
Nice, I look forward to hearing how you go with that HDMI chip |
Author: | GaBuZoMeu [ Sun Aug 26, 2018 4:02 pm ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
Perhaps rather dumb but who cares Can't you attach two 2Mx18 SyncRAMs to the second Spartan by organize them as either 4Mx18 or 2Mx36 ? Don't know whether this would be helpful, but if only the second Spartan controls the video RAM would the RGB connection between them still required? Perhaps it can be reduced to R|G|B using dedicated commands? Quote: So far I think absolute worst case is the 1080p pixel clock running @150MHz and the 65Org16 running @75MHz. Truly, just marginal more than 280x192 / 6502 / 1 MHz Regards Arne |
Author: | ElEctric_EyE [ Sun Aug 26, 2018 4:29 pm ] | ||
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa | ||
GaBuZoMeu wrote: Perhaps rather dumb but who cares Can't you attach two 2Mx18 SyncRAMs to the second Spartan by organize them as either 4Mx18 or 2Mx36 ? Don't know whether this would be helpful, but if only the second Spartan controls the video RAM would the RGB connection between them still required? Perhaps it can be reduced to R|G|B using dedicated commands? Quote: So far I think absolute worst case is the 1080p pixel clock running @150MHz and the 65Org16 running @75MHz. Truly, just marginal more than 280x192 / 6502 / 1 MHz Regards Arne You've read my mind! I was busy working on extending the RAM to 4Mx18 per Spartan 6 already. After all I already bought the IC's. Thanks for your suggestion! It will take 1 more pin from the Spartan 6 and an offchip TinyLogic 74series inverter. The RGB info sent from the top S6 to the bottom is neccessary. The HDL will have to chose which RAM output will paint the picture to the HDMI transmitter. This is making the bottom S6 the Master and the top the Slave. BTW, I've seen Arlet's 8-bit core running at 110MHz on a Spartan 6. Those speeds give a new level to software creation. I really just now trying to get a grasp on pin count and potential board layout in the near future, so I've included a more up to date block diag. Regarding the FTDI USB IC's, I think I can get away using the RS-232 Tx/Rx pins only? I'm rusty on my RS-232, but no voltage level corrections needed per the datasheet.
|
Author: | GaBuZoMeu [ Sun Aug 26, 2018 4:48 pm ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
Glad that I could be helpful If you can afford two more pins one on each Spartan, I would omit the external inverter and submit A21 and /A21. Then there is no further delay to be considered. RS-232 is usually running no more than 230400 Bd. With a 10 bit frame (startbit, 8 data bits, 1 stop bit, no parity) this is just 23040 characters per second or roughly one char every 40 µs. Should be no real challenge but you may even provide a FIFO for some chars. Handshake isn't use frequently. So things like /RTS or /CTS etc. are often omitted. What are you intend to do with that RS-232-IF? Regards Arne |
Author: | ElEctric_EyE [ Sun Aug 26, 2018 4:59 pm ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
GaBuZoMeu wrote: Glad that I could be helpful If you can afford two more pins one on each Spartan, I would omit the external inverter and submit A21 and /A21. Then there is no further delay to be considered. RS-232 is usually running no more than 230400 Bd. With a 10 bit frame (startbit, 8 data bits, 1 stop bit, no parity) this is just 23040 characters per second or roughly one char every 40 µs. Should be no real challenge but you may even provide a FIFO for some chars. Handshake isn't use frequently. So things like /RTS or /CTS etc. are often omitted. What are you intend to do with that RS-232-IF? Regards Arne Excellent suggestion regarding the A21 line! No delay would be top priority on high speed video. For the RS-232, I was reminded of the MCP2200 I've used before. I do believe I used just the Tx and Rx and this IC has much smaller real estate. I would definitely use that IC again for a keyboard I/F. However, for the PC/USB memory stick option, I would like a high speed interface to transfer 1080p images. I think that's why I was looking at FTDI's parallel option. But then again if I'm running out of FPGA pins, it might be wisest to use an SD card core internally. But then would have to switch the card back and forth... |
Author: | GaBuZoMeu [ Sun Aug 26, 2018 5:17 pm ] |
Post subject: | Re: 65Org16 Assembler on custom Xilinx Spartan 6 FPGA Hardwa |
I am a bit puzzled I thought that RS-232 was an optional IF to Spartan 1. There are already 2 USBs. If you intend USB-1 for keyboard you need to be an USB master. Being that (in theory) you could attach any HID to that USB port. Changing the mode (still being master) to file I/O an USB stick could be used as data source and destination as well. If this USB is capable doing USB2.0 20..30MB/s are possible (but you have to implement a filesystem as well, and a lot of other stuff ). All that could be established for USB-2 as well (I assume). So I am still a bit puzzled for what purpose you think about RS-232? File transfer would be rather boring. As a diagnostic IF perhaps. The MPC2200 you mentioned appears to me as a chip that adds a COM port to a PC. Regards, Arne |
Page 1 of 10 | All times are UTC |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |