Documentation
 Datasheet 
Application Notes FPGA Kit available - PCB board Development Tools Products Summary
DFPIC1655X

8-bit RISC Microcontroller



The DFPIC1655X is a low-cost, high performance, 8-bit, fully static soft IP Core, dedicated for operation with fast memory. The core has been designed with a special concern about low power consumption assuring the best power consumption and performance combination.
The DFPIC1655X is a software compatible with the industry standard PIC 16XXX Microcontrollers.... It employs a modified RISC architecture (2 times faster than original implementation).
The DFPIC1655X have enhanced core features, configurable hardware stack, and multiple internal and external interrupt sources. The separate instruction and data buses allow a 14 bit wide instruction word with the separate 8-bit wide data. The DFPIC1655X typically achieve a 2:1 code compression and a 8:1 speed improvement over other 8-bit microcontrollers in their class.
The power-down mode SLEEP allow user to significanlty reduce power consumption, and "wake up" the controller through several external and internal interrupts and resets. An integrated Watchdog Timer with it's own dedicated clock signal provides protection against software lock-up.
The DFPIC1655X Microcontroller fits perfectly in applications ranging from high-speed automotive and appliance motor control to low-power remote transmitters/receivers, pointing devices and telecom processors. Built-in power save mode and small used area in programmable devices make this IP core perfect for applications with space and power consumption limitations.
DFPIC1655X is delivered with fully automated testbench, complete set of tests and hardware on-chip debugger DoCDTM allowing easy package validation at each stage of SoC design flow.


Each of the DCD's PIC Core has built in support for DCD Hardware Debug System called DoCDTM. It is a real-time hardware debugger which provides debugging capability of a whole System on Chip (SoC).
In contrast to other on-chip debuggers the DoCDTM provides a non-intrusive debugging of running application. It can halt, run, step into or skip an instruction, read/write any contents of microcontroller including all registers, SFRs including user defined peripherals, data and program memories. More details about DCD on Chip Debugger...




CPU Features

Peripherals

  • Software compatible with industry standard PIC16C55X
  • Harvard RISC architecture
    • 2 times faster compared to original implementation
  • 35 instructions
  • 14 bit wide instruction word
  • Up to 32 kB of internal Data Memory
  • Up to 64K bytes of Program Memory
  • Configurable hardware stack
  • Power saving SLEEP mode
  • Fully synthesizable
  • Static synchronous design
  • Positive edge clocking and no internal tri-states
  • Scan test ready
  • Technology independent HDL Source Code

Configuration

The following parameters of the DFPIC1655X core can be easy adjusted to requirements of dedicated application and technology. Configuration of the core can be prepared by effortless changing appropriate constants in package file. There is no need to change any parts of the code.

Data Memory size
  • up to 32kB
  • default 512 Bytes
Program Memory size
  • up to 64k Words
  • default 8k
Number of hardware stack levels
  • 1-16
  • default 4
SLEEP mode
  • used
  • unused
WDT Timer
  • used/ width
  • unused
Timer 0
  • used
  • unused
Interrupt controller
  • used
  • unused
Ports A,B
  • used
  • unused
DoCDTM debug unit
  • used
  • unused

Besides mentioned above parameters all available peripherals can be excluded from the core by changing appropriate constants in package file.
  • DoCDTMDebugger
    • Processor execution control
    • Read-write all processor contents
    • Hardware execution breakpoints
    • Three wire communication interface
  • Two 8 bit I/O ports
    • Two 8-bit corresponding TRIS registers
    • Interrupt feature on PORTB(7:4) change
  • Timer 0
    • 8-bit timer/counter
    • Readable and Writable
    • 8-bit software programmable prescaler
    • Internal or external clock select
    • Interrupt generation on timer overflow
    • Edge select for external clock
  • Watchdog Timer
    • Configurable Time out period
    • 7-bit software programmable prescaler
    • Dedicated independent Watchdog Clock input
  • Interrupt Controller
    • Three individually maskable Interrupt sources
    • External interrupt INT
    • Timer Overflow interrupt
    • Port B[7:4] change interrupt


Symbol

 clk
 por
 mclr
 prgdata (13:0)
sleep 
prgaddr (15:0) 
 portai (7:0)
 portbi (7:0)
portao (7:0) 
portbo (7:0) 
trisa (7:0) 
trisb (7:0) 
 int
 ramdatai (7:0)
ramdatao (7:0) 
ramaddr (8:0) 
ramwe 
ramoe 
 t0cki
 clkwdt
 docddatai
docddatao 
docdclk 
prgdatao (13:0) 
prgwe 

Pins description

PinTypeDescription
clkinputGlobal clock
porinputGlobal reset Power On Reset
mclrinputUser reset
prgdata (13:0)inputData bus from program memory
portai (7:0)inputPort A input
portbi (7:0)inputPort B input
intinputExternal interrupt
ramdatai (7:0)inputData bus from int. data memory
t0ckiinputTimer 0 input
clkwdtinputWatchdog clock
docddataiinputDoCDTM data input
sleepoutputSleep signal
prgaddr (15:0)outputProgram memory address bus
portao (7:0)outputPort A output
portbo (7:0)outputPort B output
trisa (7:0)outputData direction pins for Port A
trisb (7:0)outputData direction pins for Port B
ramdatao (7:0)outputData bus for internal data memory
ramaddr (8:0)outputRAM address bus
ramweoutputData memory write
ramoeoutputData memory output enable
docddataooutputDoCDTM data output
docdclkoutputDoCDTM clock line
prgdatao (13:0)outputProgram memory data bus output
prgweoutputProgram memory write enable

Block diagram

Control Unit
mclr
sleep
prgdata (13:0)
prgaddr (15:0)
Hardware Stack
I/O Ports
portai (7:0)
portbi (7:0)
portao (7:0)
portbo (7:0)
trisa (7:0)
trisb (7:0)
Interrupt Controller
int
RAM Controller
ramdatai (7:0)
ramdatao (7:0)
ramaddr (8:0)
ramwe
ramoe
Timer 0
t0cki
Watchdog Timer
clkwdt
ALU
DoCDTM
docddatai
docddatao
docdclk
prgdatao (13:0)
prgwe
clk
por

Units

Control Unit

It performs the core synchronization and data flow control. This module manages execution of all instructions. Performs decode and control functions for all other blocks. It contains program counter (PC) and hardware stack.

Hardware Stack

It’s a configurable hardware stack. The stack space is not a part of either program or data space and the stack pointer is not readable or writable. The PC is pushed onto the stack when CALL instruction is executed or an interrupt causes a branch. The stack is popped while RETURN, RETFIE and RETLW instruction execution. The stack operates as a circular buffer. This means that after the stack has been pushed eight times, the ninth push overwrites the value that was stored from the first push..

I/O Ports

Block contains DFPIC1655X’s general purpose I/O ports and data direction registers (TRIS). The DFPIC1655X has two 8-bit full bi-directional ports PORT A, PORT B. Read and write accesses to the I/O port are performed via their corresponding SFR’s PORTA, PORTB. The reading instruction always reads the status of Port pins. Writing instructions always write into the Port latches. Each port’s pin has an corresponding bit in TRISA and TRISB registers. When the bit of TRIS register is set this means that the corresponding bit of port is configured as an input (output drivers are set into the High Impedance).

Interrupt Controller

Interrupt Controller module is responsible for interrupt manage system for the external and internal interrupt sources. It contains interrupt related register called INTCON There are three interrupt sources:
  • External interrupt INT
  • TMR0 overflow interrupt
  • PORTB change interrupt (pins B[7:4])
The interrupt control register INTCON records individual interrupt requests in flag bits. A global interrupt enable bit, GIE enables all unmasked interrupts. Each interrupt source has an individual enable bit, which can enable or disable corresponding interrupt. When an interrupt is responded to, the GIE is cleared to disable any further interrupt, the return address is pushed into the stack and the PC is loaded with 0004h. The interrupt flag bits must be cleared in software before re-enabling interrupts.

RAM Controller

It performs interface functions between Data Memory and DFPIC1655X internal logic. It assures correct Data memory addressing and data transfers. The DFPIC1655X supports two addressing modes: direct or indirect. In Direct Addressing the 9-bit direct address is computed from RP(1:0) bits (STATUS) and 7 least significant bits of instruction word. Indirect addressing is possible by using the INDF register. Any instruction using INDF register actually accesses data pointed to by the file select register FSR. Reading INDF register indirectly will produce 00h. Writing to the INDF register indirectly results in a no-operation. An effective 9-bit address is obtained by concatenating the IRP bit (STATUS) and the 8-bit FSR register.

Timer 0

Main system’s timer and prescaler. This timer operates in two modes: 8-bit timer or 8-bit counter. In the “timer mode”, timer/prescaler registers are incremented every instruction cycle (1 or 2 CLK periods). When the prescaler is assigned into the TIMER prescale ration can be divided by 2, 4, ..., 256. In the “counter mode” the timer register is incremented every falling or rising edge of T0CKI pin, dependent on T0SE bit in OPTION register.

Watchdog Timer

The watchdog timer is a free running timer. WDT has own clock input separate from system clock. It means that the WDT will run even if the system clock is stopped by execution of SLEEP instruction. During normal operation, a WDT timeout generates a Watchdog reset. If the device is in SLEEP mode the WDT timeout causes the device to wake-up and continue with normal operation.

ALU

Arithmetic Logic Unit performs arithmetic and logic operations during execution of an instruction. This module contains work register (W) and Status register.

DoCDTM

DoCDTM Debug Unit – it’s a real-time hardware debugger provides debugging capability of a whole SoC system. In contrast to other on-chip debuggers DoCD™ provides non-intrusive debugging of running application. It can halt, run, step into or skip an instruction, read/write any contents of microcontroller including all registers, internal, external, program memories, all SFRs including user defined peripherals. Hardware breakpoints can be set and controlled on program memory, internal and external data memories, as well as on SFRs. Hardware breakpoint is executed if any write/read occurred at particular address with certain data pattern or without pattern. The DoCDTM system includes three-wire interface and complete set of tools to communicate and work with core in real time debugging. It is built as scalable unit and some features can be turned off to save silicon and reduce power consumption. A special care on power consumption has been taken, and when debugger is not used it is automatically switched in power save mode. Finally whole debugger is turned off when debug option is no longer used.

Performance


Each core has been tested in variety of FPGA and ASIC technologies. Its implementation's results are summarized below.

ImplementationSpeed
grade
Utilized Area
[LC]
Frequency
[MHz]
CYCLONE-874973
CYCLONE II-874975
CYCLONE III-873383
STRATIX-875074
STRATIX II-5476121
STRATIX III-4457163

DFPIC1655X implementation results for ALTERA devices.

ImplementationUtilized Area
[Slices]
Frequency
[MHz]
SPARTAN-IIE38342
SPARTAN-III38652
SPARTAN-IIIE39235
SPARTAN-619075
VIRTEX-E38346
VIRTEX-II38869
VIRTEX-IV38798
VIRTEX_V239116
VIRTEX-VI239130

DFPIC1655X implementation results for XILINX devices. The CPU features and Peripherals have been included.

ImplementationSpeed
grade
Utilized Area
[LUT/PFU]
Frequency
[MHz]
XP-5757/20357
ECP-5757/20362
EC-5757/20362

DFPIC1655X implementation results for LATTICE devices. The CPU features and Peripherals have been included.

ImplementationSpeed
grade
Utilized Area
[TILES]
Frequency
[MHz]
FUSION-2151937
ProASIC3-2161936
ProASIC3e-2151937
IGLOOSTD153820
IGLOOeSTD153820

DFPIC1655X implementation results for ACTEL devices.


Family summary

DesignArchitecture
improovement
Code
space
DATA
space
Program
word
Number of
instructions
I/O PortsTimersWatchdog
Timer
CCP1USARTSLEEP
Mode
DoCDTMSize
(gates)
DFPIC165X22k12812 bit33241+--+-2700
DFPIC1655X264k32 kB14 bit35161+--++3900
DFPIC166X264k32 kB14 bit35323+11++5800
DRPIC1655X464k32 kB14 bit35321+--++4800
DRPIC166X464k32 kB14 bit35323+11++6700


The main features of each PIC family member have been summarized in table above. It gives a briefly member characterization helping user to select the most suitable IP Core for its application. User can specify its own peripheral set (including listed above and the others) and requests the core modifications.