Version 53

    Digital Fever

    Enter Your Electronics & Design Project for a chance to win a $200 shopping cart!

    Submit an EntrySubmit an Entry  Back to homepage
    Project14 Home
    Monthly Themes
    Monthly Theme Poll

     

    In the Comments Below: Let Us Know Your Digital Fever Project Ideas!

     

    We are Sending Out a Limited Number of PSoC 4200 or a VIDOR 4000 boards for the Best Project Proposals that Use Them!

     

    "We have a binary system of arithmetic zero and one in varying arrangements. Digital computers use a number system which consists only of the figures zero and one, out of which you can construct any number and this was invented by Leibniz who got it from the Book of Changes." - Alan Watts, British Philosopher, Writer, and Speaker

     

     

    {tabbedtable} Tab LabelTab Content
    Monthly Theme

     

    The theme this month is Digital Fever and it celebrates all things digital, from digital logic, giving programs the ability to make complex decisions, to FPGA, which can begin configured to do just about anything.  The idea comes from  jancumps.  Your project can be anything that involves Digital Logic.  In can involve FPGA, PLD, logic gate ICs, CMOS logic, TTL, DTL, discrete logic, and more! You can do projects made primarily made of discrete components such as resistors, capacitors, discrete logic chips and single-functionality chips such as those provided by the 74007400 series.  You could do a STEM related activity such as a logic gate board game.  Or you can do Programmable Logic projects, using an FPGA or PLD board of your choice such as an Arty-S7Arty-S7, a PYNQ-Z2PYNQ-Z2, an Ultra96-V2Ultra96-V2, a MiniZedMiniZed, or a PSOC6PSOC6.  If you are interested in doing a project involving a VIDOR 4000VIDOR 4000 or PSoC 4200PSoC 4200, submit your project proposal in the comments below and we will send boards to the best project proposals that use them!  Both of these boards are great if you are just getting started with FPGA or PLD.

     

    Win a Free Board for Your Project Project Proposal in the Comments Below!

    Buy NowBuy NowBuy NowBuy Now

     

     

    Binary code is used to describe every aspect of reality in the digital world we live in.  From the movies we watch, to the music we listen to, and the text that you are currently reading on this screen, all of it is some combination of 1s and 0s, making it possible to represent every aspect of our reality in the virtual world. The late 17th century mathematician and philosopher Gottfried Wilhelm Von Leibniz is credited with inventing the binary system which forms the basis of modern computing, drawing at least in part from the I Ching, aka Book of Changes. Twenty-four year after Leibniz published his first paper announcing the invention of binary code, a Jesuit in Beijing sent him illustrations of Chinese trigram and hexagrams. He published a second paper crediting the Chinese with inventing the first binary code.

     

    Like the 1s and 0s currently used to translate reality into the digital world, the I Ching (which may be as much as 5,000 years old) represents reality in the binary language of Yin and Yang. Yin and Yang are polar opposites and are often described in terms of male and female, light and dark, on and off, positive and negative.  While binary code can literally be used to define images, numbers, letters, and music; according to the I Ching the universe is a constant mix and interaction between Yin and Yang and reality is an illusion.  Could the illusory nature of augmented reality, artificial intelligence, and virtual reality in the digital world be supporting evidence of the illusory nature of reality itself?

     

    Leibniz, is sometimes referred to as the last universal genius, having invented at least two things essential for the modern world: calculus, and binary arithmetics based on bits.  While all computers rely on a binary system of 1s and 0s, the rules of logic were first set out by a 1850s self-taught mathematician named George Boole.  In 1847, Boole argued that just three operations (AND, OR, NOT) can perform all logic functions.  His ideas had no apparent or practical use and were largely ignored until they were applied by Claude Shannon to a telephone switch design in the 1930s.  The abstract structure of boolean algebra which eventually evolved from Boole’s work, would not only become an important field in mathematics, it would also become fundamental to the design and study of electronic circuits and computer architecture.  Boolean Algebra does the consistent work of comparing numbers to construct decisions.

     

    Digital logic is a system of rules allowing programs to make complicated decisions based on yes/no questions. A logic gate performs a logical operation on one or more logic inputs and produces a single logic output. The logic normally performed is Boolean logic and is most commonly found in digital circuits. Logic gates are primarily implemented electronically using diodes or transistors, but can also be constructed using electromagnetic relays, fluidics, optics, molecules, or even mechanical elements. Logic gates are the fundamental building blocks of any digital system. It is an electronic circuit having one or more than one input and only one output. The relationship between the input and the output is based on a certain logic.  The Learning Circuit does a great job of explaining the 7 types of logic gates (NOT, AND, NAND, OR, NOR, XOR, and XNOR)  in The Learning Circuit 50: How Logic Gates Work.  You can check out additional element14 presents material to explore logic gate projects such as a real life Jumanji game in  Episode 238: Ben Heck's Hackmanji Board Game Part 1 Episode as well as a logic gate game in Hex Game.  The Essentials course, Programmable Devices I: Programmable Logic, is an excellent resource and a chance to test your knowledge of everything from logic gates to programmable logic.

     

    Logic gates are primarily implemented using diodes or transistors acting as electronic switches.  Logic Gates such as NAND or NOR perform logic applications and manufactured using semiconductor devices such as BJT, Diodes, or FETs.  Digital Logic families include RTL (Resistor Transistor Logic), DTL (Diode Transistor Logic), TTL (Transistor-Transistor Logic), ECL (Emitter Coupled Logic), and CMOS (Complementary Metal Oxide Semiconductor Logic). Logic circuits include multiplexers, registers, arithmetic logic units (ALUs), and computer memory.  A microprocessor is a form of computer memory that may contain more than 100 million gates. A functionally complete logic system may consist of relays, valves (vacuum tubes), or transistors. Resistor-Transistor Logic (RTL) is the simplest family of logic gates and uses bipolar transistors. RTL (Resistor Transistor Logic) is the earliest class of transistorized digital logic circuit used and its built using resistors as the input network and bipolar junction transistors (BJTs) as switching devices. Unlike simple diode logic gates, RTL gates can be cascaded indefinitely to produce more complex logic functions. RTL gates were used in early integrated circuits. The resistors used in RTL were eventually replaced by diodes resulting in diode–transistor logic (DTL) for higher speed and better density.  DTL (Diode Transistor Logic) is the direct ancestor of TTL and is so called because the logic gating function is performed by a diode network and the amplifying is performed by a transistor. DTL was eventually supplanted by Transistor-Transistor logic (TLL).

     

    Transistor-Transistor Logic was applied to many bipolar logic generations by slowly improving the speed as well as power utilization over about two decades. Commercially available TTL digital logic gates include the 7400 series of integrated circuits. The most recently introduced family 74Fxx is still sold and was widely used into the late 90s. Typically, TTL chips integrate no more than a few hundred transistors each. Functions within a single package generally range from a few logic gates to a microprocessor bit-slice. TTL also became important because its low cost made digital techniques economically practical for tasks previously done by analog methods. The Kenback-1, which is considered by the Computer History Museum to be the world's first PC, used Transistor-Transistor Logic for its CPU as an alternate of a microprocessor.  The Xerox Alto, the first computer to support a Graphical User Interface (GUI), used TTL integrated at the level of arithmetic logic units (ALUs).

     

     

    Usually, each TTL chip includes hundreds of transistors that generally function in a single package range from logic gates to a microprocessor.  Most computers used TTL-compatible glue logic well into the 90s.

     

    As integrated circuits became more complex, bipolar transistors were replaced with smaller field-effect transistors (MOSFETs). To reduce power consumption still further, most contemporary chip implementations of digital systems now use CMOS logic. CMOS uses complementary (both n-channel and p-channel) MOSFET devices to achieve a high speed with low power dissipation.

     

     

    In the early days of integrated circuits, designers started using rows of basic gates. These were either completely customized (full-custom) or made with standard rows of gate but leaving gates unconnected.  For a specific design, the gates are connected though metal lines in the wiring channels.  Therefore, customization is only in the wiring metal layer sand not the layers with transistors. This is known as “semi-custom” application specific integrated circuits (ASICs).

     

    The first FPGA was introduced by Xilinx in 1985.  It has an array of logic blocks which are programmable.  It is surrounded by programmable routing resources which allow the user to define interconnections between the logic blocks.  It has a lot of very flexible input and output circuits (programmable for TTL, CMOS, and other interface standards).

     

    An FPGA (Field Programmable Logic Gate Array) is a type of Integrated Circuit that can be reconfigured again and again and used to perform different tasks. You can configure FPGA to function as a processor, then reconfigure it to function as a Graphics Processing Unit (GPU), a hardware video encoder, and literally any digital integrated circuit you can imagine.  As the term suggests, an FPGA consists of a large number of logic gates and flip-flops grouped into Configurable Logic Blocks (CLBs).  Thousands of CLB are embedded in a programmable matrix that can be interconnected to one another to implement a specific circuit functionality.

     

    FPGAs are typically programmed on a low level using an HDL (Hardware Description Language).  The two most popular HDLs emerged in the 80s, having seen little revision and offering a low level of abstraction to the user, are Verilog and VHDL.  ASICs, short for application-specific integrated circuit, which is a general purpose, integrated circuit that is customized for a particular use, is also typically programmed using an HDL (Hardware Description Language). Both ASICs and FPGA are really fast and can perform an number of operations at the same time in parallel. This makes them ideal for applications in digital signal processing, video & image processing, voice recognition, biometrics, cryptography, and more. A modern ASIC such an SoC (system on a chip) is a custom fabricated circuit that can include entire microprocessors, memory blocks such as ROM, RAM, FLASH, EEPROM, and other large building blocks.  With an FPGA on the hand, you are literally defining the entire circuit, there is no processor to run software on, it can be as simple as an AND gate or as complex as a multi-core processor. Designing on FPGA forces you to think in terms of low level building blocks such as gates, flip-flops (aka registers), counters, latches, memory, and multiplexors.  An FPGA can be configured to literally be any digital circuit! Using HDL hardware code, while typically used to program an FPGA or an ASIC, has never been the only option for programming an FPGA. A bitstream is the term used to describe the configuration data on an FPGA.  One solution would be to reverse engineer the bitstream.  This is considerably more difficult for an ASIC than an FPGA.  The need to reverse engineer the bitstream is necessary to operate on a low level because FPGA manufacturers use an unpublished format, that is proprietary to the manufacturer, for bitstreams. High-Level synthesis is seeing more adoption lately.  HLS (high-level syntesis) enables the ability to use C-based languages in FPGA design.

     

    Alterea (now part of Intel) and Xlinx offer HLS through their respective toolsets. A number of C-based implementations are available, such as Open CL, for software engineers who want to boost their FPGA performance without a deep understanding of FPGA design.  Vivado Design Suite is a software suite produced by Xilinx and the Arduino IDE make FPGA more accessible to a wider audience.  With a microcontroller such as an Arduino, the code goes to a compiler, such as AVR--GCC Compiler, and is then compiled to a hex file that is stored in the flash memory. When programming the FPGA for the Arduino Vidor 4000, the code you write in the IDE is primarily targeting hardware for the SAMD21 microcontrollers.  The on-board FPGAs powers-on blank and loads its bitstream from the EEPROM. The device side USB port is only connected to the SAMD21, not the FPGA. JTAG is an industry standard for interfacing, controlling, and programming chips. The Arduino Vidor 4000 uses the SAMD21 as a JTAG controller, allowing the host machine to re-program the FPGA's EEPROM. FPGA applications include digital signal processing, bioinformatics, device controllers, software-defined radio, random logic, ASIC prototyping, medical imaging, computer hardware emulation, voice recognition, cryptography, and automotive.

     

     

    A Programmable Logic Device (PLD) is an IC (Integrated Circuit) with internal logic gates connected through electronic paths that behave similarly to fuses . In the original state, all the fuses are intact, but when we program these devices, we blow out certain fuses along the path that need to be removed in order to reach a particular configuration. This is what happens with  ROM (read-only memory), which consists of nothing but basic logic gates arranged in such a way that they store the specified bits. Because Read Only Memory (ROM) stores binary information permanently, the data that is stored on it can not be changed later.  The first programmable logic device (PLD) to allow users to program binary information once was PROM (Programmable Read Only Memory).  A PROM chip requires a special device called a PROM programmer or PROM burner to write data.  Once the data is stored in it, it can not be modified, it is referred to as a one- time programmable device. PROM has a fixed AND plane and a programmable OR plane. It was invented in 1956 but not made commercially available until 1969.  Applications for PROM include cell phones, video game consoles, RFID tags ,medical devices, and other electronics.

     

    PROM was followed by EPROM (Eraseable Programmable Read-Only Memory) in 1971, PLAs (Programmable Logic Arrays) in 1975, and PALs (Programmable Array Logic) in 1978. PAL is a programmable logic device that has Programmable AND array & fixed OR array. A PLA is a programmable logic device that has both Programmable AND array & Programmable OR array.  A PAL device is easier to use but not as flexible as a PLA device. If a programmable logic device (PLD) has has a programmable AND array and a fixed OR array than it uses Programmable Array Logic (PAL). PALS's only limitation is the number of AND gates. PAL consists of small programmable read only memory (PROM) and additional output logic used to implement a desired logic function with limited components.

     

    Complex Programmable Logic Devices (CPLDs) and Field Programmable Gate Arrays (FPGAs) are two different types of general-purpose semiconductor devices that can be programmed by users after being shipped.  They are design-flexible and user-customizable hardware devices that can implement any logical function that an application-specific integrated circuit (ASIC) can perform, allowing users update their functionality, which is advantageous for a number of applications. PLDs contain programmable logic components called Logic Elements (LEs) and a hierarchy of reconfigurable interconnects that allow the LEs to be physically connected. LEs can be configured to perform complex combinational functions, or simple logic gates like AND and XOR. Logic blocks may include memory elements, either simple flip-flops or more complete blocks of memory. CPLDs are large-scale logic devices with up to thousands of programmable logic elements, non-volatile memory, and I/O block on one chip. Connections between the logic elements on these semiconductor chips are customized by the user with software tools. CPLD architecture has a predictable timing performance and speed, offers a range of logic capabilities, and is often employed in portable, battery-operated applications. FPGAs are denser and more complex than CPLDs and are used to implement larger or more complex designs. An FPGA is not restricted to any predetermined hardware function. FPGA allows you to program product features and functions, adapt to new standards, and reconfigure hardware for specific applications even after the product has been installed in the field (field programmable).

     

    Unlike previous generation FPGAs using Input and Output (I/O) with programmable logic and interconnects, modern FPGAs consist of a mix of configurable embedded SRAM, high-speed transceivers, high-speed I/O, logic blocks, and routing. Programmable Logic Devices have many design advantages, including rapid prototyping, less time to market, and of course the ability to re-program in the field.

    Project Examples

    Here are some projects to inspire you:

     

     

    Flipping Core Memory Bits Directly With a Magnetic Stylus by abg123 :

     

    abg123  has been captivated by magnetism, as he suspects many are, for a long time. His discovery of core memory at the Computer History museum in Mountain View, CA triggered the idea to create a core memory module that is interactive. He discovered Jussi Kilpelainen’s Arduino Core Memory Shield on Tindie and that was the kick he needed. He added an LED array behind the cores to illuminate each core in real time and so he could selectively flip a bit one direction with a stylus (a small screwdriver with a magnet attached). he suspects the presence of the permanent magnet is inhibiting the “destructive read” and/or the follow-up write. The result is only being able to clear the bits at this time. The next step is to create an active stylus to allow me to choose whether I want to set or clear a bit. This will effectively enable drawing AND erasing, to make the project more interactive. Pursuing this next step is going to bring along more learning about magnets and core memory, which is the real goal behind this project. He’ll move on to the electromagnet experiments. One challenge he’ll likely face is the fact the cores are not all arranged in the same orientation. They are placed in an alternating pattern to make the wiring & drive circuitry layout more efficient. If his solution ends up relying on orientation of the stylus relative to the core, He'll have to get extra-clever.

     

    Flipping Core Memory Bits Directly With a Magnetic Stylus

    "Clever and different." - Community Member Judge

    "I initially thought Andy had made all the PCB and memory latticework but he was truthful in stating he bought it, which is always appreciated. It didn't really detract from my interest in how he made the pre-bought board into a nice little game with the application of an LED matrix unit. For giving me insight into this board, and the possibilities from it, I have chosen him as my second place." - Community Member Judge

     

     

    "Magnetic Stylus, very interesting legacy technology view." - Community Member Judge

     

    DIY Test Equipment: The ByEar 2000 - A Logic Probe by jc2048

     

     

    Episode 388: FPGA MIDI Music Synthesizer

     

     

    Digital Logic µFR NFC Card Reader - part 1: first C program for Linux (Raspberry Pi, BB, ...)  by jancumps:

     

     

     

    VidorScout by  jomoenginer:

     

    VidorScout is an autonomous mobile robot that uses Sensor Fusion which combines camera vision, Time of Flight Sensor data and IR Sensors to identify objects for both avoidance and for object identification. The camera sensor can also be used for QR code identification to identify that an object has been labeled correctly or as a waypoint with autonomous navigation.  The Arduino MKR Vidor 4000 Development Board is used to take advantage of the on board SAMD Microcontroller and Intel Cyclone 10 FPGA capabilities. A 5MP OV5647 Camera sensor captures real-time images to be output via the Vidor HDMI port as well as for analysis.  A closed Maze is used to demonstrate the functionality of the bot.

     

    Part of the intent of the VidorScout project is to take advantage of the FPGA code that Arduino has provided and modify it for a particular purpose.  It is unknown at this time whether this is possible since not all of the released FPGA code has been provided by Arduino for the MKR Vidor 4000, so it will be a matter of working with what is available.  However, Arduino recently posted the VidorBitstrem code which has the majority of the FPGA code used in the VidorPeripherials and VidoGraphics examples.  To compile the VidorBitstream code, a few steps are required.  To edit and synthesis the Intel Cyclone 10 LP code for the Vidor 4000, the Intel Quartus Prime (includes Nios II EDS) software needs to be downloaded an installed. Intel provides a Lite 18.1 version that is free to download and use but is a couple of steps behind the latest release. This includes the Intel Quartus Prime development environment, Nios II Embedded Design Suite, ModelSim Starter Edition and much more.

     

    The VidorScout is a mobile robot that self navigates using Sharp IR sensors and a VL53L0X Time of Flight Distance Sensor When a QR Code is Identified, the bot will stop and a Ref RGB LED on the back of the bot will flash indicating the code was found.  The Base of the VidorScout is made of Expanded PVC board that was obtained from a local Tap Plastics store. The Wheels of the VidorScout are Adfruit Thin White TT Wheels and the motors and OSEPP TT Gear Box motors.  The Motor Controller used is a Adafruit DRV883 with Dual H-Bridge.  The Time of Flgiht sensor is a VL53L0X sensor.

     

    VidorScout

     

    "Nice robot with lots of sensors.  Good use of FPGA to read the QR codes." - Community Member Judge

     

     

    "A lot of great work shown here in the development of a highly capable robot." - Community Member Judge

    "Good example of a scratch built robot with plenty of information on the build and programming aspects. Finished off with a fully functioning robot in demonstration video." - Community Member Judge

     

    Mini WOPR example like wargames Movie by toolkitman:

     

    Mini WOPR example like WarGames Movie

     

     

     

    Pseudo random generator with Arduino Vidor MKR4000  by kk99:

     

    Using MKR Vidor 4000 as basic debug architecture

     

    "A simple, but complete solution using a FPGA as a custom logic device" - Community Member Judge

     

     

    Vidor Clock - Powered by FPGA  by vimarsh_:

     

    vimarsh_  wanted to do something useful with FPGA as he had Adruino MKR Vidor laying around. The Vidor is still not so beginner friendly but its Graphics Library is still awesome. Also, he had almost forgotten it has WiFi and a microcontroller also. So, he wanted to make something which uses all of the microchips and which can be used on a day-to-day basis. So, the direct thought came was to do something with display because the Vidor has an HDMI (micro) port and also a great library.  For the project, he thought of making a digital clock- which shows time in analog format and it will also show the date and other information. This will test out his trigonometry skills as well as it can use the internet. Here's how it works...  The Vidor connects to the internet with the help of its WiFi chip (Esp32) and gets the time in the world via NTP Server. Then the time is stored in the RTC of SAMD21 microcontroller. That time is then displayed in analog format with the date on an HDMI monitor. After the day is over it will automatically sync the time with the NTP Server again and hence it will also remain very accurate. The output on Monitor is done by Intel Cyclone FPGA onboard.

     

    VIDOR Clock - Powered by FPGA

    "The Vidor clock is sure one of the three. The author (by the voice he seems really young) has put a lot of effort showing in detail how it works. The demo is well done and clear how it works. And the idea sounds nice." - Community Member Judge

    "Effectively demonstrated the use of the Vidor board to produce an internet synchronised time clock" - Community Member Judge

    "Simple project, not the most original but the well structured blog makes it interesting and easy to read from top to bottom. I think this kind of projects/guides are enjoyable for those new to programmable logic devices and programming in general." - Community Member Judge

     

     

     

     

    Using MKR Vidor 4000 as basic debug architecture by daniloo94:

     

    Using MKR Vidor 4000 as basic debug architecture

     

     

     

    MKR VIDOR 4000 - Programmable Logic Project by aabhas:

     

    MKR VIDOR 4000- Programmable Logic Project

     

     

    MKR VIDOR 4000 Simple DVM  by rsc:

     

    MKR VIDOR 4000 Simple DVM

     

    Vidor4000 CAN-Bus Project  by alisterw:

     

     

    On-line battery bank monitor by fyaocn:

     

    VidorBreakout - Using the pins on the Mini PCIe connector of the Arduino MKR Vidor 4000 by bernhardmayer :

     

     

    VidorBreakout - Using the pins on the Mini PCIe connector of the Arduino MKR Vidor 4000

     

     

    Programmaball by Fred27:

     

    Fred27 has been trying to get into FPGAs, but he’s found it a little hard going. Let's be honest it's not easy. It's the sort of thing that you understand when you read it, you understand when you try it, but you struggle with when you come back to it again. He was excited about the Programmable Logic competition because time-limited projects are always a good way to focus the mind. Having said that, he’s got a lot going on at the moment so there is a fair chance it won't get completed by the Project14 end date.  As long he gets some of it done and learns as he goes then he'll be happy even if he misses the deadline. He has an Arty S7 sitting in front of him (thanks to the very generous kk99 ) and a PmodVGA board that seemed like a good add-on to a recent component order. Generating a VGA signal seems like a nice rite-of-passage for FPGA development so he’s going to go for a simple VGA-based game.  He’s also got some micro:bits that his sons (age 7 and 5) are just starting to get to grips with. It would be really nice to get them involved in creating something. If he could include a micro:bit in a small way then that would be a bonus. Marble madnessPong is a great starter game. It's not that tricky and it really hits the nostalgia button. However, he doesn’t want to do something with a little originality. He’s not much of a gamer, but one game he remember for it's originality back in the day was Marble Madness. Now if you think that he’s capable of recreating that then think again! He just like that sort of idea. He also noticed when helping the boys with the micro:bit that it responds to tilt. Maybe a couple of micro:bits could be the game controllers and a ball could roll around the screen?

     

    He settles on making it a ball-rolling sort of game controlled by a couple of micro:bits.  He’s hoping his kids will be able to help with the micro:bit side of things.  As the FPGA (a Spartan 7 on an Arty S7 board) will be generating the output VGA signal he started looking into how to generate FPGA. He found an excellent resource on VGA generation at timetoexplore. It describes all the timing required for a 640 x 480 VGA output from a VGA and even started going into generating graphics. He also discovered a different approach by Andy West here on E14. He really wanted to understand what he was doing rather than copy someone else's code so he took inspiration from both. The timing and generation on his version takes a lot from timetoexplore, but he liked the separation of the VGA signal generation from the rendering of element from Andy's solution.  He also decided that he wanted to render the output on the fly rather than writing to an area of RAM to display from there. He felt that he'd learn more from doing it this way. Of course, he stumbled into a few FPGA pitfalls. At one point he managed to (he thinks) get the timing a little too close and half the screen was blanked and he got a smudgy green / purple mess. As a coder, that's not something you'd expect when only dealing with grey and blue. Once you've got timing issue sorted he decided to move on to having something a little more interesting than a square. This got me into the realm of uploaded an image file onto the FPGA. Once again timetoexplore was helpful. Still in his retro vibe and with a PacMan machine at work, he decided that a PacMan ghost would be cool. He ended up hand-entering image data in the form of a 14 x 14 grid of 2-bit binary data to form the image and a 4 colur palette to translate these to a 12-bit colour for display. If you look closely you can just about make out the figure in the image.

     

    Programmaball

    "This is a good use case for an FPGA and Fred27 has started from scratch rather than using already developed code." - Community Member Judge

     

     

     

    Pseudo random generator with Arduino Vidor MKR4000  by kk99:

     

    Using MKR Vidor 4000 as basic debug architecture

     

    "A simple, but complete solution using a FPGA as a custom logic device" - Community Member Judge

     

     

    PSoC ultrasonic range meter by koudelad:

     

    Programmable System on Chip (PSoC) is a component that mixes a CPU core (ranging from an 8-bit device to a dual-core 32-bit ARM Cortex-M4) and a configurable mixed-signal array. This way of designing is very powerful – while the CPU is used for computational tasks, peripherals are routed and used without any CPU load.  Internal components of the PSoC can be arranged in a way that the measurement is taken periodically in the background and CPU is used only for the initial components’ setup and a final result collection.  Ultrasonic ranging module HC-SR04 is a very popular module for hobbyists. It provides a fairly easy to use interface – besides from power and ground pins (5V power supply), there are two pins named Trigger and Echo. Trigger accepts a 10 us wide pulse to start the distance measurement. Echo sets the output to a logic high, proportional to the distance of an object to the module.  Trigger controls an ultrasonic transmitter and internally the trigger pulse starts an 8 cycle sonic burst. Waves travel distance from the transmitter to an object (or more object) from which they reflect. These waves travel the same distance back to the receiver that detects them. Finally, Echo pin provides a pulse with the same length as the travel time of the waves (both directions).  In ideal conditions, the speed of sound is about 343 m/s at 20 Centigrade.

     

    PSoC ultrasonic range meter

     

    "There are two original aspects of this kind of FPGA application if compared with some commercial range meters. The commercial ones are laser-based and the calculated distance is referred to a specific point instead of a surface or an obstacle. The second element is the wide range covered with good precision. This can be a very powerful improvement for the robotic obstacle detection systems based on the ultrasonic sensor." - Community Member Judge

    "This was a great project to follow that produced a useful working range meter with a great ad hoc case and entertaining demonstration video" - Community Member Judge

     

     

    PanelDriver: A FPGA based HDMI to FPD-Link converter by avnrdf:

     

    This Programmable Logic theme comes about almost a year since avnrdf  first started working with FPGAs. While the project at its current stage it does not make use of the ARM core in the Zynq, he managed to make use of a lot of what he learnt in Path to Programmable.

     

    You can view avnrdf progress here:

     

    His entry for this month's Project14 contest is an FPGA based HDMI to FPD-Link converter - a device that takes video from a HDMI source, decodes it, encodes it and sends it to a LCD panel over FPD-Link (commonly referred to as LVDS).  He completed this project around 4 months ago:, but decided to enter it into this month's contest for two reasons: - it's a good example of a project that cannot be done using a microcontroller, and makes good use of FPGA capabilities. - it's got the right mix of Project14 material: a little reverse engineering, pushing hardware to its limits, overcoming obstacles, a mix of hardware & software HDL and the right about of duct tape holding all of this together.

     

    PanelDriver: A FPGA based HDMI FPD-Link converter

     

    "This was a great example of using programmable logic to build a complex electronics project.  Nice explanation of the process, problems and solutions along the way." - Community Member Judge

    "It is a very original application of the power of FPGA and it has also a lot of possibilities of evolution. A clean and efficient solution where FPGA covers one of its historical roles: signal conversion and manipulation." - Community Member Judge

     

    "It's a good example of a project that cannot be done using a microcontroller, and makes good use of FPGA capabilities.". This is one of the main things I expected to find in these projects. In addition, the well developed explanation, and having it split into 2 posts, makes it readable and understandable. It's a little complex for beginner, but with a plain English, brief summary could attract interest of more people." - Community Member Judge

    "A FPGA based HDMI to FPD-Link converter by avnrdf is an interesting and original project derived from Path to Programmable" - Community Member Judge

    "Having built a display test board for my college engineering project, I found this entry very interesting. It was clear that a great amount of effort went into this to deliver a functional project. The detail put into the blogs was quite impressive." - Community Member Judge

     

     

    bb-cpld - a robotics expansion board for the BeagleBone Black with an Altera MAX II EPM1270  by bernhardmayer:

     

    When you build robots you always have to control lots of motors or RC servos. If you use a micro controller as main computing device you are fine because these devices have plenty of PWM outputs to control motors. But when you switch to more powerful controllers like the Raspberry Pi or the BeagleBone Black you have a little problem because these only have two or three PWM outputs and you can't stick your motor drivers directly to them. Then you usually use an additional motor controller board with a micro controller and connect it via serial or SPI to your Raspberry Pi or BeagleBone. Another option is to use a CPLD, connect it to the main CPU via SPI and generate the PWM outputs with this device. bernhardmayer built a board doing just this and describes it in this post.

     

    bb-cpld - a robotic expansion board for the BeagleBone Black with an Altera MAX II EPM1270

    "Nice implementation of a CPLD based programmable logic project." - Community Member Judge

     

    "Simple but nice project for introducing the use of the PSOC4 in a distance measurment application. Nice explanation for the background of the application at the start and the limitations at the end." - Community Member Judge

    "BB-CLPD, good project well explained." - Community Member Judge

    Display for Traffic Predictor - Cypress PSoC6 BLE Pioneer kit  by dixonselvan:

     

    The Programmable Logic competition was a chance to explore 'Programmable Logic' which is usually not explored by hobbyists or makers in the first place. This may be due to the code or hardware complexity. But recently FPGAs and other PLDs have been made easy for beginners to learn and explore. One best example to quote would be Arduino Vidor 4000. So checking his inventory, dixonselvan has the below four boards/ kits that would suit this competition's topic

     

    Out of these four, this blog will cover a simple project done using the Cypress PSoC6 BLE Pioneer kit. This project may not use the full (programmable) capacity of the PSoC6 rather uses a single programmable GPIO.

     

    Earlier, dixonselvan had prototyped a traffic predator for the IoT on Wheels Design Challenge . This did not have a display unit rather had an Android mobile application to have the details displayed to the user. Hence he wanted to make a display for my traffic predictor project using the E-Ink Display shield of the Cypress PSoC6 BLE Pioneer kit. Though initially, he had many plans running through my mind, time constraint, unforeseen incident (Breakage of the E-Ink Display Shield) and the fact that he is new to Cypress PSoC family and PSoC Creator, limited the display functionalities to Display the logo initially, Display an alert in case any vehicle in front approaches closer than a limit and Display the real-time temperature of the surrounding.      The display unit would be an extension of the main traffic predictor system (Arduino UNO (replacing ST-Nucleo L476RG board), Ultrasonic Sensor and Servo Motor). Arduino Uno will send a HIGH or a LOW digital signal to the Cypress PSoC6 BLE Pioneer board, instructing when to display the alert in the E-Ink Display Shield and to turn ON/OFF the LED.

     

    Display for Traffic Predictor

    "The grand prize winner I think it is the traffic predictor. It is an almost well-documented project with the plus that the video proof not only illustrate how the project works but it is also shown it in place. As the PSoC 6 BLE support a lot of sensors, adding some traffic alarm with an ultrasonic range finder is a great idea suggesting a lot of small improvements that can make it a good product." - Community Member Judge

     

    Resources

    Essentials:

     

     

    Webinars:

     

     

    Workshops:

     

     

    Past Contests:

     

     

     

    element14 presents:

     

     

    Follow along with Path to Programmable graduate mu.udhay:

     

     

    Your Chance to Win

     

    Be Original
    Stick to the Theme
    • You could come up with a clever name that make's your project memorable!
      • This project is your baby! Part of the fun of bringing something new into the world is coming up with a name.
    • Your project could introduce something new or that is not commercially available or affordable!
    • If you have an idea for a project that doesn't fit the current theme then submit your idea in the comments section of the monthly poll.
    List the Steps
    Submit Video Proof
    • Provide the steps you took to complete your project (text, video, or images).
      • This could be a step by step how-to-guide, vlog, schematics, coding, napkin drawings, voice narration, or whatever you think will be useful!
    • If it doesn't work that's fine, this is more about the journey than the end product.
    • A short video is all that is required but you can shoot as much video as you like.
    • You are encouraged to be creative and have as much fun as possible!

     

    Your Project Examples

     

    Digital Fever
    PSoC ultrasonic range meter VidorScout - MKR Vidor 4000 Mobile Robot: Assembly and Test

     

     

     

    Your Prizes

     

    One Grand Prize Winner Wins a $200 Shopping Cart!Three First Place Winners Win a $100 Shopping Cart
    • One Grand Prize Winner Wins a $200 Shopping Cart!
    • 3 First Place Winners a $100 Shopping Cart!

     

    Some Terms & Conditions Apply:  How to Redeem Your Shopping Cart for Project14

     

    Your Project, Your Ideas!

     

    About Project14
    Directions

    Every month you'll have a new poll where you'll get to decide an upcoming project competition, based on your interests, that will take place a couple of months in advance. Themes are broad in scope so that everyone can participate regardless of skill set.

     

    What are Monthly Themes?

    • Every month (around the 14th of each month) a new theme will be posted on Project14.
    • Submit your ideas (proposals) for your projects to get feedback from the rest of the community.
    • Submit a project entry in the Theme space once you start working on it.

     

    What are Monthly Theme Polls?

    • Every month (around the 14th of each month) there is a project theme poll.
    • Vote on which project competition you want to see for the following upcoming theme.
      • The themes voted on during the previous poll decided the upcoming theme.
      • If you submit an idea for a theme that is not used then it can still be used in a future poll.
    • Themes comments and ideas from the comments section of the project theme poll.

    Step 1: Log in or register on element14, it's easy and free.

    Step 2: Post in the comments section below to begin a discussion on your idea. Videos, pictures and text are all welcomed forms of submission.

    Step 3: Submit a blog post of your progress on your project by the end of the month.  You are free to submit as many blog entries as you like until the beginning of the next theme.

     

    Be sure to include video proof of your project!

     

    Visit:  Digital Fever  or tag your project blog DigitalFeverCH

     

    You have until April 14th End of Day to submit your completed project!

     

     


     

     

    A jury consisting of your peers will judge project submissions!

     

     

    In the Comments Below: Let Us Know Your Digital Fever Project Ideas!

     

    We are Sending Out a Limited Number of PSoC 4200 or a VIDOR 4000 boards for the Best Project Proposals that Use Them!