OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 134 to Rev 135
    Reverse comparison

Rev 134 → Rev 135

/openmsp430/trunk/doc/size_speed_analysis.ods Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
openmsp430/trunk/doc/size_speed_analysis.ods Property changes : Deleted: svn:mime-type ## -1 +0,0 ## -application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/area_speed_analysis.ods =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/area_speed_analysis.ods =================================================================== --- openmsp430/trunk/doc/area_speed_analysis.ods (nonexistent) +++ openmsp430/trunk/doc/area_speed_analysis.ods (revision 135)
openmsp430/trunk/doc/area_speed_analysis.ods Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/openMSP430.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/area_speed_analysis.odt =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/area_speed_analysis.odt =================================================================== --- openmsp430/trunk/doc/area_speed_analysis.odt (nonexistent) +++ openmsp430/trunk/doc/area_speed_analysis.odt (revision 135)
openmsp430/trunk/doc/area_speed_analysis.odt Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/area_speed_analysis.pdf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/area_speed_analysis.pdf =================================================================== --- openmsp430/trunk/doc/area_speed_analysis.pdf (nonexistent) +++ openmsp430/trunk/doc/area_speed_analysis.pdf (revision 135)
openmsp430/trunk/doc/area_speed_analysis.pdf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/software_development_tools.html =================================================================== --- openmsp430/trunk/doc/html/software_development_tools.html (revision 134) +++ openmsp430/trunk/doc/html/software_development_tools.html (revision 135) @@ -1,250 +1,579 @@ -openMSP430 Software Development Tools + + openMSP430 Software Development Tools + + +

Table of content

+

1. Introduction

-Building on the serial debug interface capabilities provided by the openMSP430, three small utility programs are provided: +Building on the serial debug interface capabilities provided by the +openMSP430, three utility programs are provided:
    -
  • openmsp430-loader: a simple command line boot loader.
  • -
  • openmsp430-minidebug: a minimalistic debugger with simple GUI.
  • -
  • openmsp430-gdbproxy: GDB Proxy server to be used together with MSP430-GDB and the Eclipse, DDD, or Insight graphical front-ends.
  • -
-All these software development tools have been developed in TCL/TK and were successfully tested on both Linux and Windows (XP/Vista/7). -

-Note: in order to be able to directly execute the scripts, TCL/TK -needs to be installed on your system. Optionally for Windows users, the scripts can be turned into single-file binary executable programs -using freeWrap by running/clicking the "tools/freewrap642/generate_exec.bat" file provided in the project repository. +
  • openmsp430-loader: a simple command line boot loader.
  • +
  • openmsp430-minidebug: a minimalistic debugger with simple +GUI.
  • +
  • openmsp430-gdbproxy: GDB Proxy server to be used together +with MSP430-GDB and the Eclipse, DDD, or Insight GUI front-ends.
  • + +All these software development tools have been developed in +TCL/TK and were successfully tested on both Linux and Windows +(XP/Vista/7). +
    +
    + +Note: to be able to execute the scripts, TCL/TK +needs to be installed on your system.
    + +
    + +In order to connect the host PC to the openMSP430 serial debug +interface, a serial cable is required.
    + +Typically, the following solutions will suit any kind of development +board:
    + + +

    2. openmsp430-loader

    + This simple program allows the user to load the openMSP430 program -memory with an executable file (ELF or Intel-HEX format) provided as argument.
    -It is typically used in conjunction with 'make' in order to automatically load the program after the compile step (see 'Makefile' from software examples provided with the project's FPGA implementation).
    +memory with an executable file (ELF or Intel-HEX format) provided as +argument.
    + +It is typically used in conjunction with 'make' in order +to automatically load the program after the compile step (see 'Makefile' +from software examples provided with the project's FPGA implementation).
    + The program can be called with the following syntax: -

    +
    + +
    + - - - - - + + + + + - -

    -

    -

    -
    - openmsp430-loader.tcl [-device <communication device>] [-baudrate <communication speed>] <elf/ihex-file> -

    -Examples: openmsp430-loader.tcl -device /dev/ttyUSB0 -baudrate 9600 leds.elf
              openmsp430-loader.tcl + +

    +

    +

    +
    openmsp430-loader.tcl [-device <communication +device>] [-baudrate <communication speed>] +<elf/ihex-file> +
    +
    +Examples: openmsp430-loader.tcl -device /dev/ttyUSB0 -baudrate 9600 +leds.elf
    +          openmsp430-loader.tcl -device COM2: -baudrate 38400 ta_uart.ihex
    -
    + + + + +
    + These screenshots show the script in action under Linux and Windows: -

    -openmsp430-loader Linux -

    -openmsp430-loader Windows
    + +
    + +openmsp430-loader Linux +
    + +
    + +openmsp430-loader Windows +
    +

    3. openmsp430-minidebug

    -This small program provides a minimalistic graphical interface enabling simple interaction with the openMSP430: -

    -openmsp430-minidebug -

    + +This small program provides a minimalistic graphical interface enabling +simple interaction with the openMSP430: +
    + +
    + +openmsp430-minidebug +
    + +
    + As you can see from the screenshot, it allows the following actions:
      -
    • (1)  Connect to the openMSP430 Serial Debug Interface.
    • -
    • (2)  Load the program memory with an ELF or Intel-HEX file
    • -
    • (3)  Control the CPU: Reset, Stop, Start, Single-Step and Software breakpoints
    • -
    • (4)  Read/Write access of the CPU registers
    • -
    • (5)  Read/Write access of the whole memory range (program, data, peripherals)
    • -
    • (6)  Basic disassembled view of the loaded program (current PC location is highlighted in green, software breakpoints in yellow, pink and violet)
    • -
    • (7)  Choose the disassembled view type
    • -
    • (8)  Source a custom external TCL script
    • + +
    • (1)  Connect to the +openMSP430 Serial Debug Interface.
    • +
    • (2)  Load the +program memory with an ELF or Intel-HEX file
    • +
    • (3)  Control the +CPU: Reset, Stop, Start, Single-Step and Software breakpoints
    • +
    • (4)  Read/Write +access of the CPU registers
    • +
    • (5)  Read/Write +access of the whole memory range (program, data, peripherals)
    • +
    • (6)  Basic +disassembled view of the loaded program (current PC location is +highlighted in green, software breakpoints in yellow, pink and violet)
    • +
    • (7)  Choose the +disassembled view type
    • +
    • (8)  Source a +custom external TCL script

    4. openmsp430-gdbproxy

    -The purpose of this program is to replace the 'msp430-gdbproxy' utility provided by the mspgcc toolchain.
    -Typically, a GDB proxy creates a local port for gdb to connect to, and + +The purpose of this program is to replace the 'msp430-gdbproxy' +utility provided by the mspgcc toolchain.
    + +Typically, a GDB proxy creates a local port for GDB to connect to, and handles the communication with the target hardware. In our case, it is basically a bridge between the RSP communication protocol from GDB and the serial debug interface from the openMSP430.
    + Schematically the communication flow looks as following: -

    -GDB Proxy flow -

    -Like the original 'msp430-gdbproxy' program, 'openmsp430-gdbproxy' can be controlled from the command line. However, it also provides a small graphical interface: -

    -gdbproxy -

    -These two additional screenshots show the script in action together with the Eclipse and DDD graphical frontends: -

    -gdbproxy-Eclipse -

    -gdbproxy-DDD -

    -Tip: There are several tutorials on Internet explaining how to +
    + +
    + +GDB Proxy flow +
    + +
    + +Like the original 'msp430-gdbproxy' program, 'openmsp430-gdbproxy' +can be controlled from the command line. However, it also provides a +simple graphical interface: +
    + +
    + +gdbproxy +
    + +
    + +These two additional screenshots show the script in action together +with the Eclipse and DDD graphical frontends:
    + +
    + +gdbproxy-Eclipse +
    + +
    + +gdbproxy-DDD +
    + +
    + +Tip 1: There are several tutorials on Internet explaining how to configure Eclipse for the MSP430. As an Eclipse newbie, I found the -followings quite helpful (the msp430-gdbproxy sections should of course be ignored as we are using our own openmsp430-gdbproxy program :-) ): +followings quite helpful (the msp430-gdbproxy sections +should of course be ignored as we are using our own openmsp430-gdbproxy +program :-) ): - -

    5. MSPGCC(4) Toolchain

    +Tip 2: You probably want to install this excellent Eclipse +plugin (see screenshot above): EmbSysRegView
    +
    + +

    5. MSPGCC Toolchain

    +

    5.1 Compiler options

    -The msp430-gcc compiler accepts the following MSP430 specific command line parameters (copied from the MSPGCC manual page): -

    +The msp430-gcc compiler accepts the following MSP430 specific +command line parameters (copied from the MSPGCC manual page): +
    + +
    + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    -mmcu= Specify the MCU name
    -mno-volatile-workaroundDo not perform a volatile workaround for bitwise operations.
    -mno-stack-init Do not initialize the stack as main()starts.
    -minit-stack= Specify the initial stack address.
    -mendup-at= Jump to the specified routine at the end of main().
    -mforce-hwmul Force use of a hardware multiplier.
    -mdisable-hwmul Do not use the hardware multiplier.
    -minline-hwmul Issue inline code for 32-bit integer operations for devices with a hardware multiplier.
    -mnoint-hwmul Do not disable and enable interrupts around hardware multiplier operations. This makes - multiplication faster when you are certain no hardware multiplier operations will occur - at deeper interrupt levels.
    -mcall-shifts Use subroutine calls for shift operations. This may save some space for shift intensive - applications.
    -mmcu= Specify the MCU name
    -mno-volatile-workaroundDo not perform a volatile workaround for bitwise operations.
    -mno-stack-init Do not initialize the stack as main()starts.
    -minit-stack= Specify the initial stack address.
    -mendup-at= Jump to the specified routine at the end of main().
    -mforce-hwmul Force use of a hardware multiplier.
    -mdisable-hwmul Do not use the hardware multiplier.
    -minline-hwmul Issue inline code for 32-bit integer operations for devices +with a hardware multiplier.
    -mnoint-hwmul Do not disable and enable +interrupts around hardware multiplier operations. This makes +multiplication faster when you are certain no hardware multiplier +operations will occur at deeper interrupt levels.
    -mcall-shifts Use subroutine calls for shift +operations. This may save some space for shift intensive applications.
    +
    -

    5.2 MCU selection

    -The following table aims to help selecting the proper MCU name for the -mmcu option during the msp430-gcc call: -

    +The following table aims to help selecting the proper MCU name for the -mmcu +option +during the msp430-gcc call: +
    + +
    + - + + + + + - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - - + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - + - + - + @@ -252,55 +581,130 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - - - - + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + - - + + + + + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + - - + + + + + - - - - + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + - - + + + + + - - + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - - + + + + + - - + + + + + - + + @@ -425,7 +916,8 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - @@ -651,11 +1116,11 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + +
    -mmcu option  Program  
    Memory
    Data
       Memory   
    Hardware
    + +
    -mmcu option  Program  
    +Memory
    Data
    +   Memory   
    Hardware
      Multiplier 

    Program Memory Size: 1 kB
    msp430x110 1 kB 128 BNo
    +
    Program Memory Size: 1 kB
    msp430x110 1 kB 128 BNo
    msp430x1101 1 kB 128 BNo
    msp430x2001 1 kB 128 BNo
    msp430x2002 1 kB 128 BNo
    msp430x2003 1 kB 128 BNo
    msp430x2101 1 kB 128 BNo
    Program Memory Size: 2 kB
    msp430x1111 2 kB 128 BNo
    msp430x2011 2 kB 128 BNo
    msp430x2012 2 kB 128 BNo
    msp430x2013 2 kB 128 BNo
    msp430x2111 2 kB 128 BNo
    msp430x2112 2 kB 128 BNo
    msp430x311 2 kB 128 BNo
    Program Memory Size: 4 kB
    msp430x112 4 kB 256 BNo
    msp430x1121 4 kB 256 BNo
    msp430x1122 4 kB 256 BNo
    msp430x122 4 kB 256 BNo
    msp430x1222 4 kB 256 BNo
    msp430x2122 4 kB 256 BNo
    msp430x2121 4 kB 256 BNo
    msp430x312 4 kB 256 BNo
    msp430x412 4 kB 256 BNo
    Program Memory Size: 8 kB
    msp430x123 8 kB 256 BNo
    msp430x133 8 kB 256 BNo
    msp430x313 8 kB 256 BNo
    msp430x323 8 kB 256 BNo
    msp430x413 8 kB 256 BNo
    msp430x423 8 kB 256 BYes
    +
    msp430x1101 1 kB 128 BNo
    msp430x2001 1 kB 128 BNo
    msp430x2002 1 kB 128 BNo
    msp430x2003 1 kB 128 BNo
    msp430x2101 1 kB 128 BNo
    Program Memory Size: 2 kB
    msp430x1111 2 kB 128 BNo
    msp430x2011 2 kB 128 BNo
    msp430x2012 2 kB 128 BNo
    msp430x2013 2 kB 128 BNo
    msp430x2111 2 kB 128 BNo
    msp430x2112 2 kB 128 BNo
    msp430x311 2 kB 128 BNo
    Program Memory Size: 4 kB
    msp430x112 4 kB 256 BNo
    msp430x1121 4 kB 256 BNo
    msp430x1122 4 kB 256 BNo
    msp430x122 4 kB 256 BNo
    msp430x1222 4 kB 256 BNo
    msp430x2122 4 kB 256 BNo
    msp430x2121 4 kB 256 BNo
    msp430x312 4 kB 256 BNo
    msp430x412 4 kB 256 BNo
    Program Memory Size: 8 kB
    msp430x123 8 kB 256 BNo
    msp430x133 8 kB 256 BNo
    msp430x313 8 kB 256 BNo
    msp430x323 8 kB 256 BNo
    msp430x413 8 kB 256 BNo
    msp430x423 8 kB 256 BYes
    msp430xE423 8 kB 256 BYes
    +
    msp430xE423 8 kB 256 BYes
    msp430xE4232 8 kB 256 BYes
    +
    msp430xE4232 8 kB 256 BYes
    msp430xW423 8 kB 256 BNo
    msp430x1132 8 kB 256 BNo
    msp430x1232 8 kB 256 BNo
    msp430x1331 8 kB 256 BNo
    msp430x2131 8 kB 256 BNo
    msp430x2132 8 kB 256 BNo
    msp430x2232 8 kB 512 BNo
    msp430x2234 8 kB 512 BNo
    msp430x233 8 kB 1024 BYes
    +
    msp430xW423 8 kB 256 BNo
    msp430x1132 8 kB 256 BNo
    msp430x1232 8 kB 256 BNo
    msp430x1331 8 kB 256 BNo
    msp430x2131 8 kB 256 BNo
    msp430x2132 8 kB 256 BNo
    msp430x2232 8 kB 512 BNo
    msp430x2234 8 kB 512 BNo
    msp430x233 8 kB 1024 BYes
    msp430x2330 8 kB 1024 BYes
    +
    msp430x2330 8 kB 1024 BYes
    Program Memory Size: 12 kBProgram +Memory Size: 12 kB
    msp430xE4242
    12 kB 512 B 512 B Yes
    msp430x314
    12 kB 512 B
    +
    512 B
    No
    Program Memory Size: 16 kB
    msp430x4250 16 kB 256 BNo
    msp430xG425016 kB 256 BNo
    msp430x135 16 kB 512 BNo
    msp430x1351 16 kB 512 BNo
    msp430x155 16 kB 512 BNo
    msp430x2252 16 kB 512 BNo
    msp430x2254 16 kB 512 BNo
    msp430x315 16 kB 512 BNo
    msp430x325 16 kB 512 BNo
    msp430x415 16 kB 512 BNo
    msp430x425 16 kB 512 BYes
    +
    Program Memory Size: 16 kB
    msp430x4250 16 kB 256 BNo
    msp430xG425016 kB 256 BNo
    msp430x135 16 kB 512 BNo
    msp430x1351 16 kB 512 BNo
    msp430x155 16 kB 512 BNo
    msp430x2252 16 kB 512 BNo
    msp430x2254 16 kB 512 BNo
    msp430x315 16 kB 512 BNo
    msp430x325 16 kB 512 BNo
    msp430x415 16 kB 512 BNo
    msp430x425 16 kB 512 BYes
    msp430xE425 16 kB 512 BYes
    +
    msp430xE425 16 kB 512 BYes
    msp430xW425 16 kB 512 BNo
    msp430xE425216 kB 512 BYes
    +
    msp430xW425 16 kB 512 BNo
    msp430xE425216 kB 512 BYes
    msp430x435 16 kB 512 BNo
    msp430x4351 16 kB 512 BNo
    msp430x235 16 kB 2048 BYes
    +
    msp430x435 16 kB 512 BNo
    msp430x4351 16 kB 512 BNo
    msp430x235 16 kB 2048 BYes
    msp430x2350 16 kB 2048 BYes
    +
    msp430x2350 16 kB 2048 BYes
    Program Memory Size: 24 kBProgram +Memory Size: 24 kB
    msp430x4260
    @@ -362,60 +766,147 @@
    Yes
    Program Memory Size: 32 kB
    msp430x4270 32 kB 256 BNo
    msp430xG427032 kB 256 BNo
    msp430x147 32 kB 1024 BYes
    +
    Program Memory Size: 32 kB
    msp430x4270 32 kB 256 BNo
    msp430xG427032 kB 256 BNo
    msp430x147 32 kB 1024 BYes
    msp430x1471 32 kB 1024 BYes
    +
    msp430x1471 32 kB 1024 BYes
    msp430x157 32 kB 1024 BNo
    msp430x167 32 kB 1024 BYes
    +
    msp430x157 32 kB 1024 BNo
    msp430x167 32 kB 1024 BYes
    msp430x2272 32 kB 1024 BNo
    msp430x2274 32 kB 1024 BNo
    msp430x337 32 kB 1024 BYes
    +
    msp430x2272 32 kB 1024 BNo
    msp430x2274 32 kB 1024 BNo
    msp430x337 32 kB 1024 BYes
    msp430x417 32 kB 1024 BNo
    msp430x427 32 kB 1024 BYes
    +
    msp430x417 32 kB 1024 BNo
    msp430x427 32 kB 1024 BYes
    msp430xE427 32 kB 1024 BYes
    +
    msp430xE427 32 kB 1024 BYes
    msp430xE427232 kB 1024 BYes
    +
    msp430xE427232 kB 1024 BYes
    msp430xW427 32 kB 1024 BNo
    msp430x437 32 kB 1024 BNo
    msp430xG437 32 kB 1024 BNo
    msp430x4371 32 kB 1024 BNo
    msp430x447 32 kB 1024 BYes
    +
    msp430xW427 32 kB 1024 BNo
    msp430x437 32 kB 1024 BNo
    msp430xG437 32 kB 1024 BNo
    msp430x4371 32 kB 1024 BNo
    msp430x447 32 kB 1024 BYes
    msp430x2370 32 kB 2048 BYes
    +
    msp430x2370 32 kB 2048 BYes
    msp430x247 32 kB 4096 BYes
    +
    msp430x247 32 kB 4096 BYes
    msp430x2471 32 kB 4096 BYes
    +
    msp430x2471 32 kB 4096 BYes
    msp430x1610
    32 kB
    Program Memory Size: 41 kBProgram +Memory Size: 41 kB
    msp430x5438
    @@ -434,8 +926,7 @@
    16384 B
    No - No
    msp430x5437
    @@ -444,8 +935,7 @@
    16384 B
    No - No
    msp430x5436
    @@ -454,8 +944,7 @@
    16384 B
    No - No
    msp430x5435
    @@ -464,8 +953,7 @@
    16384 B
    No - No
    msp430x5419
    @@ -474,8 +962,7 @@
    16384 B
    No - No
    msp430x5418
    @@ -484,11 +971,11 @@
    16384 B
    No - No
    Program Memory Size: 48 kBProgram +Memory Size: 48 kB
    msp430x1611
    @@ -497,8 +984,7 @@
    10240 B
    Yes - Yes
    msp430x248
    @@ -507,8 +993,7 @@
    4096 B
    Yes - Yes
    msp430x2481
    @@ -515,10 +1000,8 @@
    48 kB
    4096 B - Yes - 4096 B Yes
    msp430x4783
    @@ -527,8 +1010,7 @@
    2048 B
    Yes - Yes
    msp430xG438
    @@ -535,10 +1017,8 @@
    48 kB
    2048 B - No - 2048 B No
    msp430x4784
    @@ -545,10 +1025,8 @@
    48 kB
    2048 B - Yes - 2048 B Yes
    msp430x148
    @@ -555,10 +1033,8 @@
    48 kB
    2048 B - Yes - 2048 B Yes
    msp430x168
    @@ -565,10 +1041,8 @@
    48 kB
    2048 B - Yes - 2048 B Yes
    msp430x1481
    @@ -575,10 +1049,8 @@
    48 kB
    2048 B - Yes - 2048 B Yes
    msp430x448
    @@ -585,13 +1057,12 @@
    48 kB
    2048 B - Yes - 2048 B Yes
    Program Memory Size: 51 kBProgram +Memory Size: 51 kB
    msp430xG4617
    @@ -600,8 +1071,7 @@
    8192 B
    Yes - Yes
    msp430x2418
    @@ -610,8 +1080,7 @@
    8192 B
    Yes - Yes
    msp430x2618
    @@ -620,8 +1089,7 @@
    8192 B
    Yes - Yes
    msp430x2417
    @@ -630,8 +1098,7 @@
    8192 B
    Yes - Yes
    msp430xG4618
    @@ -640,10 +1107,8 @@
    8192 B
    Yes - Yes
    msp430x2617
    8192 B
    Yes - Yes
    Program Memory Size: 54 kBProgram +Memory Size: 54 kB
    msp430x1612
    @@ -664,11 +1129,11 @@
    5120 B
    Yes - Yes
    Program Memory Size: 55 kBProgram +Memory Size: 55 kB
    msp430x2619
    @@ -677,8 +1142,7 @@
    4096 B
    Yes - Yes
    msp430xG4619
    @@ -687,8 +1151,7 @@
    4096 B
    Yes - Yes
    msp430xG4616
    @@ -697,8 +1160,7 @@
    4096 B
    Yes - Yes
    msp430x2416
    @@ -707,8 +1169,7 @@
    4096 B
    Yes - Yes
    msp430x2419
    @@ -717,8 +1178,7 @@
    4096 B
    Yes - Yes
    msp430x2616
    @@ -727,8 +1187,7 @@
    4096 B
    Yes - Yes
    msp430x2410
    @@ -737,11 +1196,11 @@
    4096 B
    Yes - Yes
    Program Memory Size: 59 kBProgram +Memory Size: 59 kB
    msp430x4794
    @@ -750,8 +1209,7 @@
    2560 B
    Yes - Yes
    msp430x4793
    @@ -760,8 +1218,7 @@
    2560 B
    Yes - Yes
    msp430x2491
    @@ -770,8 +1227,7 @@
    2048 B
    Yes - Yes
    msp430x1491
    @@ -780,8 +1236,7 @@
    2048 B
    Yes - Yes
    msp430x149
    @@ -790,8 +1245,7 @@
    2048 B
    Yes - Yes
    msp430xG439
    @@ -810,8 +1264,7 @@
    2048 B
    Yes - Yes
    msp430x449
    @@ -820,8 +1273,7 @@
    2048 B
    Yes - Yes
    msp430x169
    @@ -830,33 +1282,66 @@
    2048 B
    Yes - Yes
    -
    -Note: the program memory size should imperatively match the openMSP430 configuration.
    +
    +Note: the program +memory size should imperatively match the openMSP430 configuration.
    +
    +

    5.3 Custom linker script

    -The use of the -mmcu switch is of course NOT mandatory. It is simply a convenient way to use the pre-existing linker scripts provided with the MSPGCC4 toolchain.
    + +The use of the -mmcu switch is of course NOT mandatory. +It is simply a convenient way to use the pre-existing linker scripts +provided with the MSPGCC4 toolchain.
    +
    -However, if the peripheral address space is larger than the standard 512B of the original MSP430 (see the Advanced System Configuration section), a customized linker script MUST be provided.
    + +However, if the peripheral address space is larger than the standard +512B of the original MSP430 (see the Advanced +System Configuration section), a customized linker script MUST +be provided.
    +
    -To create a custom linker script, the simplest way is to start from an existing one: + +To create a custom linker script, the simplest way is to start from an +existing one:
      -
    • the MSPGCC(4) toolchain provides a wide range of examples for all supported MSP430 models (see "msp430/lib/ldscripts/" sub-directory, in the MSPGCC(4) installation directory).
    • -
    • the openMSP430 project also provide a simple linker script example: ldscript_example.x
    • + +
    • the MSPGCC toolchain provides a wide range of examples for all +supported MSP430 models (see "msp430/lib/ldscripts/" +sub-directory, in the MSPGCC installation directory).
    • +
    • the openMSP430 project also provide a simple linker script +example: ldscript_example.x
    +
    -From there, the script can be modified to match YOUR openMSP430 configuration: + +From there, the script can be modified to match YOUR openMSP430 +configuration:
      -
    • In the text (rx) section definition, update the ORIGIN and LENGTH fields to match the PROGRAM MEMORY configuration.
    • -
    • In the data (rwx) section definition, update the ORIGIN field to match the PERIPHERAL SPACE configuration and the LENGTH field to match the DATA MEMORY configuration.
    • -
    • At last, update the stack pointer initialization value (look for the "PROVIDE (__stack =" section) and make sure that it falls in the data memory space (the stack size should also matches your application requirements, i.e. not to small... and not to big :-P ).
    • + +
    • In the text (rx) section definition, update the ORIGIN +and LENGTH fields to match the PROGRAM MEMORY +configuration.
    • +
    • In the data (rwx) section definition, update the ORIGIN +field to match the PERIPHERAL SPACE configuration and the LENGTH +field to match the DATA MEMORY configuration.
    • +
    • At last, update the stack pointer initialization value (look for +the "PROVIDE (__stack =" +section) and make sure that it falls in the data memory space (the +stack size should also matches your application requirements, i.e. not +to small... and not to big :-P ).
    -

    +
    +
    + \ No newline at end of file
    /openmsp430/trunk/doc/html/images/openMSP430_tmax.png Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
    openmsp430/trunk/doc/html/images/openMSP430_tmax.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/clock_diagram_asic_config.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_diagram_asic_config.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_diagram_asic_config.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_diagram_asic_config.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_diagram_asic_config.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/clock_gate_latch.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_gate_latch.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_gate_latch.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_gate_latch.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_gate_latch.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/clock_diagram_asic.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_diagram_asic.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_diagram_asic.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_diagram_asic.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_diagram_asic.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/dft_reset.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/dft_reset.png =================================================================== --- openmsp430/trunk/doc/html/images/dft_reset.png (nonexistent) +++ openmsp430/trunk/doc/html/images/dft_reset.png (revision 135)
    openmsp430/trunk/doc/html/images/dft_reset.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/dft_clock_mux.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/dft_clock_mux.png =================================================================== --- openmsp430/trunk/doc/html/images/dft_clock_mux.png (nonexistent) +++ openmsp430/trunk/doc/html/images/dft_clock_mux.png (revision 135)
    openmsp430/trunk/doc/html/images/dft_clock_mux.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/clock_divider.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_divider.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_divider.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_divider.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_divider.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/sync_reset.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/sync_reset.png =================================================================== --- openmsp430/trunk/doc/html/images/sync_reset.png (nonexistent) +++ openmsp430/trunk/doc/html/images/sync_reset.png (revision 135)
    openmsp430/trunk/doc/html/images/sync_reset.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/openmsp430-gdbproxy-eclipse.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_diagram.odg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/sync_cell.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/sync_cell.png =================================================================== --- openmsp430/trunk/doc/html/images/sync_cell.png (nonexistent) +++ openmsp430/trunk/doc/html/images/sync_cell.png (revision 135)
    openmsp430/trunk/doc/html/images/sync_cell.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/core_integration.odg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_mux.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_mux.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_mux.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_mux.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_mux.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/lpm1_wakeup.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/lpm1_wakeup.png =================================================================== --- openmsp430/trunk/doc/html/images/lpm1_wakeup.png (nonexistent) +++ openmsp430/trunk/doc/html/images/lpm1_wakeup.png (revision 135)
    openmsp430/trunk/doc/html/images/lpm1_wakeup.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/dft_clock_gate.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/dft_clock_gate.png =================================================================== --- openmsp430/trunk/doc/html/images/dft_clock_gate.png (nonexistent) +++ openmsp430/trunk/doc/html/images/dft_clock_gate.png (revision 135)
    openmsp430/trunk/doc/html/images/dft_clock_gate.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/wakeup_cell.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/wakeup_cell.png =================================================================== --- openmsp430/trunk/doc/html/images/wakeup_cell.png (nonexistent) +++ openmsp430/trunk/doc/html/images/wakeup_cell.png (revision 135)
    openmsp430/trunk/doc/html/images/wakeup_cell.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/core_integration.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/lpm1_reti.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/lpm1_reti.png =================================================================== --- openmsp430/trunk/doc/html/images/lpm1_reti.png (nonexistent) +++ openmsp430/trunk/doc/html/images/lpm1_reti.png (revision 135)
    openmsp430/trunk/doc/html/images/lpm1_reti.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/clock_divider_lowpower.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_divider_lowpower.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_divider_lowpower.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_divider_lowpower.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_divider_lowpower.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/lpm1_bis.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/lpm1_bis.png =================================================================== --- openmsp430/trunk/doc/html/images/lpm1_bis.png (nonexistent) +++ openmsp430/trunk/doc/html/images/lpm1_bis.png (revision 135)
    openmsp430/trunk/doc/html/images/lpm1_bis.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/wakeup_watchdog.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/wakeup_watchdog.png =================================================================== --- openmsp430/trunk/doc/html/images/wakeup_watchdog.png (nonexistent) +++ openmsp430/trunk/doc/html/images/wakeup_watchdog.png (revision 135)
    openmsp430/trunk/doc/html/images/wakeup_watchdog.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/clock_diagram_fpga.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_diagram_fpga.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_diagram_fpga.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_diagram_fpga.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_diagram_fpga.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/images/clock_gate_nand2.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: openmsp430/trunk/doc/html/images/clock_gate_nand2.png =================================================================== --- openmsp430/trunk/doc/html/images/clock_gate_nand2.png (nonexistent) +++ openmsp430/trunk/doc/html/images/clock_gate_nand2.png (revision 135)
    openmsp430/trunk/doc/html/images/clock_gate_nand2.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: openmsp430/trunk/doc/html/integration.html =================================================================== --- openmsp430/trunk/doc/html/integration.html (revision 134) +++ openmsp430/trunk/doc/html/integration.html (revision 135) @@ -1,405 +1,612 @@ - - -openMSP430 Integration and Connectivity - - +openMSP430 Integration and Connectivity + + +

    Table of content

    1. Overview

    - -This chapter aims to give a comprehensive description of all openMSP430 core interfaces in order to facilitates its integration within an ASIC or FPGA.

    - -The following diagram shows an overview of the openMSP430 core connectivity:

    -Core Integration - 24 May 2011 -

    -The full pinout of the core is summarized in the following table.
    -
    +This chapter aims to give a comprehensive description of all openMSP430 +core interfaces in order to facilitate its integration within an ASIC +or FPGA.

    The +following diagram shows an overview of the openMSP430 core connectivity +in an FPGA system (i.e. all ASIC specific pins are left unused):

    +Core Integration +

    +The full pinout of the core is summarized in the following table.
    +
    - + + - + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + - + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - + - - - - + + + + + - - - - + + + + + - - - - + + + + + - + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - - -
    Port Name Direction Width Description
    Port Name Direction Width Clock
    + Domain
    +
    Description
    Clocks
    Clocks
    cpu_en Input 1 Enable CPU code execution (asynchronous) cpu_en Input 1 <async>
    + +or mclk4
    Enable CPU code execution (asynchronous and non-glitchy).
    Set to 1 if unused.
    dco_clk Input 1 Fast oscillator (fast clock), CPU clock dco_clk Input 1 -
    +
    Fast oscillator (fast clock)
    lfxt_clk Input 1 Low frequency oscillator (typ. 32kHz) lfxt_clk Input 1 -
    +
    Low frequency oscillator (typ. 32kHz)
    Set to 0 if unused.
    mclk Output 1 Main system clock mclk Output 1 -
    +
    Main system clock
    aclk_en Output 1 ACLK enable aclk_en Output 1 mclk
    +
    FPGA ONLY: ACLK enable
    smclk_en Output 1 SMCLK enable smclk_en Output 1 mclk
    +
    FPGA ONLY: SMCLK enable
    Resets
    puc_rst Output 1 Main system reset dco_enableOutput
    +
    1
    +
    dco_clk
    +
    ASIC ONLY: Fast oscillator enable
    dco_wkupOutput1
    +
    <async>
    +
    ASIC ONLY: Fast oscillator wakeup (asynchronous)
    lfxt_enableOutput1
    +
    lfxt_clk
    +
    ASIC ONLY: Low frequency oscillator enable
    lfxt_wkupOutput1
    +
    <async>
    +
    ASIC ONLY: Low frequency oscillator wakeup (asynchronous)
    aclkOutput1
    +
    -
    +
    ASIC ONLY: ACLK
    smclkOutput1
    +
    -
    +
    ASIC ONLY: SMCLK
    wkupInput
    +
    1
    +
    <async>
    +
    ASIC ONLY: System Wake-up (asynchronous and non-glitchy)
    Set to 0 if unused.
    Resets
    puc_rst Output 1 mclk
    +
    Main system reset
    reset_n Input 1 Reset Pin (low active, asynchronous) reset_n Input 1 <async>
    +
    Reset Pin (active low, asynchronous and non-glitchy)
    Program Memory interface
    Program Memory interface
    pmem_addr Output `PMEM_AWIDTH1 Program Memory address pmem_addr Output `PMEM_AWIDTH1 mclk
    +
    Program Memory address
    pmem_cen Output 1 Program Memory chip enable (low active) pmem_cen Output 1 mclk Program Memory chip enable (low active)
    pmem_din Output 16 Program Memory data input pmem_din Output 16 mclk Program Memory data input (optional 2)
    pmem_dout Input 16 Program Memory data output pmem_dout Input 16 mclk Program Memory data output
    pmem_wen Output 2 Program Memory write byte enable (low active) pmem_wen Output 2 mclk Program Memory write byte enable (low active) (optional 2)
    Data Memory interface
    Data Memory interface
    dmem_addr Output `DMEM_AWIDTH1 Data Memory address dmem_addr Output `DMEM_AWIDTH1 mclk Data Memory address
    dmem_cen Output 1 Data Memory chip enable (low active) dmem_cen Output 1 mclk Data Memory chip enable (low active)
    dmem_din Output 16 Data Memory data input dmem_din Output 16 mclk Data Memory data input
    dmem_dout Input 16 Data Memory data output dmem_dout Input 16 mclk Data Memory data output
    dmem_wen Output 2 Data Memory write byte enable (low active) dmem_wen Output 2 mclk Data Memory write byte enable (low active)
    External Peripherals interface
    External Peripherals interface
    per_addr Output 14 Peripheral address per_addr Output 14 mclk Peripheral address
    per_din Output 16 Peripheral data input per_din Output 16 mclk Peripheral data input
    per_dout Input 16 Peripheral data output per_dout Input 16 mclk Peripheral data output
    per_en Output 1 Peripheral enable (high active) per_en Output 1 mclk Peripheral enable (high active)
    per_we Output 2 Peripheral write byte enable (high active) per_we Output 2 mclk Peripheral write byte enable (high active)
    Interrupts
    Interrupts
    irq Input 14 Maskable interrupts (one-hot signal) irq Input 14 mclk Maskable interrupts (one-hot signal)
    nmi Input 1 Non-maskable interrupt (asynchronous) nmi Input 1 <async>
    + +or mclk4
    Non-maskable interrupt (asynchronous)
    irq_acc Output 14 Interrupt request accepted (one-hot signal) irq_acc Output 14 mclk Interrupt request accepted (one-hot signal)
    Serial Debug interface
    Serial Debug interface
    dbg_en Input 1 Debug interface enable (asynchronous) dbg_en Input 1 <async>
    + +or mclk4
    Debug interface enable (asynchronous) 3
    dbg_freeze Output 1 Freeze peripherals dbg_freeze Output 1 mclk Freeze peripherals
    dbg_uart_txd Output 1 Debug interface: UART TXD dbg_uart_txd Output 1 mclk Debug interface: UART TXD
    dbg_uart_rxd Input 1 Debug interface: UART RXD (asynchronous)
    -
    -1: This parameter is declared in the "openMSP430_defines.v" file and defines the RAM/ROM size.
    -
    + dbg_uart_rxd + Input + 1 + <async>
    + + Debug interface: UART RXD (asynchronous) + + Scan + + + scan_enable
    + + Input
    + + 1
    + + dco_clk
    + + ASIC ONLY: Scan enable (active during scan shifting) + + + scan_mode
    + + Input
    + + 1
    + + <stable>
    + + ASIC ONLY: Scan mode + + +
    +1: This parameter is declared in the "openMSP430_defines.v" file and defines the RAM/ROM size.
    2: +These two optional ports can be connected whenever the program memory +is a RAM. This will allow the user to load a program through the serial +debug interface and to use software breakpoints.
    3: When disabled, the debug interface is hold into reset (and clock gated in ASIC mode). As a consequence, the dbg_en port can be used to reset the debug interface without disrupting the CPU execution.
    4: Clock domain is selectable through configuration in the "openMSP430_defines.v" file (see Advanced System Configuration).

    +
    + - +

    2. Clocks

    -The different clocks in the design are managed by the Basic Clock Module: -

    -Clock structure diagram -
    +The different clocks in the design are managed by the Basic Clock Module as following in the FPGA configuration: +

    +Clock structure diagram +
    +
    +or as following in the ASIC configuration:
    +
    +Clock structure diagram +
    • - CPU_EN: this input port provide a hardware mean to stop or resume CPU execution. When unused, this port should be set to 1. -

      + CPU_EN: this input port provides a hardware mean to stop or resume CPU execution. When unused, this port should be set to 1. +

    • - DCO_CLK: this input port is typically connected to a PLL, RC oscillator or any clock resource the target FPGA might provide.
      - From a synthesis tool perspective (ISE, Quartus, Libero, Design Compiler...), this the only port where a clock needs to be declared. -

      + DCO_CLK: this input port is typically connected to a PLL, RC oscillator or any clock resource the target FPGA/ASIC might provide.
      For the FPGA configuration, from a synthesis tool perspective (ISE, Quartus, Libero, Design +Compiler...), this the only port where a clock needs to be declared.

    • -
    • - LFXT_CLK: if ACLK_EN or SMCLK_EN are going to be used in the project (for example through the Watchdog or TimerA peripherals), then this port needs to be connected to a clock running at least two time slower as DCO_CLK (typically 32kHz). It can be connected to 0 or 1 otherwise. -

      + +
    • + LFXT_CLK: +in an FPGA system, if ACLK_EN or SMCLK_EN are going to be used in the project (for example +through the Watchdog or TimerA peripherals), then this port needs to be +connected to a clock running at least two time slower as DCO_CLK +(typically 32kHz). It can be connected to 0 or 1 otherwise.
      + +In an ASIC, if ACLK or SMCLK are used and if the clock muxes are +included, then this port can be connected to any kind of clock source +(it doesn't need to be low-frequency. The name was just +kept to be consistent with TI's documentation).

    • +
    • - MCLK: the main system clock drives the complete openMSP430 clock domain, including program/data memories and the peripheral interfaces. -

      + MCLK: +the main system clock drives the complete openMSP430 clock domain, +including program/data memories and the peripheral interfaces.

    • - ACLK_EN / SMCLK_EN: these two clock enable signals can be used in order to emulate the original ACLK and SMCLK from the MSP430 specification.
      - An example of this can be found in the Watchdog and TimerA modules, where it is implemented as following:

      -Clock implementation example -

      -
    • + ACLK_EN / SMCLK_EN: +these two clock enable signals can be used in order to emulate the +original ACLK and SMCLK from the MSP430 specification when the core is +targeting an FPGA.
      + An example of this can be found in the Watchdog and TimerA modules, where it is implemented as following:

      +Clock implementation example
      +
    - -As an illustration, the following waveform shows the different clocks where the software running on the openMSP430 configures the BCSCTL1 and BCSCTL2 registers so that ACLK_EN and SMCLK_EN are respectively running at LFXT_CLK/2 and DCO_CLK/4.

    -Waveforms: Clocks - Jan 12. 2010 -

    +
      +
    • + ACLK / SMCLK: ACLK and MCLK are available through these two ports when targeting an ASIC.
       
    • +
    • + DCO_ENABLE / DCO_WKUP: ASIC specific signals controlling the fast clock generator for low power mode support (SCG0 bit in the status register).

    • +
    • + LFXT_ENABLE / LFXT_WKUP: +ASIC specific signals controlling the low frequency clock generator for +low power mode support (OSCOFF bit in the status register).
       
    • +
    • WKUP: +When activated, this signal allows a peripheral to restore all CPU +clocks (i.e. wakeup the cpu) prior IRQ generation.  Note that IRQs +MUST always be generated from the MCLK clock domain.
    • +
    +As an FPGA system illustration, the following waveform shows the different +clocks where the software running on the openMSP430 configures the +BCSCTL1 and BCSCTL2 registers so that ACLK_EN and SMCLK_EN are respectively running at LFXT_CLK/2 and DCO_CLK/4.

    +Waveforms: Clocks - Jan 12. 2010 +

    + - +

    3. Resets

    • RESET_N: this input port is typically connected to a board push button and is generally combined with the system power-on-reset. -

      +

    • - PUC_RST: the Power-Up-Clear signal is asynchronously set with the reset pin (RESET_N), the watchdog reset or the serial debug interface reset. In order to get clean timings, it is synchronously cleared with MCLK's falling edge. As a general rule, this signal should be used as the reset of the MCLK clock domain. -

      + PUC_RST: the Power-Up-Clear signal is asynchronously set with the reset pin (RESET_N), +the watchdog reset or the serial debug interface reset. In order to get +clean timings, it is synchronously cleared with MCLK. As +a general rule, this signal should be used as the reset of the MCLK clock domain. +

    -The following waveform illustrates this:

    -Waveforms: Resets - Jan 12. 2010 -

    +The following waveform illustrates this:

    +Waveforms: Resets - Jan 12. 2010 +

    - +

    4. Program Memory

    -Depending on the project needs, the program memory can be either implemented as a ROM or RAM.
    -
    -If a ROM is selected then the PMEM_DIN and PMEM_WEN ports won't be connected. In that case, the software debug capabilities are limited because the serial debug interface can only use hardware breakpoints in order to stop the program execution. In addition, updating the software will require a reprogramming of the FPGA.
    -
    -If the program memory is a RAM, the developer gets full flexibility regarding software debugging. The serial debug interface can be used to update the program memory and software breakpoints can be used.
    -

    +Depending on the project needs, the program memory can be either implemented as a ROM or RAM.
    +
    +If a ROM is selected then the PMEM_DIN and PMEM_WEN +ports won't be connected. In that case, the software debug capabilities +are limited because the serial debug interface can only use hardware +breakpoints in order to stop the program execution. In addition, +updating the software will require a reprogramming of the FPGA... or a new ROM mask for an ASIC.
    +
    +If the program memory is a RAM, the developer gets full flexibility +regarding software debugging. The serial debug interface can be used to +update the program memory and software breakpoints can be used.
    +

    That said, the protocol between the openMSP430 and the program memory is quite standard. Signal description goes as following:
    • PMEM_CEN: when this signal is active, the read/write access will be executed with the next MCLK rising edge. Note that this signal is LOW ACTIVE. -

      +

    • - PMEM_ADDR: Memory address of the 16 bit word which is going to be accessed.
      + PMEM_ADDR: Memory address of the 16 bit word which is going to be accessed.
      Note: in order to calculate the core logical address from the program memory physical address, the formula goes as following: LOGICAL@=2*PHYSICAL@+0x10000-PMEM_SIZE -

      +

    • PMEM_DOUT: the memory output word will be updated with every valid read/write access (i.e. PMEM_DOUT is not updated if PMEM_CEN=1). -

      +

    • - PMEM_WEN: this signal selects which byte should be written during a valid access. PMEM_WEN[0] will activate a write on the lower byte, PMEM_WEN[1] a write on the upper byte. Note that these signals are LOW ACTIVE. -

      + PMEM_WEN: +this signal selects which byte should be written during a valid access. +PMEM_WEN[0] will activate a write on the lower byte, PMEM_WEN[1] a +write on the upper byte. Note that these signals are LOW ACTIVE.

    • PMEM_DIN: the memory input word will be written with the valid write access according to the PMEM_WEN value. -

      +

    -The following waveform illustrates some read accesses of the program memory (write access are illustrated in the data memory section):

    -Waveforms: Program memory - Jan -

    +The following waveform illustrates some read accesses of the program +memory (write access are illustrated in the data memory section):

    +Waveforms: Program memory - Jan +

    - +

    5. Data Memory

    -The data memory is always implemented as a RAM.
    -
    -The protocol between the openMSP430 and the data memory is the same as the one of the program memory. Therefore, the signal description is the same: +The data memory is always implemented as a RAM.
    +
    +The protocol between the openMSP430 and the data memory is the same as +the one of the program memory. Therefore, the signal description is the +same:
    • DMEM_CEN: when this signal is active, the read/write access will be executed with the next MCLK rising edge. Note that this signal is LOW ACTIVE. -

      +

    • - DMEM_ADDR: Memory address of the 16 bit word which is going to be accessed.
      + DMEM_ADDR: Memory address of the 16 bit word which is going to be accessed.
      Note: in order to calculate the core logical address from the data memory physical address, the formula goes as following: LOGICAL@=2*PHYSICAL@+0x200 -

      +

    • DMEM_DOUT: the memory output word will be updated with every valid read/write access (i.e. DMEM_DOUT is not updated if DMEM_CEN=1). -

      +

    • - DMEM_WEN: this signal selects which byte should be written during a valid access. DMEM_WEN[0] will activate a write on the lower byte, DMEM_WEN[1] a write on the upper byte. Note that these signals are LOW ACTIVE. -

      + DMEM_WEN: +this signal selects which byte should be written during a valid access. +DMEM_WEN[0] will activate a write on the lower byte, DMEM_WEN[1] a +write on the upper byte. Note that these signals are LOW ACTIVE.

    • DMEM_DIN: the memory input word will be written with the valid write access according to the DMEM_WEN value. -

      +

    -The following waveform illustrates some read/write access to the data memory:

    -Waveforms: Data memory - Jan 12. -

    +The following waveform illustrates some read/write access to the data memory:

    +Waveforms: Data memory - Jan 12. +

    - +

    6. Peripherals

    - -The protocol between the openMSP430 core and its peripherals is the exactly same as the one with the data and program memories in regards to write access and differs slightly for read access.
    -
    -On the connectivity side, the specificity is that the read data bus of all peripherals should be ORed together before being connected to the core, as showed in the diagram of the Overview section.
    -From the logical point of view, during a read access, each peripheral outputs the combinatorial value of its read mux and returns 0 if it doesn't contain the addressed register. On the waveforms, this translates by seeing the register value on PER_DOUT while PER_EN is valid and not one clock cycle afterwards as it is the case with the program and data memories.
    -In any case, it is recommended to use the templates provided with the core in order to develop your own custom peripherals.
    +The protocol between the openMSP430 core and its peripherals is the +exactly same as the one with the data and program memories in regard +to write access and differs slightly for read access.
    +
    +On the connectivity side, the specificity is that the read data bus of +all peripherals should be ORed together before being connected to the +core, as showed in the diagram of the Overview section.
    +From the logical point of view, during a read access, each peripheral +outputs the combinatorial value of its read mux and returns 0 if it +doesn't contain the addressed register. On the waveforms, this +translates by seeing the register value on PER_DOUT while PER_EN is valid and not one clock cycle afterward as it is the case with the program and data memories.
    +In any case, it is recommended to use the templates provided with the core in order to develop your own custom peripherals.
    The signal description therefore goes as following:
    • PER_EN: when this signal is active, read access are executed during the current MCLK cycle while write access will be executed with the next MCLK rising edge. Note that this signal is HIGH ACTIVE. -

      +

    • - PER_ADDR: peripheral register address of the 16 bit word which is currently accessed. It is to be noted that a 14 bit address will always be provided from the openMSP430 to the peripheral in order to accommodate the biggest possible PER_SIZE Verilog configuration option (i.e. 32kB as opposed to 512B by default).
      + PER_ADDR: +peripheral register address of the 16 bit word which is currently +accessed. It is to be noted that a 14 bit address will always be +provided from the openMSP430 to the peripheral in order to accommodate +the biggest possible PER_SIZE Verilog configuration option (i.e. 32kB +as opposed to 512B by default).
      Note: in order to calculate the core logical address from the peripheral register physical address, the formula goes as following: LOGICAL@=2*PHYSICAL@ -

      +

    • PER_DOUT: the peripheral output word will be updated with every valid read/write access, it will be set to 0 otherwise. -

      +

    • - PER_WE: this signal selects which byte should be written during a valid access. PER_WE[0] will activate a write on the lower byte, PER_WE[1] a write on the upper byte. Note that these signals are HIGH ACTIVE. -

      + PER_WE: +this signal selects which byte should be written during a valid access. +PER_WE[0] will activate a write on the lower byte, PER_WE[1] a write on +the upper byte. Note that these signals are HIGH ACTIVE.

    • PER_DIN: the peripheral input word will be written with the valid write access according to the PER_WEN value. -

      +

    -The following waveform illustrates some read/write access to the peripheral registers:

    -Waveforms: Peripherals - Jan 12. -

    +The following waveform illustrates some read/write access to the peripheral registers:

    +Waveforms: Peripherals - Jan 12. +

    - -

    7. Interrupts

    - -As with the original MSP430, the interrupt priorities of the openMSP430 are fixed in hardware accordingly to the connectivity of the NMI and IRQ ports.
    -If two interrupts are pending simultaneously, the higher priority interrupt will be serviced first.
    -The following table summarize this:

    + +

    7. Interrupts

    As with the original MSP430, the interrupt +priorities of the openMSP430 are fixed in hardware accordingly to the +connectivity of the NMI and IRQ ports.
    +If two interrupts are pending simultaneously, the higher priority interrupt will be serviced first.
    +The following table summarize this:

    - + @@ -484,54 +691,64 @@ -
      Interrupt Port     Vector address     Priority  0xFFE0 0 (lowest)
    -

    + +

    The signal description goes as following:
    • - NMI: The Non-Maskable Interrupt has higher priority than other IRQs and is masked by the NMIIE bit instead of GIE.
      -It is internally synchronized to the MCLK domain and can therefore be connected to any asynchronous signal of the chip (which could for example be a pin of the FPGA). If unused, this signal should be connected to 0. -

      + NMI: The Non-Maskable Interrupt has higher priority than other IRQs and is masked by the NMIIE bit instead of GIE.
      +It is internally synchronized to the MCLK +domain and can therefore be connected to any asynchronous signal of the +chip (which could for example be a pin of the FPGA). If unused, this +signal should be connected to 0.

    • - IRQ: The standard interrupts can be connected to any signal coming from the MCLK domain (typically a peripheral). Priorities can be chosen by selecting the proper bit of the IRQ bus as shown in the table above. Unused interrupts should be connected to 0.
      -Note: IRQ[10] is internally connected to the Watchdog interrupt. If this bit is also used by an external peripheral, they will both share the same interrupt vector. -

      + IRQ: The standard interrupts can be connected to any signal coming from the MCLK domain (typically a peripheral). Priorities can be chosen by selecting the proper bit of the IRQ bus as shown in the table above. Unused interrupts should be connected to 0.
      +Note: IRQ[10] is internally connected to the Watchdog +interrupt. If this bit is also used by an external peripheral, they +will both share the same interrupt vector.

    • - IRQ_ACC: Whenever an interrupt request is serviced, some peripheral automatically clear their pending flag in hardware. In order to do so, the IRQ_ACC bus can be used by using the bit matching the corresponding IRQ bit. An example of this is shown in the implementation of the TACCR0 Timer A interrupt. -

      + IRQ_ACC: +Whenever an interrupt request is serviced, some peripheral +automatically clear their pending flag in hardware. In order to do so, +the IRQ_ACC bus can be used by using the bit matching the corresponding IRQ bit. An example of this is shown in the implementation of the TACCR0 Timer A interrupt. +

    -The following waveform illustrates a TAIV interrupt issued by the Timer-A, which is connected to IRQ[8] :

    -Waveforms: Interrupts - Jan 12. +The following waveform illustrates a TAIV interrupt issued by the Timer-A, which is connected to IRQ[8] :

    +Waveforms: Interrupts - Jan 12. -

    +

    - +

    8. Serial Debug Interface

    - -The serial debug interface module provides a two-wires communication bus for remote debugging and an additional freeze signal which might be useful for some peripherals.
    -
    +The serial debug interface module provides a two-wires communication +bus for remote debugging and an additional freeze signal which might be +useful for some peripherals (typically timers).
    +
    • - DBG_EN: this signal allows the user to enable or disable the serial debug interface without interfering with the CPU execution. It is to be noted that when disabled (i.e. DBG_EN=0), the debug interface is held into reset. -

      + DBG_EN: this signal +allows the user to enable or disable the serial debug interface without +interfering with the CPU execution. It is to be noted that when +disabled (i.e. DBG_EN=0), the debug interface is held into reset.

    • - DBG_FREEZE: this signal will be set whenever the debug interface stops the CPU (and if the FRZ_BRK_EN field of the CPU_CTL debug register is set). As its name implies, the purpose of DBG_FREEZE is to freeze a peripheral whenever the CPU is stopped by the software debugger.
      -For example, it is used by the Watchdog timer in order to stop its free-running counter. This prevents the CPU from being reseted by the watchdog every times the user stops the CPU during a debugging session. -

      + DBG_FREEZE: this signal will be set whenever the debug interface stops the CPU (and if the FRZ_BRK_EN field of the CPU_CTL debug register is set). As its name implies, the purpose of DBG_FREEZE is to freeze a peripheral whenever the CPU is stopped by the software debugger.
      +For example, it is used by the Watchdog timer in order to stop its +free-running counter. This prevents the CPU from being reseted by the +watchdog every times the user stops the CPU during a debugging session. +

    • DBG_UART_TXD / DBG_UART_RXD: these signals are typically connected to an RS-232 transceiver and will allow a PC to communicate with the openMSP430 core. -

      +

    -The following waveform shows some communication traffic on the serial bus :

    -Waveforms: SDI - Jan 12. 2010 -

    - - \ No newline at end of file +The following waveform shows some communication traffic on the serial bus :

    +Waveforms: SDI - Jan 12. 2010 +

    + \ No newline at end of file
    /openmsp430/trunk/doc/html/asic_implementation.html
    0,0 → 1,998
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><head>
    <title>openMSP430 ASIC Implementation</title>
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
     
    </head><body>
    <h3>Table of content</h3>
     
    <ul>
     
    <li><a href="#1_Introduction">1. Introduction</a></li>
    <li><a href="#2_RTL_Configuration"> 2. RTL Configuration</a>
    <ul>
    <li><a href="#2_1_1_Low_Frequency_Clock_Domain"> 2.1 Basic Clock
    Module</a></li>
    <ul>
    <li><a href="#2_1_1_Low_Frequency_Clock_Domain"> 2.1.1
    Low-frequency clock domain</a></li>
    </ul>
    <ul>
    <li><a href="#2_1_2_Clock_Muxes"> 2.1.2 Clock muxes</a></li>
    </ul>
    <ul>
    <li><a href="#2_1_3_Clock_Dividers"> 2.1.3 Clock dividers</a></li>
    </ul>
    <ul>
    <li><a href="#2_1_4_Low_Power_Modes">2.1.4 Low-Power modes</a></li>
    <ul>
    <li><a href="#2_1_4_1_Internal_clocks">2.1.4.1 Internal
    clocks ( MCLK / SMCLK )</a><br>
    </li>
    <li><a href="#2_1_4_2_Clock_oscillators">2.1.4.2 Clock
    oscillators ( DCO_CLK / LFXT_CLK )</a><br>
    </li>
    </ul>
    </ul>
    <li><a href="#2_2_Other_configuration_options">2.2 Other
    configuration options</a><br>
    </li>
    <ul>
    <li><a href="#2_2_1_Fine_Grained_Clock_Gating"> 2.2.1 Fine
    grained clock gating</a></li>
    </ul>
    <ul>
    <li><a href="#2_2_2_Watchdog_Clock_Mux"> 2.2.2 Watchdog clock
    mux</a></li>
    </ul>
    </ul>
    </li>
    <li><a href="#3._DFT_Considerations"> 3. DFT&nbsp; considerations</a></li>
    <ul>
    <li><a href="#3_1_Resets">3.1 Resets</a></li>
    <li><a href="#3_2_Clock_Gates">3.2 Clock Gates</a></li>
    <li><a href="#3_3_Clock_Muxes">3.3 Clock Muxes</a></li>
    <li><a href="#3_4_Coverage">3.4 Coverage</a></li>
    </ul>
    <li><a href="#4_Sensitive_Modules"> 4. Sensitive modules</a><br>
    <ul>
    <li><a href="#4_1_AND_Gate"> 4.1 AND Gate ( <span style="font-style: italic;">omsp_and_gate.v</span> )<br>
    </a></li>
    <li><a href="#4_2_Clock_Gate">4.2 Clock Gate ( <span style="font-style: italic;">omsp_clock_gate.v</span> )</a></li>
    <li><a href="#4_3_Clock_Mux">4.3 Clock Mux ( <span style="font-style: italic;">omsp_clock_mux.v</span> )</a></li>
    <li><a href="#4_4_Scan_Mux">4.4 Scan Mux ( <span style="font-style: italic;">omsp_scan_mux.v</span> )</a></li>
    <li><a href="#4_5_Sync_Cell">4.5 Sync Cell ( <span style="font-style: italic;">omsp_sync_cell.v</span> )</a></li>
    <li><a href="#4_6_Sync_Reset">4.6 Sync Reset ( <span style="font-style: italic;">omsp_sync_reset.v</span> )</a></li>
    <li><a href="#4_7_Wakeup_Cell">4.7 Wakeup Cell
    ( <span style="font-style: italic;">omsp_wakeup_cell.v</span> )</a></li>
    </ul>
    </li>
    </ul>
     
    <a name="1_Introduction"></a>
    <h1>1. Introduction</h1>
     
    This section covers specific points of the openMSP430 ASIC
    implementation, in particular:<br>
     
    <ul>
     
    <ul>
    <ul>
    <li>The ASIC specific RTL configuration options.</li>
    <li>Some DFT
    considerations.</li>
    <li>A description of each ASIC sensitive module.<br>
    </li>
    </ul>
    </ul>
    </ul>
     
    Keep in mind that as no exotic design technique were used in the
    openMSP430,
    following a standard implementation flow from
    Synthesis to P&amp;R is the best way to go.<br>
     
    &nbsp;<br>
     
    <br>
     
    <a name="2_RTL_Configuration"></a>
    <h1>2. RTL Configuration</h1>
     
    Whenever the "<span style="font-weight: bold; font-style: italic;">`define
    ASIC</span>" statement of the <a style="font-style: italic;" href="http://opencores.org/project,openmsp430,core#2.1.3.3%20Expert%20System%20Configuration">Expert
    System Configuration</a> section is uncommented, all ASIC specific
    configuration options are enabled. <br>
     
    <a name="2_1_Basic_Clock_Module"></a>
    <h2>2.1 Basic Clock Module</h2>
     
    In its ASIC configuration, the Basic clock module of the openMSP430 can
    support <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-converted-space">&nbsp;</span>up to all features
    described
    in the<span class="Apple-converted-space">&nbsp;</span><a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's
    Guide</a><span class="Apple-converted-space">&nbsp;</span>(Chapter 4).<br>
    All these options are highlighted in the following diagram and
    discussed below:<br>
    <br>
    </span>
    <div style="text-align: center;"><img alt="Clock Module ASIC configuration" src="http://opencores.org/usercontent,img,1321995017" width="80%"><br>
    </div>
     
    <a name="2_1_1_Low_Frequency_Clock_Domain"></a>
    <h3>2.1.1 Low-Frequency Clock Domain</h3>
     
    The LFXT clock domain can be enabled thanks to the following
    configuration
    option:<br>
     
    <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-converted-space"> </span></span><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-converted-space"> </span></span><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-converted-space"> </span></span><br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody>
    <tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td> <code>//============================================================================<br>
    // LFXT CLOCK DOMAIN<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the lfxt_clk<br>
    // clock domain.<br>
    // When commented out, the whole chip is clocked with dco_clk.<br>
    //-------------------------------------------------------<br>
    `define LFXT_DOMAIN<br>
    <br>
    </code></td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <span style="font-style: italic; font-weight: bold; text-decoration: underline;">Note
    1:</span> When commented-out:<br>
     
    <ul>
     
    <ul>
    <ul>
    <li><span style="font-style: italic;">ACLK</span> is running on <span style="font-style: italic;">DCO_CLK</span></li>
    <li>MCLK_MUX and SMCLK_MUX options are not supported</li>
    <li>OSCOFF_EN low power mode is not supported<span style="font-style: italic;"><br>
    </span></li>
    </ul>
    </ul>
    </ul>
     
    <span style="font-weight: bold; font-style: italic; text-decoration: underline;">Note
    2:</span> Unlike its name suggest, there is no frequency limitation on <span style="font-style: italic;">LFXT_CLK</span>. The name was simply kept
    in order to be consistent with the original MSP430 documentation, where
    <span style="font-style: italic;">LFXT_CLK</span> is
    typically connected to a 32 kHz crystal oscillator.<br>
     
    <br>
     
    <a name="2_1_2_Clock_Muxes"></a><br>
     
    <h3>2.1.2 Clock Muxes</h3>
     
    The <span style="font-style: italic;">MCLK</span> and <span style="font-style: italic;">SMCLK</span> clock muxes can be enabled or
    disabled with the following options:<br>
     
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody>
    <tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td> <code>//============================================================================<br>
    // CLOCK MUXES<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // MCLK: Clock Mux<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // MCLK clock MUX allowing the selection between<br>
    // DCO_CLK and LFXT_CLK with the BCSCTL2.SELMx register.<br>
    // When commented, DCO_CLK is selected.<br>
    //-------------------------------------------------------<br>
    `define MCLK_MUX<br>
    <br>
    //-------------------------------------------------------<br>
    // SMCLK: Clock Mux<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // SMCLK clock MUX allowing the selection between<br>
    // DCO_CLK and LFXT_CLK with the BCSCTL2.SELS register.<br>
    // When commented, DCO_CLK is selected.<br>
    //-------------------------------------------------------<br>
    `define SMCLK_MUX<br>
    <br>
    </code></td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <span style="font-style: italic; font-weight: bold; text-decoration: underline;">Note
    1:</span> When a MUX is excluded, the concerned clock (<span style="font-style: italic;">MCLK</span> and/or <span style="font-style: italic;">SMCLK) is</span> running with <span style="font-style: italic;">DCO_CLK</span>.<br>
     
    <br>
     
    <span style="font-weight: bold; font-style: italic; text-decoration: underline;">Note
    2:</span> If a MUX is included, the implementation and sign-off tools
    (in particular CTS and STA) must be aware
    that a new clock needs to be defined on the MUX output.<br>
     
    <br>
     
    <br>
     
    <a name="2_1_3_Clock_Dividers"></a>
    <h3>2.1.3 Clock Dividers</h3>
     
    The <span style="font-style: italic;">MCLK</span>, <span style="font-style: italic;">SMCLK</span> and ACLK clock dividers can
    be enabled or disabled with the following options:<br>
     
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody>
    <tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td> <code>//============================================================================<br>
    // CLOCK DIVIDERS<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // MCLK: Clock divider<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // MCLK clock divider (/1/2/4/8)<br>
    //-------------------------------------------------------<br>
    `define MCLK_DIVIDER<br>
    <br>
    //-------------------------------------------------------<br>
    // SMCLK: Clock divider (/1/2/4/8)<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // SMCLK clock divider<br>
    //-------------------------------------------------------<br>
    `define SMCLK_DIVIDER<br>
    <br>
    //-------------------------------------------------------<br>
    // ACLK: Clock divider (/1/2/4/8)<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // ACLK clock divider<br>
    //-------------------------------------------------------<br>
    `define ACLK_DIVIDER<br>
    <br>
    </code></td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    The clock dividers instantiate a clock gate on the clock tree and are
    implemented as following:<br>
     
    <br>
     
    <div style="text-align: center;"><img alt="Clock Divider" src="http://opencores.org/usercontent,img,1322310000" width="50%"><br>
    </div>
     
    <br>
     
    <a name="2_1_4_Low_Power_Modes"></a>
    <h3>2.1.4 Low-Power Modes</h3>
     
    <a name="2_1_4_1_Internal_clocks"><br>
    </a><span style="font-weight: bold;">2.1.4.1 Internal clocks ( MCLK /
    SMCLK )</span><br>
     
    <br>
     
    Two bit fields in the status register (R2) allow to
    control the system clocks:<br>
     
    <ul>
     
    <ul>
    <ul>
    <li><span style="font-weight: bold;">CPUOFF</span> allows to
    switch-off <span style="font-style: italic;">MCLK</span></li>
    <li><span style="font-weight: bold;">SCG1</span> allows to
    switch-off <span style="font-style: italic;">SMCLK</span><br>
    </li>
    </ul>
    </ul>
    </ul>
     
    These control bits are supported by the openMSP430 and can be
    included in the design with the following defines:<br>
     
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody>
    <tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td><code>//============================================================================<br>
    // LOW POWER MODES<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // LOW POWER MODE: CPUOFF<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will include the<br>
    // clock gate allowing to switch off MCLK in<br>
    // all low power modes: LPM0, LPM1, LPM2, LPM3, LPM4<br>
    //-------------------------------------------------------<br>
    `define CPUOFF_EN<br>
    <br>
    //-------------------------------------------------------<br>
    // LOW POWER MODE: SCG1<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will include the<br>
    // clock gate allowing to switch off SMCLK in<br>
    // the following low power modes: LPM2, LPM3, LPM4<br>
    //-------------------------------------------------------<br>
    `define SCG1_EN<br>
    <br>
    </code></td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    In order to keep the clock tree as flat as possible, the CPUOFF and
    SCG1 low power options share the same clock gate with the clock divider:<br>
     
    <br>
     
    <div style="text-align: center;"><img alt="Clock Divider and low power" src="http://opencores.org/usercontent,img,1322310023" width="50%"><br>
    </div>
     
    <a name="2_1_4_2_Clock_oscillators"><br>
    </a><span style="font-weight: bold;">2.1.4.2 Clock oscillators (
    DCO_CLK / LFXT_CLK )</span><br>
     
    <br>
     
    There are two bit fields in the status register (R2) allowing to
    control the clock oscillators:<br>
     
    <ul>
     
    <ul>
    <ul>
    <li><span style="font-weight: bold;">SCG0</span> allows to
    switch-off the DCO oscillator<span style="font-style: italic;"></span></li>
    <li><span style="font-weight: bold;">OSCOFF</span> allows to
    switch-off the LFXT oscillator<span style="font-style: italic;"></span><br>
    </li>
    </ul>
    </ul>
    </ul>
     
    These control bits are supported by the openMSP430 and can be
    included in the design with the following defines:<br>
     
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody>
    <tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td><code>//============================================================================<br>
    // LOW POWER MODES<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // LOW POWER MODE: SCG0<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // DCO_ENABLE/WKUP port control (always 1 when commented).<br>
    // This allows to switch off the DCO oscillator in the<br>
    // following low power modes: LPM1, LPM3, LPM4<br>
    //-------------------------------------------------------<br>
    `define SCG0_EN<br>
    <br>
    //-------------------------------------------------------<br>
    // LOW POWER MODE: OSCOFF<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will include the<br>
    // LFXT_CLK clock gate and enable the LFXT_ENABLE/WKUP<br>
    // port control (always 1 when commented).<br>
    // This allows to switch off the low frequency oscillator<br>
    // in the following low power modes: LPM4<br>
    //-------------------------------------------------------<br>
    `define OSCOFF_EN<br>
    <br>
    </code></td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    The control logic of both DCO and LFXT oscillators is identical.<br>
     
    <br>
     
    When disabled, the <span style="font-weight: bold;">*_WKUP</span>
    signal
    is used to asynchronously wake up the oscillator. Once the oscillator
    is awake (and therefore a clock is available), the <span style="font-weight: bold;">*_ENABLE</span> signal will take over and
    synchronously keep the oscillator enabled until the CPU clears the SCG0
    or OSCOFF bit again.<br>
     
    <br>
     
    The following two waveforms illustrate the CPU entering the LPM1 mode,
    and in particular the DCO oscillator being switched-off:<br>
     
    <ul>
     
    <li>Entering LPM1 through a <span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 153);">BIS
    #N, R2</span>
    instruction:</li>
    </ul>
     
    <img alt="Entering LPM1 with BIS" src="http://opencores.org/usercontent,img,1322600748" width="100%"><br>
     
    <ul>
     
    <li>Entering LPM1 through a <span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 153);">RETI</span>
    instruction:<br>
    </li>
    </ul>
     
    <img alt="Entering LPM1 with RETI" src="http://opencores.org/usercontent,img,1322600763" width="100%"><br>
     
    <br>
     
    <span style="font-weight: bold; text-decoration: underline;">Note:</span>
    the DCO oscillator is enabled until the BIS and RETI instruction are
    fully executed (i.e. until the CPU state machines reach their IDLE
    state).<br>
     
    <br>
     
    <br>
     
    At last, this waveform shows the CPU going out of LPM1 mode and in
    particular the DCO oscillator wake-up sequence:<br>
     
    <br>
     
    <img alt="Wakeup from LPM1" src="http://opencores.org/usercontent,img,1322602185" width="100%"><br>
     
    <br>
     
    In order to wake-up the CPU from ANY low power mode, the system <span style="font-weight: bold;">MUST ALWAYS</span> go through the following
    chain of events (as illustrated in the previous waveform):<br>
     
    <ul>
     
    <ul>
    <ol>
    <li style="color: red;">&nbsp;<span style="color: black;">The
    peripheral (for example a timer) asserts the </span><span style="font-weight: bold; font-style: italic; color: black;">WKUP</span><span style="color: black;"> input of the openMSP430 in order to
    asynchronously restore the clocks. At this stage, </span><span style="font-weight: bold; font-style: italic; color: black;">DCO_WKUP</span><span style="color: black;"> is activated and </span><span style="font-weight: bold; font-style: italic; color: black;">DCO_ENABLE</span><span style="color: black;"> is still cleared.</span></li>
    <li style="color: red;">&nbsp;<span style="color: black;">Once
    MCLK is available, the peripheral generates a synchronous IRQ signal in
    order to re-activate the CPU state machines.</span></li>
    <li style="color: red;">&nbsp;<span style="color: black;">The CPU
    state machines activated, </span><span style="font-weight: bold; font-style: italic; color: black;">DCO_ENABLE</span><span style="color: black;"> is synchronously set.</span><br>
    </li>
    <li style="color: red;">&nbsp;<span style="color: black;">When
    the global interrupt enable flag (GIE) is cleared, <span style="font-weight: bold; font-style: italic;">DCO_WKUP</span> is
    released two clock cycles later (i.e. same behavior as a reset
    synchronizer).<br>
    <span style="font-weight: bold; text-decoration: underline;">Important
    note:</span> the peripheral should release the </span><span style="font-weight: bold; font-style: italic; color: black;">WKUP</span><span style="color: black;"> input when its interrupt pending flag is cleared</span><span style="font-weight: bold; font-style: italic; color: black;"></span><span style="color: black;">. Otherwise the <span style="font-weight: bold; font-style: italic;">DCO_WKUP</span> signal
    will be set again as soon as the GIE flag is restored by the RETI
    instruction... which is probably not the intended behavior :-P<br>
    </span></li>
    <li style="color: red;"><span style="color: black;">The DCO
    oscillator is now enabled until SCG0 is set again.</span><br>
    </li>
    </ol>
    </ul>
    </ul>
     
    <br>
     
    <a name="2_2_Other_configuration_options"></a>
    <h2>2.2 Other configuration options</h2>
     
    <a name="2_2_1_Fine_Grained_Clock_Gating"></a>
    <h3>2.2.1 Fine Grained Clock Gating</h3>
     
    Nowadays, all synthesis tools support automatic (fine grained) clock
    gating insertion.<br>
     
    However, as some design houses still prefer to have the clock gates
    directly instantiated in the RTL, there is the possibility to include
    the <span style="font-style: italic;">'manual</span>' fine grained
    clock gates in the design with the following define:<br>
     
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody>
    <tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td><code>//============================================================================<br>
    // FINE GRAINED CLOCK GATING<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the fine<br>
    // grained clock gating of all registers in the core.<br>
    //-------------------------------------------------------<br>
    `define CLOCK_GATING<br>
    <br>
    </code></td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <br>
     
    <a name="2_2_2_Watchdog_Clock_Mux"></a>
    <h3>2.2.2 Watchdog Clock Mux</h3>
     
    <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;">The
    watchdog clock <span class="Apple-converted-space"><span style="font-style: italic;"></span></span><span style="font-style: italic;"></span><span class="Apple-converted-space"></span><span class="Apple-converted-space"></span><span style="font-style: italic;"></span><span class="Apple-converted-space"></span>mux allows to select between <span style="font-style: italic;">ACLK</span> and <span style="font-style: italic;">SMCLK</span>. It can be enabled or
    disabled with the <span style="font-weight: bold;">WATCHDOG_MUX</span>
    define.<br>
    </span>When excluded, the additional <span style="font-weight: bold;">WATCHDOG_NOMUX_ACLK</span>&nbsp;
    option allows the user to decide if the watchdog clock should be
    hard-wired to <span style="font-style: italic;">ACLK</span> (if
    uncommented) or <span style="font-style: italic;">SMCLK</span> (if
    commented-out)<br>
     
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody>
    <tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td> <code>//============================================================================<br>
    // CLOCK MUXES<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // WATCHDOG: Clock Mux<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // Watchdog clock MUX allowing the selection between<br>
    // ACLK and SMCLK with the WDTCTL.WDTSSEL register.<br>
    // When commented out, ACLK is selected if the<br>
    // WATCHDOG_NOMUX_ACLK define is uncommented, SMCLK is<br>
    // selected otherwise.<br>
    //-------------------------------------------------------<br>
    `define WATCHDOG_MUX<br>
    //`define WATCHDOG_NOMUX_ACLK<br>
    <br>
    </code></td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <a name="3_DFT_Considerations"></a><br>
     
    <h1><a name="3._DFT_Considerations"></a>3. DFT Considerations</h1>
     
    The openMSP430 is designed to be fully scan friendly. During
    production, the ATE controls the core through the <span style="font-weight: bold; font-style: italic;">scan_mode</span> and <span style="font-weight: bold; font-style: italic;">scan_enable</span>
    signals. The <span style="font-weight: bold; font-style: italic;">scan_mode</span>
    port is always asserted during scan testing and is used to switch
    between functional and scan mode.<br>
     
    <a name="3_1_Resets"></a><br>
     
    <h2>3.1 Resets</h2>
     
    When in scan mode (i.e. <span style="font-weight: bold; font-style: italic;">scan_mode</span> input
    port is set), <span style="font-weight: bold;">ALL</span> internal
    resets of the openMSP430 are connected the <span style="font-style: italic; font-weight: bold;">reset_n</span> input
    port.<br>
     
    Taking the <span style="font-weight: bold; font-style: italic;">POR</span>
    generation as an example, it is implemented using the <span style="font-weight: bold;">omsp_scan_mux</span> module as following:<br>
     
    <br>
     
    <div style="text-align: center;"><img alt="DFT Reset" src="http://opencores.org/usercontent,img,1330808995" width="50%"><br>
    </div>
     
    <a name="3_2_Clock_Gates"></a>
    <h2>3.2 Clock Gates<br>
    </h2>
     
    When in scan mode (i.e. <span style="font-weight: bold; font-style: italic;">scan_mode</span> input
    port is set), <span style="font-weight: bold;">ALL</span> clock gates
    instantiated in the design must<span style="font-weight: bold;"> </span>be
    enabled during scan shifting.
    This is can be achieved by setting the <span style="font-weight: bold; font-style: italic;">scan_enable</span>
    input port during the shift phase.<br>
     
    On the other hand, during the capture phase, the <span style="font-weight: bold; font-style: italic;">scan_enable</span> port
    must be cleared in order to restore the functional behavior of the
    clock gate.<br>
     
    <br>
     
    This feature is implemented in the <span style="font-weight: bold;">omsp_clock_gate</span>
    module as following:<br>
     
    <br>
     
    <div style="text-align: center;"><img alt="DFT Clock Gate" src="http://opencores.org/usercontent,img,1322775594" width="50%"><br>
    </div>
     
    <a name="3_3_Clock_Muxes"></a>
    <h2>3.3 Clock Muxes</h2>
     
    When in scan mode (i.e. <span style="font-weight: bold; font-style: italic;">scan_mode</span> input
    port is set), the <span style="font-weight: bold; font-style: italic;">MCLK</span>
    and <span style="font-weight: bold; font-style: italic;">SMCLK</span>
    clock muxes are both running on <span style="font-weight: bold; font-style: italic;">DCO_CLK</span>. The
    watchdog mux is running <span style="font-weight: bold; font-style: italic;">SMCLK</span> (i.e.
    DCO_CLK).<br>
     
    <br>
     
    This feature is implemented in the <span style="font-weight: bold;">omsp_clock_mux</span>
    module as following:<br>
     
    <br>
     
    <div style="text-align: center;"><img alt="DFT Clock MUX" src="http://opencores.org/usercontent,img,1322775611" width="50%"><br>
    </div>
     
    <br>
     
    <span style="font-weight: bold; text-decoration: underline;">Note:</span>
    if the LFXT clock domain is enabled, the <span style="font-weight: bold; font-style: italic;">LFXT_CLK</span> input
    port should also be connected to the scan clock when in scan mode.<br>
     
    <a name="3_4_Coverage"></a>
    <h2>3.4 Coverage</h2>
     
    After synthesizing the openMSP430 in its maximum configuration (in
    particular with ALL clock domains available and ALL clock muxes
    included), the core reaches <span style="font-weight: bold;">99.7%</span>
    stuck-at fault coverage:<br>
     
    <br>
     
    <div style="text-align: center;"><img alt="Tetramax" src="http://opencores.org/usercontent,img,1331154317" width="50%"><br>
    </div>
     
    <br>
     
    <br>
     
    <a name="4_Sensitive_Modules"></a><br>
     
    <h1>4. Sensitive Modules</h1>
     
    ALL modules discussed in this section have
    a simple and well defined functionality but nonetheless lay on
    sensitive parts of the design (clock tree, wake-up path, ...).<br>
     
    <br>
     
    In the industry, it is common place for companies to have policies
    recommending designers to use textbook structures or specific
    standard cells when implementing circuits considered as 'sensitive'.<br>
     
    This section will hopefully help to quickly identify these
    'sensitive' circuits and adapt them to your requirements if necessary.<br>
     
    <br>
     
    <a name="4_1_AND_Gate"></a>
    <h2>4.1 AND Gate (<span style="font-style: italic;"> omsp_and_gate.v</span>
    )<br>
    </h2>
     
    This module implements a simple AND2 gate and is instantiated several
    times on the wake-up paths in order to ensure a glitch free generation
    of the wake-up signals. The idea behind this block is to prevent the
    synthesis tool from optimizing the combinatorial wake-up path and
    potentially
    generate a glitchy logic.<br>
     
    <br>
     
    There are three different ways to handle this block:<br>
     
    <ol>
     
    <li>Do nothing<br>
    </li>
    <li>Modify the RTL by directly instantiating an AND2 cell from the
    target library and applying a <span style="font-weight: bold; font-style: italic;">don't touch</span> or <span style="font-weight: bold; font-style: italic;">size only</span>
    attribute on it before proceeding to the synthesis compile step<br>
    </li>
    <li>Keep
    the RTL unchanged and when running synthesis, first compile this module
    separately before going to the top down compile (don't forget the <span style="font-weight: bold; font-style: italic;">don't touch</span> or <span style="font-weight: bold; font-style: italic;">size only</span>
    attribute)<br>
    </li>
    </ol>
     
    Note that the first option is actually acceptable because in low power
    mode,
    there are no clocks available, which means no glitch... However, in
    active mode, the wake-up line could see a lot of glitches, which is
    functionally not a problem (since the core is awake anyway) but could
    be
    considered as not really elegant...<br>
     
    <br>
     
    <a name="4_2_Clock_Gate"></a>
    <h2>4.2 Clock Gate (<span style="font-style: italic;"> omsp_clock_gate.v</span>
    )<br>
    </h2>
     
    Almost every company has a different policy
    for handling clock gates. Therefore, this module is probably the most
    likely to be modified. <br>
     
    <br>
     
    So here are the facts:<br>
     
    <ul>
     
    <li>There
    are only rising edge flip-flop in the design<b><sup><font color="#ff0000">1</font></sup></b><br>
    <span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial,Verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255);"><b style="margin: 0px; padding: 0px;">→</b></span>&nbsp; as a consequence
    clock gates can indifferently park the clock high or low without
    affecting functionality.<br>
    <br>
    </li>
    <li>The enable signal of ALL clock gates in the openMSP430 are
    generated with the rising edge of the clock<br>
    <span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial,Verdana,sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255);"><b style="margin: 0px; padding: 0px;">→</b></span>&nbsp; this leaves the
    door open for both LATCH and NAND2 based clock gates.<br>
    </li>
    </ul>
     
    <small style="font-style: italic;"><b><sup><font color="#ff0000">1</font></sup></b><span style="color: red; font-weight: bold;"></span>: beside for the
    DCO_ENABLE
    and LFXT_ENABLE signals and the clock MUXes. However, these can be
    safely ignored</small><br>
     
    <br>
     
    As a consequence, you can feel free to use:<br>
     
    <ul>
     
    <li>A LATCH based clock gate. For example:<br>
    <div style="text-align: center;"><img alt="Clock Gate Latch" src="http://opencores.org/usercontent,img,1328475744" width="50%"><br>
    </div>
    </li>
    <li>Or a NAND2 based clock gate:<br>
    </li>
    </ul>
     
    <div style="text-align: center;"><img alt="Clock Gate NAND2" src="http://opencores.org/usercontent,img,1328475770" width="30%"><br>
    </div>
     
    <br>
     
    <a name="4_3_Clock_Mux"></a>
    <h2>4.3 Clock Mux ( <span style="font-style: italic;">omsp_clock_mux.v</span>
    )<br>
    </h2>
     
    The clock muxes of the openMSP430 are implemented as following:<br>
     
    <div style="text-align: center;"><img alt="Clock Mux" src="http://opencores.org/usercontent,img,1330032914" width="70%"><br>
    </div>
     
    <span style="font-weight: bold; text-decoration: underline;"></span>In
    order to make this&nbsp; implementation 100% bullet proof, the RTL
    could be modified by manually instantiating the NAND2 and AND2
    cells directly from the target library (with the associated <span style="font-weight: bold; font-style: italic;">don't touch</span> or <span style="font-weight: bold; font-style: italic;">size only</span>
    attributes of course).<br>
     
    However, if you decide to compile this module as it is, the synthesis
    tool should normally be smart enough and not mess it up (but PLEASE
    PLEASE PLEASE double check manually the resulting
    gate netlist).<br>
     
    <br>
     
    <a name="4_4_Scan_Mux"></a>
    <h2>4.4 Scan Mux ( <span style="font-style: italic;">omsp_scan_mux.v</span>
    )<br>
    </h2>
     
    As illustrated in the section <a href="asic_implementation.html#3_1_Resets">3.1</a> , the scan mux cell
    allows <span style="font-weight: bold;">ALL</span> internal resets to
    be controllable with the <span style="font-style: italic; font-weight: bold;">reset_n</span> input
    port in scan mode.<br>
     
    In addition, the scan mux is also used by the <span style="font-style: italic;">omsp_wakeup_cell</span> (see section <a href="asic_implementation.html#4_7_Wakeup_Cell">4.7<span style="font-style: italic;"></span></a> below).<br>
     
    <br>
     
    <a name="4_5_Sync_Cell"></a>
    <h2>4.5 Sync Cell ( <span style="font-style: italic;">omsp_sync_cell.v</span>
    )<br>
    </h2>
     
    The following synchronization cell is instantiated on all clock domain
    crossing data paths:
    <br>
     
    <br>
     
    <div style="text-align: center;"><img alt="Sync Cell" src="http://opencores.org/usercontent,img,1330809519" width="40%"><br>
    </div>
     
    <a name="4_6_Sync_Reset"></a>
    <h2>4.6 Sync Reset ( <span style="font-style: italic;">omsp_sync_reset.v</span>
    )<br>
    </h2>
     
    Internal resets are generated using the following standard reset
    synchronizer:<br>
     
    <div style="text-align: center;"><img alt="Sync Reset" src="http://opencores.org/usercontent,img,1330809533" width="40%"><br>
    </div>
     
    <br>
     
    <a name="4_7_Wakeup_Cell"></a>
    <h2>4.7 Wakeup Cell ( <span style="font-style: italic;">omsp_wakeup_cell.v</span>
    )<br>
    </h2>
     
    The wakeup cell is the most unconventional module of the
    openMSP430 design as it contains a flip-flop whose clock and reset are
    both coming from a data path.<br>
     
    In the openMSP430 core, it is instantiated a single time in the
    watchdog
    timer but can also be reused in external custom peripherals.<br>
     
    <br>
     
    The implementation of the block looks as following:<br>
     
    <div style="text-align: center;"><img alt="Wakeup cell" src="http://opencores.org/usercontent,img,1331155523" width="60%"><br>
    </div>
     
    <br>
     
    The basic idea here is simply to set the WKUP_OUT signal with a
    rising edge on the WKUP_EVENT port, and clear it when WKUP_CLEAR is
    active (i.e. level sensitive clear).<br>
     
    <br>
     
    In order to give a better perspective from a system point of view, the
    following diagram shows how the wakeup cell has been used in the
    particular case of the watchdog timer (note that WDTIFG_CLR_REG and
    WDTQN_EDGE_REG are both output of a flip-flop and therefore
    glitch-free):<br>
     
    <br>
     
    <div style="text-align: center;"><img alt="Watchdog wakeup" src="http://opencores.org/usercontent,img,1331155543" width="100%"><br>
    </div>
     
    <h1>
    </h1>
     
    <span style="font-weight: bold; text-decoration: underline;">Note:</span>
    Wake-up signals can of course be generated in a
    different way as long as they directly come from a flip-flop (or are
    certified to be non-glitchy).<br>
     
    For example a simple handshake between the WDT_CLK and MCLK clock
    domains could have been used to clear the WDT_WKUP signal in a fully
    synchronous
    manner.<br>
     
    However, it is to be noted that this handshake would introduce some
    synchronization
    delay, which might not be negligible if MCLK and WDT_CLK frequencies
    are orders of magnitude apart (i.e. several MHz for MCLK and 32kHz
    for WDT_CLK).<br>
     
    As getting the oscillators back to sleep as fast as possible might
    prove to be extremely important for low-power designs, this
    asynchronous solution was selected for the <span style="font-style: italic; font-weight: bold;">omsp_watchdog</span>
    implementation.<br>
     
    <br>
     
    <br>
     
    </body></html>
    openmsp430/trunk/doc/html/asic_implementation.html Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: openmsp430/trunk/doc/html/serial_debug_interface.html =================================================================== --- openmsp430/trunk/doc/html/serial_debug_interface.html (revision 134) +++ openmsp430/trunk/doc/html/serial_debug_interface.html (revision 135) @@ -1,71 +1,75 @@ - - -openMSP430 Serial Debug Interface - - +openMSP430 Serial Debug Interface

    Table of content

    +

    1. Introduction

    +The original MSP430 from TI provides a serial debug interface to allow +in-system software debugging. In that case, the communication +with the host computer is typically built on a JTAG or Spy-Bi-Wire +serial protocol. However, the global debug architecture from the MSP430 +is unfortunately poorly documented on the web (and is also probably +tightly linked with the internal core architecture). +

    A custom module has therefore been implemented for the +openMSP430. The communication with the host is done with a simple two-wire RS232 +cable (8N1 serial protocol) and the debug unit provides all the +required features for Nexus Class 3 debugging (beside trace), namely:
      +
    • CPU control (run, stop, step, reset).
    • +
    • Software & hardware breakpoint support.
    • +
    • Hardware watchpoint support.
      +
    • -The original MSP430 from TI provides a serial debug interface to give a simple path to software development. In that case, the communication with the host computer is typically build on a JTAG or Spy-Bi-Wire serial protocol. However, the global debug architecture from the MSP430 is unfortunately poorly documented on the web (and is also probably tightly linked with the internal core architecture). -

      -A custom module has therefore been implemented for the openMSP430. The communication with the host is done with a simple RS232 cable (8N1 serial protocol) and the debug unit provides all the required features for Nexus Class 3 debugging (beside trace), namely: -
        -
      • CPU control (run, stop, step, reset).
      • -
      • Software & hardware breakpoint support.
      • Memory read/write on-the-fly (no need to halt execution).
      • CPU registers read/write on-the-fly (no need to halt execution).
      - +

      2. Debug Unit

      @@ -72,26 +76,26 @@

      2.1 Register Mapping

      The following table summarize the complete debug register set accessible through the debug communication interface: -

      +

      - - - - + + + + - - - - - - - - + + + + + + + + - - + + @@ -98,15 +102,15 @@ - - + + - - + + @@ -117,8 +121,8 @@ - - + + @@ -130,8 +134,8 @@ - - + + @@ -139,23 +143,23 @@ - - + + - - + + - - + + - - + + @@ -163,8 +167,8 @@ - - + + @@ -174,18 +178,18 @@ - - + + - - + + - - + + @@ -193,8 +197,8 @@ - - + + @@ -204,18 +208,18 @@ - - + + - - + + - - + + @@ -223,8 +227,8 @@ - - + + @@ -234,18 +238,18 @@ - - + + - - + + - - + + @@ -253,8 +257,8 @@ - - + + @@ -264,44 +268,44 @@ - - + + - - + + -
      Register NameAddressBit Field
      Register NameAddressBit Field
      151413121110 9 8 7 6 5 4 3 2 1 0151413121110 9 8 7 6 5 4 3 2 1 0
      CPU_ID_LO0x00CPU_ID_LO0x00 PER_SPACE USER_VERSION ASICCPU_VERSION
      CPU_ID_HI0x01CPU_ID_HI0x01 PMEM_SIZE DMEM_SIZE MPY
      CPU_CTL0x02CPU_CTL0x02 Reserved CPU_RST RST_BRK_ENHALT
      CPU_STAT0x03CPU_STAT0x03 Reserved HWBRK3_PND HWBRK2_PNDHALT_RUN
      MEM_CTL0x04MEM_CTL0x04 Reserved B/W MEM/REGSTART
      MEM_ADDR0x05MEM_ADDR0x05 MEM_ADDR[15:0]
      MEM_DATA0x06MEM_DATA0x06 MEM_DATA[15:0]
      MEM_CNT0x07MEM_CNT0x07 MEM_CNT[15:0]
      BRK0_CTL0x08BRK0_CTL0x08 Reserved RANGE_MODE INST_ENACCESS_MODE
      BRK0_STAT0x09BRK0_STAT0x09 Reserved RANGE_WR RANGE_RDADDR0_RD
      BRK0_ADDR00x0ABRK0_ADDR00x0A BRK_ADDR0[15:0]
      BRK0_ADDR10x0BBRK0_ADDR10x0B BRK_ADDR1[15:0]
      BRK1_CTL0x0CBRK1_CTL0x0C Reserved RANGE_MODE INST_ENACCESS_MODE
      BRK1_STAT0x0DBRK1_STAT0x0D Reserved RANGE_WR RANGE_RDADDR0_RD
      BRK1_ADDR00x0EBRK1_ADDR00x0E BRK_ADDR0[15:0]
      BRK1_ADDR10x0FBRK1_ADDR10x0F BRK_ADDR1[15:0]
      BRK2_CTL0x10BRK2_CTL0x10 Reserved RANGE_MODE INST_ENACCESS_MODE
      BRK2_STAT0x11BRK2_STAT0x11 Reserved RANGE_WR RANGE_RDADDR0_RD
      BRK2_ADDR00x12BRK2_ADDR00x12 BRK_ADDR0[15:0]
      BRK2_ADDR10x13BRK2_ADDR10x13 BRK_ADDR1[15:0]
      BRK3_CTL0x14BRK3_CTL0x14 Reserved RANGE_MODE INST_ENACCESS_MODE
      BRK3_STAT0x15BRK3_STAT0x15 Reserved RANGE_WR RANGE_RDADDR0_RD
      BRK3_ADDR00x16BRK3_ADDR00x16 BRK_ADDR0[15:0]
      BRK3_ADDR10x17BRK3_ADDR10x17 BRK_ADDR1[15:0]
      + - +

      2.2 CPU Control/Status Registers

      2.2.1 CPU_ID

      This 32 bit read-only register holds the program and data memory size information of the implemented openMSP430. -

      +

      - - - - + + + + - - - - - - - - + + + + + + + + - - + + @@ -308,18 +312,19 @@ - - + + -
      Register NameAddressBit Field
      Register NameAddressBit Field
      151413121110 9 8 7 6 5 4 3 2 1 0151413121110 9 8 7 6 5 4 3 2 1 0
      CPU_ID_LO0x00CPU_ID_LO0x00 PER_SPACE USER_VERSION ASICCPU_VERSION
      CPU_ID_HI0x01CPU_ID_HI0x01 PMEM_SIZE DMEM_SIZE MPY
      -
      + +
      - + - + @@ -345,28 +350,28 @@ -
       
    • CPU_VERSION
    • : Current CPU version (currently 1): Current CPU version
      +
       
    • ASIC
    •  
    • PMEM_SIZE
    • : Progam memory size for the current implementation (byte size = PMEM_SIZE*1024)
      + -

      2.2.2 CPU_CTL

      - -This 8 bit read-write register is used to control the CPU and to configure some basic debug features. After a POR, this register is set to 0x00. -

      +

      2.2.2 CPU_CTL

      This 8 bit read-write register is used to +control the CPU and to configure some basic debug features. After a +POR, this register is set to 0x10 or 0x30 (depending on the DBG_RST_BRK_EN configuration option). +

      - - - - + + + + - - - - + + + + - - + + @@ -376,10 +381,10 @@ -
      Register NameAddressBit Field
      Register NameAddressBit Field
      7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
      CPU_CTL0x02CPU_CTL0x02 Res. CPU_RST RST_BRK_ENRUN HALT
      -
      + +
      - + @@ -407,29 +412,29 @@ -
       
    • CPU_RST
    • : Setting this bit to 1 will activate the PUC reset. Setting it back to 0 will release it.
       
    • HALT1
    • : Writing 1 to this bit will put the CPU in halt state.
      -
      1:this field is write-only and always reads back 0. -
      + +
      1:this field is write-only and always reads back 0. +

      2.2.3 CPU_STAT

      This 8 bit read-write register gives the global status of the debug interface. After a POR, this register is set to 0x00. -

      +

      - - - - + + + + - - - - + + + + - - + + @@ -439,24 +444,24 @@ -
      Register NameAddressBit Field
      Register NameAddressBit Field
      7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
      CPU_STAT0x03CPU_STAT0x03 HWBRK3_PND HWBRK2_PND HWBRK1_PNDRes. HALT_RUN
      -
      + +
      - + - + - + - + - + @@ -474,17 +479,17 @@ -
       
    • HWBRK3_PND
    • : This bit reflects if one of the Hardware Breakpoint Unit 3 status bit is set (i.e. BRK3_STAT≠0).: This bit reflects if one of the Hardware Breakpoint Unit 3 status bit is set (i.e. BRK3_STAT≠0).
       
    • HWBRK2_PND
    • : This bit reflects if one of the Hardware Breakpoint Unit 2 status bit is set (i.e. BRK2_STAT≠0).: This bit reflects if one of the Hardware Breakpoint Unit 2 status bit is set (i.e. BRK2_STAT≠0).
       
    • HWBRK1_PND
    • : This bit reflects if one of the Hardware Breakpoint Unit 1 status bit is set (i.e. BRK1_STAT≠0).: This bit reflects if one of the Hardware Breakpoint Unit 1 status bit is set (i.e. BRK1_STAT≠0).
       
    • HWBRK0_PND
    • : This bit reflects if one of the Hardware Breakpoint Unit 0 status bit is set (i.e. BRK0_STAT≠0).: This bit reflects if one of the Hardware Breakpoint Unit 0 status bit is set (i.e. BRK0_STAT≠0).
       
    • SWBRK_PND
    •       0 - CPU is running. -
         1 - CPU is stopped. +
         1 - CPU is stopped.
      + - +

      2.3 Memory Access Registers

      The following four registers enable single and burst read/write access to both CPU-Registers and full memory address range. -
      In order to perform an access, the following sequences are typically done: +
      In order to perform an access, the following sequences are typically done: -

      2.3.1 MEM_CTL

      - -This 8 bit read-write register is used to control the Memory and CPU-Register read/write access. After a POR, this register is set to 0x00. -

      +

      2.3.1 MEM_CTL

      This 8 bit read-write register is used to control +the Memory and CPU-Register read/write access. After a POR, this +register is set to 0x00. +

      - - - - + + + + - - - - + + + + - - + + @@ -530,10 +535,10 @@ -
      Register NameAddressBit Field
      Register NameAddressBit Field
      7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
      MEM_CTL0x04MEM_CTL0x04 Reserved B/W MEM/REGRD/WR START
      -
      + +
      - + @@ -565,75 +570,78 @@ -
       
    • B/W
    • : 0 - 16 bit access.
           1 - Initiate memory transfer.
      + -

      2.3.2 MEM_ADDR

      - -This 16 bit read-write register specifies the Memory or CPU-Register address to be used for the next read/write transfer. After a POR, this register is set to 0x0000. -
      -Note: in case of burst (i.e. MEM_CNT≠0), this register specifies the first address of the burst transfer and will be incremented automatically as the burst goes (by 1 for 8-bit access and by 2 for 16-bit access). -

      +

      2.3.2 MEM_ADDR

      This 16 bit read-write register specifies the +Memory or CPU-Register address to be used for the next read/write +transfer. After a POR, this register is set to 0x0000. +
      +Note: in case of burst (i.e. MEM_CNT≠0), this register +specifies the first address of the burst transfer and will be +incremented automatically as the burst goes (by 1 for 8-bit access and +by 2 for 16-bit access). +

      - - - - + + + + - - - - - - - - + + + + + + + + - - + + -
      Register NameAddressBit Field
      Register NameAddressBit Field
      151413121110 9 8 7 6 5 4 3 2 1 0151413121110 9 8 7 6 5 4 3 2 1 0
      MEM_ADDR0x05MEM_ADDR0x05 MEM_ADDR[15:0]
      -
      + +
      - + -
       
    • MEM_ADDR
    • : Memory or CPU-Register address to be used for the next read/write transfer.
      + -

      2.3.3 MEM_DATA

      - -This 16 bit read-write register specifies (wr) or receive (rd) the Memory or CPU-Register data for the the next transfer. After a POR, this register is set to 0x0000. -

      +

      2.3.3 MEM_DATA

      This 16 bit read-write register gives (wr) +or receive (rd) the Memory or CPU-Register data for the next +transfer. After a POR, this register is set to 0x0000. +

      - - - - + + + + - - - - - - - - + + + + + + + + - - + + -
      Register NameAddressBit Field
      Register NameAddressBit Field
      151413121110 9 8 7 6 5 4 3 2 1 0151413121110 9 8 7 6 5 4 3 2 1 0
      MEM_DATA0x06MEM_DATA0x06 MEM_DATA[15:0]
      -
      + +
      - + @@ -641,71 +649,78 @@ -
       
    • MEM_DATA
    • : if MEM_CTL.WR - data to be written during the next write transfer.
           if MEM_CTL.RD - updated with the data from the read transfer
      + -

      2.3.4 MEM_CNT

      - -This 16 bit read-write register controls the burst access to the Memory or CPU-Registers. If set to 0, a single access will occur, otherwise, a burst will be performed. The burst being optimized for the communication interface, more details are given there. After a POR, this register is set to 0x0000. -

      +

      2.3.4 MEM_CNT

      This 16 bit read-write register controls the +burst access to the Memory or CPU-Registers. If set to 0, a single +access will occur, otherwise, a burst will be performed. The burst +being optimized for the communication interface, more details are given +there. After a POR, this register is set to 0x0000. +

      - - - - + + + + - - - - - - - - + + + + + + + + - - + + -
      Register NameAddressBit Field
      Register NameAddressBit Field
      151413121110 9 8 7 6 5 4 3 2 1 0151413121110 9 8 7 6 5 4 3 2 1 0
      MEM_CNT0x07MEM_CNT0x07 MEM_CNT[15:0]
      -
      + +
      - + - + -
       
    • MEM_CNT
    • : =0 - a single access will be performed with the next transfer.
          ≠0 - specifies the burst size for the next transfer (i.e number of data access). This field will be automatically decremented as the burst goes.  ≠0 - +specifies the burst size for the next transfer (i.e number of data +access). This field will be automatically decremented as the burst goes.
      + - +

      2.4 Hardware Breakpoint Unit Registers

      -Depending on the defines located in the "openmsp430_defines.v" file, up to four hardware breakpoint units can be included in the design. These units can be individually controlled with the following registers. +Depending on the defines +located in the "openmsp430_defines.v" file, up to four hardware +breakpoint units can be included in the design. These units can be +individually controlled with the following registers.

      2.4.1 BRKx_CTL

      This 8 bit read-write register controls the hardware breakpoint unit x. After a POR, this register is set to 0x00. -

      +

      - - - - + + + + - - - - + + + + - - + + @@ -712,18 +727,18 @@ -
      Register NameAddressBit Field
      Register NameAddressBit Field
      7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
      BRKx_CTL0x08, 0x0C, 0x10, 0x14BRKx_CTL0x08, 0x0C, 0x10, 0x14 Reserved RANGE_MODE INST_ENBREAK_EN ACCESS_MODE
      -
      + +
      - + - - + + @@ -750,32 +765,32 @@ +
        10 - Detect write access. +
        11 - Detect read/write access +
      Note: '10' & '11' modes are not supported on the instruction flow -
       
    • RANGE_MODE
    • : 0 - Address match on BRK_ADDR0 or BRK_ADDR1 (normal mode)
          1 - Address match on BRK_ADDR0→BRK_ADDR1 range (range mode) -
      Note: range mode is not supported by the core unless the `DBG_HWBRK_RANGE define is set to 1'b1 in the openMSP430_define.v file.
        1 - Address match on BRK_ADDR0→BRK_ADDR1 range (range mode) +
      Note: range mode is not supported by the core unless the `DBG_HWBRK_RANGE define is set to 1'b1 in the openMSP430_define.v file.
       
    • INST_EN
    •      01 - Detect read access. -
        10 - Detect write access. -
        11 - Detect read/write access -
      Note: '10' & '11' modes are not supported on the instruction flow
      + -

      2.4.2 BRKx_STAT

      - -This 8 bit read-write register gives the status of the hardware breakpoint unit x. Each status bit can be cleared by writing 1 to it. After a POR, this register is set to 0x00. -

      +

      2.4.2 BRKx_STAT

      This 8 bit read-write register gives the status +of the hardware breakpoint unit x. Each status bit can be cleared by +writing 1 to it. After a POR, this register is set to 0x00. +

      - - - - + + + + - - - - + + + + - - + + @@ -784,186 +799,211 @@ -
      Register NameAddressBit Field
      Register NameAddressBit Field
      7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
      BRKx_STAT0x09, 0x0D, 0x11, 0x15BRKx_STAT0x09, 0x0D, 0x11, 0x15 Reserved RANGE_WR RANGE_RDADDR0_WR ADDR0_RD
      -
      + +
      - + - + - + - + - + - + - + -
       
    • RANGE_WR
    • : This bit is set whenever the CPU performs a write access within the BRKx_ADDR0→BRKx_ADDR1 range (valid if RANGE_MODE=1 and ACCESS_MODE[1]=1).: +This bit is set whenever the CPU performs a write access within the +BRKx_ADDR0→BRKx_ADDR1 range (valid if RANGE_MODE=1 and +ACCESS_MODE[1]=1).
       
    • RANGE_RD
    • : This bit is set whenever the CPU performs a read access within the BRKx_ADDR0→BRKx_ADDR1 range (valid if RANGE_MODE=1 and ACCESS_MODE[0]=1). -
      Note: range mode is not supported by the core unless the `DBG_HWBRK_RANGE define is set to 1'b1 in the openMSP430_define.v file.
      : +This bit is set whenever the CPU performs a read access within the +BRKx_ADDR0→BRKx_ADDR1 range (valid if RANGE_MODE=1 and +ACCESS_MODE[0]=1).
      Note: range mode is not supported by the core unless the `DBG_HWBRK_RANGE define is set to 1'b1 in the openMSP430_define.v file.
       
    • ADDR1_WR
    • : This bit is set whenever the CPU performs a write access at the BRKx_ADDR1 address (valid if RANGE_MODE=0 and ACCESS_MODE[1]=1).: +This bit is set whenever the CPU performs a write access at the +BRKx_ADDR1 address (valid if RANGE_MODE=0 and ACCESS_MODE[1]=1).
       
    • ADDR1_RD
    • : This bit is set whenever the CPU performs a read access at the BRKx_ADDR1 address (valid if RANGE_MODE=0 and ACCESS_MODE[0]=1).: +This bit is set whenever the CPU performs a read access at the +BRKx_ADDR1 address (valid if RANGE_MODE=0 and ACCESS_MODE[0]=1).
       
    • ADDR0_WR
    • : This bit is set whenever the CPU performs a write access at the BRKx_ADDR0 address (valid if RANGE_MODE=0 and ACCESS_MODE[1]=1).: +This bit is set whenever the CPU performs a write access at the +BRKx_ADDR0 address (valid if RANGE_MODE=0 and ACCESS_MODE[1]=1).
       
    • ADDR0_RD
    • : This bit is set whenever the CPU performs a read access at the BRKx_ADDR0 address (valid if RANGE_MODE=0 and ACCESS_MODE[0]=1).: +This bit is set whenever the CPU performs a read access at the +BRKx_ADDR0 address (valid if RANGE_MODE=0 and ACCESS_MODE[0]=1).
      +

      2.4.3 BRKx_ADDR0

      - -This 16 bit read-write register holds the value which is compared against the address value currently present on the program or data address bus. After a POR, this register is set to 0x0000. -

      +This 16 bit read-write register holds the value which is compared +against the address value currently present on the program or data +address bus. After a POR, this register is set to 0x0000. +

      - - - - + + + + - - - - - - - - + + + + + + + + - - + + -
      Register NameAddressBit Field
      Register NameAddressBit Field
      151413121110 9 8 7 6 5 4 3 2 1 0151413121110 9 8 7 6 5 4 3 2 1 0
      BRKx_ADDR00x0A, 0x0E, 0x12, 0x16BRKx_ADDR00x0A, 0x0E, 0x12, 0x16 BRK_ADDR0[15:0]
      -
      + +
      - + -
       
    • BRK_ADDR0
    • : Value compared against the address value currently present on the program or data address bus.
      + -

      2.4.4 BRKx_ADDR1

      - -This 16 bit read-write register holds the value which is compared against the address value currently present on the program or data address bus. After a POR, this register is set to 0x0000. -

      +

      2.4.4 BRKx_ADDR1

      This 16 bit read-write register holds the +value which is compared against the address value currently present on +the program or data address bus. After a POR, this register is set to +0x0000. +

      - - - - + + + + - - - - - - - - + + + + + + + + - - + + -
      Register NameAddressesBit Field
      Register NameAddressesBit Field
      151413121110 9 8 7 6 5 4 3 2 1 0151413121110 9 8 7 6 5 4 3 2 1 0
      BRKx_ADDR10x0B, 0x0F, 0x13, 0x17BRKx_ADDR10x0B, 0x0F, 0x13, 0x17 BRK_ADDR1[15:0]
      -
      + +
      - + -
       
    • BRK_ADDR1
    • : Value compared against the address value currently present on the program or data address bus.
      + - -

      3. Debug Communication Interface: UART

      -With its UART interface, the openMSP430 debug unit can communicate with the host computer using a simple RS232 cable (connected to the dbg_uart_txd and dbg_uart_rxd ports of the IP).
      -Using an standard USB to RS232 adaptor, the interface provides a reliable communication link up to 1,5Mbps. - + +

      3. Debug Communication Interface: UART

      With its UART interface, +the openMSP430 debug unit can communicate with the host computer using +a simple RS232 cable (connected to the dbg_uart_txd and dbg_uart_rxd ports of the IP).
      Typically, a USB to RS232 or USB to serial TTL +cable will provide a reliable communication link between your host PC +and the openMSP430 (speed being typically limited by the cable length).

      3.1 Serial communication protocol: 8N1

      -There are plenty tutorials on Internet regarding RS232 based protocols. However, here is quick recap about 8N1 (1 Start bit, 8 Data bits, No Parity, 1 Stop bit):
      -
      -8N1 Serial Protocol -
      -As you can see in the above diagram, data transmission starts with a Start bit, followed by the data bits (LSB sent first and MSB sent last), and ends with a "Stop" bit. - +There are plenty tutorials on Internet regarding RS232 based protocols. +However, here is quick recap about 8N1 (1 Start bit, 8 Data bits, No +Parity, 1 Stop bit):
      +
      +8N1 Serial Protocol +
      +As you can see in the above diagram, data transmission starts with a +Start bit, followed by the data bits (LSB sent first and MSB sent +last), and ends with a "Stop" bit. -

      3.2 Synchronization frame

      -After a POR, the Serial Debug Interface expects a synchronization frame from the host computer in order to determine the communication speed (i.e. the baud rate).
      +

      3.2 Synchronization frame

      After a POR, the Serial Debug +Interface expects a synchronization frame from the host computer in +order to determine the communication speed (i.e. the baud rate).
      The synchronization frame looks as following: -
      -Debug Synchronization Frame -
      -As you can see, the host simply sends the 0x80 value. The openMSP430 will then measure the time between the falling and rising edge, divide it by 8 and automatically deduce the baud rate it should use to properly communicate with the host. -

      -Important note: if you want to change the communication speed between two debugging sessions, the openMSP430 needs to go over a POR cycle and a new synchronization frame needs to be send. - +
      +Debug Synchronization Frame +
      +As you can see, the host simply sends the 0x80 value. The openMSP430 +will then measure the time between the falling and rising edge, divide +it by 8 and automatically deduce the baud rate it should use to +properly communicate with the host. +

      +Important note: if you want to change the communication speed +between two debugging sessions, the Serial Debug Interface needs to go through a reset cycle (i.e. through the reset_n or dbg_en pins) and a new synchronization frame needs to be send. +

      3.3 Read/Write access to the debug registers

      -In order to perform a read / write access to a debug register, the host needs to send a command frame to the openMSP430.
      -In case of write access, this command frame will be followed by 1 or 2 data frames and in case of read access, the openMSP430 will send 1 or 2 data frames after receiving the command. - +In order to perform a read / write access to a debug register, the host needs to send a command frame to the openMSP430.
      In +case of write access, this command frame will be followed by 1 or 2 +data frames and in case of read access, the openMSP430 will send 1 or 2 +data frames after receiving the command.

      3.3.1 Command Frame

      The command frame looks as following: -
      -Debug Command Frame -
      +
      +Debug Command Frame +
      - + - + - + -
       
    • WR
    • : Perform a Write access when set. Read otherwise.
       
    • B/W
    • : Perform a 8-bit data access when set (one data frame). 16-bit otherwise (two data frame).
      : Perform a 8-bit data access when set (one data frame). 16-bit otherwise (two data frame).
       
    • Address
    • : Debug register address.
      : Debug register address.
      +

      3.3.2 Write access

      A write access transaction looks like this: -
      -Debug Write Transaction +
      +Debug Write Transaction

      3.3.3 Read access

      A read access transaction looks like this: -
      -Debug Read Transaction +
      +Debug Read Transaction -

      3.4 Read/Write burst implementation for the CPU Memory access

      -In order to optimize the data burst transactions for the UART, read/write access are not done by reading or writing the MEM_DATA register.
      +

      3.4 Read/Write burst implementation for the CPU Memory access

      In +order to optimize the data burst transactions for the UART, read/write +access are not done by reading or writing the MEM_DATA register.
      Instead, the data transfer starts immediately after the MEM_CTL.START bit has been set.

      3.4.1 Write Burst access

      A write burst transaction looks like this: -
      -Debug Write Burst Transaction +
      +Debug Write Burst Transaction

      3.4.2 Read Burst access

      A read burst transaction looks like this: -
      -Debug Read Burst Transaction +
      +Debug Read Burst Transaction - - - \ No newline at end of file + + \ No newline at end of file
    /openmsp430/trunk/doc/html/overview.html
    1,67 → 1,87
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>openMSP430 Overview</title>
    </head>
    <body>
    <br />
    <html><head><title>openMSP430 Overview</title></head><body>
    <br>
    <h1>Introduction</h1>
     
    The openMSP430 is a synthesizable 16bit microcontroller core written in Verilog. It is compatible with Texas Instruments' <b><a href="http://www.ti.com/litv/pdf/slau049f">MSP430 microcontroller family</a></b> and can execute the code generated by an MSP430 toolchain in a cycle accurate way.
    <br /><br />
    The core comes with some peripherals (<b>16x16 Hardware Multiplier</b>, GPIO, TimerA, generic templates) and most notably with a <b>Serial Debug Interface</b> supporting <b>the MSPGCC(4) GNU Debugger</b> (GDB) for in-system software debugging.
    <br /><br />
    The openMSP430 is a synthesizable 16bit microcontroller core written in Verilog. It is compatible with Texas Instruments' <b><a href="http://www.ti.com/litv/pdf/slau049f">MSP430 microcontroller family</a></b> and can execute the code generated by any MSP430 toolchain in a near cycle accurate way.<br><br>
    The core comes with some peripherals (<b>16x16 Hardware Multiplier, </b>Watchdog, GPIO, TimerA, generic templates) and most notably with a two-wire <b>Serial Debug Interface</b> supporting the<b> <a href="http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki" target="_blank">MSPGCC</a> GNU Debugger</b> (GDB) for in-system software debugging.
    <br><br>
    While being fully FPGA friendly, this design is also particularly
    suited for ASIC implementations (typically mixed signal ICs with strong area
    and low-power requirements).<br>
    In a nutshell, the openMSP430 brings with it:<br>
    <ul>
    <li>Low area (8k-Gates), without hidden extra infrastructure
    overhead (memory backbone, IRQ controller and watchdog timer are already
    included).</li>
    <li>Excellent code density.</li>
    <li>Good performances.</li>
     
    <li>Build-in power and clock managment options.</li>
    <li>Multiple time <span style="font-weight: bold;">Silicon Proven</span>.<br>
    </li>
    </ul>
     
    <h1>Download</h1>
    <h3>Design</h3>
    The complete tar archive of the project can be downloaded <a href="http://www.opencores.org/download,openmsp430">here</a> (OpenCores account required).<br />
    <br />
    The complete tar archive of the project can be downloaded <a href="http://www.opencores.org/download,openmsp430">here</a> (OpenCores account required).<br>
    <br>
    The following SVN command can be run from a console (or <a href="http://www.syntevo.com/smartsvn/index.html">GUI</a>):
    <br /><br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    <br><br>
    <table border="0" cellpadding="0" cellspacing="4">
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>svn export http://opencores.org/ocsvn/openmsp430/openmsp430/trunk/ openmsp430</code>
    </td>
    </tr>
    </table>
    <br />
    </tbody></table>
    <br>
    <h3>ChangeLog</h3>
    <ul>
    <li>The <a href="http://opencores.org/websvn,filedetails?repname=openmsp430&path=/openmsp430/trunk/ChangeLog_core.txt">Core's ChangeLog</a> lists the CPU updates.</li>
    <li>The <a href="http://opencores.org/websvn,filedetails?repname=openmsp430&path=/openmsp430/trunk/ChangeLog_tools.txt">Tools' ChangeLog</a> lists the Software development tools updates.</li>
    <li>Subscribe to the following <a href="http://opencores.org/websvn,rss?repname=openmsp430&path=/openmsp430/&isdir=1">RSS</a> feed to keep yourself informed about ALL updates.</i>
    </ul>
    <br />
    <h3>Documentation</h3>
    The online documentation is available as <a href="usercontent,doc,1307395772" title="openMSP430 PDF Doc. R1.9">pdf</a>.
    <br /><br />
    <h1>Features & Limitations</h1>
    <li>The <a href="http://opencores.org/websvn,filedetails?repname=openmsp430&amp;path=/openmsp430/trunk/ChangeLog_core.txt">Core's ChangeLog</a> lists the CPU updates.</li>
    <li>The <a href="http://opencores.org/websvn,filedetails?repname=openmsp430&amp;path=/openmsp430/trunk/ChangeLog_tools.txt">Tools' ChangeLog</a> lists the Software development tools updates.</li>
    <li>Subscribe to the following <a href="http://opencores.org/websvn,rss?repname=openmsp430&amp;path=/openmsp430/&amp;isdir=1">RSS</a> feed to keep yourself informed about ALL updates.
    </li></ul>
    <br>
    <h3>Documentation</h3>Being fully compatible with the original MSP430 architecture, TI's official documentation is applicable: <a href="http://www.ti.com/lit/ug/slau049f/slau049f.pdf">SLAU049F.PDF</a><br><br>
    In addition, the openMSP430 online documentation is also available in <a href="http://opencores.org/websvn,filedetails?repname=openmsp430&amp;path=%2Fopenmsp430%2Ftrunk%2Fdoc%2FopenMSP430.pdf" title="openMSP430 PDF Doc. R1.9">pdf</a>.<br>
     
    <br>
    <h1>Features &amp; Limitations</h1>
    <h2>Features</h2>
    <ul>
    <li><b>Core:</b>
    <ul>
    <li>Full instruction set.</li>
    <li>Full instruction set support.</li>
    <li>Interrupts: IRQs (x14), NMI (x1).</li>
    <li>Power saving modes functionality.</li>
    <li>Power saving modes.</li>
    <li>Configurable memory size for both program and data.</li>
    <li>Scalable peripheral address space.</li>
    <li>Serial Debug Interface (Nexus class 3, w/o trace) with GDB support.</li>
    <li>FPGA friendly (single clock domain, no clock gate).</li>
    <li>Two-wire Serial Debug Interface (Nexus class 3, w/o trace) with GDB support.</li>
    <li>FPGA friendly (option for single clock domain, no clock gate).</li>
    <li>ASIC friendly (options for full power &amp; clock management support).<br>
    </li>
     
    <li>Small size (Xilinx: 1650 LUTs / Altera: 1550 LEs / ASIC: 8k gates).</li>
    </ul>
    </li>
    <br />
    <br>
    <li><b>Peripherals:</b>
    <ul>
    <li>16x16 Hardware Multiplier.</li>
    <li>Basic Clock Module.</li>
    <li>Watchdog.</li>
    <li>Timer A.</li>
    <li>GPIO (port 1 to 6).</li>
    <li>Templates for 8 and 16 bit peripherals (under BSD license).</li>
    <li>Timer A (FPGA only).</li>
    <li>GPIOs (FPGA only).</li>
    <li>Templates for 8 and 16 bit peripherals.</li>
    </ul>
    </li>
    </ul>
    72,43 → 92,37
    <li>Instructions can't be executed from the data memory.</li>
    </ul>
    </li>
    <br />
    <li><b>Peripherals:</b>
    <ul>
    <li>Basic clock module doesn't offer the full functionality of a real MSP430.</li>
    </ul>
    </li>
    </ul>
    <br /><br />
    <br><br>
    <h1>Links</h1>
    Development has been performed using the following freely available (excellent) tools:
    <ul>
    <li><a href="http://www.icarus.com/eda/verilog/">Icarus Verilog</a> : Verilog simulator.</li>
    <li><a href="http://iverilog.icarus.com/">Icarus Verilog</a> : Verilog simulator.</li>
    <li><a href="http://gtkwave.sourceforge.net/">GTKWave Analyzer</a> : Waveform viewer.</li>
    <li><a href="http://mspgcc4.sourceforge.net/">MSPGCC4</a> : GCC toolchain for the Texas Instruments MSP430 MCUs.</li>
    <li><a href="http://www.xilinx.com/ise/logic_design_prod/webpack.htm">ISE WebPACK</a> : Xilinx's FPGA synthesis tool.</li>
    <li><a href="http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki">MSPGCC</a> : GCC toolchain for the Texas Instruments MSP430 MCUs.</li>
    <li><a href="http://www.xilinx.com/ise/logic_design_prod/webpack.htm">ISE WebPACK</a> : Xilinx's free FPGA synthesis tool.</li>
    </ul>
    Discussion group:
    <ul>
    <li><table border=0 style="background-color: #fff; padding: 5px;" cellspacing=0>
    <tr><td>
    <img src="http://groups.google.com/intl/en/images/logos/groups_logo_sm.gif"
    height=30 width=140 alt="Google Groups">
    <li><input name="hl" value="en" type="hidden">
    <table style="padding: 5px; background-color: rgb(255, 255, 255);" border="0" cellspacing="0">
    <tbody><tr><td>
    <img src="http://groups.google.com/intl/en/images/logos/groups_logo_sm.gif" alt="Google Groups" height="30" width="140">
    </td></tr>
    <tr><td style="padding-left: 5px">
    <tr><td style="padding-left: 5px;">
    <b>Subscribe to openMSP430</b>
    </td></tr>
    <form action="http://groups.google.com/group/discuss_openmsp430/boxsubscribe">
    <input type=hidden name="hl" value="en">
    <form action="http://groups.google.com/group/discuss_openmsp430/boxsubscribe"></form>
    <tr><td style="padding-left: 5px;">
    Email: <input type=text name=email>
    <input type=submit name="sub" value="Subscribe">
    Email: <input name="email" type="text">
    <input name="sub" value="Subscribe" type="submit">
    </td></tr>
    </form>
    <tr><td align=right>
    <tr><td align="right">
    <a href="http://groups.google.com/group/discuss_openmsp430?hl=en">Visit this group</a>
    </td></tr>
    </table>
    </tbody></table>
    </li>
    </ul>
    A few MSP430 links:
    115,11 → 129,13
    <ul>
    <li><a href="http://en.wikipedia.org/wiki/MSP430">Wikipedia: MSP430</a></li>
    <li><a href="http://www.ti.com/litv/pdf/slau049f">TI: MSP430x1xx Family User's Guide</a></li>
    <li><a href="http://www.ti.com/lit/an/slaa205c/slaa205c.pdf">TI: MSP430 Competitive Benchmarking</a><br>
    </li>
     
    <li><a href="http://processors.wiki.ti.com/index.php/Open_Source_Projects_-_MSP430">TI: a list of available MSP430 Open Source projects out there on the web today.</a></li>
    </ul>
    <br /><br />
    <h1>Legal information</h1>
    MSP430 is a trademark of Texas Instruments, Inc. This project is not affiliated in any way with Texas Instruments. All other product names are trademarks or registered trademarks of their respective owners.
     
    </body>
    </html>
    <br><br>
    <h1>Legal information</h1>MSP430 is a trademark of Texas Instruments,
    Inc. This project is not affiliated in any way with Texas Instruments.
    All other product names are trademarks or registered trademarks of
    their respective owners. </body></html>
    /openmsp430/trunk/doc/html/area_speed.html
    1,5 → 1,7
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><head><title>openMSP430 Area/Speed analysis</title></head><body>
    <html><head><title>openMSP430 Area/Speed analysis</title>
     
    <meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
    <h3>Table of content</h3>
     
    <ul>
    10,31 → 12,22
    <li><a href="#1.2%20ASICs"> 1.2 ASICs</a></li>
    </ul>
    </li>
    <li><a href="#2.%20Detailed%20results">2. Detailed results</a>
    <ul>
    <li><a href="#2.1%20FPGAs"> 2.1 FPGAs</a>
    <ul>
    <li><a href="#2.1.1%20Xilinx"> 2.1.1 Xilinx</a></li>
    <li><a href="#2.1.2%20Altera"> 2.1.2 Altera</a></li>
    <li><a href="#2.1.3%20Actel"> 2.1.3 Actel</a></li>
    </ul>
    </li>
    <li><a href="#2.2%20ASICs"> 2.2 ASICs</a>
    <ul>
    <li><a href="#2.2.1%20180nm"> 2.2.1 180nm</a></li>
    </ul>
    </li>
    </ul>
    <ul></ul>
    </li>
    </ul>
     
    </ul><br>
     
    <a name="1. Overview"></a><br>
     
    <span style="font-weight: bold; text-decoration: underline; color: red;">Notice:</span><span style="color: red;">
    <span style="font-weight: bold; text-decoration: underline; color: red;">Warning:</span><span style="color: red;">
    the results presented here might vary depending on the tool versions,
    applied timing constraints and exact configuration of the openMSP430 core.
    <br>
    The FPGA results were obtained using the free tool versions provided by
    the vendors (i.e ISE 11.1, QuartusII 9.1 &amp; Libero 8.5). The ASIC synthesis was
    the vendors (i.e ISE 11.1, QuartusII 9.1 &amp; Libero 8.5). <br>
    The ASIC synthesis was
    run with Synopsys Design Compiler 2007.12 (<b>without dc_ultra or any special feature</b>).</span>
    <h1>1. Overview</h1>
     
    41,16 → 34,16
    <a name="1.1 FPGAs"></a>
    <h2>1.1 FPGAs</h2>
     
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <small>
    </small><small>
    </small><table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
     
    <tbody>
    <tr>
    </tr>
    <tr style="font-weight: bold;" align="center"><small>
    </small><td colspan="7" rowspan="1" style="vertical-align: top; background-color: rgb(153, 153, 153);"><span style="font-weight: bold;">Utilization</span><small><small><br>
    <tr style="font-weight: bold;" align="center"><td colspan="7" rowspan="1" style="vertical-align: top; background-color: rgb(153, 153, 153);"><span style="font-weight: bold;">Utilization</span><small><small><br>
     
    </small></small></td><small>
    </small></tr>
    </small></small></td></tr>
    <tr>
    <td style="text-align: center; background-color: rgb(153, 153, 153); font-weight: bold; width: 10%;"><small>Manufacturer<br>
     
    277,18 → 270,18
    <br>
     
    <span style="font-weight: bold;"></span>
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
    <small>
    </small><small>
    </small><table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
     
    <tbody>
    <tr>
    </tr>
    <tr style="font-weight: bold;" align="center"><small>
    </small><td colspan="6" rowspan="1" style="vertical-align: top; background-color: rgb(153, 153, 153);">Speed<small><small><br>
    <tr style="font-weight: bold;" align="center"><td colspan="6" rowspan="1" style="vertical-align: top; background-color: rgb(153, 153, 153);">Speed<small><small><br>
     
    (in MHz, min and max values across all speed grades)<br>
     
    </small></small></td><small>
    </small></tr>
    </small></small></td></tr>
    <tr>
    <td style="text-align: center; background-color: rgb(153, 153, 153); font-weight: bold; width: 10%;"><small>Manufacturer<br>
     
    599,3856 → 592,7
    <a name="2. Detailed results"></a>
    <h1>2. Detailed results</h1>
     
    <a name="2.1 FPGAs"></a>
    <h2>2.1 FPGAs</h2>
    <a name="2.1 FPGAs"></a><br>
    <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Verdana,Tahoma,Arial,Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255);">Detailed results can be found in the PDF documentation (see the <a href="http://opencores.org/usercontent,doc,1321215271">download</a> section).</span><br>
     
    <a name="2.1.1 Xilinx"></a>
    <h3>2.1.1 Xilinx</h3>
     
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
     
    <tbody>
    <tr>
    <td style="width: 10%; background-color: rgb(153, 153, 153); text-align: center;" colspan="1" rowspan="3"><big><span style="font-weight: bold;">FPGA
    Device</span><br>
    </big></td>
    <td rowspan="3" colspan="1" style="background-color: rgb(153, 153, 153); font-weight: bold; text-align: center; width: 8%;"><big>Speed
    Grade<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(153, 153, 153); font-weight: bold; text-align: center; width: 10%;"><big>Info<br>
    </big></td>
    <td colspan="7" rowspan="1" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 123px;"><big><big>openMSP430
    Configuration</big></big><br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="2" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>No
    Debug<br>
    </big></td>
    <td colspan="1" rowspan="2" style="vertical-align: middle; text-align: center; background-color: rgb(153, 153, 153);"><big><span style="font-weight: bold;">No Debug with HW multiplier</span></big><br>
    </td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;" rowspan="2" colspan="1"><big>With debug interface<br>
    (no HW breakpoints)</big></td>
    <td rowspan="1" colspan="4" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center;"><big>With
    debug interface (# hardware breakpoint units)</big></td>
    </tr>
    <tr>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>1<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>2<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>3<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>4<br>
    </big></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="6" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Spartan
    3<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">-4<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    609<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 811</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    125<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    165<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    272<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    366<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    458<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; width: 72px; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">458<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">533</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">594<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">637<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">679
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">721<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">763<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">30.06
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">30.05 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">28.29
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">22.26
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">25.59
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">25.19
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">23.50
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-5<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 609<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 811</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    127<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 166<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 276<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 367<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 459<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">458<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">533</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">594
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">637
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">679
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">721
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed<br>
    </td>
    <td style="width: 90px; text-align: center;">32.69 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">34.11 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">32.63 MHz<br>
    </td>
    <td style="text-align: center;">27.09 MHz<br>
    </td>
    <td style="text-align: center;">28.90 MHz<br>
    </td>
    <td style="text-align: center;">27.68 MHz<br>
    </td>
    <td style="text-align: center;">27.63 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="6" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Spartan
    3E<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">-4<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="width: 90px; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    615<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 816</span><br>
    </td>
    <td style="width: 123px; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    131<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    185<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    298<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    383<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    474<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">458<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">533</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">594
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">637
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">679
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">721
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed<br>
    </td>
    <td style="width: 90px; background-color: rgb(240, 240, 240); text-align: center;">32.03
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">32.09 MHz<br>
    </td>
    <td style="width: 123px; background-color: rgb(240, 240, 240); text-align: center;">28.00
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">27.26
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">27.23
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">27.36
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">24.80
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-5<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="background-color: white; width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    615<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 816</span><br>
    </td>
    <td style="background-color: white; width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    131<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    184<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    295<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    383<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    474<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">458<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">533</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">594
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">637
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">679
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">721
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: white; width: 90px; text-align: center;">37.27
    MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">37.71 MHz<br>
    </td>
    <td style="background-color: white; width: 123px; text-align: center;">32.51
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">32.34 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">29.51 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">30.26 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">29.29 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="6" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Spartan
    3A<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">-4<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    629<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 832</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    139<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    191<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    304<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    396<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    489<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">459<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">534</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">31.23
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">31.05 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">29.08
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">26.45
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">26.39
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">24.87
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">24.47
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-5<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 622<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 827</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    138<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 187<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 302<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 388<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 483<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">459<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">534</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">36.03 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">36.14 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">33.50 MHz<br>
    </td>
    <td style="text-align: center;">30.65 MHz<br>
    </td>
    <td style="text-align: center;">30.79 MHz<br>
    </td>
    <td style="text-align: center;">29.70 MHz<br>
    </td>
    <td style="text-align: center;">27.70 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="6" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Spartan
    3A DSP<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">-4<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    628<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 831</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    140<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    197<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    310<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    402<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    497<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">459
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">534</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">31.18
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">31.26 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">29.51
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">26.61
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">26.48
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">24.30
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">24.56
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-5<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 621<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 826</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    136<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 196<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 312<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 400<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 495<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">459
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">534</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">39.31 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">37.59 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">33.59 MHz<br>
    </td>
    <td style="text-align: center;">32.61 MHz<br>
    </td>
    <td style="text-align: center;">33.00 MHz<br>
    </td>
    <td style="text-align: center;">28.86 MHz<br>
    </td>
    <td style="text-align: center;">28.49 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Spartan
    6<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">-2<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">6-LUTs
    </td>
    <td style="width: 90px; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    277<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 436</span><br>
    </td>
    <td style="width: 123px; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    620<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    705<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    774<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    851<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    905<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">459
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">533</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; background-color: rgb(240, 240, 240); text-align: center;">41.06
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">41.03 MHz<br>
    </td>
    <td style="width: 123px; background-color: rgb(240, 240, 240); text-align: center;">39.09
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">34.88
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">34.40
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">26.89
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">33.86
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-3<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">6-LUTs
    </td>
    <td style="background-color: white; width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    271<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 425</span><br>
    </td>
    <td style="background-color: white; width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    603<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    685<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    753<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    829<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    876<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">459
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">533</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: white; width: 90px; text-align: center;">58.19
    MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">58.21 MHz<br>
    </td>
    <td style="background-color: white; width: 123px; text-align: center;">50.01
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">46.45 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">45.84 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">41.76 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">43.33 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold;">-4</span><br>
    </td>
    <td style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; color: rgb(102, 0, 204);">6-LUTs</td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1
    267<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 424</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1
    603<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1
    681<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1
    750<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1
    828<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1
    873<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">459<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">533</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">595<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">638<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">680<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">722<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">764<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">64.96
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">67.62 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">57.38
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">51.11
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">50.07
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">42.97
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">43.61
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Virtex
    4<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">-10<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="background-color: white; width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    629<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 829</span><br>
    </td>
    <td style="background-color: white; width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    151<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    200<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    305<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    395<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    490<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">459
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">534</span><br>
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: white; width: 90px; text-align: center;">50.12
    MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">51.17 MHz<br>
    </td>
    <td style="background-color: white; width: 123px; text-align: center;">45.61
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">43.60 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">41.67 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">42.34 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">39.18 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-11<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    632<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 810</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">2
    152<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">2
    202<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">2
    307<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">2
    396<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">2
    491<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">459
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">534</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">595
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">638
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">680
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">722
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center; background-color: rgb(240, 240, 240);">57.27
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">56.14 MHz<br>
    </td>
    <td style="width: 123px; text-align: center; background-color: rgb(240, 240, 240);">53.79
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">48.82
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">48.59
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">48.70
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">47.39
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-12<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">4-LUTs
    </td>
    <td style="background-color: white; width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    627<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 819</span><br>
    </td>
    <td style="background-color: white; width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    152<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    199<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    305<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    394<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">2
    489<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">459
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">534</span><br>
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">595
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">638
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">680
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">722
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">764
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: white; width: 90px; text-align: center;">66.56
    MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">64.59 MHz<br>
    </td>
    <td style="background-color: white; width: 123px; text-align: center;">57.46
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">59.27 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">50.78 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">54.40 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">53.87 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Virtex
    5<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">-1<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">6-LUTs
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    219<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 372</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    601<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    691<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    753<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    832<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    881<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">458<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">532</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">594
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">637
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">679
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">721
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center; background-color: rgb(240, 240, 240);">74.39
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">74.69 MHz<br>
    </td>
    <td style="width: 123px; text-align: center; background-color: rgb(240, 240, 240);">70.25
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">63.09
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">59.89
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">53.00
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">53.53
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-2<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">6-LUTs
    </td>
    <td style="background-color: white; width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    221<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 372</span><br>
    </td>
    <td style="background-color: white; width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    601<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    692<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    752<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    831<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    881<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">458
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">532</span><br>
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">594
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">637
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">679
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">721
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: white; width: 90px; text-align: center;">82.16
    MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">82.12 MHz<br>
    </td>
    <td style="background-color: white; width: 123px; text-align: center;">77.42
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">69.06 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">64.99 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">58.40 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">70.06 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-3<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">6-LUTs
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    215<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1 367<br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    602<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    692<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    751<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    831<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    882<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">458
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">532</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">594
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">637
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">679
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">721
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center; background-color: rgb(240, 240, 240);">97.85
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">97.25 MHz<br>
    </td>
    <td style="width: 123px; text-align: center; background-color: rgb(240, 240, 240);">85.67
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">72.33
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">76.99
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">71.20
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">69.05
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="background-color: rgb(204, 204, 204); font-weight: bold; text-align: center;"><big>Virtex
    6<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); font-weight: bold; text-align: center; width: 65px;">-1<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">6-LUTs</td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    237<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(102, 0, 204);">1 390<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    585<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    673<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    746<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    818<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">1
    866<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">458
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">532</span><br>
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">594
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">637
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">679
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">721
    </td>
    <td style="vertical-align: top; background-color: white; text-align: center; color: rgb(0, 153, 0);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;"><big><small>Speed</small><br>
    </big></td>
    <td style="background-color: white; text-align: center;">89.32 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">92.59 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">87.64 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">68.59 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">77.03 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">73.56 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">66.47 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); font-weight: bold; text-align: center; width: 65px;">-2<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">6-LUTs</td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    235<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 388</span><br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    582<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    668<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    737<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    816<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: rgb(240, 240, 240);">1
    860<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); color: white; text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">458
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">532</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">594
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">637
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">679
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">721
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0); background-color: rgb(240, 240, 240);">763
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">102.40
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">97.51 MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">98.05
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">86.74
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">79.95
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">77.19
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">74.94
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold;">-3</span><br>
    </td>
    <td style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; color: rgb(102, 0, 204);">6-LUTs</td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">1
    234<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(102, 0, 204);">1 387<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">1
    579<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">1
    668<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">1
    737<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">1
    815<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">1
    860<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="background-color: white; text-align: center; color: rgb(0, 153, 0);">458<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">532</span><br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(0, 153, 0);">594<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(0, 153, 0);">637<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(0, 153, 0);">679<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(0, 153, 0);">721<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(0, 153, 0);">763<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold;">Speed</td>
    <td style="background-color: white; text-align: center;">111.74
    MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">115.71 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">102.04
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">88.93 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">89.90 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">84.47 MHz<br>
    </td>
    <td style="background-color: white; text-align: center; width: 10%;">90.80
    MHz<br>
    </td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <a name="2.1.2 Altera"></a>
    <h3>2.1.2 Altera</h3>
     
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
     
    <tbody>
    <tr>
    <td style="width: 10%; font-weight: bold; text-align: center; background-color: rgb(153, 153, 153);" colspan="1" rowspan="3"><big>FPGA Device<br>
    </big></td>
    <td rowspan="3" colspan="1" style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 8%;"><big>Speed
    Grade<br>
    </big></td>
    <td colspan="1" rowspan="3" style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 10%;"><big>Info<br>
    </big></td>
    <td colspan="7" rowspan="1" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 123px;"><big><big>openMSP430
    Configuration<br>
    </big> </big></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="2" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>No
    Debug<br>
    </big></td>
    <td colspan="1" rowspan="2" style="vertical-align: middle; background-color: rgb(153, 153, 153);"><big><span style="font-weight: bold;">No Debug with HW multiplier</span></big></td>
    <td colspan="1" rowspan="2" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>With
    debug interface<br>
    (no HW breakpoints)</big></td>
    <td rowspan="1" colspan="4" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center;"><big>With
    debug interface (# hardware breakpoint units)</big></td>
    </tr>
    <tr>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>1<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>2<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>3<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>4<br>
    </big></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Cyclone
    II<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-6<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204);">1
    552<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 785</span><br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204);">2
    040<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204);">2
    179<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204);">2
    286<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204);">2
    418<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); color: rgb(102, 0, 204);">2
    507<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; width: 70px; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">537</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); width: 90px;">45.10
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">47.32 MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240); width: 123px;">42.79
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">43.81
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">41.57
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">42.10
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">40.71
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-7<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="text-align: center; width: 90px; color: rgb(102, 0, 204);">1 556<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 781</span><br>
    </td>
    <td style="text-align: center; width: 123px; color: rgb(102, 0, 204);">2
    049<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">2 191<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">2 298<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">2 414<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">2 508<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">537</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed<br>
    </td>
    <td style="width: 90px; text-align: center; color: black;">40.53 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: black;">40.24 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">37.39 MHz<br>
    </td>
    <td style="text-align: center;">38.39 MHz<br>
    </td>
    <td style="text-align: center;">34.23 MHz<br>
    </td>
    <td style="text-align: center;">35.54 MHz<br>
    </td>
    <td style="text-align: center;">33.96 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-8<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    555<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">1 779<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    047<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    192<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    290<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    406<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    524<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">537<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">33.07
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">32.97 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">32.00
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">30.62
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">29.78
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">29.63
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">26.38
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Cyclone
    III<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-6<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 539<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 752</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    021<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 148<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 251<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 357<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 450<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">537</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed<br>
    </td>
    <td style="width: 90px; text-align: center;">51.87 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">54.11 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">48.26 MHz<br>
    </td>
    <td style="text-align: center;">49.95 MHz<br>
    </td>
    <td style="text-align: center;">48.39 MHz<br>
    </td>
    <td style="text-align: center;">48.43 MHz<br>
    </td>
    <td style="text-align: center;">45.61 MHz</td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-7<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    539<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 750</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    022<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    147<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    244<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    363<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    443<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">537</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">46.25
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">43.88 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">44.28
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">41.64
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">39.18
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">40.59
    MHz</td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">40.86
    MHz</td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-8<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 542<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 752</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    020<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 158<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 243<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 380<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 448<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">537</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">40.56 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">38.68 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">38.0 MHz<br>
    </td>
    <td style="text-align: center;">38.38 MHz<br>
    </td>
    <td style="text-align: center;">33.94 MHz<br>
    </td>
    <td style="text-align: center;">33.57 MHz</td>
    <td style="text-align: center;">32.86 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Cyclone
    IV GX<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-6<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    541<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 750</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    024<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    148<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    246<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    364<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    459<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">537</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">50.58
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">51.77 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">51.16
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">49.6
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">47.38
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">47.07
    MHz</td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">46.67
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-7<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 540<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(102, 0, 204);">1 749<br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    024<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 148<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 247<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 366<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 448<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">537<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">47.09 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">44.19 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">44.43 MHz<br>
    </td>
    <td style="text-align: center;">42.63 MHz<br>
    </td>
    <td style="text-align: center;">42.49 MHz<br>
    </td>
    <td style="text-align: center;">41.6 MHz</td>
    <td style="text-align: center;">39.03 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-8<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    544<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 747</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">2
    020<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    147<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    244<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    363<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    444<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">537</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">653<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">695<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">737<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">779<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">40.09
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">37.67 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">39.76
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">36.86
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">37.27
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">34.69
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">37.03
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Arria
    GX<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-6<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 044<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 160</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    414<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 525<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 588<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 675<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 765<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">468<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">539</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">612<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">656<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">708<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">744<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">791<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">48.71 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">49.23 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">44.58 MHz<br>
    </td>
    <td style="text-align: center;">44.38 MHz<br>
    </td>
    <td style="text-align: center;">41.88 MHz<br>
    </td>
    <td style="text-align: center;">42.51 MHz<br>
    </td>
    <td style="text-align: center;">42.18 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Arria
    II GX<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-4<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    031<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 146</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    407<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    507<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    577<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    668<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    754<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">469<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">540<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">611<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">654<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">706<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">749<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">84.37
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">83.22 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">78.81
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">75.19
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">75.75
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">76.3
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">79.81
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-5<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 025<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 148</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    404<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 503<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 600<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 670<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 742<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">467<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">539</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">612<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">654<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">708<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">744<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">805<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">76.17 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">72.65 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">68.86 MHz</td>
    <td style="text-align: center;">65.58 MHz<br>
    </td>
    <td style="text-align: center;">67.96 MHz<br>
    </td>
    <td style="text-align: center;">66.81 MHz<br>
    </td>
    <td style="text-align: center;">65.35 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-6<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    032<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 143</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    403<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    506<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    590<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    677<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    755<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">469<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">539</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">611<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">659<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">704<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">753<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">62.63
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">61.59 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">59.66
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">57.2
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">55.76
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">59.04
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">57.41
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Stratix<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-5<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 525<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 730</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    989<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 081<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 185<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 279<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 378<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">-</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">44.00 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">43.38 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">43.64 MHz<br>
    </td>
    <td style="text-align: center;">42.92 MHz<br>
    </td>
    <td style="text-align: center;">40.58 MHz</td>
    <td style="text-align: center;">41.70 MHz<br>
    </td>
    <td style="text-align: center;">39.71 MHz</td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-6<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    525<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 730</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    989<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    081<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    185<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    279<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">2
    378<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">-</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">39.88
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">40.74 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">39.82
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">37.18
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">37.42
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">36.97
    MHz</td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">36.81
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-7<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">LEs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 525<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 730</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    989<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 081<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 185<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 279<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">2 378<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">-</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">-<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">32.97 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">34.67 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">33.27 MHz<br>
    </td>
    <td style="text-align: center;">32.83 MHz</td>
    <td style="text-align: center;">33.06 MHz<br>
    </td>
    <td style="text-align: center;">31.54 MHz<br>
    </td>
    <td style="text-align: center;">30.66 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Stratix
    II<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-3<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    040<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 145</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    422<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    523<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    590<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    665<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    753<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">469<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">540</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">655<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">698<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">739<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">783<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">73.79
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">73.28 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">72.38
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">65.89
    MHz </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">67.11
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">66.09
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">65.75
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-4<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 039<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 157</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    424<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 529<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 601<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 671<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 762<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">469<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">540</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">613<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">658<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">699<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">741<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">781<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">63.75 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">63.29 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">60.31 MHz<br>
    </td>
    <td style="text-align: center;">58.10 MHz</td>
    <td style="text-align: center;">56.84 MHz<br>
    </td>
    <td style="text-align: center;">59.57 MHz</td>
    <td style="text-align: center;">59.26 MHz</td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-5<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    039<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 155</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    419<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    527<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    592<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    678<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    763<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">469<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">541</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">617<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">655<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">698<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">741<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">783<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">54.04
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">54.82 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">51.89
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">50.81
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">49.89
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">50.02
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">49.31
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Stratix
    III<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 64px;">-2<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 029<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 147</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    408<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 511<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 597<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 666<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 748<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">468<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">538</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">611<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">656<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">702<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">752<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">799<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">93.84 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">97.68 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">89.59 MHz<br>
    </td>
    <td style="text-align: center;">84.5 MHz<br>
    </td>
    <td style="text-align: center;">86.24 MHz<br>
    </td>
    <td style="text-align: center;">86.72 MHz<br>
    </td>
    <td style="text-align: center;">85.01 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-3<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">1
    033<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">1 142</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    414<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    506<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    588<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    675<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">1
    754<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">469<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">539</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">610<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">656<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">699<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">753<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">807<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">83.68
    MHz<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center;">80.16 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">75.77
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">71.9
    MHz</td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">76.64
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">73.49
    MHz</td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">75.35
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 64px;" colspan="1" rowspan="3">-4<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 70px; text-align: center;">ALUTs<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">1 030<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">1 147</span><br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">1
    411<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 505<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 587<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 670<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">1 760<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold; color: rgb(0, 153, 0);">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">469<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(0, 153, 0);">539</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">614<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">654<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">700<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">754<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">803<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 70px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center;">73.17 MHz<br>
    </td>
    <td style="vertical-align: top; text-align: center;">72.42 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">72.63 MHz<br>
    </td>
    <td style="text-align: center;">66.91 MHz</td>
    <td style="text-align: center;">68.49 MHz<br>
    </td>
    <td style="text-align: center;">65.19 MHz<br>
    </td>
    <td style="text-align: center;">68.43 MHz</td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <a name="2.1.3 Actel"></a>
    <h3>2.1.3 Actel</h3>
     
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
     
    <tbody>
    <tr>
    <td style="width: 10%; background-color: rgb(153, 153, 153); text-align: center;" colspan="1" rowspan="3"><big><span style="font-weight: bold;">FPGA
    Device</span><br>
    </big></td>
    <td rowspan="3" colspan="1" style="background-color: rgb(153, 153, 153); font-weight: bold; text-align: center; width: 8%;"><big>Speed
    Grade<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(153, 153, 153); font-weight: bold; text-align: center; width: 10%;"><big>Info<br>
    </big></td>
    <td colspan="7" rowspan="1" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 123px;"><big><big>openMSP430
    Configuration<br>
    </big> </big></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="2" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>No
    Debug<br>
    </big></td>
    <td colspan="1" rowspan="2" style="vertical-align: middle; background-color: rgb(153, 153, 153); text-align: center;"><big><span style="font-weight: bold;">No Debug with HW multiplier</span></big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;" rowspan="2" colspan="1"><big>With debug interface<br>
    (no HW breakpoints)</big></td>
    <td rowspan="1" colspan="4" style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center;"><big>With
    debug interface (# hardware breakpoint units)</big></td>
    </tr>
    <tr>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>1<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>2<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>3<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(153, 153, 153); text-align: center; width: 12%;"><big>4<br>
    </big></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>ProASIC3E<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">Std<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">3
    585<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">4 734</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">4
    884<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    014<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    263<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    571<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    747<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">550<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">709<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">16.81
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">16.14 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">13.98
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">16.22
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">16.66
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">14.89
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">15.24
    MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-1<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles<br>
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center;">3 635<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">4 585<br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center;">4
    742<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">5 004<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">5 246<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">5 345<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center;">5 713<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(0, 153, 0);">552</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">624<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">667<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">708<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed<br>
    </td>
    <td style="width: 90px; text-align: center;">18.01 MHz<br>
    </td>
    <td style="text-align: center;">18.97 MHz<br>
    </td>
    <td style="width: 123px; text-align: center;">17.92 MHz<br>
    </td>
    <td style="text-align: center;">16.03 MHz<br>
    </td>
    <td style="text-align: center;">19.03 MHz<br>
    </td>
    <td style="text-align: center;">19.08 MHz<br>
    </td>
    <td style="text-align: center;">18.29 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="color: black; text-align: center; font-weight: bold; background-color: rgb(204, 204, 204);">-2<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; font-weight: bold; background-color: rgb(204, 204, 204);">Tiles</td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">3
    556<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">4 573</span><br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">4
    811<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5
    002<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5
    210<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5
    446<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5 625<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">553</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">707<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">792<br>
    </td>
    </tr>
    <tr>
    <td style="color: black; text-align: center; font-weight: bold; background-color: rgb(204, 204, 204);">Speed</td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">22.45
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">20.84 MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">21.42
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">21.24
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">24.01
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">22.85
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">19.45
    MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="6" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>ProASIC3L<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">Std<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles
    </td>
    <td style="width: 90px; background-color: white; color: rgb(102, 0, 204); text-align: center;">3
    549<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(102, 0, 204);">4 665</span><br>
    </td>
    <td style="width: 123px; background-color: white; color: rgb(102, 0, 204); text-align: center;">4
    774<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    012<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    183<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    453<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5 638<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">480<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(0, 153, 0);">552</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">667<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">709<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">792<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed<br>
    </td>
    <td style="width: 90px; background-color: white; text-align: center;">14.31
    MHz<br>
    </td>
    <td style="text-align: center;">14.27 MHz<br>
    </td>
    <td style="width: 123px; background-color: white; text-align: center;">15.14
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">14.42 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">14.74 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">14.15 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">14.05 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-1<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">3
    535<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">4 595</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">4
    776<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    032<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    174<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    418<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5 706<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">551</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">708<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">18.13
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">17.31 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">15.90
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">18.34
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">17.14
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">17.69
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">16.27 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>ProASIC3<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">Std<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles
    </td>
    <td style="background-color: white; width: 90px; color: rgb(102, 0, 204); text-align: center;">3
    585<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(102, 0, 204);">4 734</span><br>
    </td>
    <td style="background-color: white; width: 123px; color: rgb(102, 0, 204); text-align: center;">4
    884<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    014<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    263<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    571<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5 747<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(0, 153, 0);">550</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">709<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: white; width: 90px; text-align: center;">16.47
    MHz<br>
    </td>
    <td style="text-align: center;">15.62 MHz<br>
    </td>
    <td style="background-color: white; width: 123px; text-align: center;">15.03
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">16.55 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">16.00 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">14.63 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">15.38 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; font-weight: bold; background-color: rgb(204, 204, 204);" colspan="1" rowspan="3">-1<br>
    </td>
    <td style="text-align: center; font-weight: bold; color: rgb(102, 0, 204); background-color: rgb(204, 204, 204);">Tiles<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">3
    635<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">4 585</span><br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">4
    742<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5
    004<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5
    246<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5
    345<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204); background-color: rgb(240, 240, 240);">5 713<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">552</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">624<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">667<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">708<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; font-weight: bold; background-color: rgb(204, 204, 204);">Speed<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">18.03
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">19.21 MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">18.39
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">18.40
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">18.95
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">17.13
    MHz<br>
    </td>
    <td style="text-align: center; background-color: rgb(240, 240, 240);">18.59 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-2<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles
    </td>
    <td style="width: 90px; color: rgb(102, 0, 204); text-align: center; background-color: white;">3
    556<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">4 573<br>
    </td>
    <td style="width: 123px; color: rgb(102, 0, 204); text-align: center; background-color: white;">4
    811<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: white;">5
    002<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: white;">5
    210<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: white;">5
    446<br>
    </td>
    <td style="color: rgb(102, 0, 204); text-align: center; background-color: white;">5 625<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(0, 153, 0);">553</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">707<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">792<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; text-align: center; background-color: white;">22.80
    MHz<br>
    </td>
    <td style="text-align: center;">21.97 MHz<br>
    </td>
    <td style="width: 123px; text-align: center; background-color: white;">21.67
    MHz<br>
    </td>
    <td style="text-align: center; background-color: white;">21.24 MHz<br>
    </td>
    <td style="text-align: center; background-color: white;">22.57 MHz<br>
    </td>
    <td style="text-align: center; background-color: white;">23.27 MHz<br>
    </td>
    <td style="text-align: center; background-color: white;">20.75 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>IGLOOe<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">Std<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">3
    646<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(102, 0, 204);">4 844</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">4
    857<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    016<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    214<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    467<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5 739<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;"><span style="color: rgb(0, 153, 0);">552</span><br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">709<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">751<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">791<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">14.01
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">14.51 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">13.61
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">13.85
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">14.29
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">14.44
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">14.10 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="9" style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;"><big>Fusion<br>
    </big></td>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; width: 65px;">Std<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles
    </td>
    <td style="width: 90px; background-color: white; color: rgb(102, 0, 204); text-align: center;">3
    585<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">4 734<br>
    </td>
    <td style="width: 123px; background-color: white; color: rgb(102, 0, 204); text-align: center;">4
    884<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    014<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    263<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5
    571<br>
    </td>
    <td style="background-color: white; color: rgb(102, 0, 204); text-align: center;">5 747<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(0, 153, 0);">550</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">709<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="width: 90px; background-color: white; text-align: center;">16.65
    MHz<br>
    </td>
    <td style="text-align: center;">15.84 MHz<br>
    </td>
    <td style="width: 123px; background-color: white; text-align: center;">14.25
    MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">15.60
    MHz </td>
    <td style="background-color: white; text-align: center;">15.62 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">15.20 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">15.50 MHz<br>
    </td>
    </tr>
    <tr>
    <td style="text-align: center; background-color: rgb(204, 204, 204); font-weight: bold; width: 65px;" colspan="1" rowspan="3">-1<br>
    </td>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; color: rgb(102, 0, 204); width: 72px; text-align: center;">Tiles
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; color: rgb(102, 0, 204); text-align: center;">3
    635<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);"><span style="color: rgb(102, 0, 204);">4 585</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; color: rgb(102, 0, 204); text-align: center;">4
    742<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    004<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    246<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5
    345<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); color: rgb(102, 0, 204); text-align: center;">5 713<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">552<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">624<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">667<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">708<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 240); text-align: center; color: rgb(0, 153, 0);">793<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); font-weight: bold; width: 72px; text-align: center;">Speed</td>
    <td style="background-color: rgb(240, 240, 240); width: 90px; text-align: center;">17.90
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">18.46 MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); width: 123px; text-align: center;">17.79
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">17.86
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">17.81
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">18.69
    MHz<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center;">17.98 MHz<br>
    </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="background-color: rgb(204, 204, 204); text-align: center;"><span style="font-weight: bold;">-2</span><br>
    </td>
    <td style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold; color: rgb(102, 0, 204);">Tiles</td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">3
    556<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(102, 0, 204);">4 573</span><br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">4
    811<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">5
    002<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">5
    210<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">5
    446<br>
    </td>
    <td style="background-color: white; text-align: center; color: rgb(102, 0, 204);">5 625<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top; background-color: rgb(204, 204, 204); text-align: center; color: rgb(0, 153, 0);"><span style="font-weight: bold;">Registers</span></td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">479<br>
    </td>
    <td style="text-align: center;"><span style="color: rgb(0, 153, 0);">553</span><br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">623<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">666<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">707<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">750<br>
    </td>
    <td style="vertical-align: top; text-align: center; color: rgb(0, 153, 0);">792<br>
    </td>
    </tr>
    <tr>
    <td style="background-color: rgb(204, 204, 204); text-align: center; font-weight: bold;">Speed</td>
    <td style="background-color: white; text-align: center;">22.30 MHz<br>
    </td>
    <td style="text-align: center;">21.34 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">20.58 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">20.27 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">21.48 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">21.39 MHz<br>
    </td>
    <td style="background-color: white; text-align: center;">20.59 MHz<br>
    </td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <a name="2.2 ASICs"></a><br>
     
    <h2>2.2 ASICs</h2>
     
    <a name="2.2.1 180nm"></a>
    <h3>2.2.1 180nm</h3>
     
    <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
     
    <tbody>
    <tr>
    <td style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 18%;" colspan="1" rowspan="3"><big>Target Frequency<br>
    </big></td>
    <td colspan="1" rowspan="3" style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 10%;"><big>Info<br>
    </big></td>
    <td colspan="7" rowspan="1" style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153);"><big><big>openMSP430
    Configuration</big><br>
    </big></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="2" style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 12%;"><big>No
    Debug<br>
    </big></td>
    <td colspan="1" rowspan="2" style="vertical-align: middle; background-color: rgb(153, 153, 153);"><big><span style="font-weight: bold;">No Debug with HW multiplier</span></big></td>
    <td colspan="1" rowspan="2" style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 12%;"><big>With
    debug interface<br>
    (no HW breakpoints)<br>
    </big></td>
    <td rowspan="1" colspan="4" style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153);"><big>With
    debug interface (# hardware breakpoint units)<br>
    </big></td>
    </tr>
    <tr>
    <td style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 12%;"><big>1<br>
    </big></td>
    <td style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 12%;"><big>2<br>
    </big></td>
    <td style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 12%;"><big>3<br>
    </big></td>
    <td style="font-weight: bold; text-align: center; background-color: rgb(153, 153, 153); width: 12%;"><big>4<br>
    </big></td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; background-color: silver; text-align: center;"><big>25
    MHz<br>
    </big></td>
    <td style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;">kgates<br>
    </td>
    <td style="background-color: rgb(240, 240, 240); text-align: center; color: rgb(102, 0, 204);">8 042<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">10 457<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">9 995<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">10 744<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">11 487<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">12 189<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">12 905<br>
    </td>
    </tr>
    <tr>
     
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">80 256<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;">104 352<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">99 742<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">107 223<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">114 637<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">121 643<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">128 784<br>
    </td>
    </tr>
    <tr>
    <td style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;">timing<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; text-align: center; background-color: silver;"><big>33
    MHz</big></td>
    <td style="font-weight: bold; text-align: center; background-color: rgb(204, 204, 204);">kgates</td>
    <td style="text-align: center; color: rgb(102, 0, 204);">8 039<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">10 458</span><br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">9 976<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">10 839<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">11 584<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">12 293<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">13 022<br>
    </td>
    </tr>
    <tr>
     
    <td style="text-align: center;">80 226<br>
    </td>
    <td style="vertical-align: top; text-align: center;">104 365<br>
    </td>
    <td style="text-align: center;">99 552<br>
    </td>
    <td style="text-align: center;">108 164<br>
    </td>
    <td style="text-align: center;">115 602<br>
    </td>
    <td style="text-align: center;">122 677<br>
    </td>
    <td style="text-align: center;">129 956<br>
    </td>
    </tr>
    <tr>
    <td style="font-weight: bold; text-align: center; background-color: rgb(204, 204, 204);">timing</td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span>
    </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; background-color: silver; text-align: center;"><big>50
    MHz</big></td>
    <td style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;">kgates</td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">8 187<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(102, 0, 204);">10 753</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">10 149<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">11 189<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">11 929<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">12 651<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">13 405<br>
    </td>
    </tr>
    <tr>
     
    <td style="background-color: rgb(240, 240, 239); text-align: center;">81 703<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;">107 305<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">101 285<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">111 660<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">119 048<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">126 253<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">133 778<br>
    </td>
    </tr>
    <tr>
    <td style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;">timing</td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; text-align: center; background-color: silver;"><big>66
    MHz</big></td>
    <td style="font-weight: bold; text-align: center; background-color: rgb(204, 204, 204);">kgates</td>
    <td style="text-align: center; color: rgb(102, 0, 204);">8 535<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">11 837</span><br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">10 591<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">12&nbsp; 042<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">12 873<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">13 489<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">14 299<br>
    </td>
    </tr>
    <tr>
     
    <td style="text-align: center;">85 172<br>
    </td>
    <td style="vertical-align: top; text-align: center;">118 130<br>
    </td>
    <td style="text-align: center;">105 693<br>
    </td>
    <td style="text-align: center;">120 176<br>
    </td>
    <td style="text-align: center;">128 465<br>
    </td>
    <td style="text-align: center;">134 606<br>
    </td>
    <td style="text-align: center;">142 692<br>
    </td>
    </tr>
    <tr>
    <td style="font-weight: bold; text-align: center; background-color: rgb(204, 204, 204);">timing</td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span>
    </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; background-color: silver; text-align: center;"><big>100</big><span style="color: rgb(51, 204, 0);"></span><big> MHz</big></td>
    <td style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;">kgates</td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">10 019<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(102, 0, 204);">14 468</span><br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">12 095<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">14 386<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">15 197<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">16 027<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center; color: rgb(102, 0, 204);">16 936<br>
    </td>
    </tr>
    <tr>
     
    <td style="background-color: rgb(240, 240, 239); text-align: center;">99 988<br>
    </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;">144 382<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">120 698<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">143 560<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">151 660<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">159 936<br>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;">169 014<br>
    </td>
    </tr>
    <tr>
    <td style="font-weight: bold; background-color: rgb(204, 204, 204); text-align: center;">timing</td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="vertical-align: top; background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(247, 0, 0);">-0.98 ns</span>
    </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    <td style="background-color: rgb(240, 240, 239); text-align: center;"><span style="color: rgb(51, 204, 0);">clean</span> </td>
    </tr>
    <tr>
    <td colspan="1" rowspan="3" style="font-weight: bold; text-align: center; background-color: silver;"><big>125
    MHz<br>
    </big></td>
    <td style="font-weight: bold; text-align: center; background-color: rgb(204, 204, 204);">kgates</td>
    <td style="text-align: center; color: rgb(102, 0, 204);">11 851<br>
    </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(102, 0, 204);">16 142</span><br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">13 838<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">16 502<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">17 209<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">17 660<br>
    </td>
    <td style="text-align: center; color: rgb(102, 0, 204);">18 718<br>
    </td>
    </tr>
    <tr>
     
    <td style="text-align: center;">118 270<br>
    </td>
    <td style="vertical-align: top; text-align: center;">161 087<br>
    </td>
    <td style="text-align: center;">138 095<br>
    </td>
    <td style="text-align: center;">164 676<br>
    </td>
    <td style="text-align: center;">171 738<br>
    </td>
    <td style="text-align: center;">176 229<br>
    </td>
    <td style="text-align: center;">186 793<br>
    </td>
    </tr>
    <tr>
    <td style="font-weight: bold; text-align: center; background-color: rgb(204, 204, 204);">timing</td>
    <td style="text-align: center;"><span style="color: rgb(247, 0, 0);">-0.75 ns</span> </td>
    <td style="vertical-align: top; text-align: center;"><span style="color: rgb(247, 0, 0);">-2.85 ns</span>
    </td>
    <td style="text-align: center;"><span style="color: rgb(247, 0, 0);">-0.62 ns</span> </td>
    <td style="text-align: center;"><span style="color: rgb(247, 0, 0);">-1.46 ns</span> </td>
    <td style="text-align: center;"><span style="color: rgb(247, 0, 0);">-1.66 ns</span> </td>
    <td style="text-align: center;"><span style="color: rgb(247, 0, 0);">-1.81 ns</span> </td>
    <td style="text-align: center;"><span style="color: rgb(247, 0, 0);">-1.81 ns</span> </td>
    </tr>
    </tbody>
    </table>
     
    <br>
     
    <br>
     
    </body></html>
    /openmsp430/trunk/doc/html/core.html
    1,56 → 1,82
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>openMSP430 Core</title>
    </head>
    <body>
    <html><head><title>openMSP430 Core</title></head><body>
    <h3>Table of content</h3>
    <ul>
    <li><a href="#1. Introduction">1. Introduction</a></li>
    <li><a href="#2. Design"> 2. Design</a>
    <li><a href="#1.%20Introduction">1. Introduction</a></li>
    <li><a href="#2.%20Design"> 2. Design</a>
    <ul>
    <li><a href="#2.1 Core"> 2.1 Core</a>
    <li><a href="#2.1%20Core"> 2.1 Core</a>
    <ul>
    <li><a href="#2.1.1 Design structure"> 2.1.1 Design structure</a></li>
    <li><a href="#2.1.2 Limitations"> 2.1.2 Limitations</a></li>
    <li><a href="#2.1.3 Configuration"> 2.1.3 Configuration</a></li>
    <li><a href="#2.1.1%20Design%20structure"> 2.1.1 Design structure</a></li>
    <li><a href="#2.1.2%20Limitations"> 2.1.2 Limitations</a></li>
    <li><a href="#2.1.3%20Configuration"> 2.1.3 Configuration</a></li>
    <ul>
    <li><a href="#2.1.3.1 Basic System Configuration"> 2.1.3.1 Basic System Configuration</a></li>
    <li><a href="#2.1.3.2 Advanced System Configuration"> 2.1.3.2 Advanced System Configuration</a></li>
    <li><a href="#2.1.3.3 Expert System Configuration"> 2.1.3.3 Expert System Configuration</a></li>
    <li><a href="#2.1.3.1%20Basic%20System%20Configuration"> 2.1.3.1 Basic System Configuration</a></li>
    <li><a href="#2.1.3.2%20Advanced%20System%20Configuration"> 2.1.3.2 Advanced System Configuration</a></li>
    <li><a href="#2.1.3.3%20Expert%20System%20Configuration"> 2.1.3.3 Expert System Configuration</a></li>
    </ul>
    <li><a href="#2.1.4 Memory mapping"> 2.1.4 Memory mapping</a></li>
    <li><a href="#2.1.5 Pinout"> 2.1.5 Pinout</a></li>
    <li><a href="#2.1.6 Instruction Cycles and Lengths">2.1.6 Instruction Cycles and Lengths</a></li>
    <li><a href="#2.1.7 Serial Debug Interface"> 2.1.7 Serial Debug Interface</a></li>
    <li><a href="#2.1.4%20Memory%20mapping"> 2.1.4 Memory mapping</a></li>
    <li><a href="#2.1.5%20Pinout"> 2.1.5 Pinout</a></li>
    <li><a href="#2.1.6%20Instruction%20Cycles%20and%20Lengths">2.1.6 Instruction Cycles and Lengths</a></li>
    <li><a href="#2.1.7%20Serial%20Debug%20Interface"> 2.1.7 Serial Debug Interface</a></li>
    </ul>
    </li>
    <li><a href="#2.2 Peripherals"> 2.2 Peripherals</a>
    <ul>
    <li><a href="#2.2.1 Basic Clock Module"> 2.2.1 Basic Clock Module</a></li>
    <li><a href="#2.2.2 Watchdog Timer"> 2.2.2 Watchdog Timer</a></li>
    <li><a href="#2.2.3 Digital I/O"> 2.2.3 Digital I/O</a></li>
    <li><a href="#2.2.4 Timer A"> 2.2.4 Timer A</a></li>
    <li><a href="#2.2.5 16x16 Hardware Multiplier"> 2.2.5 16x16 Hardware Multiplier</a></li>
    </ul>
    </li>
    </ul>
    </li>
    <li><a href="#2.2_System_Peripherals"> 2.2 System Peripherals</a>
    <ul>
     
    <li><a href="#2.2.1%20Basic%20Clock%20Module"> 2.2.1 Basic Clock Module: FPGA</a></li>
    <li><a href="#2.2.2_Basic_Clock_Module_ASIC"> 2.2.2 Basic Clock Module: ASIC</a></li>
    <li><a href="#2.2.3_SFR">2.2.3 SFR</a><br>
    </li>
     
     
    <li><a href="#2.2.2%20Watchdog%20Timer"> 2.2.4 Watchdog Timer</a></li>
    <li><a href="core.html#2.2.5%2016x16%20Hardware%20Multiplier"> 2.2.5 16x16 Hardware Multiplier</a></li>
    </ul>
    </li>
    <li><a href="#2.3_Peripherals"> 2.3 External Peripherals</a></li>
    <ul>
    <li><a href="core.html#2.2.3%20Digital%20I/O">2.3.1 Digital I/O (FPGA ONLY)</a></li>
    <li><a href="core.html#2.2.4%20Timer%20A"> 2.3.2 Timer A (FPGA ONLY)</a></li>
    </ul>
    </ul></li>
    </ul>
     
    <a name="1. Introduction"></a>
    <h1>1. Introduction</h1>
     
    The openMSP430 is a 16-bit microcontroller core compatible with <b><a href="http://www.ti.com/litv/pdf/slau049f">TI's MSP430 family</a></b> (note that the extended version of the architecture, the MSP430X, isn't supported by this IP). It is based on a Von Neumann architecture, with a single address space for instructions and data.
    <br /><br />
    This design has been implemented to be FPGA friendly. Therefore, the core doesn't contain any clock gate and has only a single clock domain. As a consequence, the clock management block has a few limitations.
    <br /><br />
    It is to be noted that this IP doesn't contain the instruction and data memory blocks internally (these are technology dependent hard macros which are connected to the IP during chip integration).
    However the core is fully configurable in regard to the supported RAM and/or ROM sizes.
    <br /><br />
    In addition to the CPU core itself, several peripherals are also provided and can be easily connected to the core during integration.
    <br /><br />
    The openMSP430 is a 16-bit microcontroller core compatible with <b><a href="http://www.ti.com/litv/pdf/slau049f">TI's MSP430 family</a></b>
    (note that the extended version of the architecture, the MSP430X, isn't
    supported by this IP). It is based on a Von Neumann architecture, with
    a single address space for instructions and data.
    <br><br>Depending on the selected configuration, this design can either be:<br>
    <ul>
    <ul>
    <ul>
    <li>&nbsp;<span style="font-weight: bold;">FPGA friendly</span>: the core doesn't contain any clock gate and has only a single clock
    domain. As a consequence, in this mode, the <span style="font-style: italic;">Basic Clock Module</span> peripheral has a few
    limitations.<br>
    <br>
    </li>
    <li>&nbsp;<span style="font-weight: bold;">ASIC friendly</span>: the core contains up to all clock management
    options (clock muxes &amp; low-power modes, fine grained clock
    gating, ...) and is also ready for scan insertion. In this mode, the <span style="font-style: italic;">Basic Clock Module</span> offers all features listed in the official <a href="http://www.ti.com/litv/pdf/slau049f">documentation</a>.<br>
     
    </li>
    </ul>
    </ul>
    </ul>
    <br>It is to be noted that this IP doesn't contain the instruction and
    data memory blocks internally (these are technology dependent hard
    macros which are connected to the IP during chip integration).
    However the core is fully configurable in regard to the supported RAM
    and/or ROM sizes.
    <br><br>In addition to the CPU core itself, several peripherals are
    also provided and can be easily connected to the core during
    integration.
    <br><br>
     
    <a name="2. Design"></a>
    <h1>2. Design</h1>
     
    61,18 → 87,31
    <h3>2.1.1 Design structure</h3>
     
    The following diagram shows the openMSP430 design structure:
    <br /><br />
    <img src="getimg.php?1267738921" width="100%" alt="CPU Structure" title="CPU Structure" />
    <br />
    <br><br>
    <img src="usercontent,img,1267738921" alt="CPU Structure" title="CPU Structure" width="80%">
    <br>
    <ul>
    <li><b>Frontend</b>: This module performs the instruction Fetch and Decode tasks. It also contains the execution state machine.</li>
    <li><b>Execution unit</b>: Containing the ALU and the register file, this module executes the current decoded instruction according to the execution state.</li>
    <li><b>Serial Debug Interface</b>: Contains all the required logic for a Nexus class 3 debugging unit (without trace). Communication with the host is done with a standard 8N1 serial interface.</li>
    <li><b>Memory backbone</b>: This block performs a simple arbitration between the frontend and execution-unit for program, data and peripheral memory access.</li>
    <li><b>Basic Clock Module</b>: Generates the ACLK and SMCLK enable signals.</li>
    <li><b>Execution unit</b>:
    Containing the ALU and the register file, this module executes the
    current decoded instruction according to the execution state.</li>
    <li><b>Serial Debug Interface</b>:
    Contains all the required logic for a Nexus class 3 debugging unit
    (without trace). Communication with the host is done with a standard
    two-wire 8N1 serial interface.</li>
    <li><b>Memory backbone</b>: This block
    performs a simple arbitration between the frontend and execution-unit
    for program, data and peripheral memory access.</li>
    <li><b>Basic Clock Module</b>: Generates MCLK, ACLK, SMCLK and manage the low power modes.</li>
    <li><b>SFRs</b>: The <b>S</b>pecial <b>F</b>unction <b>R</b>egister<b>s</b> block contain diverse configuration registers (NMI, Watchdog, ...).</li>
    <li><b>Watchdog</b>: Although it is a peripheral, the watchdog is permanently included in the core because of its tight links with the NMI interrupts and the PUC reset generation.</li>
    <li><b>16x16 Multiplier</b>: The hardware multiplier peripheral is transparently supported by the GCC compiler and is also located in the core. It can be included or excluded at will through a Verilog define.</li>
    <li><b>Watchdog</b>:
    Although it is a peripheral, the watchdog is directly included in
    the core because of its tight links with the NMI interrupts and PUC
    reset generation.</li>
    <li><b>16x16 Multiplier</b>: The hardware
    multiplier peripheral is transparently supported by the GCC compiler
    and is therefore located in the core. It can be included or excluded at will
    through a Verilog define.</li>
    </ul>
     
    <a name="2.1.2 Limitations"></a>
    79,476 → 118,715
    <h3>2.1.2 Limitations</h3>
     
    The known core limitations are the following:
    <br />
    <br>
    <ul>
    <li>Instructions can't be executed from the data memory.</li>
    <li>SCG0 is not implemented (turns off DCO).</li>
    <li>MCLK can't be divided and can only have DCO_CLK as source (see <a href="#2.2.1 Basic Clock Module">Basic Clock Module</a> section).</li>
    </ul>
    </ul>
     
    <a name="2.1.3 Configuration"></a>
    <h3>2.1.3 Configuration</h3>
     
    It is possible to configure the openMSP430 core through the <b><i>openMSP430_defines.v</i></b> file located in the <b><i>rtl</i></b> directory (see <a href="http://www.opencores.org/project,openmsp430,file%20and%20directory%20description">file and directory description</a>).<br />
    Three sets of parameters can be adjusted by the user in order to fully customize the core.
     
    <a name="2.1.3.1 Basic System Configuration"></a>
    It is possible to configure the openMSP430 core through the <b><i>openMSP430_defines.v</i></b> file located in the <b><i>rtl</i></b> directory (see <a href="http://www.opencores.org/project,openmsp430,file%20and%20directory%20description">file and directory description</a>).<br>In
    this section, three sets of adjustabe user parameters are discussed in
    order to customize the core. A fourth set is available for ASIC
    specific options and will be discussed in the <a href="http://opencores.org/project,openmsp430,asic%20implementation">ASIC implementation</a>
    section. <a name="2.1.3.1 Basic System Configuration"></a>
    <h4>2.1.3.1 Basic System Configuration</h4>
     
    The basic system can be adjusted with the following set of defines in order to match the target system requirements.
    <br /><br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    <br><br>
    <table border="0" cellpadding="0" cellspacing="4">
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>
    //============================================================================
    <br />//============================================================================
    <br />// BASIC SYSTEM CONFIGURATION
    <br />//============================================================================
    <br />//============================================================================
    <br />//
    <br />// Note: the sum of program, data and peripheral memory spaces must not
    <br />// exceed 64 kB
    <br />//
    <br />
    <br />// Program Memory Size:
    <br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uncomment the required memory size
    <br />//-------------------------------------------------------
    <br />//`define PMEM_SIZE_59_KB
    <br />//`define PMEM_SIZE_55_KB
    <br />//`define PMEM_SIZE_54_KB
    <br />//`define PMEM_SIZE_51_KB
    <br />//`define PMEM_SIZE_48_KB
    <br />//`define PMEM_SIZE_41_KB
    <br />//`define PMEM_SIZE_32_KB
    <br />//`define PMEM_SIZE_24_KB
    <br />//`define PMEM_SIZE_16_KB
    <br />//`define PMEM_SIZE_12_KB
    <br />//`define PMEM_SIZE_8_KB
    <br />//`define PMEM_SIZE_4_KB
    <br />`define PMEM_SIZE_2_KB
    <br />//`define PMEM_SIZE_1_KB
    <br />
    <br />// Data Memory Size:
    <br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uncomment the required memory size
    <br />//-------------------------------------------------------
    <br />//`define DMEM_SIZE_32_KB
    <br />//`define DMEM_SIZE_24_KB
    <br />//`define DMEM_SIZE_16_KB
    <br />//`define DMEM_SIZE_10_KB
    <br />//`define DMEM_SIZE_8_KB
    <br />//`define DMEM_SIZE_5_KB
    <br />//`define DMEM_SIZE_4_KB
    <br />//`define DMEM_SIZE_2p5_KB
    <br />//`define DMEM_SIZE_2_KB
    <br />//`define DMEM_SIZE_1_KB
    <br />//`define DMEM_SIZE_512_B
    <br />//`define DMEM_SIZE_256_B
    <br />`define DMEM_SIZE_128_B
    <br />
    <br />// Include/Exclude Hardware Multiplier
    <br />`define MULTIPLIER
    <br />
    <br />// Include/Exclude Serial Debug interface
    <br />`define DBG_EN
    </code>
    </td>
    </tr>
    </table>
    <br /><br />
    //============================================================================<br>
    //============================================================================<br>
    // BASIC SYSTEM CONFIGURATION<br>
    //============================================================================<br>
    //============================================================================<br>
    //<br>
    // Note: the sum of program, data and peripheral memory spaces must not<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exceed 64 kB<br>
    //<br>
    <br>
    // Program Memory Size:<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Uncomment the required memory size<br>
    //-------------------------------------------------------<br>
    //`define PMEM_SIZE_59_KB<br>
    //`define PMEM_SIZE_55_KB<br>
    //`define PMEM_SIZE_54_KB<br>
    //`define PMEM_SIZE_51_KB<br>
    //`define PMEM_SIZE_48_KB<br>
    //`define PMEM_SIZE_41_KB<br>
    //`define PMEM_SIZE_32_KB<br>
    //`define PMEM_SIZE_24_KB<br>
    //`define PMEM_SIZE_16_KB<br>
    //`define PMEM_SIZE_12_KB<br>
    //`define PMEM_SIZE_8_KB<br>
    //`define PMEM_SIZE_4_KB<br>
    `define PMEM_SIZE_2_KB<br>
    //`define PMEM_SIZE_1_KB<br>
    <br>
    <br>
    // Data Memory Size:<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Uncomment the required memory size<br>
    //-------------------------------------------------------<br>
    //`define DMEM_SIZE_32_KB<br>
    //`define DMEM_SIZE_24_KB<br>
    //`define DMEM_SIZE_16_KB<br>
    //`define DMEM_SIZE_10_KB<br>
    //`define DMEM_SIZE_8_KB<br>
    //`define DMEM_SIZE_5_KB<br>
    //`define DMEM_SIZE_4_KB<br>
    //`define DMEM_SIZE_2p5_KB<br>
    //`define DMEM_SIZE_2_KB<br>
    //`define DMEM_SIZE_1_KB<br>
    //`define DMEM_SIZE_512_B<br>
    //`define DMEM_SIZE_256_B<br>
    `define DMEM_SIZE_128_B<br>
    <br>
    <br>
    // Include/Exclude Hardware Multiplier<br>
    `define MULTIPLIER<br>
    <br>
    <br>
    // Include/Exclude Serial Debug interface<br>
    `define DBG_EN<br>
    </code></td></tr></tbody></table><br><br>
    The only design considerations at this stage are:
    <ul>
    <li>Make sure that the program and data memories have the correct size :-P</li>
    <li>The sum of program, data and peripheral memory space <b>MUST NOT</b> exceed 64 kB</li>
    </ul>
    <br />
    <br>
     
    <a name="2.1.3.2 Advanced System Configuration"></a>
    <h4>2.1.3.2 Advanced System Configuration</h4>
     
    In this section, some additional features are available in order to match the needs of more experienced users.
    <br /><br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    <td>
    <code>
    //============================================================================
    <br />//============================================================================
    <br />// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
    <br />//============================================================================
    <br />//============================================================================
    <br />
    <br />//-------------------------------------------------------
    <br />// Peripheral Memory Space:
    <br />//-------------------------------------------------------
    <br />// The original MSP430 architecture map the peripherals
    <br />// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
    <br />// The following defines allow you to expand this space
    <br />// up to 32 kB (i.e. from 0x0000 to 0x7fff).
    <br />// As a consequence, the data memory mapping will be
    <br />// shifted up and a custom linker script will therefore
    <br />// be required by the GCC compiler.
    <br />//-------------------------------------------------------
    <br />//`define PER_SIZE_32_KB
    <br />//`define PER_SIZE_16_KB
    <br />//`define PER_SIZE_8_KB
    <br />//`define PER_SIZE_4_KB
    <br />//`define PER_SIZE_2_KB
    <br />//`define PER_SIZE_1_KB
    <br />`define PER_SIZE_512_B
    <br />
    <br />
    <br />//-------------------------------------------------------
    <br />// Defines the debugger CPU_CTL.RST_BRK_EN reset value
    <br />// (CPU break on PUC reset)
    <br />//-------------------------------------------------------
    <br />// When defined, the CPU will automatically break after
    <br />// a PUC occurrence by default. This is typically usefull
    <br />// when the program memory can only be initialized through
    <br />// the serial debug interface.
    <br />//-------------------------------------------------------
    <br />//`define DBG_RST_BRK_EN
    <br />
    <br />
    <br />//-------------------------------------------------------
    <br />// Custom user version number
    <br />//-------------------------------------------------------
    <br />// This 5 bit field can be freely used in order to allow
    <br />// custom identification of the system through the debug
    <br />// interface.
    <br />// (see CPU_ID.USER_VERSION field in the documentation)
    <br />//-------------------------------------------------------
    <br />`define USER_VERSION 5'b00000
    <br />
    </code>
    <br><br>
    <table border="0" cellpadding="0" cellspacing="4">
    <tbody><tr>
    <td width="35"><br>
    </td>
    </tr>
    </table>
    <br /><br />
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td><code>//============================================================================<br>
    //============================================================================<br>
    // ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)<br>
    //============================================================================<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>
    // Custom user version number<br>
    //-------------------------------------------------------<br>
    // This 5 bit field can be freely used in order to allow<br>
    // custom identification of the system through the debug<br>
    // interface.<br>
    // (see CPU_ID.USER_VERSION field in the documentation)<br>
    //-------------------------------------------------------<br>
    `define USER_VERSION 5'b00000<br>
    <br>
    <br>
    //-------------------------------------------------------<br>
    // Include/Exclude Watchdog timer<br>
    //-------------------------------------------------------<br>
    // When excluded, the following functionality will be<br>
    // lost:<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Watchog (both interval and watchdog modes)<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - NMI interrupt edge selection<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Possibility to generate a software PUC reset<br>
    //-------------------------------------------------------<br>
    `define WATCHDOG<br>
    <br>
    <br>
    ///-------------------------------------------------------<br>
    // Include/Exclude Non-Maskable-Interrupt support<br>
    //-------------------------------------------------------<br>
    `define NMI<br>
    <br>
    <br>
    //-------------------------------------------------------<br>
    // Input synchronizers<br>
    //-------------------------------------------------------<br>
    // In some cases, the asynchronous input ports might<br>
    // already be synchronized externally.<br>
    // If an extensive CDC design review showed that this<br>
    // is really the case,&nbsp; the individual synchronizers<br>
    // can be disabled with the following defines.<br>
    //<br>
    // Notes:<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - all three signals are all sampled in the MCLK domain<br>
    //<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - the dbg_en signal reset the debug interface<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when 0. Therefore make sure it is glitch free.<br>
    //<br>
    //-------------------------------------------------------<br>
    `define SYNC_NMI<br>
    //`define SYNC_CPU_EN<br>
    //`define SYNC_DBG_EN<br>
    </code><code><br>
    <br>
    </code><code>//-------------------------------------------------------<br>
    // Peripheral Memory Space:<br>
    //-------------------------------------------------------<br>
    // The original MSP430 architecture map the peripherals<br>
    // from 0x0000 to 0x01FF (i.e. 512B of the memory space).<br>
    // The following defines allow you to expand this space<br>
    // up to 32 kB (i.e. from 0x0000 to 0x7fff).<br>
    // As a consequence, the data memory mapping will be<br>
    // shifted up and a custom linker script will therefore<br>
    // be required by the GCC compiler.<br>
    //-------------------------------------------------------<br>
    //`define PER_SIZE_32_KB<br>
    //`define PER_SIZE_16_KB<br>
    //`define PER_SIZE_8_KB<br>
    //`define PER_SIZE_4_KB<br>
    //`define PER_SIZE_2_KB<br>
    //`define PER_SIZE_1_KB<br>
    `define PER_SIZE_512_B<br>
    <br>
    <br></code><code>//-------------------------------------------------------<br>
    // Defines the debugger CPU_CTL.RST_BRK_EN reset value<br>
    // (CPU break on PUC reset)<br>
    //-------------------------------------------------------<br>
    // When defined, the CPU will automatically break after<br>
    // a PUC occurrence by default. This is typically useful<br>
    // when the program memory can only be initialized through<br>
    // the serial debug interface.<br>
    //-------------------------------------------------------<br>
    `define DBG_RST_BRK_EN</code><br>
    </td></tr></tbody></table><br><br>
    Design consideration at this stage are:
    <ul>
    <li>Setting a peripheral memory space to something else than 512B will shift the data memory mapping up, which in turn will require the use of a custom linker script. If you don't know what a linker script is and if you don't want to know what it is, you should probably not modify this section.</li>
    <li>Setting a peripheral memory space to something else than 512B
    will shift the data memory mapping up, which in turn will require the
    use of a custom linker script. If you don't know what a linker script
    is and if you don't want to know what it is, you should probably not
    modify this section.</li>
    <li>The sum of program, data and peripheral memory space <b>MUST NOT</b> exceed 64 kB</li>
    </ul>
    <br />
    <br>
    <a name="2.1.3.3 Expert System Configuration"></a>
    <h4>2.1.3.3 Expert System Configuration</h4>
     
    In this section, you will find configuration options which will be relevant for roughly 0.01% of the users (according to an highly reliable market analysis ;-) ).
    <br /><br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    In this section, you will find configuration options which are
    relevant for roughly 0.1% of the users (according to a highly
    reliable market analysis ;-) ).
    <br><br>
    <table border="0" cellpadding="0" cellspacing="4">
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>
    //============================================================================
    <br />//============================================================================
    <br />// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
    <br />//============================================================================
    <br />//============================================================================
    <br />//
    <br />// IMPORTANT NOTE: Please update following configuration options ONLY if
    <br />// you have a good reason to do so... and if you know what
    <br />// you are doing :-P
    <br />//
    <br />//============================================================================
    <br />
    <br />//-------------------------------------------------------
    <br />// Number of hardware breakpoint units (each unit contains
    <br />// two hardware address breakpoints):
    <br />// - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
    <br />// - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
    <br />// - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
    <br />// - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
    <br />//-------------------------------------------------------
    <br />// Please keep in mind that hardware breakpoints only
    <br />// make sense whenever the program memory is not an SRAM
    <br />// (i.e. Flash/OTP/ROM/...) or when you are interested
    <br />// in data breakpoints (btw. not supported by GDB).
    <br />//-------------------------------------------------------
    <br />//`define DBG_HWBRK_0
    <br />//`define DBG_HWBRK_1
    <br />//`define DBG_HWBRK_2
    <br />//`define DBG_HWBRK_3
    <br />
    <br />//-------------------------------------------------------
    <br />// Enable/Disable the hardware breakpoint RANGE mode
    <br />//-------------------------------------------------------
    <br />// When enabled this feature allows the hardware breakpoint
    <br />// units to stop the cpu whenever an instruction or data
    <br />// access lays within an address range.
    <br />// Note that this feature is not supported by GDB.
    <br />//-------------------------------------------------------
    <br />//`define DBG_HWBRK_RANGE
    <br />
    <br />//-------------------------------------------------------
    <br />// Input synchronizers
    <br />//-------------------------------------------------------
    <br />// In some cases, the asynchronous input ports might
    <br />// already be synchronized externally.
    <br />// If an extensive CDC design review showed that this
    <br />// is really the case, the individual synchronizers
    <br />// can be disabled with the following defines.
    <br />//
    <br />// Notes:
    <br />// - the dbg_en signal will reset the debug interface
    <br />// when 0. Therefore make sure it is glitch free.
    <br />//
    <br />// - the dbg_uart_rxd synchronizer must be set to 1
    <br />// when its reset is active.
    <br />//-------------------------------------------------------
    <br />`define SYNC_CPU_EN
    <br />`define SYNC_DBG_EN
    <br />`define SYNC_DBG_UART_RXD
    <br />`define SYNC_NMI
    <br />
    </code>
    </td>
    </tr>
    </table>
    <br /><br />
    <code> //============================================================================<br>
    //============================================================================<br>
    // EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )<br>
    //============================================================================<br>
    //============================================================================<br>
    //<br>
    // IMPORTANT NOTE:&nbsp; Please update following configuration options ONLY if<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    you have a good reason to do so... and if you know what<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; you are doing :-P<br>
    //<br>
    //============================================================================<br>
    <br>
    //-------------------------------------------------------<br>// Number of hardware breakpoint/watchpoint units<br>
    // (each unit contains two hardware addresses available<br>
    // for breakpoints or watchpoints):<br>
    //&nbsp;&nbsp; - DBG_HWBRK_0 -&gt; Include hardware breakpoints unit 0<br>
    //&nbsp;&nbsp; - DBG_HWBRK_1 -&gt; Include hardware breakpoints unit 1<br>
    //&nbsp;&nbsp; - DBG_HWBRK_2 -&gt; Include hardware breakpoints unit 2<br>
    //&nbsp;&nbsp; - DBG_HWBRK_3 -&gt; Include hardware breakpoints unit 3<br>
    //-------------------------------------------------------<br>
    // Please keep in mind that hardware breakpoints only<br>
    // make sense whenever the program memory is not an SRAM<br>
    // (i.e. Flash/OTP/ROM/...) or when you are interested<br>
    // in data breakpoints.<br>
    //-------------------------------------------------------<br>
    //`define&nbsp; DBG_HWBRK_0<br>
    //`define&nbsp; DBG_HWBRK_1<br>
    //`define&nbsp; DBG_HWBRK_2<br>
    //`define&nbsp; DBG_HWBRK_3<br>
    <br>
    <br>
    //-------------------------------------------------------<br>
    // Enable/Disable the hardware breakpoint RANGE mode<br>
    //-------------------------------------------------------<br>
    // When enabled this feature allows the hardware breakpoint<br>
    // units to stop the cpu whenever an instruction or data<br>
    // access lays within an address range.<br>
    // Note that this feature is not supported by GDB.<br>
    //-------------------------------------------------------<br>
    //`define DBG_HWBRK_RANGE<br>
    <br>
    <br>
    //-------------------------------------------------------<br>
    // ASIC version<br>
    //-------------------------------------------------------<br>
    // When uncommented, this define will enable the<br>
    // ASIC system configuration section (see below) and<br>
    // will activate scan support for production test.<br>
    //<br>
    // WARNING: if you target an FPGA, leave this define<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; commented.<br>
    //-------------------------------------------------------<br>
    //`define ASIC<br></code></td></tr></tbody></table><br><br>
    Design consideration at this stage are:
    <ul>
    <li>This is the expert section... so you know what your are doing anyway right ;-)</li>
    </ul>
    <br />
    All remaining defines located in the <b><i>openMSP430_defines.v</i></b> file are system constants and <b>MUST NOT</b> be edited.
    <br /><br />
    <br>
    All remaining defines located after the ASIC section in the <b><i>openMSP430_defines.v</i></b> file are system constants and <b>MUST NOT</b> be edited.
    <br><br>
     
    <a name="2.1.4 Memory mapping"></a>
    <h3>2.1.4 Memory mapping</h3>
     
    As discussed in the earlier section, the openMSP430 memory mapping is fully configurable.<br />
    The basic system configuration section allows to adjust program and data memory sizes while keeping 100% compatibility with the pre-existing linker scripts provided by MSPGCC4 (or any other toolchain for that matter).<br />
    However, an increasing number of users saw the 512B space available for peripherals in the standard MSP430 architecture as a limitation. Therefore, the advanced system configuration section give the possibility to up-scale the reserved peripheral address space anywhere between 512B and 32kB. As a consequence, the data memory space will be shifted up, which means that the linker script of your favorite toolchain will have to be modified accordingly.<br />
    The following schematic should hopefully summarize this:<br />
    <br /><br />
    <img src="usercontent,img,1306066277" width="100%" alt="Memory mapping" title="Memory mapping" />
    <br />
    As discussed earlier, the openMSP430 memory mapping is fully configurable.<br>The
    basic system configuration section allows to adjust program and data
    memory sizes while keeping 100% compatibility with the pre-existing
    linker scripts provided by MSPGCC (or any other toolchain for that
    matter).<br>
    However, an increasing number of users saw the 512B space available for
    peripherals in the standard MSP430 architecture as a limitation.
    Therefore, the advanced system configuration section gives the
    possibility to up-scale the reserved peripheral address space anywhere
    between 512B and 32kB. As a consequence, the data memory space will be
    shifted up, which means that the linker script of your favorite
    toolchain will have to be modified accordingly.<br>
    The following schematic should hopefully illustrate this:<br>
    <br><br>
    <img src="usercontent,img,1306066277" alt="Memory mapping" title="Memory mapping" width="80%">
    <br>
     
    <br /><br />
    <br><br>
    <a name="2.1.5 Pinout"></a>
    <h3>2.1.5 Pinout</h3>
     
    The full pinout of the openMSP430 core is provided in the following table:
    <br /><br />
    <br><br>
    <table border="1">
    <tr> <td align="center"><b>Port Name</b></td> <td align="center"><b>Direction</b></td> <td align="center"><b>Width</b> </td> <td align="center"><b>Description</b></td> </tr>
    <tbody><tr> <td align="center"><b>Port Name</b></td> <td align="center"><b>Direction</b></td> <td align="center"><b>Width</b> </td> <td style="vertical-align: top; text-align: center;"><span style="font-weight: bold;">Clock</span><br style="font-weight: bold;">
    <span style="font-weight: bold;">Domain</span><br>
    </td>
    <td align="center"><b>Description</b></td> </tr>
    <tr> <td colspan="4" align="center"> <b><i>Clocks</i></b> </td></tr>
    <tr> <td colspan="5" align="center"> <b><i>Clocks &amp; Power-Managment</i></b> </td></tr>
    <tr>
    <td> cpu_en </td>
    <td> Input </td>
    <td> 1 </td>
    <td> Enable CPU code execution (asynchronous) - set to 1 if unused </td>
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
    or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
    <td> Enable CPU code execution (asynchronous and non-glitchy).<br>
    Set to 1 if unused. </td>
    </tr>
    <tr>
    <td> dco_clk </td>
    <td> Input </td>
    <td> 1 </td>
    <td> Fast oscillator (fast clock), CPU clock </td>
    <td style="vertical-align: top; text-align: center;">-<br>
    </td>
    <td> Fast oscillator (fast clock) </td>
    </tr>
    <tr>
    <td> lfxt_clk </td>
    <td> Input </td>
    <td> 1 </td>
    <td> Low frequency oscillator (typ. 32kHz) </td>
    </tr>
    <td style="vertical-align: top;"> lfxt_clk</td>
    <td style="vertical-align: top;">Input<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">-<br>
    </td>
    <td style="vertical-align: top;"> Low frequency oscillator (typ. 32kHz)<br>
    Set to 0 if unused.<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top;"> mclk</td>
    <td style="vertical-align: top;">Output<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">-<br>
    </td>
    <td style="vertical-align: top;"> Main system clock</td>
    </tr>
    <tr>
    <td style="vertical-align: top;"> aclk_en</td>
    <td style="vertical-align: top;">Output</td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td style="vertical-align: top;">FPGA ONLY: ACLK enable</td>
    </tr>
    <tr>
    <td style="vertical-align: top;">smclk_en</td>
    <td style="vertical-align: top;">Output</td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td style="vertical-align: top;">FPGA ONLY: SMCLK enable</td>
    </tr>
    <tr>
    <td style="vertical-align: top;">dco_enable<br>
    </td>
    <td style="vertical-align: top;">Output<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">dco_clk<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: Fast oscillator enable<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top;">dco_wkup<br>
    </td>
    <td style="vertical-align: top;">Output<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: Fast oscillator wakeup (asynchronous)<br>
    </td>
    </tr>
     
    <tr>
    <td> mclk </td>
    <td> Output </td>
    <td> 1 </td>
    <td> Main system clock </td>
    </tr>
    <td style="vertical-align: top;">lfxt_enable<br>
    </td>
    <td style="vertical-align: top;">Output<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">lfxt_clk<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: Low frequency oscillator enable<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top;">lfxt_wkup<br>
    </td>
    <td style="vertical-align: top;">Output<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: Low frequency oscillator wakeup (asynchronous)<br>
    </td>
    </tr>
     
    <tr>
    <td> aclk_en </td>
    <td> Output </td>
    <td> 1 </td>
    <td> ACLK enable </td>
    </tr>
    <td style="vertical-align: top;">aclk<br>
    </td>
    <td style="vertical-align: top;">Output<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">-<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: ACLK<br>
    </td>
    </tr>
     
    <tr>
    <td> smclk_en </td>
    <td> Output </td>
    <td> 1 </td>
    <td> SMCLK enable </td>
    </tr>
    <td style="vertical-align: top;">smclk<br>
    </td>
    <td style="vertical-align: top;">Output<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">-<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: SMCLK<br>
    </td>
    </tr>
     
    <tr> <td colspan="4" align="center"> <b><i>Resets</i></b> </td></tr>
     
    <tr>
    <td style="vertical-align: top;">wkup<br>
    </td>
    <td style="vertical-align: top;">Input<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: System Wake-up (asynchronous and non-glitchy)<br>
    Set to 0 if unused.<br>
    </td>
    </tr>
    <tr> <td colspan="5" align="center"> <b><i>Resets</i></b> </td></tr>
    <tr>
    <td> puc_rst </td>
    <td> Output </td>
    <td> 1 </td>
    <td> Main system reset </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Main system reset </td>
    </tr>
    <tr>
    <td> reset_n </td>
    <td> Input </td>
    <td> 1 </td>
    <td> Reset Pin (active low, asynchronous) </td>
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
    </td>
    <td> Reset Pin (active low, asynchronous and non-glitchy) </td>
    </tr>
     
     
    <tr> <td colspan="4" align="center"> <b><i>Program Memory interface</i></b> </td></tr>
    <tr> <td colspan="5" align="center"> <b><i>Program Memory interface</i></b> </td></tr>
    <tr>
    <td> pmem_addr </td>
    <td> Output </td>
    <td> `PMEM_AWIDTH <b><sup><font color="#FF0000">1</font></sup></b> </td>
    <td> Program Memory address </td>
    <td><small> `PMEM_AWIDTH</small> <b><sup><font color="#ff0000">1</font></sup></b> </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Program Memory address </td>
    </tr>
    <tr>
    <td> pmem_cen </td>
    <td> Output </td>
    <td> 1 </td>
    <td> Program Memory chip enable (low active) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Program Memory chip enable (low active) </td>
    </tr>
    <tr>
    <td> pmem_din </td>
    <td> Output </td>
    <td> 16 </td>
    <td> Program Memory data input (optional <b><sup><font color="#FF0000">2</font></sup></b>)</td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Program Memory data input (optional <b><sup><font color="#ff0000">2</font></sup></b>)</td>
    </tr>
    <tr>
    <td> pmem_dout </td>
    <td> Input </td>
    <td> 16 </td>
    <td> Program Memory data output </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Program Memory data output </td>
    </tr>
    <tr>
    <td> pmem_wen </td>
    <td> Output </td>
    <td> 2 </td>
    <td> Program Memory write byte enable (low active) (optional <b><sup><font color="#FF0000">2</font></sup></b>) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Program Memory write byte enable (low active) (optional <b><sup><font color="#ff0000">2</font></sup></b>) </td>
    </tr>
     
    <tr> <td colspan="4" align="center"> <b><i>Data Memory interface</i></b> </td></tr>
    <tr> <td colspan="5" align="center"> <b><i>Data Memory interface</i></b> </td></tr>
    <tr>
    <td> dmem_addr </td>
    <td> Output </td>
    <td> `DMEM_AWIDTH <b><sup><font color="#FF0000">1</font></sup></b></td>
    <td> Data Memory address </td>
    <td><small> `DMEM_AWIDTH</small> <b><sup><font color="#ff0000">1</font></sup></b></td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Data Memory address </td>
    </tr>
    <tr>
    <td> dmem_cen </td>
    <td> Output </td>
    <td> 1 </td>
    <td> Data Memory chip enable (low active) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Data Memory chip enable (low active) </td>
    </tr>
    <tr>
    <td> dmem_din </td>
    <td> Output </td>
    <td> 16 </td>
    <td> Data Memory data input </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Data Memory data input </td>
    </tr>
    <tr>
    <td> dmem_dout </td>
    <td> Input </td>
    <td> 16 </td>
    <td> Data Memory data output </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Data Memory data output </td>
    </tr>
    <tr>
    <td> dmem_wen </td>
    <td> Output </td>
    <td> 2 </td>
    <td> Data Memory write byte enable (low active) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Data Memory write byte enable (low active) </td>
    </tr>
     
    <tr> <td colspan="4" align="center"> <b><i>External Peripherals interface</i></b> </td></tr>
    <tr> <td colspan="5" align="center"> <b><i>External Peripherals interface</i></b> </td></tr>
    <tr>
    <td> per_addr </td>
    <td> Output </td>
    <td> 14 </td>
    <td> Peripheral address </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Peripheral address </td>
    </tr>
    <tr>
    <td> per_din </td>
    <td> Output </td>
    <td> 16 </td>
    <td> Peripheral data input </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Peripheral data input </td>
    </tr>
    <tr>
    <td> per_dout </td>
    <td> Input </td>
    <td> 16 </td>
    <td> Peripheral data output </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Peripheral data output </td>
    </tr>
    <tr>
    <td> per_en </td>
    <td> Output </td>
    <td> 1 </td>
    <td> Peripheral enable (high active) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Peripheral enable (high active) </td>
    </tr>
    <tr>
    <td> per_we </td>
    <td> Output </td>
    <td> 2 </td>
    <td> Peripheral write enable (high active) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Peripheral write enable (high active) </td>
    </tr>
     
    <tr> <td colspan="4" align="center"> <b><i>Interrupts</i></b> </td></tr>
    <tr> <td colspan="5" align="center"> <b><i>Interrupts</i></b> </td></tr>
    <tr>
    <td> irq </td>
    <td> Input </td>
    <td> 14 </td>
    <td> Maskable interrupts (one-hot signal) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Maskable interrupts (one-hot signal) </td>
    </tr>
    <tr>
    <td> nmi </td>
    <td> Input </td>
    <td> 1 </td>
    <td> Non-maskable interrupt (asynchronous) </td>
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
    or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
    <td> Non-maskable interrupt (asynchronous and non-glitchy)<br>
    Set to 0 if unused.<br>
    </td>
    </tr>
    <tr>
    <td> irq_acc </td>
    <td> Output </td>
    <td> 14 </td>
    <td> Interrupt request accepted (one-hot signal) </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Interrupt request accepted (one-hot signal) </td>
    </tr>
     
    <tr> <td colspan="4" align="center"> <b><i>Serial Debug interface</i></b> </td></tr>
    <tr> <td colspan="5" align="center"> <b><i>Serial Debug interface</i></b> </td></tr>
    <tr>
    <td> dbg_en </td>
    <td> Input </td>
    <td> 1 </td>
    <td> Debug interface enable (asynchronous) <b><sup><font color="#FF0000">3</font></sup></b> </td>
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
     
    or mclk<b><sup><font color="#ff0000">4</font></sup></b></td>
    <td> Debug interface enable (asynchronous) <b><sup><font color="#ff0000">3</font></sup></b> </td>
    </tr>
    <tr>
    <td> dbg_freeze </td>
    <td> Output </td>
    <td> 1 </td>
    <td> Freeze peripherals </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Freeze peripherals </td>
    </tr>
    <tr>
    <td> dbg_uart_txd </td>
    <td> Output </td>
    <td> 1 </td>
    <td> Debug interface: UART TXD </td>
    <td style="vertical-align: top; text-align: center;">mclk<br>
    </td>
    <td> Debug interface: UART TXD </td>
    </tr>
    <tr>
    <td> dbg_uart_rxd </td>
    <td> Input </td>
    <td> 1 </td>
    <td> Debug interface: UART RXD (asynchronous) </td>
    </tr>
    </table>
    <br />
    <b><sup><font color="#FF0000">1</font></sup></b>: This parameter is declared in the "openMSP430_defines.v" file and defines the RAM/ROM size.<br />
    <b><sup><font color="#FF0000">2</font></sup></b>: These two optional ports can be connected whenever the program memory is a RAM. This will allow the user to load a program through the serial debug interface and to use software breakpoints.<br />
    <b><sup><font color="#FF0000">3</font></sup></b>: When disabled, the debug interface is hold into reset. As a consequence, the <b><i>dbg_en</i></b> port can be used to reset the debug interface without disrupting the CPU execution.<br />
    <br />
    <td style="vertical-align: top; text-align: center;">&lt;async&gt;<br>
    </td>
    <td> Debug interface: UART RXD (asynchronous) </td>
    </tr><tr align="center">
    <td colspan="5" rowspan="1" style="vertical-align: top;"><b><i>Scan</i></b></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">scan_enable<br>
    </td>
    <td style="vertical-align: top;">Input<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">dco_clk<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: Scan enable (active during scan shifting)<br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top;">scan_mode<br>
    </td>
    <td style="vertical-align: top;">Input<br>
    </td>
    <td style="vertical-align: top;">1<br>
    </td>
    <td style="vertical-align: top; text-align: center;">&lt;stable&gt;<br>
    </td>
    <td style="vertical-align: top;">ASIC ONLY: Scan mode<br>
    </td>
    </tr>
     
    </tbody></table>
    <br>
    <b><sup><font color="#ff0000">1</font></sup></b>: This parameter is declared in the "openMSP430_defines.v" file and defines the RAM/ROM size.<br>
    <b><sup><font color="#ff0000">2</font></sup></b>: These two optional
    ports can be connected whenever the program memory is a RAM. This will
    allow the user to load a program through the serial debug interface and
    to use software breakpoints.<br>
    <b><sup><font color="#ff0000">3</font></sup></b>: When disabled, the debug interface is hold into reset (and clock gated in ASIC mode). As a consequence, the <b><i>dbg_en</i></b> port can be used to reset the debug interface without disrupting the CPU execution.<br>
    <b><sup><font color="#ff0000">4</font></sup></b>: Clock domain is selectable through configuration in the "openMSP430_defines.v" file (see Advanced System Configuration).<br>
    <br>
    <span style="text-decoration: underline; font-weight: bold;">Note:</span> in the FPGA configuration, the <span style="font-style: italic;">ASIC ONLY</span> signals must be left unconnected (for the outputs) and tied low (for the inputs).<br>
     
    <a name="2.1.6 Instruction Cycles and Lengths"></a>
    <h3>2.1.6 Instruction Cycles and Lengths</h3>
     
    Please note that a detailed description of the instruction and addressing modes can be found in the <b><a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a></b> (Chapter 3).<br /><br />
    The number of CPU clock cycles required for an instruction depends on the instruction format and the addressing modes used, not the instruction itself.<br />
    Please note that a detailed description of the instruction and addressing modes can be found in the <b><a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a></b> (Chapter 3).<br><br>
    The number of CPU clock cycles required for an instruction depends on
    the instruction format and the addressing modes used, not the
    instruction itself.<br>
    In the following tables, the number of clock cycles refers to the main clock (<i>MCLK</i>).
    Differences with the original MSP430 are highlighted in green (the original value being red).
    <ul>
    555,18 → 833,18
    <li><b>Interrupt and Reset Cycles</b></li>
    </ul>
    <table border="1">
    <tr> <td align="center"><b>Action</b> </td> <td align="center"><b>No. of Cycles</b></td> <td align="center"><b>Length of Instruction</b></td> </tr>
    <tbody><tr> <td align="center"><b>Action</b> </td> <td align="center"><b>No. of Cycles</b></td> <td align="center"><b>Length of Instruction</b></td> </tr>
    <tr> <td> Return from interrupt (RETI) </td> <td align="center"> 5 </td> <td align="center"> 1 </td> </tr>
    <tr> <td> Interrupt accepted </td> <td align="center"> 6 </td> <td align="center"> - </td> </tr>
    <tr> <td> WDT reset </td> <td align="center"> 4 </td> <td align="center"> - </td> </tr>
    <tr> <td> Reset (!RST/NMI) </td> <td align="center"> 4 </td> <td align="center"> - </td> </tr>
    </table>
    </tbody></table>
     
    <ul>
    <li><b>Format-II (Single Operand) Instruction Cycles and Lengths</b></li>
    </ul>
    <table border="1">
    <tr> <td rowspan="2" align="center"><b>Addressing Mode</b> </td> <td colspan="3" align="center"><b>No. of Cycles</b></td> <td rowspan="2" align="center"><b>Length of Instruction</b></td> </tr>
    <tbody><tr> <td rowspan="2" align="center"><b>Addressing Mode</b> </td> <td colspan="3" align="center"><b>No. of Cycles</b></td> <td rowspan="2" align="center"><b>Length of Instruction</b></td> </tr>
    <tr> <td><b>RRA, RRC, SWPB, SXT</b></td> <td><b>PUSH</b></td> <td><b>CALL</b></td> </tr>
     
    <tr> <td align="center"> Rn </td> <td align="center"> 1 </td> <td align="center"> 3 </td> <td align="center"><b><font color="green">3 </font><font color="red"> (4)</font></b></td> <td align="center"> 1 </td> </tr>
    575,8 → 853,8
    <tr> <td align="center"> #N </td> <td align="center"> N/A </td> <td align="center"> 4 </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> X(Rn) </td> <td align="center"> 4 </td> <td align="center"> 5 </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 4 </td> <td align="center"> 5 </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 4 </td> <td align="center"> 5 </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    </table>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 4 </td> <td align="center"> 5 </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    </tbody></table>
     
    <ul>
    <li><b>Format-III (Jump) Instruction Cycles and Lengths</b></li>
    587,7 → 865,7
    <li><b>Format-I (Double Operand) Instruction Cycles and Lengths</b></li>
    </ul>
    <table border="1">
    <tr> <td colspan="2" align="center"><b>Addressing Mode</b> </td> <td rowspan="2" align="center"><b>No. of Cycles</b></td> <td rowspan="2" align="center"><b>Length of Instruction</b></td> </tr>
    <tbody><tr> <td colspan="2" align="center"><b>Addressing Mode</b> </td> <td rowspan="2" align="center"><b>No. of Cycles</b></td> <td rowspan="2" align="center"><b>Length of Instruction</b></td> </tr>
    <tr> <td align="center"><b>Src</b></td> <td align="center"><b>Dst</b></td> </tr>
     
    <tr> <td rowspan="5" align="center"> Rn </td> <td align="center"> Rm </td> <td align="center"> 1 </td> <td align="center"> 1 </td> </tr>
    594,83 → 872,91
    <tr> <td align="center"> PC </td> <td align="center"> 2 </td> <td align="center"> 1 </td> </tr>
    <tr> <td align="center"> x(Rm) </td> <td align="center"> 4 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 4 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 4 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 4 </td> <td align="center"> 2 </td> </tr>
    <tr> <td rowspan="5" align="center"> @Rn </td> <td align="center"> Rm </td> <td align="center"> 2 </td> <td align="center"> 1 </td> </tr>
    <tr> <td align="center"> PC </td> <td align="center"><b><font color="green">3 </font><font color="red"> (2)</font></b></td> <td align="center"> 1 </td> </tr>
    <tr> <td align="center"> x(Rm) </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td rowspan="5" align="center"> @Rn+ </td> <td align="center"> Rm </td> <td align="center"> 2 </td> <td align="center"> 1 </td> </tr>
    <tr> <td align="center"> PC </td> <td align="center"> 3 </td> <td align="center"> 1 </td> </tr>
    <tr> <td align="center"> x(Rm) </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 5 </td> <td align="center"> 2 </td> </tr>
    <tr> <td rowspan="5" align="center"> #N </td> <td align="center"> Rm </td> <td align="center"> 2 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> PC </td> <td align="center"> 3 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> x(Rm) </td> <td align="center"> 5 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 5 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 5 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 5 </td> <td align="center"> 3 </td> </tr>
    <tr> <td rowspan="5" align="center"> x(Rn) </td> <td align="center"> Rm </td> <td align="center"> 3 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> PC </td> <td align="center"><b><font color="green">3 </font><font color="red"> (4)</font></b></td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> x(Rm) </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td rowspan="5" align="center"> EDE </td> <td align="center"> Rm </td> <td align="center"> 3 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> PC </td> <td align="center"><b><font color="green">3 </font><font color="red"> (4)</font></b></td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> x(Rm) </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td rowspan="5" align="center"> &EDE </td> <td align="center"> Rm </td> <td align="center"> 3 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td rowspan="5" align="center"> &amp;EDE </td> <td align="center"> Rm </td> <td align="center"> 3 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> PC </td> <td align="center"> 3 </td> <td align="center"> 2 </td> </tr>
    <tr> <td align="center"> x(Rm) </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    <tr> <td align="center"> &EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    </table>
    <tr> <td align="center"> &amp;EDE </td> <td align="center"> 6 </td> <td align="center"> 3 </td> </tr>
    </tbody></table>
     
    <a name="2.1.7 Serial Debug Interface"></a>
    <h3>2.1.7 Serial Debug Interface</h3>
     
    All the details about the Serial Debug Interface are located <a href="http://www.opencores.org/project/openmsp430/serial%20debug%20interface">here</a>.
    <a name="2.2 Peripherals"></a>
    <h2>2.2 Peripherals</h2>
     
    In addition to the CPU core itself, several peripherals are also provided and can be easily connected to the core during integration.
     
    All the details about the Serial Debug Interface are located <a href="http://opencores.org/project,openmsp430,serial%20debug%20interface">here</a>.<br>
    <br>
    <a name="2.2_System_Peripherals"></a>
    <h2>2.2 System Peripherals</h2>
    In addition to the CPU core itself, several peripherals are also
    provided and can be easily connected to the core during integration.
    The followings are directly integrated within the core because of their
    tight links with the CPU.<br>
    It is to be noted that <span style="font-weight: bold;">ALL</span> system peripherals support both ASIC and FPGA versions.<br>
    <a name="2.2.1 Basic Clock Module"></a>
    <h3>2.2.1 Basic Clock Module</h3>
     
    In order to make an FPGA implementation as simple as possible (ideally, a non-designer should be able to do it), clock gates are not used in the design and neither are clock muxes.
    <br />
    <h3>2.2.1 Basic Clock Module: FPGA<br>
    </h3>In order to make an FPGA
    implementation as simple as possible (ideally, a non-professional designer should be
    able to do it), clock gates are not used in this design configuration and neither are
    clock muxes.
    <br>
    With these constrains, the Basic Clock Module is implemented as following:
    <br /><br />
    <img src="getimg.php?1249244393" alt="Clock structure diagram" title="Clock structure diagram" />
    <br />
    <b>Note</b>: CPUOFF doesn't switch MCLK off and will instead bring the CPU state machines in an IDLE state while MCLK will still be running.
    <br /><br />
    <br><br>
    <img src="usercontent,img,1319831724" alt="Clock structure diagram" title="Clock structure diagram" width="80%">
    <br>
    <b>Note</b>: CPUOFF doesn't switch MCLK off and will instead bring the
    CPU state machines in an IDLE state while MCLK will still be running.
    <br><br>
     
    In order to '<i>clock</i>' a register with ACLK or SMCLK, the following structure needs to be implemented:
    <br /><br />
    <img src="getimg.php?1246434793" alt="Clock implementation example" title="Clock implementation example" />
    <br /><br />
    The following Verilog code would implement a counter clocked with SMCLK:
    <br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    <br><br>
    <img src="usercontent,img,1246434793" alt="Clock implementation example" title="Clock implementation example">
    <br><br>For example, the following Verilog code would implement a counter clocked with SMCLK:
    <br>
    <table border="0" cellpadding="0" cellspacing="4">
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>
    reg [7:0] test_cnt;
    <br />
    <br />always @ (posedge mclk or posedge puc_rst)
    <br /> if (puc_rst) test_cnt <= 8'h00;
    <br /> else if (smclk_en) test_cnt <= test_cnt + 8'h01;
    <br>
    <br>always @ (posedge mclk or posedge puc_rst)
    <br> if (puc_rst) test_cnt &lt;= 8'h00;
    <br> else if (smclk_en) test_cnt &lt;= test_cnt + 8'h01;
    </code>
    </td>
    </tr>
    </table>
    <br /><br />
    </tbody></table>
    <br><br>
    <b>Register Description</b>
    <ul>
    <li>DCOCTL: Not implemented</li>
    687,65 → 973,310
    <li>BCSCTL2[3]&nbsp;&nbsp;&nbsp;: SELS</li>
    <li>BCSCTL2[2:1]: DIVSx</li>
    <li>BCSCTL2[0]&nbsp;&nbsp;&nbsp;: Unused</li>
    </ul>
    </li>
    </ul>
    </ul></li>
    </ul><a name="2.2.2_Basic_Clock_Module_ASIC"></a>
    <h3>2.2.2 Basic Clock Module: ASIC<br>
    </h3>
    When targeting an ASIC, up to all clock management
    options available in the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a> (Chapter 4) can be included:<br><br>
     
    <img src="usercontent,img,1319832480" alt="Clock structure diagram" title="Clock structure diagram" width="80%"><br>
    Additional info can be found in the <a href="http://opencores.org/project,openmsp430,asic%20implementation">ASIC implementation</a>
    section.<br>
    <br>
    <a name="2.2.3_SFR"></a>
    <h3>2.2.3 SFR</h3>Following the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a>, this peripheral implements flags and interrupt enable bits for the Watchdog Timer and NMI:<br>
    <br>
    <table border="1">
     
     
    <tbody><tr align="center">
    <td rowspan="2"><b><small>Register Name</small></b></td>
    <td rowspan="2"><b><small>Address</small></b></td>
    <td colspan="8" rowspan="1" style="vertical-align: top;"><small style="font-weight: bold;">Bit Fields</small><br>
    </td>
     
    </tr>
    <tr align="center">
     
     
     
     
     
     
    <td style="vertical-align: top;"><small>7<br>
    </small></td>
    <td style="vertical-align: top;"><small>6<br>
    </small></td>
    <td style="vertical-align: top;"><small>5<br>
    </small></td>
    <td style="vertical-align: top;"><small>4<br>
    </small></td>
    <td style="vertical-align: top;"><small>3<br>
    </small></td>
    <td style="vertical-align: top;"><small>2<br>
    </small></td>
    <td style="vertical-align: top;"><small>1<br>
    </small></td>
    <td style="vertical-align: top;"><small>0<br>
    </small></td>
     
     
    </tr>
    <tr align="center">
    <td>IE1<br>
    </td>
    <td><small>0x0000</small></td>
     
     
     
    <td colspan="3" rowspan="1" style="vertical-align: top; text-align: center;"><small>&nbsp;Reserved <br>
    </small></td>
    <td style="vertical-align: top;">NMIIE <b><sup><font color="#ff0000">1</font></sup></b></td>
    <td colspan="3" rowspan="1" style="vertical-align: top;"><small>&nbsp; Reserved&nbsp;</small>
    </td>
    <td style="vertical-align: top;">WDTIE <b><sup><font color="#ff0000">2</font></sup></b></td>
     
    </tr>
    <tr align="center">
    <td>IFG1<br>
    </td>
    <td><small>0x0002</small></td>
     
    <td colspan="3" rowspan="1" style="vertical-align: top;"><small>Reserved</small><br>
     
    </td>
    <td style="vertical-align: top;">NMIIFG <b><sup><font color="#ff0000">1</font></sup></b></td>
    <td colspan="3" rowspan="1" style="vertical-align: top;"><small>Reserved</small></td>
    <td style="vertical-align: top;">WDTIFG <b><sup><font color="#ff0000">2</font></sup></b></td>
     
     
    </tr>
    </tbody>
    </table>
    <br>
    <b><sup><font color="#ff0000">1</font></sup></b>: These fields are not available if the NMI is excluded (see <i>openMSP430_defines.v</i> )<br>
    <b><sup><font color="#ff0000">2</font></sup></b>: These fields are not available if the Watchdog is excluded (see <i>openMSP430_defines.v</i> )<br>
    <br>
    In addition, two 16-bit read-only registers have been added in order
    to let the software know with which version of the openMSP430 it is
    running:<br>
    <br>
    <table border="1">
     
    <tbody><tr align="center">
    <td rowspan="2"><b><small>Register Name</small></b></td>
    <td rowspan="2"><b><small>Address</small></b></td>
    <td colspan="16"><b><small>Bit Field</small></b></td>
    </tr>
    <tr align="center">
    <td><small>15</small></td><td><small>14</small></td>
    <td><small>13</small></td><td><small>12</small></td>
    <td><small>11</small></td><td><small>10</small></td>
    <td><small> 9</small></td><td><small> 8</small></td>
    <td><small> 7</small></td><td><small> 6</small></td>
    <td><small> 5</small></td><td><small> 4</small></td>
    <td><small> 3</small></td><td><small> 2</small></td>
    <td><small> 1</small></td><td><small> 0</small></td>
    </tr>
    <tr align="center">
    <td><small>CPU_ID_LO</small></td>
    <td><small>0x0004</small></td>
    <td colspan="7"><font size="-5">PER_SPACE</font></td>
    <td colspan="5"><font size="-5">USER_VERSION</font></td>
    <td colspan="1"><font size="-5">ASIC</font></td>
    <td colspan="3"><font size="-5">CPU_VERSION</font></td>
    </tr>
    <tr align="center">
    <td><small>CPU_ID_HI</small></td>
    <td><small>0x0006</small></td>
    <td colspan="6"><font size="-5">PMEM_SIZE</font></td>
    <td colspan="9"><font size="-5">DMEM_SIZE</font></td>
    <td colspan="1"><font size="-5">MPY</font></td>
    </tr>
    </tbody>
    </table>
    <br>
    <table border="0">
     
    <tbody><tr>
    <td>&nbsp;</td><td valign="top"><li><b>CPU_VERSION</b></li></td>
    <td>: Current CPU version<br>
    </td>
    </tr>
    <tr>
    <td>&nbsp;</td><td valign="top"><li><b>ASIC</b></li></td>
    <td>: Defines if the ASIC specific features are enabled in the current openMSP430 implementation.</td>
    </tr>
    <tr>
    <td>&nbsp;</td><td valign="top"><li><b>USER_VERSION</b></li></td>
    <td>: Reflects the value defined in the <b style="font-style: italic;">openMSP430_defines.v</b> file.</td>
    </tr>
    <tr>
    <td>&nbsp;</td><td valign="top"><li><b>PER_SPACE</b></li></td>
    <td>: Peripheral address space for the current implementation (byte size = PER_SPACE*512)</td>
    </tr>
    <tr>
    <td>&nbsp;</td><td valign="top"><li><b>MPY</b></li></td>
    <td>: This bit is set if the hardware multiplier is included in the current implementation</td>
    </tr>
    <tr>
    <td>&nbsp;</td><td valign="top"><li><b>DMEM_SIZE</b></li></td>
    <td>: Data memory size for the current implementation (byte size = DMEM_SIZE*128)</td>
    </tr>
    <tr>
    <td>&nbsp;</td><td valign="top"><li><b>PMEM_SIZE</b></li></td>
    <td>: Progam memory size for the current implementation (byte size = PMEM_SIZE*1024)</td>
    </tr>
    </tbody>
    </table>
    <br>
    <span style="font-weight: bold; text-decoration: underline;">Note:</span> attentive readers will have noted that <span style="font-style: italic;">CPU_ID_LO</span> and <span style="font-style: italic;">CPU_ID_HI</span> are identical to the Serial Debug Interface register counterparts.<br>
    <a name="2.2.2 Watchdog Timer"></a>
    <h3>2.2.2 Watchdog Timer</h3>
    <h3>2.2.4 Watchdog Timer</h3>
     
    100% of the features advertised in the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a> (Chapter 10) have been implemented.
     
     
     
    100% of the features advertised in the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a> (Chapter 10) have been implemented.<br>
     
    <br>
     
    The following parameter in the <i>openMSP430_defines.v</i> file controls if the watchdog timer should be included or not:<br>
    <br>
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>//-------------------------------------------------------<br>
    // Include/Exclude Watchdog timer<br>
    //-------------------------------------------------------<br>
    // When excluded, the following functionality will be<br>
    // lost:<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Watchog (both interval and watchdog modes)<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - NMI interrupt edge selection<br>
    //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Possibility to generate a software PUC reset<br>
    //-------------------------------------------------------<br>
    `define WATCHDOG</code></td></tr></tbody>
    </table>
    <br>
    <a name="2.2.5 16x16 Hardware Multiplier"></a>
    <h3>2.2.5 16x16 Hardware Multiplier</h3>
     
    100% of the features advertised in the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a> (Chapter 7) have been implemented.
    <br><br>
    The following parameter in the <i>openMSP430_defines.v</i> file controls if the hardware multiplier should be included or not:<br><br>
    <table border="0" cellpadding="0" cellspacing="4">
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>
    // Include/Exclude Hardware Multiplier
    <br>`define MULTIPLIER
    </code>
    </td>
    </tr>
    </tbody></table>
    <a name="2.3_Peripherals"></a>
    <h2>2.3 External Peripherals</h2>
    The external peripherals labeld with the "FPGA ONLY" tag do not contain
    any clock gate nor clock muxes and are clocked with MCLK only. This
    mean that they don't support any of the low power modes and therefore are most likely not suited for an ASIC implementation.<br>
    <br>
    <a name="2.2.3 Digital I/O"></a>
    <h3>2.2.3 Digital I/O</h3>
    <h3>2.3.1 Digital I/O (FPGA ONLY)<br>
    </h3>
     
     
    100% of the features advertised in the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a> (Chapter 9) have been implemented.
    <br /><br />
    <br>
    <br>
     
    The following Verilog parameters will enable or disable the corresponding ports in order to save area (i.e. FPGA utilization):
    <br /><br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    <br>
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>
    parameter P1_EN = 1'b1; // Enable Port 1
    <br />parameter P2_EN = 1'b1; // Enable Port 2
    <br />parameter P3_EN = 1'b0; // Enable Port 3
    <br />parameter P4_EN = 1'b0; // Enable Port 4
    <br />parameter P5_EN = 1'b0; // Enable Port 5
    <br />parameter P6_EN = 1'b0; // Enable Port 6
    <br>parameter P2_EN = 1'b1; // Enable Port 2
    <br>parameter P3_EN = 1'b0; // Enable Port 3
    <br>parameter P4_EN = 1'b0; // Enable Port 4
    <br>parameter P5_EN = 1'b0; // Enable Port 5
    <br>parameter P6_EN = 1'b0; // Enable Port 6
    </code>
    </td>
    </tr>
    </tbody>
    </table>
    <br />
     
    <br>
     
    They can be updated as following during the module instantiation (here port 1, 2 and 3 are enabled):
    <br /><br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    <br>
    <br>
     
    <table border="0" cellpadding="0" cellspacing="4">
     
    <tbody><tr>
    <td width="35"><br>
    </td>
    <td bgcolor="#d0d0d0" width="3"><br>
    </td>
    <td width="15"><br>
    </td>
    <td>
    <code>
    gpio #(.P1_EN(1),
    <br /> .P2_EN(1),
    <br /> .P3_EN(1),
    <br /> .P4_EN(0),
    <br /> .P5_EN(0),
    <br /> .P6_EN(0)) gpio_0 (
    <br> .P2_EN(1),
    <br> .P3_EN(1),
    <br> .P4_EN(0),
    <br> .P5_EN(0),
    <br> .P6_EN(0)) gpio_0 (
    </code>
    </td>
    </tr>
    </tbody>
    </table>
    <br />
     
    <br>
     
    The full pinout of the GPIO module is provided in the following table:
    <br /><br />
    <br>
    <br>
     
    <table border="1">
    <tr> <td align="center"><b>Port Name</b></td> <td align="center"><b>Direction</b></td> <td align="center"><b>Width</b> </td> <td align="center"><b>Description</b></td> </tr>
    <tr> <td colspan="4" align="center"> <b><i>Clocks & Resets</i></b> </td></tr>
     
    <tbody><tr> <td align="center"><b>Port Name</b></td> <td align="center"><b>Direction</b></td> <td align="center"><b>Width</b> </td> <td align="center"><b>Description</b></td> </tr>
    <tr> <td colspan="4" align="center"> <b><i>Clocks &amp; Resets</i></b> </td></tr>
    <tr> <td> mclk </td> <td> Input </td> <td> 1 </td> <td> Main system clock </td> </tr>
    <tr> <td> puc_rst </td> <td> Input </td> <td> 1 </td> <td> Main system reset </td> </tr>
    <tr> <td colspan="4" align="center"> <b><i>Interrupts</i></b> </td></tr>
    787,18 → 1318,27
    <tr> <td> p6_dout </td> <td> Output </td> <td> 8 </td> <td> Port 6 data output </td> </tr>
    <tr> <td> p6_dout_en </td> <td> Output </td> <td> 8 </td> <td> Port 6 data output enable </td> </tr>
    <tr> <td> p6_sel </td> <td> Output </td> <td> 8 </td> <td> Port 6 function select </td> </tr>
    </table>
    </tbody>
    </table>
     
    <a name="2.2.4 Timer A"></a>
    <h3>2.2.4 Timer A</h3>
    <h3>2.3.2 Timer A (FPGA ONLY)</h3>
     
     
     
    100% of the features advertised in the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a> (Chapter 11) have been implemented.
    <br /><br />
    <br>
    <br>
     
    The full pinout of the Timer A module is provided in the following table:
    <br /><br />
    <br>
    <br>
     
    <table border="1">
    <tr> <td align="center"><b>Port Name</b></td> <td align="center"><b>Direction</b></td> <td align="center"><b>Width</b> </td> <td align="center"><b>Description</b></td> </tr>
    <tr> <td colspan="4" align="center"> <b><i>Clocks, Resets & Debug</i></b> </td></tr>
     
    <tbody><tr> <td align="center"><b>Port Name</b></td> <td align="center"><b>Direction</b></td> <td align="center"><b>Width</b> </td> <td align="center"><b>Description</b></td> </tr>
    <tr> <td colspan="4" align="center"> <b><i>Clocks, Resets &amp; Debug</i></b> </td></tr>
    <tr> <td> mclk </td> <td> Input </td> <td> 1 </td> <td> Main system clock </td> </tr>
    <tr> <td> aclk_en </td> <td> Input </td> <td> 1 </td> <td> ACLK enable (from CPU) </td> </tr>
    <tr> <td> smclk_en </td> <td> Input </td> <td> 1 </td> <td> SMCLK enable (from CPU) </td> </tr>
    831,34 → 1371,22
    <tr> <td> ta_cci2b </td> <td> Input </td> <td> 1 </td> <td> Timer A capture 2 input B </td> </tr>
    <tr> <td> ta_out2 </td> <td> Output </td> <td> 1 </td> <td> Timer A output 2 </td> </tr>
    <tr> <td> ta_out2_en </td> <td> Output </td> <td> 1 </td> <td> Timer A output 2 enable </td> </tr>
    </table>
    <br />
    <b>Note</b>: for the same reason as with the Basic Clock Module, the two additional clock inputs (TACLK and INCLK) are internally synchronized with the MCLK domain.
    As a consequence, TACLK and INCLK should be at least 2 times slowlier than MCLK, and if these clock are used toghether with the Timer A output unit, some jitter might be observed on the generated output.
    If this jitter is critical for the application, ACLK and INCLK should idealy be derivated from DCO_CLK.
    <br /><br />
    <a name="2.2.5 16x16 Hardware Multiplier"></a>
    <h3>2.2.5 16x16 Hardware Multiplier</h3>
     
    100% of the features advertised in the <a href="http://www.ti.com/litv/pdf/slau049f">MSP430x1xx Family User's Guide</a> (Chapter 7) have been implemented.
    <br /><br />
    The following parameter in the <i>openMSP430_defines.v</i> file controls if the hardware multiplier should be included or not.
    <br /><br />
    <table border="0" cellspacing="4" cellpadding="0">
    <tr>
    <td width="35"></td>
    <td bgcolor="#d0d0d0" width="3"></td>
    <td width="15"></td>
    <td>
    <code>
    // Include/Exclude Hardware Multiplier
    <br />`define MULTIPLIER
    </code>
    </td>
    </tr>
    </tbody>
    </table>
    <br /><br />
    <br>
     
    <br /><br />
    </body>
    </html>
    <b>Note</b>: for the same reason as with the Basic Clock Module FPGA version, the
    two additional clock inputs (TACLK and INCLK) are internally
    synchronized with the MCLK domain.
    As a consequence, TACLK and INCLK should be at least 2 times slowlier
    than MCLK, and if these clock are used toghether with the Timer A
    output unit, some jitter might be observed on the generated output.
    If this jitter is critical for the application, ACLK and INCLK should
    idealy be derivated from DCO_CLK.
    <br>
    <br>
    <br>
     
    <br><br>
    </body></html>
    /openmsp430/trunk/doc/html/files_directory_description.html
    18,7 → 18,7
    <a name="1. Introduction"></a>
    <h1>1. Introduction</h1>
     
    To simplify the integration of this IP, the directory structure is based on the <a href="http://www.opencores.org/downloads/opencores_coding_guidelines.pdf">OpenCores</a> recommendations.
    To simplify the integration of this IP, the directory structure is based on the <a href="http://cdn.opencores.org/downloads/opencores_coding_guidelines.pdf">OpenCores</a> recommendations.
    <br>
    <a name="2. Directory structure: openMSP430 core"></a>
    <div style="text-align: right;"><a href="#TOC">Top</a></div>
    26,7 → 26,7
     
    <table border="1">
    <tbody><tr><td colspan="5"><b>core</b></td> <td><i><b>openMSP430 Core top level directory</b></i></td></tr>
    <tr><td rowspan="87" valign="bottom"><font color="white">abcd</font></td> <td colspan="4"><b>bench</b></td> <td><i><b>Top level testbench directory</b></i></td></tr>
    <tr><td rowspan="107" valign="bottom"><font color="white">abcd</font></td> <td colspan="4"><b>bench</b></td> <td><i><b>Top level testbench directory</b></i></td></tr>
    <tr><td rowspan="7" valign="bottom"><font color="white">abcd</font></td> <td colspan="3"><b>verilog</b></td> <td><i></i><br>
    </td></tr>
    <tr><td rowspan="6" valign="bottom"><font color="white">abcd</font></td> <td colspan="2">tb_openMSP430.v</td> <td><i>Testbench top level module</i></td></tr>
    41,9 → 41,9
    <tr><td colspan="4"><b>doc</b></td> <td><i><b>Diverse documentation</b></i></td></tr>
    <tr><td><font color="white">abcd</font></td> <td colspan="3">slau049f.pdf</td> <td><i>MSP430x1xx Family User's Guide</i></td></tr>
    <tr><td colspan="4"><b>rtl</b></td> <td><i><b>RTL sources</b></i></td></tr>
    <tr><td rowspan="24" valign="bottom"><font color="white">abcd</font></td><td colspan="3"><b>verilog</b></td> <td><i></i><br>
    <tr><td rowspan="30" valign="bottom"><font color="white">abcd</font></td><td colspan="3"><b>verilog</b></td> <td><i></i><br>
    </td></tr>
    <tr><td rowspan="23" valign="bottom"><font color="white">abcd</font></td> <td colspan="2">openMSP430_defines.v</td> <td><i>openMSP430 core configuration file (Program and Data memory size definition, Debug Interface configuration, ...)</i></td></tr>
    <tr><td rowspan="29" valign="bottom"><font color="white">abcd</font></td> <td colspan="2">openMSP430_defines.v</td> <td><i>openMSP430 core configuration file (Program and Data memory size definition, Debug Interface configuration, ...)</i></td></tr>
    <tr><td colspan="2">openMSP430_undefines.v</td> <td><i>openMSP430 Verilog `undef file</i></td></tr>
    <tr><td colspan="2">openMSP430.v</td> <td><i>openMSP430 top level</i></td></tr>
    <tr><td colspan="2">omsp_frontend.v</td> <td><i>Instruction fetch and decode</i></td></tr>
    58,8 → 58,39
    <tr><td colspan="2">omsp_dbg.v</td> <td><i>Serial Debug Interface main block</i></td></tr>
    <tr><td colspan="2">omsp_dbg_hwbrk.v</td> <td><i>Serial Debug Interface hardware breakpoint unit</i></td></tr>
    <tr><td colspan="2">omsp_dbg_uart.v</td> <td><i>Serial Debug Interface UART communication block</i></td></tr>
    <tr><td colspan="2">omsp_sync_cell.v<br>
    </td> <td><i>Simple synchronization module (double flip-flop).</i></td></tr>
    <tr>
    <td colspan="2" rowspan="1" style="vertical-align: top;">omsp_sync_cell.v</td>
    <td style="vertical-align: top;"><i>Simple synchronization module (double flip-flop).</i></td>
    </tr>
    <tr>
    <td colspan="2" rowspan="1" style="vertical-align: top;">omsp_sync_reset.v</td>
    <td style="vertical-align: top;"><i>Generic Reset synchronizer (double flip-flop).</i></td>
    </tr>
    <tr>
    <td colspan="2" rowspan="1" style="vertical-align: top;">omsp_clock_gate.v</td>
    <td style="vertical-align: top;"><i>Generic Clock gate (NAND2 or LATCH-AND based).</i></td>
    </tr>
    <tr>
    <td colspan="2" rowspan="1" style="vertical-align: top;">omsp_clock_mux.v</td>
    <td style="vertical-align: top;"><i>Standard Clock Mux (used in the clock module &amp; watchdog timer).<br>
    </i></td>
    </tr>
    <tr>
    <td colspan="2" rowspan="1" style="vertical-align: top;">omsp_and_gate.v</td>
    <td style="vertical-align: top;"><i>AND gate module used on sensitive glitch free data paths.<br>
    </i></td>
    </tr>
    <tr>
    <td colspan="2" rowspan="1" style="vertical-align: top;">omsp_wakeup_cell.v</td>
    <td style="vertical-align: top;"><i>Generic Wake-up module.<br>
    </i></td>
    </tr>
    <tr>
    <td colspan="2" rowspan="1" style="vertical-align: top;">omsp_scan_mux.v</td>
    <td style="vertical-align: top;"><i>Scan MUX.<br>
    </i></td>
    </tr>
     
    <tr><td colspan="2"><b>periph</b></td> <td><i><b>Peripherals directory</b></i></td></tr>
    <tr><td rowspan="6"><font color="white">abcd</font></td> <td>omsp_gpio.v</td> <td><i>Digital I/O (Port 1 to 6)</i></td></tr>
    <tr>
    76,8 → 107,8
    <tr><td colspan="1">template_periph_16b.v</td> <td><i>Verilog template for 16 bit peripherals</i></td></tr>
    <tr><td colspan="1">template_periph_8b.v</td> <td><i>Verilog template for 8 bit peripherals</i></td></tr>
    <tr><td colspan="4"><b>sim</b></td> <td><i><b>Top level simulations directory</b></i></td></tr>
    <tr><td rowspan="40" valign="bottom"><font color="white">abcd</font></td> <td colspan="3"><b>rtl_sim</b></td> <td><i><b>RTL simulations</b></i></td></tr>
    <tr><td rowspan="39" valign="bottom"><font color="white">abcd</font></td> <td colspan="2"><b>bin</b></td> <td><i><b>RTL simulation scripts</b></i></td></tr>
    <tr><td rowspan="54" valign="bottom"><font color="white">abcd</font></td> <td colspan="3"><b>rtl_sim</b></td> <td><i><b>RTL simulations</b></i></td></tr>
    <tr><td rowspan="53" valign="bottom"><font color="white">abcd</font></td> <td colspan="2"><b>bin</b></td> <td><i><b>RTL simulation scripts</b></i></td></tr>
    <tr><td rowspan="6" valign="bottom"><font color="white">abcd</font></td> <td colspan="1">msp430sim</td> <td><i>Main simulation script for assembler vector sources (located in the <span style="font-weight: bold;">src</span> directory)<br>
    </i></td></tr>
    <tr>
    88,10 → 119,18
    <tr><td colspan="1">asm2ihex.sh</td> <td><i>Assembly file compilation (Intel HEX file generation)</i></td></tr>
    <tr><td colspan="1">ihex2mem.tcl</td> <td><i>Verilog program memory file generation</i></td></tr>
    <tr><td colspan="1">rtlsim.sh</td> <td><i>Verilog Icarus simulation script</i></td></tr>
    <tr><td colspan="1">template.def</td> <td><i>ASM linker definition file template</i></td></tr>
    <tr><td colspan="2"><b>run</b></td> <td><i><b>For running RTL simulations</b></i></td></tr>
    <tr><td rowspan="6" valign="bottom"><font color="white">abcd</font></td> <td colspan="1">run</td> <td><i>Run single simulation of a given assembler vector</i></td></tr>
    <tr><td colspan="1">template.x</td> <td><i>ASM linker definition file template</i></td></tr>
    <tr>
    <td style="vertical-align: top;"><br>
    </td>
    <td style="vertical-align: top;">cov_*<br>
    </td>
    <td style="vertical-align: top;"><span style="font-style: italic;">Code coverage scripts for NC-Verilog and ICM</span><br>
    </td>
    </tr>
    <tr><td colspan="2"><b>run</b></td> <td><i><b>For running RTL simulations</b></i></td></tr>
    <tr><td rowspan="7" valign="bottom"><font color="white">abcd</font></td> <td colspan="1">run</td> <td><i>Run single simulation of a given assembler vector</i></td></tr>
    <tr>
    <td style="vertical-align: top;">run_c<br>
    </td>
    <td style="vertical-align: top;"><i>Run single simulation of a given C vector</i></td>
    104,14 → 143,32
    </td>
    </tr>
    <tr><td colspan="1">run_disassemble</td> <td><i>Disassemble the program memory content of the latest simulation</i></td></tr>
    <tr><td colspan="1">load_waveform.sav</td> <td><i>SAV file for gtkWave</i></td></tr>
    <tr>
    <td style="vertical-align: top;">run_coverage_analysis<br>
    </td>
    <td style="vertical-align: top; font-style: italic;">Performs the coverage report merging of the regression run and starts ICM for the analysis.<br>
    </td>
    </tr>
    <tr><td colspan="1">load_waveform.sav</td> <td><i>SAV file for gtkWave</i></td></tr>
    <tr><td colspan="2"><b>src</b></td> <td><i><b>RTL simulation vectors sources</b></i></td></tr>
    <tr><td rowspan="24" valign="bottom"><font color="white">abcd</font></td> <td colspan="1">ldscript_example.x<br>
    <tr><td rowspan="36" valign="bottom"><font color="white">abcd</font></td> <td colspan="1">ldscript_example.x<br>
    </td> <td><i>MSPGCC toolchain linker script example</i></td></tr>
    <tr>
    <td style="vertical-align: top;">submit.prj<br>
    </td>
    <td style="vertical-align: top;"><span style="font-style: italic;">ISIM simulator verilog command file</span><br>
    </td>
    </tr>
    <tr>
    <td style="vertical-align: top;">submit.f</td>
    <td style="vertical-align: top;"><i>Verilog simulator command file</i></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">core.f<br>
    </td>
    <td style="vertical-align: top;"><span style="font-style: italic;">Command file listing the CPU files only.</span><br>
    </td>
    </tr>
    <tr><td colspan="1">sing-op_*.s43</td> <td><i>Single-operand assembler vector files</i></td></tr>
    <tr><td colspan="1">sing-op_*.v</td> <td><i>Single-operand verilog stimulus vector files</i></td></tr>
    <tr><td colspan="1">two-op_*.s43</td> <td><i>Two-operand assembler vector files</i></td></tr>
    118,13 → 175,45
    <tr><td colspan="1">two-op_*.v</td> <td><i>Two-operand verilog stimulus vector files</i></td></tr>
    <tr><td colspan="1">c-jump_*.s43</td> <td><i>Jump assembler vector files</i></td></tr>
    <tr><td colspan="1">c-jump_*.v</td> <td><i>Jump verilog stimulus vector files</i></td></tr>
    <tr><td colspan="1">op_modes.s43</td> <td><i>CPU operating modes assembler vector files (CPUOFF, OSCOFF, SCG1)</i></td></tr>
    <tr><td colspan="1">op_modes.v</td> <td><i>CPU operating modes verilog stimulus vector files (CPUOFF, OSCOFF, SCG1)</i></td></tr>
    <tr><td colspan="1">clock_module.s43</td> <td><i>Basic Clock Module assembler vector files</i></td></tr>
    <tr><td colspan="1">clock_module.v</td> <td><i>Basic Clock Module verilog stimulus vector files</i></td></tr>
    <tr><td colspan="1">dbg_*.s43</td> <td><i>Serial Debug Interface assembler vector files</i></td></tr>
    <tr>
    <td style="vertical-align: top;">nmi.s43</td>
    <td style="vertical-align: top;"><i>NMI assembler vector files</i></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">nmi.v</td>
    <td style="vertical-align: top;"><i>NMI verilog stimulus vector files</i></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">cpu_startup_asic.s43</td>
    <td style="vertical-align: top;"><i>CPU startup assembler vector files</i></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">cpu_startup_asic.v</td>
    <td style="vertical-align: top;"><i>CPU startup stimulus vector files</i></td>
    </tr>
    <tr><td colspan="1">op_modes*.s43</td> <td><i>CPU operating modes assembler vector files (CPUOFF, OSCOFF, SCG1)</i></td></tr>
    <tr><td colspan="1">op_modes*.v</td> <td><i>CPU operating modes verilog stimulus vector files (CPUOFF, OSCOFF, SCG1)</i></td></tr>
    <tr><td colspan="1">clock_module*.s43</td> <td><i>Basic Clock Module assembler vector files</i></td></tr>
    <tr><td colspan="1">clock_module*.v</td> <td><i>Basic Clock Module verilog stimulus vector files</i></td></tr>
    <tr>
    <td style="vertical-align: top;">lp_modes_*.s43</td>
    <td style="vertical-align: top;"><i>Low Power modes assembler vector files</i></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">lp_modes_*.v</td>
    <td style="vertical-align: top;"><i>Low Power modes verilog stimulus vector files</i></td>
    </tr>
    <tr><td colspan="1">dbg_*.s43</td> <td><i>Serial Debug Interface assembler vector files</i></td></tr>
    <tr><td colspan="1">dbg_*.v</td> <td><i>Serial Debug Interface verilog stimulus vector files</i></td></tr>
    <tr><td colspan="1">gpio_*.s43</td> <td><i>Digital I/O assembler vector files</i></td></tr>
    <tr>
    <td style="vertical-align: top;">sfr.s43</td>
    <td style="vertical-align: top;"><i>SFR assembler vector files</i></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">sfr.v</td>
    <td style="vertical-align: top;"><i>SFR verilog stimulus vector files</i></td>
    </tr>
    <tr><td colspan="1">gpio_*.s43</td> <td><i>Digital I/O assembler vector files</i></td></tr>
    <tr><td colspan="1">gpio_*.v</td> <td><i>Digital I/O verilog stimulus vector files</i></td></tr>
    <tr><td colspan="1">template_periph_*.s43</td> <td><i>Peripheral templates assembler vector files</i></td></tr>
    <tr><td colspan="1">template_periph_*.v</td> <td><i>Peripheral templates verilog stimulus vector files</i></td></tr>
    133,7 → 222,15
    <tr><td colspan="1">tA_*.s43</td> <td><i>Timer A assembler vector files</i></td></tr>
    <tr><td colspan="1">tA_*.v</td> <td><i>Timer A verilog stimulus vector files</i></td></tr>
    <tr><td colspan="1">mpy_*.s43</td> <td><i>16x16 Multiplier assembler vector files</i></td></tr>
    <tr><td colspan="1">mpy_*.v</td> <td><i>16x16 Multiplier verilog stimulus vector files</i></td></tr>
    <tr>
    <td style="vertical-align: top;">mpy_*.v</td>
    <td style="vertical-align: top;"><i>16x16 Multiplier verilog stimulus vector files</i></td>
    </tr>
    <tr>
    <td style="vertical-align: top;">scan.s43</td>
    <td style="vertical-align: top;"><i>Scan test assembler vector files</i></td>
    </tr>
    <tr><td colspan="1">scan.v</td> <td><i>Scan test verilog stimulus vector files</i></td></tr>
    <tr><td colspan="4"><b>synthesis</b></td> <td><i><b>Top level synthesis directory</b></i></td></tr>
    <tr><td rowspan="10" valign="bottom"><font color="white">abcd</font></td><td colspan="3"><b>synopsys</b></td><td><i>Synopsys (Design Compiler) directory</i></td></tr>
    <tr><td rowspan="6" valign="bottom"><font color="white">abcd</font></td> <td colspan="2">run_syn</td> <td><i>Run synthesis</i></td></tr>
    474,7 → 571,7
    <table border="1">
    <tbody><tr><td colspan="4"><b>tools</b></td> <td><i><b>openMSP430 Software Development Tools top level directory</b></i></td></tr>
    <tr>
    <td colspan="1" rowspan="24" style="vertical-align: top;"><font color="white">abcd</font></td>
    <td colspan="1" rowspan="19" style="vertical-align: top;"><font color="white">abcd</font></td>
    <td colspan="3" rowspan="1" style="vertical-align: top;">omsp_alias.xml<br>
    </td>
    <td style="vertical-align: top;"><span style="font-style: italic;">This
    516,14 → 613,11
    <tr><td rowspan="1" colspan="1">Howto-GDB_Remote_Serial_Protocol.pdf<i><br>
    </i></td> <td style="vertical-align: top;"><i>Document from Jeremy Bennett (Embecosm): Howto: GDB Remote Serial Protocol - Writing a RSP Server</i></td>
    </tr>
    <tr><td colspan="3"><b>freewrap642</b></td> <td><i><b>The freeWrap program turns TCL/TK scripts into single-file binary executable programs for Windows.</b></i></td></tr>
    <tr><td rowspan="4" valign="bottom"><font color="white">abcd</font></td> <td colspan="2">freewrap.exe</td> <td><i>freeWrap executable to run on TCL/TK scripts (i.e. with GUI)</i></td></tr>
    <tr><td colspan="2">freewrapTCLSH.exe</td> <td><i>freeWrap executable to run on pure TCL scripts (i.e. command line)</i></td></tr>
    <tr><td colspan="2">tclpip85s.dll</td> <td><i>freeWrap mandatory DLL</i></td></tr>
    <tr><td rowspan="1" colspan="2" style="vertical-align: top;">generate_exec.bat<i><br>
    </i></td>
    <td style="vertical-align: top;"><i>Simple Batch file for auto generation of the tools' windows executables</i></td>
    </tr>
    </tbody></table>
    <br>
    <div style="text-align: right;"><a href="#TOC">Top</a></div>
    /openmsp430/trunk/doc/openMSP430.odt Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream

    powered by: WebSVN 2.1.0

    © copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.