Carte Blanche II

Old to New

On June 8, 2015 I received my new Carte Blanche II card.  This card has many more resources than the old Carte Blanche card.  Please visit Steve Howell's page, http://www.applelogic.org/CarteBlancheII.html if you haven't already, to read about it.  Two of the things I'm most interested in are the onboard 24bit HDMI and 24bit VGA.  Steve has written a CB II port of my Carte Blanche c933hdmi code (which is based on Alex Freed's video code in JAT).  This code works well giving 720x480 resolution on an HDMI monitor.  The VGA output on the old Carte Blanche had two problems.  One, it was only 6 bit color, which was good for all the non-IIgs modes but not good for the Super HiRes Modes.  The second problem was that some monitors don't support 720x480 resolution in VGA.  Mine don't.  The VGA picture is awful. 


640x480 Video Card Project (IIgs)

So I decided to write a 640x480 port for those who don't have an HDMI / DVI monitor.  This was a good excuse for me to learn some of the new features of the Carte Blanche II as well.  My CB II version is c2000 and it has a few changes: 

The SHR 640 dither mode is now the default mode, but you can still toggle it on/off with the control - ] keys.

The pixel offset bug in the c933hdmi code is fixed.

Both the VGA and HDMI work well but Steve's port is better for the HDMI for two reasons it is 720 wide giving you the side borders in SHR and my version has a second of black screen when switching to or from SHR. 


800x600 Video Card Project (IIgs)

I wasn't really satisfied with the 640x480 project.  I really like the side borders in SHR.  So I made another version, c2001 that has a screen resolution of 800 x 600 including the borders.  The good thing about this version, it has borders on the sides in SHR, but the borders are large and therefore the actual display area is smaller than the 640x480.  Still I like it better, especially when I set my widescreen monitor to display in normal, not wide, mode.

VGA and HDMI look nearly identical.  There is no more 'second of black screen' when switching to or from SHR. 


720x480 Video Card Project (IIgs)

Bill Garber has written a modified version of the c2000 for the Carte Blanche II.  It uses the 720x480 resolution.  His version is b2000. 

It can be found here:

http://www.sepa-electronics.com/sepaelectronicscom/Carte%20Blanche%202

Or download it directly from my Downloads page.


640x480 Video Card Project (//e)

The Carte Blanche II card uses a different external flash memory than the Carte Blanche I so I wrote a port of the old c302 video card code that supports flashing the Carte Blanche II external memory from the Apple //e.  Included are Applesoft BASIC utilities to do the flash as well as configure the video (cbconfig).  There is also a manual.


Here are a few things I've learned about Carte Blanche II programming:

The CBII has a pin that is used to enable/disable the Apple II slot bus to the CBII.  You must set that pin to zero if you want to use the Apple II slot bus.

Assuming that pin is labeled ABUS_EN then:

assign ABUS_EN = 1'b0; // enables Apple II slot bus


The COLOR_LEVEL used to switch between 24 and 12 bit mode for HDMI is no longer needed. On the CBII the 24 bit mode
is fixed.


VGA output must be enabled by:

assign DAC_EN = FRAME_ENABLE; // enables VGA (digital to analog)

Where FRAME_ENABLE is when the screen is actively drawing pixels.

and the sync on green pin should be grounded:

 assign DAC_SONG = 1'b0; // grounds sync on green


The CBII has a user LED which is handy for testing a signal especially when there is no video output. The user LED is
on when low.

assign USER_LED = 1'b0; // turns blue LED on


The Carte Blanche II has more SRAM than the original Carte Blanche.

assign SRAM_NCS = 1'b0; // selects SRAM chip

There is no second SRAM chip so no need for SRAM_NCS1 found on the original CB.
SRAM on the CBII supports 16 bit read/write. For 8 bit:

assign SRAM_NBE0 = 1'b0; // enable low byte
assign SRAM_NBE1 = 1'b1; // disable high byte


SRAM write enable & output enable are the same as the CB1, both are active low:

assign SRAM_NOE = 1'b0; // output enabled
assign SRAM_NWE = 1'b0; // write enabled


The Spartan 3AN 400's DCMs (digital clock managers) do not seem to work well with low output frequencies.  I ended up doubling the output frequency from the DCM and then dividing it in half in the FPGA code. 

 

October 3, 2016