
Amiga gfxcard old
mntmn/amiga2000-gfxcard
MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

Verilog clone of YM2149
Arduino is an open-source printed circuit board by jotego, from the jotego/jt49 repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board with 7 parts on 51 nets, routed with 43 tracks and 0 vias.
It is built around the 74LS04PC. Its parts include 4 resistors and 1 IC. It belongs with the AVR (ATmega, ATtiny) boards of this library.
You can show your appreciation through
YM2149 compatible Verilog core, with emphasis on FPGA implementation as part of JT12 in order to recreate the YM2203 part.
If you are using JT49 in a git project, the best way to add it to your project is:
git submodule add https://github.com/jotego/jt49.gitThe advantages of a using a git submodule are:
There are two top level files you can use:
clk_en cannot be set to 1 for correct operation. The design assumes that there will be at least one empty clock cycle between every two clk_en high clock cycles.
When used inside a JTFRAME project, you can use the yaml file provided. If you are using this repository on its own, there is a qip for Intel Quartus available.
It is recommended to use this repository as a git submodule in your project.
| Name | Direction | Width | Purpose |
|---|---|---|---|
| rst_n | input | active-low asynchronous reset signal | |
| clk | input | clock | |
| clk_en | input | clock enable. It cannot be a permanent 1 | |
| addr | input | 4 | selects the register to access to |
| cs_n | input | chip-select, active low | |
| wr_n | input | active-low write signal | |
| din | input | 8 | data to write to registers |
| sel | input | input clock is further divided by 2 when low | |
| dout | output | 8 | data read from registers. Updated when cs_n is low |
| sound | output | 10 | Unsigned combined output of the three channels |
| A | output | 8 | Unsigned output of channel A |
| B | output | 8 | Unsigned output of channel B |
| C | output | 8 | Unsigned output of channel C |
The module is not designed to be used at full clk speed. The clock enable input signal should divide the clock at least by two. This is needed because the volume LUT is shared for all three channels and the pipeline does not include wait states for the LUT as wait states happen naturally when clk_en is used.
The ports of jt49_bus replace the CPU interface with that of the original AY-3-8910.
| Name | Direction | Width | Purpose |
|---|---|---|---|
| rst_n | input | active-low asynchronous reset signal | |
| clk | input | clock | |
| clk_en | input | clock enable. It cannot be a permanent 1 | |
| bdir | input | bdir pin of AY-3-8910 | |
| bc1 | input | bc1 pin of AY-3-8910 | |
| din | input | 8 | data to write to registers |
| sel | input | input clock is further divided by 2 when low | |
| dout | output | 8 | data read from registers. Updated when cs_n is low |
| sound | output | 10 | Unsigned combined output of the three channels |
| A | output | 8 | Unsigned output of channel A |
| B | output | 8 | Unsigned output of channel B |
| C | output | 8 | Unsigned output of channel C |
| IOA_in | input | 8 | I/O port A, input side |
| IOA_in | output | 8 | I/O port A, output side |
| IOB_in | input | 8 | I/O port B, input side |
| IOB_in | output | 8 | I/O port B, output side |
A simulation test bench of jt49 vs the AY-3-8910 model (available in the doc folder via a git submodule) is available in folder ver/comp. The simulation uses a simple text file to enter arbitrary commands (test_cmd). The command file is converted to hexadecimal by parser.awk and used in simulation. The following parameters were tested:
| Item | Compliance | Remarks |
|---|---|---|
| channel period | Yes | Tested: 0, 1 and FFFF values |
| noise period | Yes | Tested: 0, 7 and 1F values |
| envelope shape | Yes | Tested all 16 shapes |
| envelope period | Yes | Tested 0 and FFF values |
The YM2149 was used to measure the output circuitry. According to AY-3-8910 schematics, there are 16 NMOS devices for each channel. Depending on the amplitude settings, only one of them will be active. These numbers render values that agree with the datasheet and measurements:
Each output level is the combination of one MOS being on and the rest off, so they combine into a single impedance, which then forms a resistor divider with the load.
The output MOS will hold its impedance even if an extra 1V is added at the load resistor (reducing the MOS headroom)
Non linear effects depend on the way the chip is connected and its model. See the connection list.
Other sound chips from the same author
| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 1k | Resistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P15.24mm_Horizontal | R1, R2, R3 |
| 1 | 47k | Resistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P15.24mm_Horizontal | R4 |
| 1 | 74LS04 | Package_DIP:DIP-14_W10.16mm | U1 |
| 1 | Arduino_UNO_R2 | Module:Arduino_UNO_R2 | A1 |
| 1 | YM2203 | Package_DIP:DIP-40_W15.24mm | YM1 |
7 parts, built around the 74LS04PC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the jotego/jt49 repository on GitHub, at the commit this page was made from: the board is lab/kicad/arduino.kicad_pcb and its schematic lab/kicad/arduino.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

mntmn/amiga2000-gfxcard
MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

Redherring32/OpenTendo
An Open-Source HardWare (OSHW) recreation of the original 1985 front-loading NES Motherboard

jotego/jtcores
FPGA cores compatible with multiple arcade game machines and KiCAD schematics of arcade games. Working on MiSTer FPGA/Analogue Pocket

jes/scamp-cpu
A homebrew 16-bit CPU with a homebrew Unix-like-ish operating system.


Nakazoto/CenturionComputer
This is just a simple backup of all the files related to the Centurion that I have stored on my HD. The Wiki itself has far more in-depth information about the Centurion and it's individual cards.


The-Invent0r/8-bit-Computer-PCB
These are the KiCAD files for my 8-Bit Computer.