Increasing system complexity has created a pressing need for better design tools and associated methodologies and languages for meeting the stringent time to market and cost constraints. Platform-centric and platform based system-on-chip (SoC) design methodologies, based on reuse of software and hardware functionality, has also gained increasing exposure and usage within the Electronic System-Level (ESL) design communities. Embedded systems are designed for dedicated applications running in control systems. The unique feature of such systems is the capability to perform timely and predictable operations in response to concurrent requests arriving from the external environment. To create an effective embedded system one must properly employ the appropriate system architecture, hardware/software interfaces, peripheral devices, and software components.
In Embedded application people first write assembly language programs to control peripherals, handle interrupts, and perform I/O operations, then perform experiments with a target single board microprocessor system integrated with typical interface circuits such as programmable timers, serial ports and parallel ports. Unfortunately, this approach fails to keep pace with industry technology. This lag is prompted by the advent of rapid prototyping development of microelectronic systems that includes:
a. SoC-based platforms for embedded applications:
The system-on-a-chip (SoC) devices have made great progress along with the ever-growing number of transistors that can be integrated on a chip.
b. Abundant I/O interfaces:
Besides programmable timers, serial ports, and parallel ports, there are several new I/O standards designed for human interfaces, multimedia, networking, and inter-IC/device communication.
c. I/O programming with high-level languages:
For software portability, modularity, and readability, high-level programming languages have been used in all levels of software development. An appropriate use of programming languages and software structures often leads to reusable embedded software.

Mega-gate FPGAs now allow complete embedded systems to be implemented on a single reconfigurable logic chip, including softcore or hardcore processors - so-called reconfigurable system-on-chip (rSoC). Because softcore processors are implemented on a configurable logic fabric, they are not as area and power efficient as fixed microprocessors implemented directly on custom integrated circuits. The benefit of softcore processors is that they can be modified, on an application by application basis, to better fit the requirements of that particular application.
For example, if an application requires fast floating point operations, then hardware floating point support can be provided on the softcore processor. Otherwise, the FPU is not needed. If no floating point is used for that application, even software floating point implementations are not needed.
Processors could be customized by word size, cache size, arithmetic operations supported, etc. The complete system can be customized by including just the set of peripherals required for that application. One area which has not been widely explored is customization of the instruction set of the processor. Usually, in order to get reasonable clock speeds, the softcore CPU core is hand optimized for its given instruction set. Users of softcore processors such as Xilinx’s Microblaze and Altera’s Nios do not get source code for the CPU, and cannot change the instruction set directly. Customizations to the CPU are limited to those available from the supplier.
Additionally, changes to the instruction set require changes to the compiler, which has proven difficult to do automatically. However, there appear to be useful optimizations that could be made to an instruction set which can result in improved CPU performance and smaller code size. Possible optimizations include instruction format, addressing modes, conditional execution, etc.

The course presents an introduction to the analysis and design of digital systems and microprocessors. Beginning with digital logic gates and progressing to the design of combinational and sequential circuits. The subject covers analysis and design of synchronous finite state machines and register transfer level systems. Computer aided design and programming of digital electronic circuits through the application of several modern software packages. A detailed introduction to Verilog hardware description language involving the implementation of complex digital systems in FPGA programmable logic devices.
Microprocessor systems, their architecture and instruction sets.
Hardware aspects of instruction execution.
Programming Languages C/C++ programming.
Input/output, bus interfacing, interrupts. Co-design of digital hardware and microprocessor systems.
UCERD Gathering Intellectuals
Centre for Education Research and Development
Join UCERD Team
UCERD: Unal Center of Education Research and Development
1. Introduction to processor technology and their architecture.

2. Introduction to combinational and sequential logic hardware using Verilog HDL.

3. Analyze and design complex digital systems through the Finite State Machine and Register-Transfer-Level frameworks.

4. Demonstrate a solid understanding of basic C programming languages in an embedded programming context.

5. Describe the architecture, programming and use of microprocessors and FPGAs, and distinguish appropriate areas of application for each technology.

6. Adopt a top-down design approach to reconstruct a design goal and translate system requirements into a practical design.

7. Plan, execute and report on a project working in a group.

8. Use a number of commercial and open-source softwares: Verilog, Modelsim, GNU GCC.
UCERD Rawalpindi
UCERD Islamabad
UCERD Murree

System-on-Chip (SoC)