Written by Holguer A. Becerra
 
 
 
 
 
 
Based on Gregory Estrade's Work.
 
I have ported the PC Engine System on the DE0-NANO back in 2014, why don't you have a look?, Maybe port it on another FPGA?
 
Here you go the DE0-NANO (Download:Sources) Ready to be Synthesized. 
 
Open the Project, Analyze the project, make your changes, Compile and then program the .sof.
 
I made some changes on the original project so that you know, which are:
  • Booting the PCengine from EPCS memory instead of using the flash memory of DE1 or DE2-115.
    //FLASH
    wire [23:0]FL_ADDR;
    wire [7:0]FL_DQ;
    wire data_rdy;
    wire clk_epcs;
    wire boot_oe_n;
    
    //EPCS reader
    epcs_reader flash
    (
    	.clk(clk_epcs) ,	// input  clk_sig
    	.data_out_valid(data_rdy),
    	.start(boot_oe_n) ,	// input  read_clk_sig
    	.Serial(EPCS_ASDO) ,	// output  Serial_sig
    	.address({2'b00,FL_ADDR[21:0]}) ,	// input [23:0] address_sig
    	.serial_byte(EPCS_DATA0) ,	// input  serial_byte_sig
    	.data_out(FL_DQ) ,	// output [7:0] flash_byte_sig
    	.SPI_clock(EPCS_DCLK) ,	// output  SPI_clock_sig
    	.FSM_ENABLE(1'b1) ,	// input  FSM_ENABLE_sig
    	.CS(EPCS_NCSO) 	// output  CS_sig
    );
    ​
  • Audio works with Delta Sigma instead of WM8731 codec, ideal for the DE0-NANO.
    //AUDIO PINS
    assign GPIO[27]=AUDIO_L;
    assign GPIO[29]=AUDIO_R;

  • The VGA Connection is based on the following Schematic
    // VGA Pins
    assign GPIO[0]=vga_R[3];
    assign GPIO[1]=vga_R[2];
    assign GPIO[3]=vga_R[1];
    assign GPIO[5]=vga_R[0];
    assign GPIO[7]=vga_G[3];
    assign GPIO[9]=vga_G[2];
    assign GPIO[11]=vga_G[1];
    assign GPIO[13]=vga_G[0];
    assign GPIO[15]=vga_B[3];
    assign GPIO[17]=vga_B[2];
    assign GPIO[19]=vga_B[1];
    assign GPIO[21]=vga_B[0];
    assign GPIO[23]=V_SYNC;
    assign GPIO[25]=H_SYNC;​
 
  • In addition, the GPIO of the DE0-NANO
  • For now the system has no controller added, but you could simply add one by following any of the given manuals on:
     
     
    For that you should modify the following lines by adding any of the controllers and connecting them to the GPIOs.
    // CONTROLLER
    wire UP_CONTROLLER=1'b0;
    wire DOWN_CONTROLLER=1'b0;
    wire LEFT_CONTROLLER=1'b0;
    wire RIGHT_CONTROLLER=1'b0;
    wire SELECT_CONTROLLER=1'b1;
    wire RUN_CONTROLLER=1'b1;
    wire BUTTON1_CONTROLLER=1'b1;
    wire BUTTON2_CONTROLLER=1'b1;
    
     
     

In order to Load the PC Engine ROMS on the EPCS you should follow the following steps:

  1. Connect the DE0-NANO using your USB to power it on.
  2. Run the "DE0_NANO_Control_Panel.exe" program.
  3. Click on "Open", select "Open USB Port 0".
  4. Select the "EPCS" tab, and click on "Chip Erase".
  5. Check "File Length", then click on "Write a File to EPCS".
  6. Choose a PC-Engine ROM(JackieChan.pce). You can fin other ROMS here https://romhustler.org/rom/tg16/ 
  7. Once the write operation is done, close the "DE0-NANO Control Panel".
  • Open Control panel, once opened, click on Memory, then on Memory type list select "EPCS", select the check "File Length", on the address of section Sequential Write  type "07d000" and then click on the button write file to memory.
  • Select the file  JackieChan.pce, and OK.
  • Then wait until the EPCS is written.


    Note: if it does not let you write, first click on Erase "Chip Erase (70 sec)"
 
The switches(SW[3:1]) depend on the type of pceeng image.
- SW1 : header present or not (usually, ROMs do have this header, so set it to "1").
- SW2 : set it to "1" if your ROM is 768 Kb.
- SW3 : set it to "1" if you're dealing with a TGFX ROM instead of a PCE ROM.
  NEC created a very basic region-lockout by swapping data bits on the cartridge
  and cartridge connector on US (TGFX-16) consoles.
  So, for the (very few) ROMs that have been dumped off a US cartridge, set it to "1".  
  If unsure, set it to "0".
 
//CONTROL PCEngine Signals
wire RESET = ~KEY[0];
wire ROM_HEADER =SW[1];
wire ROM_SPLIT =SW[2];
wire BITFLIP =SW[3];
 
  

Demostration videos:

 
 
 
 

  Aditionally you can see the PC engine running on a PSP Screen.

 
 

 

 
For more info you can go to:LCD DRIVER(PSP SCREEN) with and without Nios II

 

Challenges to be done, that you could do on your own:

  1. Why don't you try to port it on the DE0-NANO-SOC, and use the ARM9 to reprogram the logic of the FPGA, and to load the ROMS?
  2. Do the same using Nios II, or RISC-V.
  3. Port it on the Sipeed TANG PriMER FPGA Dev. Board

 

 

Powered by OrdaSoft!
  Written By Peter Gomez Este contenido esta orientado a los programadores que tienen problema con la conectividad("SGC PmmC") de su pantalla uOled-128-g1/g2…
Written by Sherneyko Plata Rangel   Pynq-z2: Hello world   In this tutorial we will implement a simple test of the inputs/outputs available on…
Objetivos Requerimientos Procedimiento Descripción de Hardware. Qsys. Nios II. UCOS II. Secuencia de Sprite. Sintesis de Audio. Descargas Glosario Otros Resultados. Ejemplo de Sprites.     Objetivos: Diseñar una plantilla general para el diseño de…
Written by Holguer A. Becerra           Requerimientos: DE0-NANO USB-UART(solo para parte 3) Python 2.7 ó superior.   Objetivos: Dar una introducción a los conceptos de Multitasking, Scheduling y…
Written by Holguer A. Becerra             Based on Gregory Estrade's Work.   I have ported the PC Engine System on the DE0-NANO back in 2014, why…
      Arduino tools are generally nice tools for quick prototyping and improvized projects, and the Seeeduino Xiao…
Written by: Holguer A Becerra         En esta practica vamos a construir nuestro primer juego retro  usando un sincronizador de Video VGA…
Written by: Andrea Paola Pabón Ortega & Daniel Enrique Mejia Rueda Revision by: Ing Holguer A. Becerra   DESCRIPCIÓN DEL PROYECTO: El  RTAWD DE0NANO…
  Written by Holguer Andres   Requires: DE0-NANO. 4.3 Inch 480x272 Screen.( WQVGA ) ?️       Parte HW: Descargue la siguiente plantilla( DE0_NANO_TFT_PSP.zip) y descomprimala en una ruta sin espacios y…
Escrito por Guillermo Acevedo   Diseño   En esta practica desarrollaremos un filtro FIR en hardware, para este caso en especifico, realizaremos un filtro…
 Written By Juan David Delgado   FILTRO FIR (FILTRO DE RESPUESTA FINITA AL IMPULSO)     Son conocidos como filtros digitales no recursivos debido a…
XISCKER: Reduced and Complex Instruction Set Computing Key Educational Resources A Configurable Platform for the Emulation of Different Computer Architectures An introduction to Computer Architectures through digital design description for FPGA devices   Computer Architecture embraces all three…
Escrito por: Alix Angarita   En el manual a continuación se explica un método de debug adicional que es muy interesante debido a…
By: Fabio Hernández   INTRODUCCIÓN:   El presente documento pretende mostrar la manera de generar software para una imagen de Linux implementada en la…
Summary Written by Fabio Hernandez   HARD PROCESSOR SYSTEM (HPS)     ------------------------------------------------------------------------------------------------------------------------------------------------   Introducción   Tenemos  2 nuclos de procesamiento ARM cortex-A9, cada uno son su propio cache  se…
Escrito por Jesus Lopez         INTRODUCCIÓN   El acceso directo a memoria (DMA, del inglés direct memory access) permite a cierto tipo de componentes de una computadora acceder a…
    Written by  Sebastian Baquero       Objetivos  Introducción a los conceptos de Multitasking, Scheduling y Context Switching.  Ampliación de los conceptos a cerca de el…