OpenCores is a free-software organization for hardware designs.

Below is a list from http://www.opencores.org/browse.cgi/by_category
--- it lists all the designs they have online now.  Briefly it
includes 16 arithmetic cores (including three variants of the FFT,
three multipliers, and a single-cycle unsigned divider), 11 prototype
boards, 31 communication controllers (covering serial, USB, Ethernet,
GPIO, HDLC, I2C, SPI, CAN, SPDIF, and a bunch of others), 11 crypto
cores (including RSA, DES, 3DES, AES128/192, Twofish), a DDR SDRAM
controller, 30 processors (at least one of which, the OpenRISC 1000,
runs Linux --- also including implementations of AVR and Z80), JPEG
compression, JTAG, a PS/2 interface, 11 systems-on-a-chip, a PCI
bridge, an IDE controller, and a VGA/LCD controller.

I think Axis also ships all the FPGA stuff from their cameras as free
software as well.

One implication of all this free-software hardware-design stuff is
that the relative advantage of including some FPGA space in a
general-purpose computer is gradually increasing.  If you could
transform your FPU into a fast integer FFT unit for one application,
and then a crypto core for another, and then JPEG compression for a
third, you might be better off than just having an FPU --- even at the
cost of making the FPU larger and slower.

For the most part, I think putting the CPU designs into an FPGA is a
silly thing to do.  Maybe an ASIC, but not an FPGA.  They use so much
FPGA space, and they run fairly slowly; you're much better off using a
purpose-built CPU to load stuff into the FPGA and run stuff that you
can't yet effectively accelerate with the FPGA.

(Perhaps some systems will trade CPU power for FPGA space --- perhaps
use an AVR or an RCA 1801 (that was the bit-serial processor all the
space missions and the COSMAC ELF used, wasn't it?) for the CPU to
control the FPGA, and run anything that needs to be fast in the FPGA.)

There's a virtuous cycle there similar to (and actually synergistic
with) the virtuous cycle I've been talking about for the last year
with multicore CPUs.  If FPGAs become more widely available in PCs,
people will write more software (is that the right word?) for them,
which will give more relative advantage to PCs incorporating FPGAs.
However, for the foreseeable future (four years?), the FPGAs will
still cost US$10 or more, so they won't find their way into low-end
cellphones and other small programmable computers.

For the "glue logic" stuff like USB and Ethernet, the advantage may
not be that great; I think you'll cause some communications problems
if you can turn your USB controller into an AES core for a while, then
turn it back; and the ability to turn it into an Ethernet controller
for a while, and then back into USB, isn't really helpful without both
connectors already present.  (And I think the Ethernet PHY needs funny
voltages and waveforms anyway, so you need specialized analog
circuitry.)

Here's the list:

 Arithmetic core
        CORDIC core
        5x4Gbps CRC generator designed with standard cells
        Single Clock Unsigned Division Algorithm
        Hardware Division Units
        radix 4 complex fft
        CF Cordic
        CF FFT
        CF Floating Point Multiplier
        Unsigned serial divider
        HCSA adder and Generic ALU based on HCSA
        PYRAMID Integer Multiplier unit
        HIERARCHICAL Integer Multiplier unit
        Binary to BCD conversions, with LED display driver
        FPU
        Discrete Cosine Transform core
        True matrix 3x3 color convertion

Prototype board
        Micro FPGA Board
        OCRP-1 board
        ACEX 1K50 board
        SD/MMC Bootloader
        MAXII-Evalboard
        IIE-PCI Board
        TI DSP and Xilinx FPGA Dev Board
        Ethernet Development Board
        Linux & Xilinx FPGA Dev Board
        kiss-board
        Technologic Systems TS-7300 FPGA Computer

Communication controller
        Ethernet MAC 10/100 Mbps
        General-Purpose I/O (GPIO) Core
        HDLC controller
        I2C controller core
        IrDA
        TDM controller
        Serial UART
        UART 16550 core
        USB 2.0 Function Core
        Stepper Motor Controller
        I2S Interface
        SPI controller core
        Reverse CDMA Access Channel Controller
        CAN Protocol Controller
        USB 1.1 PHY
        Simple Asynchronous Serial Controller
        Automatic BAUD rate generator
        Single Slot PCM Interface
        USB 1.1 Function IP Core
        SPI core
        HDB3/B3ZS Encoder+Decoder
        TIME SLOT INTERCHANGE DIGITAL SWITCH
        Quadrature Decoder / Counter
        SPDIF Interface
        SystemC USB1.1 IP Core
        USB 1.1 Host and Function IP core
        Manchester to UART converter
        SD/MMC Bootloader
        10_100_1000 Mbps tri-mode ethernet MAC
        a VHDL 16550 UART core
        8b10b Encoder/Decoder

Coprocessor
        Floating Point Unit
        CF Reconfigurable Computing Array
        FPU

Crypto core
        DES/Triple DES IP Cores
        128/192 AES
        SystemC/Verilog DES
        AES (Rijndael) IP Core
        Basic RSA Encryption Engine
        Basic DES Crypto Core
        SystemC/Verilog MD5
        AES128
        XTEA Crypto Core
        twofish 128/192/256
        AES core modules

DSP core
        Biquad IIR Filter Core
        Low Power FIR Filter
        CF FIR Filter
        FirGen/MultGen

ECC core
        Reed Solomon Encoder
        CF LDPC Decoder
        Ultimate CRC
        Reed-Solomon Decoder (31, 19, 6)

 Library
        Random Number Generator Library
        gh vhdl library
        extension_pack

Memory core
        Parameterisable DRAM model
        Memory cores
        Memory sizer
        Generic FIFOs
        DDR SDRAM Controller Core
        Single Port ASRAM
        CF Interleaver

Microprocessor
        Mini-Risc core
        Plasma - most MIPS I(TM) opcodes
        OpenRISC 1000
        aeMB
        Yellow Star
        RISC5x
        RISC Microcontroller
        T80 cpu
        T51 mcu
        risc16f84
        AX8 mcu
        PPX16 mcu
        TV80
        AVR Core
        ASPIDA sync/async DLX Core
        CF State Space Processor
        System09
        Aquarius
        AE18
        Cpu Generator
        System68
        16 Bit Microcontroller
        Data Flow Processor
        JOP: a Java Optimized Processor
        Wishbone High Performance Z80
        miniMIPS
        Educational RISC Processor
        YACC-Yet Another CPU CPU
        UCore
        T400 µController

Other
        SoC Debug Interface
        JTAG Test Access Port (TAP)
        PS2 interface
        PWM/Timer/Counter (PTC) Core
        boundaries
        SystemC/Verilog Random Number Generator
        Simple Programmable Interrupt Controller
        Simple General Purpose IO
        WB Interface for TI 5x DSP (WB2HPI)
        DragonBall/68K Wishbone interface
        Keypad Scanner
        First File Reader FAT16
        OpenRisc 1200 Graphic Configuration Tool
        SystemC to Verilog Synthesizable Subset Translator
        FPGA MMC-Card Config.
        JPEG Hardware Compressor
        Simple FM Receiver
        keyboardcontroller
        xmatchpro lossless data compressor
        Hardware looping unit

SoC
        WISHBONE DMA/Bridge IP Core
        WISHBONE Conmax IP Core
        WISHBONE Conbus IP Core
        Wishbone System6800/01
        Complete SoC based on C-NIT processor
        System09
        WISHBONE Builder
        WB/OPB & OPB/WB Interface Wrapper
        ahb system generator
        SimpCon - a Simple SoC Interconnect
        kiss-board

System controller
        AC 97 Controller IP Core
        OCIDEC (OpenCores IDE Controller)
        Memory Controller IP Core
        PCI bridge
        RS232 system controller
        TI DSP and Xilinx FPGA Dev Board

Video controller
        VGA/LCD Controller
        Video compression systems



Reply via email to