This module aims to further develop your capabilities in the areas of digital systems, building on the hardware and software design and development techniques covered in previous related module(s).
In the Hardware Description Language (HDL) section, you learn about technology and architecture. The concept of HDL as a tool to simulate, design and document digital systems is introduced and you will learn how to design, specify, and apply digital combinational and sequential building blocks in isolation, and as part of a larger system. Then the module introduces an industry standard HDL known as Verilog, and shows how it can be used to describe, at the gate and logic expression level, digital building blocks such as decoders, multiplexers, encoders, shift registers and counters. During the course, you are given the opportunity to explore designs by means of simulation using industry standard design tools from raw Verilog code to the simulation state. You will learn how the HDL code is used for actual low-level hardware design implementation and they will also cover other practical aspects of digital hardware design, such as logic hazards, propagation delays and interfacing with other digital modules.
You will also cover techniques and tools that help you with developing your Verilog code including:
1- K-map simplification
2- Timing analysis
3- Synthesizable vs non-synthesizable code
4- Finite state machine (FSM) and state diagram
5- Writing testbench for verification
6- Code reuse and IP blocks
This part of the module comes with a set of workshops specifically arranged to teach you how to use designated tools for simulation and programming a FPGA device.
In the Programming Language section, you will learn about the architecture of microcontrollers and concept of embedded systems. ARM-based microcontroller as well as various ARM-compatible operating systems will be introduced. You will learn about different types of compilers and toolchain, and they will use the C++ language to program an ARM platform to program hardware to perform high-level tasks such as IO port access, serial connection, memory management, FSM, and string manipulation. An overview of C++ language will be given to you and advanced topics such as pointer and classes in C++ are taught. Controlling peripherals such as analogue to digital converter (ADC), ad digital to analogue converter (DAC), is introduced as well as data communication protocols such as I2C, and SPI. you will learn how to communicate with a PC application through a serial wired connection. The IoT technology and cloud services for microcontroller platforms are also introduced.
This part of the module comes with a set of workshops specifically arranged to teach you how to use designated tools for simulation and programming an ARM platform.
More information