Difference between revisions of "ASIC"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
m (Known Flaws: bad link fixed)
(28 intermediate revisions by 9 users not shown)
Line 1: Line 1:
Application-Specific Integrated Circuit (ASIC)
+
'''Application-Specific Integrated Circuit''' (ASIC)
  
An ASIC is an especially manufactured custom Chip designed to fulfill special fonctions.
+
An '''ASIC''' is an especially manufactured custom chip designed to fulfill special functions.
  
The main reason is to perform special tasks or combine different electronic componnents into a single Integrated Circuit (Chip).
+
The main reason is to perform special tasks or combine different electronic components into a single Integrated Circuit (chip). This chip is not commonly available ([[COTS]]), but has to be ordered as a genuine part, prices dictated by the seller.
 +
 
 +
After a seller goes out of business or stops supporting a product line, before IPs (Instruction set Processors) like [[CPLD]] or [[FPGA]], they essentially became unavailable. [[Commodore_64#ICs|Commodore]] used a plethora of ASICs in their machines (VIC, SID, PAULA,......); [[MSX]] or the [[IBM PC]]/XT/AT were the opposite in using only [[COTS]] components, making it easy for third parties to offer parts (or to re-build and repair the computers for as long as the COTS chip was still available or a backwards-compatible component exists).
  
 
==Amstrad Custom chips==
 
==Amstrad Custom chips==
  
The Amstrad CPC used one custom chip : the video [[Gate Array]] (also called VGA...but nothing to share with the Video PC standard...)
+
The Amstrad CPC used one custom chip: the video [[Gate Array]] (also called VGA – no connection with the Video PC standard).
  
Latter [[CPC]] series included a "pre-ASIC" to merge the VGA and the CRTC.
+
Latter [[CPC]] cost down series included a "pre-ASIC"-called ASIC to merge the VGA and the [[CRTC]].
  
The Amstrad [[Plus]] include a "second heart" simply referred as the ASIC.
+
The Amstrad [[Plus]] included a "second heart" simply referred as the ASIC.
  
 +
CPC+ ASIC's part number is 40489
  
This Amstrad Plus ASIC perform many additionnal features that the old CPC series couldn't : the "Plus Features".
+
==Emulated chips==
 +
 
 +
CPC+ ASIC emulates the following chips :
 +
 
 +
* [[CRTC]] 6845
 +
* [[Gate Array]]
 +
* [[PAL16L8|PAL]] (128K RAM paging)
 +
* [[8255 PPI]]
 +
* Printer Port Data and Strobe
 +
* Floppy Motor enable [[flip-flop]], Floppy Address decoding (FDC chip Select)
 +
 
 +
==New features==
 +
 
 +
This Amstrad Plus ASIC performs many additional features that the old CPC series couldn't: the "Plus Features".
  
 
*Hardware Sprites.
 
*Hardware Sprites.
*CRTC emulation.
+
*Soft scrolling (in complement with register 12&13 of the CRTC)
*Hardware Scrollings.
+
*Screen splitting
*Maybe some interactions with the ACID chip in Cartridges.
+
*Programmable and vectorised interrupts
*DMA sound channels.
+
*DMA sound channels
*Many many more.
+
*Specific ROM switching
  
 
== Known Flaws==
 
== Known Flaws==
  
The Asmtrad Plus ASIC improve a lot of old CPC capability.
+
The Amstrad Plus ASIC improved a lot of the old CPC's capability.
 
Yet this was a bit flawed.
 
Yet this was a bit flawed.
  
*Despite removing some tasks from the CPU (Z80), the ASIC had to use specific central memory addresses, so took away this memory from the CPU...
+
*Despite removing some tasks from the CPU ([[Z80]]), ASIC registers are mapped onto memory from #4000 to #7FFF range prior to other type of memory (RAM or ROM). That means this memory range is not accessible when ASIC registers are paged.
  
Not that important for a 64Ko Ram system (464+ and GX4000) yet this is a serious limitation when dealing with Extra memory (6128+ and Extra Ram peripheral)
+
*PPI emulation is not correct as the original 8255 does not need validation. On ASIC emulation, this validation is needed so some programs written for "old CPCs" will not be able to get keyboard state.
  
*There's a DMA bug (Help needed).
+
*Z80 IM2 mode is bugged. In this mode, the Z80 I register gives the high word for vector table. ASIC gives the low word from IVR and the devices that generate interrupt (raster and DMAs channels). ASIC may generate a bad values and the raster interrupt routine is called instead of DMA0 routine if the Z80 is running particular portions of memory. See [[Plus Vectored Interrupt Bug]] for more details.
  
 +
*There is a conflict between programmable interrupts and some CRTC settings (line screen split). That will cause the RAM refresh to stop and the memory content will be quickly corrupted causing machine crash.
 +
 +
*Reducing horizontal blanking could cause another internal conflict when using DMA lists. In the worst case, this conflict can cause irreversible damage to the ASIC.
 +
 +
*Original CPC colors emulation is not correct.
  
 
==Internal Links==
 
==Internal Links==
Line 41: Line 62:
 
*[[Programming:Unlocking ASIC]]
 
*[[Programming:Unlocking ASIC]]
 
*[[B-ASIC]]
 
*[[B-ASIC]]
 +
 +
*[[CRTC]]
 +
*[[Gate Array]]
  
 
==External Links==
 
==External Links==
  
 
*[http://en.wikipedia.org/wiki/Application-specific_integrated_circuit ASIC at Wikipedia]
 
*[http://en.wikipedia.org/wiki/Application-specific_integrated_circuit ASIC at Wikipedia]
 +
General information on ASICs.
 +
 +
 +
*[http://www.cpctech.org.uk/docs/arn5new.html Asic and Plus features at Unofficial CPC ressources 1.4]
 +
*[http://www.cpctech.org.uk/docs/arnold5a.html Asic and Plus features at Unofficial CPC ressources 1.5]
 +
*[http://www.cpctech.org.uk/docs/cpcplus.html Extra Plus Hardware Information]
  
*[http://www.kjthacker.f2s.com/docs/arn5new.html Asic and Plus features at Unofficial CPC ressources 1.4]
+
[[Category:CPC Plus|*]][[Category:Electronic Component]][[Category:Programming]][[Category:Datasheet]][[Category:Graphic]]
*[http://www.kjthacker.f2s.com/docs/arnold5a.html Asic and Plus features at Unofficial CPC ressources 1.5]
+
[[Category:Stub]][[Category:CPC Internal Components]]
[[Category:CPC Plus]][[Category:Hardware]][[Category:Stub]]
+

Revision as of 09:27, 15 September 2020

Application-Specific Integrated Circuit (ASIC)

An ASIC is an especially manufactured custom chip designed to fulfill special functions.

The main reason is to perform special tasks or combine different electronic components into a single Integrated Circuit (chip). This chip is not commonly available (COTS), but has to be ordered as a genuine part, prices dictated by the seller.

After a seller goes out of business or stops supporting a product line, before IPs (Instruction set Processors) like CPLD or FPGA, they essentially became unavailable. Commodore used a plethora of ASICs in their machines (VIC, SID, PAULA,......); MSX or the IBM PC/XT/AT were the opposite in using only COTS components, making it easy for third parties to offer parts (or to re-build and repair the computers for as long as the COTS chip was still available or a backwards-compatible component exists).

Amstrad Custom chips

The Amstrad CPC used one custom chip: the video Gate Array (also called VGA – no connection with the Video PC standard).

Latter CPC cost down series included a "pre-ASIC"-called ASIC to merge the VGA and the CRTC.

The Amstrad Plus included a "second heart" simply referred as the ASIC.

CPC+ ASIC's part number is 40489

Emulated chips

CPC+ ASIC emulates the following chips :

New features

This Amstrad Plus ASIC performs many additional features that the old CPC series couldn't: the "Plus Features".

  • Hardware Sprites.
  • Soft scrolling (in complement with register 12&13 of the CRTC)
  • Screen splitting
  • Programmable and vectorised interrupts
  • DMA sound channels
  • Specific ROM switching

Known Flaws

The Amstrad Plus ASIC improved a lot of the old CPC's capability. Yet this was a bit flawed.

  • Despite removing some tasks from the CPU (Z80), ASIC registers are mapped onto memory from #4000 to #7FFF range prior to other type of memory (RAM or ROM). That means this memory range is not accessible when ASIC registers are paged.
  • PPI emulation is not correct as the original 8255 does not need validation. On ASIC emulation, this validation is needed so some programs written for "old CPCs" will not be able to get keyboard state.
  • Z80 IM2 mode is bugged. In this mode, the Z80 I register gives the high word for vector table. ASIC gives the low word from IVR and the devices that generate interrupt (raster and DMAs channels). ASIC may generate a bad values and the raster interrupt routine is called instead of DMA0 routine if the Z80 is running particular portions of memory. See Plus Vectored Interrupt Bug for more details.
  • There is a conflict between programmable interrupts and some CRTC settings (line screen split). That will cause the RAM refresh to stop and the memory content will be quickly corrupted causing machine crash.
  • Reducing horizontal blanking could cause another internal conflict when using DMA lists. In the worst case, this conflict can cause irreversible damage to the ASIC.
  • Original CPC colors emulation is not correct.

Internal Links

External Links

General information on ASICs.