ELEC373
Digital Systems Design
Assignment 4
NIOS II
Module |
ELEC373 |
Coursework name |
Assignment 4 |
Component weight |
20% |
Semester |
2 |
HE Level |
6 |
Lab location |
PC labs 301, 304 as timetabled, at other times for private study |
Work |
Individually |
Timetabled time |
15 hours (3 hours per week – Tuesday 9am - noon) |
Suggested private study |
10 hours including report writing |
Assessment method |
Individual, formal word-processed reports (Block diagrams and ASMs can be hand drawn and scanned into the report) |
Submission format |
Online via CANVAS |
Submission deadline |
23:59 on Monday 13th May 2024 |
Late submission |
Standard university penalty applies |
Resit opportunity |
August resit period (if total module failed) |
Marking policy |
Marked and moderated independently |
Anonymous marking |
Yes |
Feedback |
Via comments on Canvas |
Learning outcomes |
LO1: Ability to design digital systems using the ASM design method LO2: Ability to implement digital systems using the Verilog Hardware Description Language LO4: Ability to implement a SOPC system using Quartus Nios II. |
Marking Criteria
Section |
Marks available |
Indicative characteristics |
|
Adequate / pass (40%) |
Very good / Excellent |
||
Presentation and structure |
20% |
• Contains cover page information, table of contents, sections with appropriate headings. • Comprehensible language; punctuation, grammar and spelling accurate. • Equations legible, numbered and presented correctly. • Appropriately formatted reference list. |
• Appropriate use of technical, mathematicand academic terminology and conventions. • Word processed with consistent formatting. • Pages numbered, figures and tables captioned. • All sections clearly signposted. • Correct cross-referencing (of figures, tables, equations) and citations. |
Introduction, Method and Design |
40% |
• Problem background introduced clearly. • Evidence of a Top Down Design approach • Conceptual Design Choices introduced. • Design of each module follows a logical sequence. • ASMs correspond to designs for each block. • Software is clearly commented |
• Appropriate range of references used. • Design decisions justified with alternatives given. • Calculations shown in full, justifying and explaining any decisions. • Correct ASM Syntax used. • Well-structured Verilog Code |
Results |
30% |
• Simulation results present for each block and well annotated. • Results of full system in both simulation and experimentally presented. • Results for each task accompanied by a commentary. • Screenshots of results presented. |
• Tests indicate that there are no problems caused by asynchronous inputs. • Clear explanation of how the instructions operate correctly |
Discussion |
10% |
• Discussion on what worked and what didn’t. • Critical assessment on the design – strength and weaknesses |
• Discussion on how the system was fully tested. |
ELEC 373 Assignment 4 (2023-24) Synthesising the NIOS II Processor
Assignment Outline
In Assignment 3 you added some extra instructions to a MIPS processor which was then synthesised and executed on the DE2 board. This assignment aims to introduce you to a commercial synthesised processor targeted for Altera FPGAs, which allows the easy importing of peripherals and the use of an industry standard IDE for software development.
Assignment 4 is split into two parts, Parts A and B. The objective of Part A is to get you familiar
with QSYS, the NIOS II Processor and interfacing SRAM and SDRAM, on the Altera DE2 Board,
to the NIOS II processor you synthesise. Part B requires you to develop and test a Custom Instruction that will be implemented in the FPGA.
Part A - SRAM & SDRAM
The NIOS II hardware development tutorial synthesises aNIOS II processor with, 20 KB of on-chip memory, atimer, a JTAG UART, 8 parallel I/O pins and a system ID Component. Part A of this assignment requires you to interface the 512 KB SRAM and 8 MB SDRAM on the Altera DE2 Board to this design.
You should then test that the memory is functioning correctly by running the Memory Test programs available within the NIOS II IDE. You should modify the Memory Test Programme so that your
Name andID number are shown in the terminal window each time the memory is tested.
Hints
1. Initially use the altera_up_avalon_sram Controller (SRAM/SSRAM) for the SRAM interface
2. Use the SDRAM controller for the SDRAM Interface
3. Add a PLL to advance the clock for the SDRAM by 3ns compared with the system clock.
Part B - Custom Instruction
Part B requires you to develop a Custom Instruction to count the number of leading 1s (or 0s - see Table 1) in the 32 bit number passed to the instruction (for example 0xFF000000 would have 8 leading 1s and 0 leading 0s, whilst 0x00F00000 would have 0 leading 1s and 8 leading 0s). You should write a program to test your Custom Instruction. You should also develop a test routine in C or assembler that performs the same function as the Custom Instruction and compare the speed of the Custom Instruction against your software implementation.
Submission
You report should include the following:
1. Block diagram of BDF developed in Part A.
2. Table showing memory Map for Part A
3. Screen dumps of test results showing memory test programs working for SRAM and SDRAM
4. ASM(s) and Verilog code for your custom instruction in Part B
5. C/C++ for your test program of Part B
6. Screen dump showing the results of your program for Part B
7. Results showing a speed comparison between the Custom Instruction and your software implementation.
8. Explanation of your results.