6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Jun 01, 2024 12:46 pm

All times are UTC




Post new topic Reply to topic  [ 61 posts ]  Go to page 1, 2, 3, 4, 5  Next
Author Message
 Post subject: SBC-3. Current status
PostPosted: Sun Sep 02, 2007 11:05 am 
Offline

Joined: Tue May 22, 2007 7:00 am
Posts: 3
Location: Moscow, Russia
No news since june... Daryl, can You publish news every month, pleeeease.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Sun Sep 02, 2007 11:32 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
SBC-3 has actually taken two directions:

1) if you are following the "Turnkey get-started-fast solution" discussion under the general topics section, that has not made it to the drawing board completely.

2) if you are waiting for the 65816 + 512k RAM + Video + ethernet + FLASH Storage SBC, then here's an update:

Unfortunately, SBC-3 has not seen any progress. Work and family have taken all of my time. I'm hoping to get more free time in a few months and will be working on it then.

I'll post an update around Thanksgiving time (end of Nov).

As a recap, SBC-3 will have 512k of RAM with 32k of boot ROM (which gets copied into RAM during /Reset). it will use the 65816 and have built-in color video (I'm still trying to iron this spec out), PC keyboard decoder (completed), either CF or SD flash storage (50% done), and 10MB ethernet (60% done).

It will have two 65C22's for GP I/O and will use at least one CPLD to glue it all together.

Clock speed will depend mostly upon the video, somewhere between 8MHz and 12MHz.

As you can imagine, this is a huge expansion over SBC-2 and will take time to perfect.

thanks for your interest and patience!

Daryl


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Mon Nov 05, 2007 6:17 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
I've updated my website with details about my new SBC-3 core.

Check it out here:
http://sbc.rictor.org/sbc31/info.html

Daryl


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Wed Nov 07, 2007 1:16 pm 
Offline

Joined: Sat May 20, 2006 2:54 pm
Posts: 43
Location: Brighton, England
It's looking good. One question, will you be adding PAL capabilities to the CPLD for us europeans? I know the AD724 can do either with just a change of the oscilator frequency and a jumper on the mode select pin.

_________________
Shift to the left, shift to the right,
mask in, mask out,
BYTE! BYTE! BYTE!


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Wed Nov 07, 2007 1:30 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
PAL should not be an issue. However, since I'm using over 90% of the CPLD's resources, I'll have to actually re-program the timing and test it before I say Yes. Good thing I still have a multi-system TV.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu Nov 08, 2007 4:55 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
The PAL timing changes were compiled successfully. I was able to see a steady picture (correct horizontal and vertical timing). The color was not right because I have the 14.318MHz clock feeding the AD724. As long as the analog section works as the datasheet describes, PAL is a go!

Daryl


Top
 Profile  
Reply with quote  
PostPosted: Tue Nov 20, 2007 9:40 pm 
Offline

Joined: Sun Oct 07, 2007 7:14 am
Posts: 20
Location: Toronto, Canada
I'm not proposing you change your design in the least. I'm just wondering if it would be reasonable to use a 65c02 for the video processor instead of the CPLD?

I'm asking partly from inexperience and partly because it strikes me as an interesting project to try. Also, it would save me from having to learn how to program the CPLD if I get far enough along to try something like you've done.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Tue Nov 20, 2007 10:33 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
The video system provides the pixel data at 8MHz. Even if you over-clock the 65C02 to 16MHz, you can't read RAM in two cycles.

You could use a 65C02 to control external counters and latches. You can look at my first video generation experiment here:
http://sbc.rictor.org/download/video.zip

If I were to suggest a non-CPLD approach, it would be to use standard CMOS logic. (74HC series)

Video generation is very straight forward.
Code:
For NTSC, you need:
  a horizontal pixel counter - 0 to 909 (for a 14.318 MHz clock)
                               0 - 454 (for a 7.159 MHz clock)
  a vertical line counter - 0 to 262
  a video memory counter - 0 to 64000, plus 3 bit block register
  decoder logic for active video, horizontal sync, and vertical sync
  CPU address and data bus multiplexers
  a master clock (14.318MHz)

This would require 10-20 IC's (just a wild guess here) but could be done.

Using the CPLD, I was able to put all of that into one chip, plus a few extra features.

I am considering supporting pre-programmed CPLD's, kits, or assembled units. However, that is still some time away.

Daryl


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu Nov 29, 2007 6:01 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
Now that I have the RS-232 working, I have installed my SBC-2 monitor and have been playing with the graphics.

I wrote a program on my PC to convert a 320x200 BMP to a raw binary file. I then uploaded to my SBC-3 core and this is the result.

I call it, "SBC-3 - A Self Portrait"

Image

This picture is the image on my TV captured with my digital camera.

Daryl


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu Nov 29, 2007 10:21 am 
Offline
User avatar

Joined: Tue Mar 02, 2004 8:55 am
Posts: 996
Location: Berkshire, UK
Does the CPLD support hardware screen scrolling (e.g. can you move the base address of the video RAM and have the address wrap round) or will you have to block move the RAM?

_________________
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu Nov 29, 2007 1:52 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
Right now, it is fixed at $0000 of the current block. I'm not sure there are enough resources to add two more 8 bit registers to hold the entire base address. During refresh, it just increments an 18 bit counter. That could be changed to 16 bits so the address would wrap.

I will add that to the wish list for future testing. I also discovered that my timing with the 16 MHz clock was causing dot crawl on the screen. I switched back to the 14.318 MHz clock (7.159 MHz PHI2), and the picture is solid. I want to play with the timing at 16 MHz more to see if I can eliminate the dot crawl.

Next will be font generation and text formatting.

Daryl


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu Nov 29, 2007 4:55 pm 
Offline

Joined: Mon Oct 16, 2006 8:28 am
Posts: 106
Having the ability to move the base of the screen also allows for double buffering, so I'm going to add my vote here for that feature. Come to think of it, a vblank interrupt would be needed too - although that could be just the AD724's vsync signal routed through a 6522. Actually, if you also route the hsync signal through the 6522 and use T2's pulse counting mode, you can implement arbitrary raster interrupts.


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu Nov 29, 2007 6:05 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 9:02 pm
Posts: 1688
Location: Sacramento, CA
It already has double buffering, if understand the term correctly.
Location $0240 has a register that selects which 64k block is being displayed. You can write a new screen to any block. Once you fill the new block, you can immediately write that block # to $0240 and it will automatically switch during the next vertical sync period.

Also, bit 7 of $0240 contains the vertical sync flag, which could be polled. Right now, I don't have any extra pins avail output an interrupt. By using an external sync seperator IC, you could provide Vert. Sync interrupt.

Hope that helps

Daryl


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Thu Nov 29, 2007 11:40 pm 
Offline

Joined: Mon Oct 16, 2006 8:28 am
Posts: 106
8BIT wrote:
It already has double buffering, if understand the term correctly.
Location $0240 has a register that selects which 64k block is being displayed. You can write a new screen to any block. Once you fill the new block, you can immediately write that block # to $0240 and it will automatically switch during the next vertical sync period.

Yes, that will do quite nicely. I like the fact that vsync waiting is handled automatically.

8BIT wrote:
Also, bit 7 of $0240 contains the vertical sync flag, which could be polled.

Polling for vsync? yuck :)

When does that bit get cleared?

8BIT wrote:
Right now, I don't have any extra pins avail output an interrupt. By using an external sync seperator IC, you could provide Vert. Sync interrupt.

Don't you need to provide sync pulses to the NTSC modulator IC? or are you sending it composite sync instead of separated hsync and vsync?


Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: Fri Nov 30, 2007 4:55 am 
Offline

Joined: Sat Jan 04, 2003 10:03 pm
Posts: 1706
The Kestrel's proposed chipset will make use of a raster-compare interrupt instead of a vertical sync interrupt. It's more flexible timing-wise, because you can get multiple interrupts per frame. This can be used for updating color palettes, altering scroll registers, etc. The MGIA concept I have doesn't support color or scrolling, so it is of limited use. Still, I like to keep my options open. :)

That being said, MGIA only exists in a purely software emulated environment.

Depending on the room you have in the CPLD, you may want to use a raster line compare interrupt instead of a plain-vanilla vertical retrace interrupt.

Just an idea. :)


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

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


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: