Menu

The Controlix way

Currently, all patches in Controlix are configured and designed to run as "controls". This is why we call it "Controlix". What are controls, though? Simply put, controls are regularized patches. Features of controls:

  • Controls, unlike patches, sit on a standard bus through which all signals (including clocks) are sent and received, while patches usually bristle with all kinds of random external wires. This isn't implemented yet in Controlix because we are still using native TCP/IP sockets at layer 3 to send and receive messages, so blocking waits for TCP I/O are still necessary and therefore all controls must precess their own internal clock pulses in order to "keep going", which isn't generally suitable for synthesis. This will eventually change, and all signals will be driven by clock-pulse messages across the network bus.

  • Controls are general and modular of form. All standard object-oriented design features - inheritance, encapsulation and polymorphism - are available. The message-passing based interface allows controls to implement almost any type of interface and respond to it in a client/server fashion (inheritance), controls can be handled in a standard, pluggable fashion by virtue of their restriction to using external bus I/O in the mixed ethernet/TCP/IP standard (encapsulation) and finally controls can be designed to handle messages in a dynamic, modular fashion by the use of client/server communication and network routing protocols (polymorphism).

  • Controls can be composed into a system in a generic manner. This allows the same set of controls written in the same VHDL code to interact over a bus in a system-consistent fashion, whether they are running as user processes on top of an operating system, as kernel threads and/or static objects as part of an operating system, or as a static patch destined for bitstreaming into an FPGA or a netlist to be masked into an integrated circuit. The same design principles apply to all of these forms, with a small amount of target glue/driver code to bind the selected control set into a particular instantiation medium.

Posted by Jon Taylor 2013-05-19

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.