deniser icon indicating copy to clipboard operation
deniser copied to clipboard

Amiga Denise chip replacement

= Deniser - Amiga Denise chip replacement

image::picture/fancy.png[fancy deniser,512]

== Introduction

Deniser is a drop-in replacement for the Amiga computer Denise chip.

This repository contains board design files, FPGA logic source code and synthesis scripts. The idea is to make the material available for anyone to build and program the board for use as a Denise chip replacement.

=== Background

Denise is the Amiga custom chip responsible for most of the graphic related tasks such as bitplane display, palette registers, smooth scrolling, hardware sprites, flexible screen object priority, collision detection and more. In the Amiga, Denise operates in concert with the Agnus (DMA, blitter, copper) and Paula (I/O, interrupt controller). The chipset was released in 1985.

== Board

image::picture/callout.png[Deniser board, 512]

.Main board components [cols="1,3,1,3"] |=== | Item | Description | Item | Description

| 1 | JTAG header | 4 | MachXO3D FPGA | 2 | User LED | 7, 9 | 48-pin DIP connector | 3, 5, 6 | Bus transceiver 5 V <--> 3.3 V | 8 | Voltage regulator |===

The Deniser board has 48-pin DIP form factor ready to be mounted in an IC socket. Schematic, BOM and more information can be found in the dedicated link:doc/board.pdf[Deniser board document].

=== Installation

Installation is as easy as removing the original Denise IC from its socket and put the Deniser board in its place.

image::picture/install0.png[installed in A500]

The jumper wires in the picture are not required for normal operation and can be disconnected after the FPGA on-chip configuration flash has been programmed.

=== EDA tool

Schematic and board layout is designed using https://horizon-eda.org[Horizon EDA]. Project files are located in the link:pcb[] directory from which Gerber files and bill of materials (BOM) can be generated.

[cols="^.^a,^.^a"] |=== | image::picture/horizon-eda-schematic.png[Horizon EDA schematic editor, 483] | image::picture/horizon-eda-board.png[Horizon EDA board editor, 483] image::picture/horizon-eda-3d.png[Horizon EDA 3D view, 483] |===

=== Manufacturing

The PCB layout has been tailored for the JLCPCB four-layer process named JLC2313. The Deniser board can be assembled by hand. Reflow soldering is required for the QFN FPGA and the smallest BOM items are 0402 SMD capacitors.

== Logic design

The digital logic is written in VHDL. Source code can be found in the link:hdl[] directory.

Lattice MachXO3D is the target FPGA device. The vendor tool Lattice Diamond 3.12 comes with the third party tool Synplify for synthesis and ModelSim for simulation.

=== FPGA implementation

To run the synthesis and place and route flow with Lattice Diamond:

cd dia make export

The above command generates an FPGA bitstream. Configure the FPGA volatile RAM with make conf, or program the FPGA non-volatile flash with make prog. Information on how to connect the JTAG interface is available in the link:doc/board.pdf[Deniser board documentation].

make slaunch starts an interactive Synplify synthesis session. make launch brings up Lattice Diamond interactively for working with the constraints, floor plan, etc.

=== Simulation

A bus functional model and example test cases are available to exercise and explore the Deniser logic. See the directories link:ghdl[] link:vsim[] and link:vsim-hw[] for running RTL simulation and gate level simulation.

== License

The Deniser board is licensed under the GNU General Public License version 2 or any later version. This applies to the design files (schematic and board layout) in the link:pcb[] directory.

The logic design is licensed under the GNU General Public License version 2 or any later version. This applies to the VHDL files in the link:hdl[] directory.

== Status

  • Known to work:

    • Schematic, PCB layout and BOM
    • Use in Amiga A500 with ECS Agnus (PAL)
    • Workbench, Deluxe Paint, demos
    • Extra Half Brite (EHB) mode
    • OCS features
  • Things that probably work:

    • Use in Amiga A1000, A2000 and A3000
    • Use with OCS Agnus
    • Collision detection
    • Hold-and-modify (HAM) mode
    • Genlock
  • Known limitations:

    • Some sprites appear above and below the display window.
    • No NTSC

== Resources

The Deniser has been developed based on information in the following sources.

  • http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node0000.html[Amiga Hardware Reference Manual]
  • http://www.blitter.com/~nebulous/otherworld/Amiga/AmigaByte-Nov1985(JMiner).pdf[Interview with Jay Miner, Byte Magazine, November 1985]
  • http://amiga.serveftp.net/Datasheets/252126-01_Denise_specification.pdf[Denise specification]