Why is there a system controller and a microcontroller in the same FPGA?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;







up vote
2
down vote

favorite
1












I am starting to dig into the FPGA world. While exploring the FPGA SmartFusion2 architecture I found out that there is a microcontroller (ARM Cortex-M3) and at the same time a system controller. Why is there a need for both? Can't one of them replace the other?



Enter image description here










share|improve this question























  • The SmartFusion2 is not your typical FPGA. It's a hybrid between an normal MCU and an FGPA.
    – Jeroen3
    Aug 13 at 10:03










  • Obviously the system controller can not do anything the M3 does.
    – user3528438
    Aug 13 at 10:17










  • E.g. to reduce complexity during design of the chip. To reduce the complexity of the chip itself for the user. To make components reuseble.
    – Alexander von Wernherr
    Aug 13 at 10:23
















up vote
2
down vote

favorite
1












I am starting to dig into the FPGA world. While exploring the FPGA SmartFusion2 architecture I found out that there is a microcontroller (ARM Cortex-M3) and at the same time a system controller. Why is there a need for both? Can't one of them replace the other?



Enter image description here










share|improve this question























  • The SmartFusion2 is not your typical FPGA. It's a hybrid between an normal MCU and an FGPA.
    – Jeroen3
    Aug 13 at 10:03










  • Obviously the system controller can not do anything the M3 does.
    – user3528438
    Aug 13 at 10:17










  • E.g. to reduce complexity during design of the chip. To reduce the complexity of the chip itself for the user. To make components reuseble.
    – Alexander von Wernherr
    Aug 13 at 10:23












up vote
2
down vote

favorite
1









up vote
2
down vote

favorite
1






1





I am starting to dig into the FPGA world. While exploring the FPGA SmartFusion2 architecture I found out that there is a microcontroller (ARM Cortex-M3) and at the same time a system controller. Why is there a need for both? Can't one of them replace the other?



Enter image description here










share|improve this question















I am starting to dig into the FPGA world. While exploring the FPGA SmartFusion2 architecture I found out that there is a microcontroller (ARM Cortex-M3) and at the same time a system controller. Why is there a need for both? Can't one of them replace the other?



Enter image description here







microcontroller fpga arm architecture smartfusion






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Aug 13 at 20:34









Peter Mortensen

1,56231422




1,56231422










asked Aug 13 at 9:58









Lavender

194




194











  • The SmartFusion2 is not your typical FPGA. It's a hybrid between an normal MCU and an FGPA.
    – Jeroen3
    Aug 13 at 10:03










  • Obviously the system controller can not do anything the M3 does.
    – user3528438
    Aug 13 at 10:17










  • E.g. to reduce complexity during design of the chip. To reduce the complexity of the chip itself for the user. To make components reuseble.
    – Alexander von Wernherr
    Aug 13 at 10:23
















  • The SmartFusion2 is not your typical FPGA. It's a hybrid between an normal MCU and an FGPA.
    – Jeroen3
    Aug 13 at 10:03










  • Obviously the system controller can not do anything the M3 does.
    – user3528438
    Aug 13 at 10:17










  • E.g. to reduce complexity during design of the chip. To reduce the complexity of the chip itself for the user. To make components reuseble.
    – Alexander von Wernherr
    Aug 13 at 10:23















The SmartFusion2 is not your typical FPGA. It's a hybrid between an normal MCU and an FGPA.
– Jeroen3
Aug 13 at 10:03




The SmartFusion2 is not your typical FPGA. It's a hybrid between an normal MCU and an FGPA.
– Jeroen3
Aug 13 at 10:03












Obviously the system controller can not do anything the M3 does.
– user3528438
Aug 13 at 10:17




Obviously the system controller can not do anything the M3 does.
– user3528438
Aug 13 at 10:17












E.g. to reduce complexity during design of the chip. To reduce the complexity of the chip itself for the user. To make components reuseble.
– Alexander von Wernherr
Aug 13 at 10:23




E.g. to reduce complexity during design of the chip. To reduce the complexity of the chip itself for the user. To make components reuseble.
– Alexander von Wernherr
Aug 13 at 10:23










3 Answers
3






active

oldest

votes

















up vote
7
down vote













The system controller is a group of dedicated hardware functions that manage the internal operation of the overall chip. It may or may not have a CPU, but in any case, it is not user-programmable.



In contrast, the primary function of the ARM processor subsystem is to execute application code.






share|improve this answer



























    up vote
    6
    down vote













    That's not an FPGA architecture, that's a System-on-Chip that happens to contain a microcontroller and an FPGA.



    Having a hardware MCU in there makes a lot of sense: in reality, systems containing an FPGA often need an MCU to load the configuration into the FPGA, and to do system maintenance tasks, which, would you not have the MCU, you would do by implementing a small CPU inside the FPGA and letting that run software.



    Also, dedicated silicon implementing the exact same functionality as implemented in an FPGA usually is faster and uses less energy. So, if you just need your microcontroller to e.g. receive command packets via SPI, then extract the command from them, and set off the right calculations to be done inside the FPGA, you can save a lot of energy because much more components of your system can be put to sleep, and the ones that always wake up use less power.






    share|improve this answer



























      up vote
      3
      down vote













      The system controller is responsible for booting both the FPGA and the ARM CPU, among other things.



      Standalone ARM CPUs also have similar logic to configure a minimal memory map and conservative clock PLL setting before starting the CPU core, which will then do the remainder of the setup.



      In a combined FPGA/MCU fabric, this is usually extended to loading the entire application program from configuration flash, since we already need to do this for the FPGA tables, so loading a bit more RAM doesn't add much complexity.



      Keep in mind that FPGAs need to boot really fast, for PCIe and USB applications where standby mode doesn't have the power budget to keep the memory contents, but the device is expected to return to full operation within a few milliseconds.



      Booting the MCU and then having it shovel data from flash into the FPGA tables would simply take too long — this would start the FPGA PLLs after the CPU PLL rather than in parallel.






      share|improve this answer




















        Your Answer




        StackExchange.ifUsing("editor", function ()
        return StackExchange.using("mathjaxEditing", function ()
        StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
        StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
        );
        );
        , "mathjax-editing");

        StackExchange.ifUsing("editor", function ()
        return StackExchange.using("schematics", function ()
        StackExchange.schematics.init();
        );
        , "cicuitlab");

        StackExchange.ready(function()
        var channelOptions =
        tags: "".split(" "),
        id: "135"
        ;
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function()
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled)
        StackExchange.using("snippets", function()
        createEditor();
        );

        else
        createEditor();

        );

        function createEditor()
        StackExchange.prepareEditor(
        heartbeatType: 'answer',
        convertImagesToLinks: false,
        noModals: false,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: null,
        bindNavPrevention: true,
        postfix: "",
        onDemand: true,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        );



        );













         

        draft saved


        draft discarded


















        StackExchange.ready(
        function ()
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f390753%2fwhy-is-there-a-system-controller-and-a-microcontroller-in-the-same-fpga%23new-answer', 'question_page');

        );

        Post as a guest






























        3 Answers
        3






        active

        oldest

        votes








        3 Answers
        3






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes








        up vote
        7
        down vote













        The system controller is a group of dedicated hardware functions that manage the internal operation of the overall chip. It may or may not have a CPU, but in any case, it is not user-programmable.



        In contrast, the primary function of the ARM processor subsystem is to execute application code.






        share|improve this answer
























          up vote
          7
          down vote













          The system controller is a group of dedicated hardware functions that manage the internal operation of the overall chip. It may or may not have a CPU, but in any case, it is not user-programmable.



          In contrast, the primary function of the ARM processor subsystem is to execute application code.






          share|improve this answer






















            up vote
            7
            down vote










            up vote
            7
            down vote









            The system controller is a group of dedicated hardware functions that manage the internal operation of the overall chip. It may or may not have a CPU, but in any case, it is not user-programmable.



            In contrast, the primary function of the ARM processor subsystem is to execute application code.






            share|improve this answer












            The system controller is a group of dedicated hardware functions that manage the internal operation of the overall chip. It may or may not have a CPU, but in any case, it is not user-programmable.



            In contrast, the primary function of the ARM processor subsystem is to execute application code.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Aug 13 at 11:17









            Dave Tweed♦

            108k9130233




            108k9130233






















                up vote
                6
                down vote













                That's not an FPGA architecture, that's a System-on-Chip that happens to contain a microcontroller and an FPGA.



                Having a hardware MCU in there makes a lot of sense: in reality, systems containing an FPGA often need an MCU to load the configuration into the FPGA, and to do system maintenance tasks, which, would you not have the MCU, you would do by implementing a small CPU inside the FPGA and letting that run software.



                Also, dedicated silicon implementing the exact same functionality as implemented in an FPGA usually is faster and uses less energy. So, if you just need your microcontroller to e.g. receive command packets via SPI, then extract the command from them, and set off the right calculations to be done inside the FPGA, you can save a lot of energy because much more components of your system can be put to sleep, and the ones that always wake up use less power.






                share|improve this answer
























                  up vote
                  6
                  down vote













                  That's not an FPGA architecture, that's a System-on-Chip that happens to contain a microcontroller and an FPGA.



                  Having a hardware MCU in there makes a lot of sense: in reality, systems containing an FPGA often need an MCU to load the configuration into the FPGA, and to do system maintenance tasks, which, would you not have the MCU, you would do by implementing a small CPU inside the FPGA and letting that run software.



                  Also, dedicated silicon implementing the exact same functionality as implemented in an FPGA usually is faster and uses less energy. So, if you just need your microcontroller to e.g. receive command packets via SPI, then extract the command from them, and set off the right calculations to be done inside the FPGA, you can save a lot of energy because much more components of your system can be put to sleep, and the ones that always wake up use less power.






                  share|improve this answer






















                    up vote
                    6
                    down vote










                    up vote
                    6
                    down vote









                    That's not an FPGA architecture, that's a System-on-Chip that happens to contain a microcontroller and an FPGA.



                    Having a hardware MCU in there makes a lot of sense: in reality, systems containing an FPGA often need an MCU to load the configuration into the FPGA, and to do system maintenance tasks, which, would you not have the MCU, you would do by implementing a small CPU inside the FPGA and letting that run software.



                    Also, dedicated silicon implementing the exact same functionality as implemented in an FPGA usually is faster and uses less energy. So, if you just need your microcontroller to e.g. receive command packets via SPI, then extract the command from them, and set off the right calculations to be done inside the FPGA, you can save a lot of energy because much more components of your system can be put to sleep, and the ones that always wake up use less power.






                    share|improve this answer












                    That's not an FPGA architecture, that's a System-on-Chip that happens to contain a microcontroller and an FPGA.



                    Having a hardware MCU in there makes a lot of sense: in reality, systems containing an FPGA often need an MCU to load the configuration into the FPGA, and to do system maintenance tasks, which, would you not have the MCU, you would do by implementing a small CPU inside the FPGA and letting that run software.



                    Also, dedicated silicon implementing the exact same functionality as implemented in an FPGA usually is faster and uses less energy. So, if you just need your microcontroller to e.g. receive command packets via SPI, then extract the command from them, and set off the right calculations to be done inside the FPGA, you can save a lot of energy because much more components of your system can be put to sleep, and the ones that always wake up use less power.







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Aug 13 at 11:17









                    Marcus Müller

                    28.6k35388




                    28.6k35388




















                        up vote
                        3
                        down vote













                        The system controller is responsible for booting both the FPGA and the ARM CPU, among other things.



                        Standalone ARM CPUs also have similar logic to configure a minimal memory map and conservative clock PLL setting before starting the CPU core, which will then do the remainder of the setup.



                        In a combined FPGA/MCU fabric, this is usually extended to loading the entire application program from configuration flash, since we already need to do this for the FPGA tables, so loading a bit more RAM doesn't add much complexity.



                        Keep in mind that FPGAs need to boot really fast, for PCIe and USB applications where standby mode doesn't have the power budget to keep the memory contents, but the device is expected to return to full operation within a few milliseconds.



                        Booting the MCU and then having it shovel data from flash into the FPGA tables would simply take too long — this would start the FPGA PLLs after the CPU PLL rather than in parallel.






                        share|improve this answer
























                          up vote
                          3
                          down vote













                          The system controller is responsible for booting both the FPGA and the ARM CPU, among other things.



                          Standalone ARM CPUs also have similar logic to configure a minimal memory map and conservative clock PLL setting before starting the CPU core, which will then do the remainder of the setup.



                          In a combined FPGA/MCU fabric, this is usually extended to loading the entire application program from configuration flash, since we already need to do this for the FPGA tables, so loading a bit more RAM doesn't add much complexity.



                          Keep in mind that FPGAs need to boot really fast, for PCIe and USB applications where standby mode doesn't have the power budget to keep the memory contents, but the device is expected to return to full operation within a few milliseconds.



                          Booting the MCU and then having it shovel data from flash into the FPGA tables would simply take too long — this would start the FPGA PLLs after the CPU PLL rather than in parallel.






                          share|improve this answer






















                            up vote
                            3
                            down vote










                            up vote
                            3
                            down vote









                            The system controller is responsible for booting both the FPGA and the ARM CPU, among other things.



                            Standalone ARM CPUs also have similar logic to configure a minimal memory map and conservative clock PLL setting before starting the CPU core, which will then do the remainder of the setup.



                            In a combined FPGA/MCU fabric, this is usually extended to loading the entire application program from configuration flash, since we already need to do this for the FPGA tables, so loading a bit more RAM doesn't add much complexity.



                            Keep in mind that FPGAs need to boot really fast, for PCIe and USB applications where standby mode doesn't have the power budget to keep the memory contents, but the device is expected to return to full operation within a few milliseconds.



                            Booting the MCU and then having it shovel data from flash into the FPGA tables would simply take too long — this would start the FPGA PLLs after the CPU PLL rather than in parallel.






                            share|improve this answer












                            The system controller is responsible for booting both the FPGA and the ARM CPU, among other things.



                            Standalone ARM CPUs also have similar logic to configure a minimal memory map and conservative clock PLL setting before starting the CPU core, which will then do the remainder of the setup.



                            In a combined FPGA/MCU fabric, this is usually extended to loading the entire application program from configuration flash, since we already need to do this for the FPGA tables, so loading a bit more RAM doesn't add much complexity.



                            Keep in mind that FPGAs need to boot really fast, for PCIe and USB applications where standby mode doesn't have the power budget to keep the memory contents, but the device is expected to return to full operation within a few milliseconds.



                            Booting the MCU and then having it shovel data from flash into the FPGA tables would simply take too long — this would start the FPGA PLLs after the CPU PLL rather than in parallel.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Aug 13 at 13:53









                            Simon Richter

                            5,97811025




                            5,97811025



























                                 

                                draft saved


                                draft discarded















































                                 


                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function ()
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f390753%2fwhy-is-there-a-system-controller-and-a-microcontroller-in-the-same-fpga%23new-answer', 'question_page');

                                );

                                Post as a guest













































































                                Popular posts from this blog

                                How to check contact read email or not when send email to Individual?

                                Displaying single band from multi-band raster using QGIS

                                How many registers does an x86_64 CPU actually have?