Home Contact Microcontroller Serial PROM Programmer Services
PB8051 Microcontroller
Version 1.0

Features

  • 8031 software compatible microcontroller
    (includes serial & timers)
  • Low cost - $495, Support available
  • Small size ~300 Slices
  • Use existing 8051 object code
  • VHDL or Verilog support
  • Simulation netlist provided
  • Reference designs provided
  • Custom 8051 configurations
    available
  • Support in all Xilinx FPGA’s
    Spartan II and above
  • Available under terms of the
    SignOnce IP License

Applications

  • Small FPGA area embedded microcontroller
  • Unaltered use of legacy 8051 object code
Data Sheet
available in Word

 

Example Implementation Statistics

Family
Example Device
Fmax (MHz)
Slices*
IOB**
GCLK
BRAM
TBUF***
Design Tools
Spartan-II
XC2S30-6
 67
 311
 96
1
6
 143 
ISE 8.2i
Spartan-II
XC2S30-6
72
368
 96
1
6
0
ISE 8.2i
Spartan-IIE
XC2S50E-7
70
310
96
1
6
143
ISE 8.2i
Spartan-IIE
XC2S50E-7
73
356
96
1
6
0
ISE 8.2i
Virtex-II
XC2V40-6
113 
313 
96 
1
2
143 
ISE 8.2i
Virtex-II
XC2V80-6
119 
359 
96 
1
2
0
ISE 8.2i
Spartan-III
XC3S200-4
72 
359 
96 
1
N/A
ISE 8.2i

* Depends on Mapping properties and rest of design.
** Assuming all core I/Os and clocks are routed off-chip.
***Implemented in PB8051-x-tbuf version of core

General Description
The PB8051 is a 8031 implementation of the popular 8051 Microcontroller Family. Iincludes the two timers and serial port found in the 8031. PB8051 is fully software compatible with a 8031, able to execute object code generated by 8051 design tools. Program code may be executed from an FPGA internal Block RAM(ROM) or external (to FPGA) EPROM. The core is not clock cycle execution compatible with the native microcontroller.

Functional Description
The PB8051 is emulated using the Xilinx PicoBaze softcore microcontroller. This architecture optimizes for small core size, only 28% the size of competing 8051 cores. The performance speed is similar to that of 8051when operated at 4X the clock rate. In other words, a PB8051 operated at 48 MHz will perform similar to an legacy 8051 running at 12 MHz. The functional block diagram for the PB8051 is illustrated in figure 1. The heart of the core is the PicoBlaze softcore processor and it emulation program stored in a 1K x 16 block ROM. The PicoBlaze allows for a 256 byte peripheral bus that provides access to the serial port, timers, emulation peripherals, and block RAM. Access to this bus remains internal to the PB8051.

AllianceCORE™ Facts
Provided with Core
Documentation
User/Design guide
Design File Formats
EDIF netlist
Constraints Files
PB8051.ucf
Verification
Test bench & 8051 test code
Instantiation templates
VHDL, Verilog
Reference designs & application notes
Design examples witn external bus interface & test software
Additional Items
Custom versions of 8051 core
Simulation Tool Used
ModelSim and Aldec Active HDL
Support
Support provided by Roman-Jones, Inc.

Two PB8051 Implementation Choices
The emulation peripheral block provides special emulation acceleration hardware and 8031 port emulation. A significant portion of this block is the needed PicoBlaze peripherial address decode function for 8031 SFR’s and other emulation peripherals. All undecoded addresses show up as RAM access. Two versions of the PB8051 are provided, a TBUF and MUXCY. The tbuf version employs the use of an internal tri-state data bus while the muxcy performs address decoding using the embedded carry chain. The tbuf version employs fewer slices while the muxcy version is Spartan III friendly and allows a faster clock speed.
Instruction Emulation
Execution of 8031 program code is not clock cycle compatible with the native 8031 since each instruction is emulated in PicoBlaze software. Some instruction emulation is more efficient than others. Instruction execution times in clock cycles is provided.

Memory & Peripheral Interface
To accomade slower off FPGA memory and peripherals output signals INSTR_FETCH and EXT_BUS_START indicate start of 8031 bus cycles. These signals can interface to a bus controller to extend access time via the input signal EXT_BUS_HOLD. A reference design is provided.

Timer & Serial Clocking
Separate clock enable signals are provided for 8031 timer prescale and serial mode 0 and mode 2 prescale. These provide user flexibility in providing counting and baud rates. These clock prescale enables are periodic, one clock wide, and syncornous to the system CLK input.

8051 Reset
While the RST input resets the entire core, it is not necessary and may be tied to gnd. RST_8051 is an emulated reset that performs the same function as the 8031 reset input.

Core Modifications
The design of the PB8051 is organized as an 8051 core with timers and serial port. While the PB8051 is not user configurable, Roman-Jones, Inc. is available to custom build a 8051 derivative to meet your needs.

Core I/O Signals
The core signal I/O have not been fixed to specific device pins to provide flexibility for interfacing with user logic. Any signals may be used internal or external to the FPGA. Descriptions of all signal I/O are provided below.

Verification Methods
A reference design including a VHDL/Verilog Testbench and 8051 hex and assembler source code are provided. The testbench simulates virtual execution of 8051 assembled code from an intel hex file (assmebler tool output). This flexibility allows users to quickly integrate their FPGA RTL with the PB8051 core and use their own 8051 code.

Reference Design
The PB8051 includes a reference top level design that instatiantes the PB8051 core. This reference design assumes a 44.236 MHz (chosen for serial baud rate) clock input. The design correctly sets the timer and serial prescales and interfaces with an external 27C512 EPROM for code storage. An offchip external 8031 bus is provided along with ports P1 and P3. The design illustrates proper use to extend bus cycles for the 27C512 and slow peripherials.

Recommended Design Experience
The PB8051 core is designed for ease of use. Designer should be experienced in instantiating cores. Maybe an aggressive first Xilinx design experience, but very simple for someone with Xilinx tool experienced. Users should be familiar with 8051 micorcoltrollers, skilled with assembler and/or “C” language, and related software development tools.

Product Support
The PB8051 core is priced low at $495 including the two versions of the core, reference deisgn, simulation testbench, and documentation. Support is provided on an hourly basis additional cost via telephone, email, and onsite (if requested).

Ordering Information
This AllianceCORE product is available online via credit card from Roman-Jones, Inc. under the terms of the SignOnce IP License. To learn about the SignOnce IP License program, contact Roman-Jones, Inc. or visit www.xilinx.com/ipcenter/signonce.htm or write to commonlicense@xilinx.com. When you order the PB8051, a SignOnce IP License will be emailed to you for signing. Once the signed agreement has been recieved, the PB8051 core application package will be emailed to you.

 

Core I/O Signals

Signal Signal
Direction
Description
CLK input Clock input
RST input Core reset
RST_8051 input 8051 reset emulation
TIMER_PRE input Clock enable for timers, see text
SERIAL0_PRE12 input Clock enable for serial mode 0, see text
SERIAL2_PRE32 input Clock enable for serial mode 2, see text
WR output External write enable, high for one clock
RD output External read enable, high for one clock
PSEN output Instruction read enable, high for one clock
EXT_BUS_HOLD input Hold line for access to slow memory or peripherals
INSTR_FETCH output Indicates start fo instruction fetch cycle, high for one clock
EXT_BUS_START output Indicates start fo external bus cycle, high for one clock
P1_IN[7:0] input Port 1 data in
P1_OUT[7:0] output Port 1 data out
P3_IN[5:0] input Port 3 data in
P3_OUT[5:0] output Port 3 data out
EXT_DATA_IN[7:0] input External bus data in (port 0)
EXT_DATA_OUT[7:0] output External bus data out (port 0)
EXT_ADDRESS[15:0] output External bus address out (ports 0 and 2)
ROM_DATA[7:0] input Code space data in (port 0)
ROM_ADDRESS[15:0] output Code space address out (ports 0 and 2)