
VideoULA Programmer
kgl2001/VideoULA_V03
VideoULA replacement for BBC Micro - 44 pin ATF1504AS version

VideoULA replacement for BBC Micro - 44 pin ATF1504AS version
VideoULA is an open-source printed circuit board by kgl2001, from the kgl2001/VideoULA_V03 repository on GitHub. It is a 2-layer board of 17.8 × 35.6 mm with 19 parts on 48 nets, routed with 381 tracks and 44 vias.
It is built around the 74LVC1G17Z and IS62C256AL-45TLI. Its parts include 8 capacitors, 4 ICs, 2 resistors, 1 connector and 1 crystal. It belongs with the FPGA and CPLD boards of this library.
This repository contains the hardware design and firmware for the VideoULA V03, a drop-in replacement for the VC2069 Video ULA (IC6) in the Acorn BBC Micro Model B and Master 128.
The original BBC Micro Video ULA (IC6) is a custom ASIC that is no longer manufactured. Failed or missing ULAs result in a non-functional machine. This project provides a modern replacement using a CPLD and a small external SRAM for palette storage.
There are three hardware versions of this replacement, each in a separate repository:
| Version | CPLD | Macrocells | Tool | Repository |
|---|---|---|---|---|
| V01 | Xilinx XC9572XL-10-VQ44 | 72 | ISE 14.7 | VideoULA_V01 |
| V02 | Xilinx XC9572XL-10-VQ64 | 72 | ISE 14.7 | VideoULA_V02 |
| V03 | Atmel ATF1504AS-10AU44 | 64 | Quartus 13.0 SP1 | This repo |
All three versions share the same 28-pin DIP footprint as the original ULA and are pin-compatible with the BBC Micro motherboard.
| Revision | Status | Changes |
|---|---|---|
| Rev01 | PCB designed, not yet built or tested | Initial release |
The firmware is written in Verilog and built using Altera Quartus 13.0 SP1. The same Verilog source file (src/VideoULA.v) is shared between V02 and V03.
The Quartus project targets the EPM7064STC44-10 device — the Altera MAX7000S equivalent of the ATF1504AS, which Quartus supports natively. The .pof output is converted to a .jed file using the pof2jed utility for programming the ATF1504AS.
Two firmware builds are required — one per operating mode. Both CLK_16M and CLK_48M are wired to dedicated GCK pins, so no hardware changes are needed to switch modes — simply reprogram the CPLD with the appropriate .jed file.
`define CLK_48MHZ in VideoULA.v`define CLK_16MHZ in VideoULA.vVideoULA.qpfdefine in src/VideoULA.vStart Compilation (Ctrl+L).pof file to .jed using pof2jedUnlike V01 and V02, the V03 board does not have an onboard JTAG connector. This is because the ATF1504AS shares its JTAG pins with I/O pins used by the BBC Micro bus interface — they cannot be used for JTAG programming while the board is installed in the computer.
To program the V03 board, a dedicated programmer board is required. This programmer:
The KiCAD design files for the programmer board and FreeCAD design files for a suitable enclosure are included in this repository.
Programming procedure:
.jed file using ATMISP or compatible softwareThe following warnings are suppressed in the .qsf and are expected/harmless:
| Message | Reason |
|---|---|
| 15705 | Unused clock port pin assignment (expected when only one clock mode is built) |
| 20028 | Parallel compilation not licensed — informational only |
| 199027 | Output file format — .pof is generated correctly |
| 332174, 332049 | Timing analysis informational messages |
| 335095 | TimeQuest latch analysis — no latches in design |
The external SRAM stores the 16-entry colour palette (4 bits per entry):
| SRAM Pin | Connection |
|---|---|
| A0-A3 | CPLD SRAM_ADDR[0:3] |
| A4-A14 | GND (tie low) |
| D0-D3 | CPLD SRAM_DATA[0:3] (bidirectional) |
| D4-D7 | Leave unconnected |
| /WE | CPLD SRAM_nWE |
| /OE | GND (always output enabled) |
| /CS | GND (always selected) |
The PCB has been designed using KiCAD V10 as a 2-layer board. It can easily be changed to a 4-layer board with GND/Power planes on the inner layers if signal integrity is a concern.
The board design includes a 5×5mm silkscreen box on the underside of the PCB. This is used by JLCPCB to position a QR code serial number. When ordering from JLCPCB:
If not using JLCPCB, the chosen fabricator will likely print the 5×5mm box as a plain white square on the PCB. To avoid this, remove the silkscreen box from the PCB design and regenerate the Gerber files before submitting.
A combined CPL (Component Placement List) and BOM (Bill of Materials) Excel file is included in the Gerbers folder. This can be used directly with the JLCPCB PCBA (PCB Assembly) service.
Note that the JLCPCB Economy PCBA process only assembles components on one side of the PCB. Select the top side for assembly — this leaves only the SRAM and its associated decoupling capacitor to be hand soldered to the underside of the board.
Designed for BBC Micro Model B and Master 128. The 5V CPLD outputs are directly compatible with the higher logic 1 voltage required by some Master 128 custom ICs.
Hardware: Creative Commons BY-SA 4.0
Firmware: MIT Licence
| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 100n | Capacitor_SMD:C_0603_1608Metric | C1.1, C1.2, C1.3, C1.4, C2, C3, C4 |
| 1 | 10K | Resistor_SMD:R_Array_Convex_4x0603 | RN1 |
| 1 | 10K | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 10u | Capacitor_SMD:C_0603_1608Metric | C5 |
| 1 | 47R | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 48MHz | VideoULA:Oscillator_SMD_Yajingxin_TFOM48M4RHKCNT2T-4Pin_3.2x2.5mm | X1 |
| 1 | 74LVC1G17 | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | ATF1504AS-xAx44 | Package_QFP:TQFP-44_10x10mm_P0.8mm | U1 |
| 1 | Conn_01x01 | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Horizontal | J2 |
| 1 | IS62C256AL-45TLI | VideoULA:TSOP-I-28_11.8x8mm_P0.55mm_SRAM | U2 |
| 1 | Skidog | VideoULA:skidog_inv | G1 |
| 1 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1 |
| 1 | VC2069 Socket | Package_DIP:DIP-28_W15.24mm | IC6 |

kgl2001/VideoULA_V03
VideoULA replacement for BBC Micro - 44 pin ATF1504AS version


nkrackow/SingularitySurfer-FPGA-Lock-In-Amplifier
Repository for the development of an FPGA based DSP Lock-In Amplifier

Bouni/BSH-Board
A board that interfaces the DBUS of several home appliances and brings them into Home-Assitant via ESPHome

jbilander/SDBox-v2
SDBox-v2 for Amiga, compatible with the new updated card-detect firmware


ergomechstore/rp2040-bento
The RP2040-bento is a breakout board for the RP2040 MCU.


It measures 17.8 × 35.6 mm and has 2 copper layers, 1.6 mm thick.
19 parts, built around the 74LVC1G17Z and IS62C256AL-45TLI. 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 kgl2001/VideoULA_V03 repository on GitHub, at the commit this page was made from: the board is KiCAD Files/Rev01/VideoULA.kicad_pcb and its schematic KiCAD Files/Rev01 - Programmer/VideoULA_Programmer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask kgl2001 before reusing the design.