Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
16 years ago

A new processor

I am asking for comments on my project. It is a custom component used with SOPC builder, its purpose is to allow many more time critical functions to be programmed in C. When these functions are done in HDL, the verification is more complex than if done in a processor which should be reusable once verified. A program is used to parse the C code and generate content for memory blocks that hold the data and controls for the processor. The processor is designed to minimize the number of clock intervals to execute the C code. The Current size is 151 logic cells, 43 logic registers and fmax about 140 MHz. The bulk of the hardware is counted but some decoders and glue logic do have to be added.

The final size should be such that multiples can be used according to the time critical function needs. SOPC Builder can have multiple Nios's but I think too expensive, also there will be advantages from reducing the number of functions in one processor, but I don't have a good handle on the inter-process communication traffic.

Thanks, I appreciate your time. I am attaching a cycle log that shows the activity for a few C statements.

14 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Are you willing to show/share the design so it can be discussed more directly?

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi SimKnutt and BuGless,

    May I take the freedom to answer the question since Simknutt already had explained that and also responded to the other thread about schematics and referred to me - many thanks.

    The idea of Simknutt is quite simply this - as I understood it last year:

    use mutiple parallel simplified mini-processors to implement the FPGA design instead of hdl or anything else.

    FPGAs are rich in memory and if softwrare takes say "n" clock cycles then using "n" parallel processors will result in equivalent functionality of hardwiring !!

    The concept is not new but seems sensible as any mutiple processor system, but surely altera or xilinx or somebody else would have quite easily gone that way if it was worth it. It will need substantial supporting tools before the field designer is told to steer away from hdl by their bosses.

    Already there are tools that translate C to HDL or C to bitstream and surely they will exploit parallelism. None has the attraction of handcrafting available to the hardwirer.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I did not make my point clear now that kaz explained his understanding.

    1. There are many processors used "because the design is too complex for conventional methods." OK, then comes an RTOS or whatever, interrupt handlers, shared memory, etc.

    2. Much of the application is coded in C, but real time responses seem to tax the speed of the processor, so multi cores and parallel programming come into play. I feel that there are still shared resource issues. And these techniques are too complex to tuck away inside a chip.

    3. SOPC builder has capability for multiple NIOS's, but they are expensive physically, and I think that would be over kill just to handle mainly the real time response for the peripherals.

    4. The peripheral processor is to manage the control of peripherals as cheaply as possible, it is not to replace the peripheral by any means. It is a custom component used by SOPC builder, but it is programmable so the hardware is constant physically.

    5. Here is a tough one. It is common knowledge that C source code has to be compiled to some intermediate language and then to the processor native language. Also the processor uses conventional von Neumann architecture and it takes several if not many machine instructions to execute a C statement. This does not apply to the CEngine because it is designed to handle C code directly. This is not my first cpu design.

    6. The fewest clock cycles are used so it is fast, The C code to do the simple functions should be small and a few M9K blocks should do the job.

    To summarize: Use SOPC builder, use existing peripherals, use NIOS and whatever OS, use HDL to design new things and if those new things are memory mapped IO, use CEngine to off load real time response functions when to build a system.

    The term multi processor may imply shared memory for instruction storage, if so it does not apply. Distributed processors may or not be a better term. Hard to say.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi I posted a reply, then deleted because I expected it to go to the other forum.

    Anyway, I am willing to share and have some downloads on a website. Also tried to do a CEngine project on Google but dont know enough to manage a repository.

    http://mysite.verizon.net/vzeosqt4/embeddedcengine has an .exe and demo test case for download. Hope it works, I am a novice at site building.