6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Fri Nov 22, 2024 5:06 am

All times are UTC




Post new topic Reply to topic  [ 147 posts ]  Go to page 1, 2, 3, 4, 5 ... 10  Next
Author Message
PostPosted: Fri Aug 17, 2018 2:02 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
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.


Attachments:
JTAG V1.2.jpg
JTAG V1.2.jpg [ 185.02 KiB | Viewed 2012 times ]
Top Layer & silkscreen.jpg
Top Layer & silkscreen.jpg [ 1.52 MiB | Viewed 2016 times ]
Main 1.8V Plane. 2.5V and 3.3V veins.jpg
Main 1.8V Plane. 2.5V and 3.3V veins.jpg [ 839.59 KiB | Viewed 2016 times ]
Main GND Plane. 1.2V vein.jpg
Main GND Plane. 1.2V vein.jpg [ 747.83 KiB | Viewed 2016 times ]
Flipped & silkscreen.jpg
Flipped & silkscreen.jpg [ 1.46 MiB | Viewed 2016 times ]
General Layout.f.jpg
General Layout.f.jpg [ 114.35 KiB | Viewed 2923 times ]

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Last edited by ElEctric_EyE on Sun Mar 03, 2019 5:49 pm, edited 31 times in total.
Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 17, 2018 3:00 am 
Online
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8543
Location: Southern California
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! :D

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! :D

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 17, 2018 7:23 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10985
Location: England
It would be great to see a native assembler!


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 17, 2018 8:38 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
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.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 17, 2018 12:10 pm 
Offline
User avatar

Joined: Mon Apr 23, 2012 12:28 am
Posts: 760
Location: Huntsville, AL
EEyE:

Great to read a new post from you. I look forward to seeing more posts on this project.

_________________
Michael A.


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 17, 2018 10:46 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
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.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Tue Aug 21, 2018 8:32 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
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.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 24, 2018 12:53 am 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
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.

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 24, 2018 7:00 am 
Offline

Joined: Wed Feb 12, 2014 1:39 am
Posts: 173
Location: Sweden
Nice, I look forward to hearing how you go with that HDMI chip


Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 26, 2018 2:52 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
2 2Mx18 RAMs per 144-pin Spartan 6 is too much. Not enough pins. I remember now that's why BGA was looking so delicious back then when I quit 5 years? ago...

Today I came up with a scheme to use 2 Spartan 6's controlling 1 2Mx18 RAM each. Each RAM can hold a video frame and the 1 Spartan 6 sends the RGB data to the 2nd Spartan 6 at which point that Spartan 6 can choose what data to send to the HDMI for output. This is very similar to what I was doing with 2 parallel video boards, except that PVB setup was not capable of page flipping. The bottleneck in this current system looks like it will be the communications path between the Spartan 6's. I don't believe this has to be bidirectional. It will be more of a master/slave setup. I'm getting excited! I know I can do this as I've done it before...
Now I would like to take a break and start looking at the 65Org16 core. The latest one I have I believe is not even on Github. Time to start some opcode trimming and start to see the max speed of the project file using SmartExplorer. It's too bad ISE doesn't take advantage of multiple Intel Cores. This is going to be time consuming.

So far I think absolute worst case is the 1080p pixel clock running @150MHz and the 65Org16 running @75MHz.


Attachments:
General Layout.jpg
General Layout.jpg [ 58.97 KiB | Viewed 5833 times ]

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502
Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 26, 2018 4:02 pm 
Offline
User avatar

Joined: Wed Mar 01, 2017 8:54 pm
Posts: 660
Location: North-Germany
Perhaps rather dumb but who cares :wink:

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 :lol:


Regards
Arne


Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 26, 2018 4:29 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
GaBuZoMeu wrote:
Perhaps rather dumb but who cares :wink:

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 :lol:


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.


Attachments:
General Layout.b.jpg
General Layout.b.jpg [ 66.64 KiB | Viewed 5823 times ]

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502
Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 26, 2018 4:48 pm 
Offline
User avatar

Joined: Wed Mar 01, 2017 8:54 pm
Posts: 660
Location: North-Germany
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 :D 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


Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 26, 2018 4:59 pm 
Offline

Joined: Mon Mar 02, 2009 7:27 pm
Posts: 3258
Location: NC, USA
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 :D 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...

_________________
65Org16:https://github.com/ElEctric-EyE/verilog-6502


Top
 Profile  
Reply with quote  
PostPosted: Sun Aug 26, 2018 5:17 pm 
Offline
User avatar

Joined: Wed Mar 01, 2017 8:54 pm
Posts: 660
Location: North-Germany
I am a bit puzzled :) :oops:

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


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 147 posts ]  Go to page 1, 2, 3, 4, 5 ... 10  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron