VLSI Design Principles Lab Session 1

Introduction to Quartus II

Today we will use the Quartus II commercial FPGA design software to describe and simulate some digital circuits. We will begin with schematic entry and hierarchical design before switching to VHDL. We will also do some “mixed” design, combining several sub-circuits, some described schematically and some in VHDL.

1 Majority Voting Circuit

We will learn to drive the Graphic Editor program in Quartus by entering a schematic design of a simple Majority Voting Circuit. We will then simulate its operation assuming that it is built into an Altera FPGA from the Flex10k family.

1.1 Schematic Design Entry

Begin by creating a “quartus” directory on your hard drive where you can store all today’s design files—don’t store designs in the same folder as the Quartus installation files.

Start the “quartus” program and click FileNew Project Wizard. In the “What is the working directory for this project” box browse to the Quartus folder you created. In the “What is the name of this project?” box type “maj_vote”. The software will automatically copy this name to the “what is the name of the top level entity…” box. Now click “Next >”. Click “Next >” again, since we don’t at present have any design files to add to the project—we will add these later. In the next page of the wizard select “Flex10k” in the “family” combo box and choose “EPF10k70RC240-4” in the “Available devices:” list. Note that this device has 3744 logic elements and 18432 memory bits. Now click “Next >” and “Next >” again since we will not be using any third party EDA tools. Click “Next >” once more to see a summary of the project settings, then click “Finish”.

You have now created a new project (which will eventually contain all the details of a complete FPGA design) with top-level entity “maj_vote”.

For our first design we will specify the circuit’s behaviour by means of a schematic diagram. Click “File – New…” and choose “Block diagram/schematic file”. Now select Save As on the File menu, and you should find that the software suggests “maj_vote.bdf” as the file name, since this is the name of the top-level entity you specified earlier. Save the schematic file.

You can now enter a design for a Majority Vote Circuit, shown in Figure 1. This circuit outputs a ‘1’ if two or more of the inputs are ‘1’ and conversely outputs a ‘0’ if two or more of the inputs are ‘0’.

Figure 1—Majority vote circuit

The gates and connectors are added to the schematic by right-clicking in the Schematic window and selecting “Insert – Symbol…”. In the “name” field of the resulting dialog box enter, respectively for each part, “and2”, “or3”, “input” and “output”. Connect the symbols together by dragging the mouse pointer between the connectors on the symbols. You can put a “crank” in any of the lines by stopping half way; and dragging a line to the middle of a previously drawn line adds a connection “dot” to it. Once you’ve entered one instance of a symbol you can “copy and paste” further instances, or use “repeat-insert mode”.

Double click the “PIN_NAME” on each I/O connector to enter the correct names.

Compilation and Simulation

Now we can compile the schematic design, which analyzes our design file and decides how to synthesize this in the chosen technology (in this case a Flex10k FPGA). In the project navigator pane choose the “Files” tab. You should find that Quartus has already added “maj_vote.bdf” to the project (click on the “+” sign to the left of “Device Design Files” in the Project Navigator to check. If it has not been added, right-click on “Device Design Files” and choose “Add/Remove files in project” and add “maj_vote.bdf” using the resulting dialog box.

Now choose “Processing – Start Compilation”. The software will then show progress in the “Status” pane. You will see that the compilation process includes several steps: “Analysis & Synthesis”, “Fitter”, “Assembler” and “Timing Analyzer”.

Next we want to build a set of test vectors for the circuit using the Vector Waveform Editor.Click “File – New…” and choose “Vector Waveform file” from the “Other files” tab. Right click in the left-hand pane of the “.vwf” window and choose “Insert node or bus…”. Click the “Node finder” button, choose “Pins: all” in the “filter” box and click “List”. Click the “>>” button to add all the found pins to the “selected nodes” list and click “OK” and “OK” again.

The vector waveform window will now show the inputs A, B and C and the output Y with default values (0 for inputs and X for outputs). Now click the Save button and accept the suggested “maj_vote.vwf” for the filename.

Now we can enter some test vectors. Right-click on “C” and select “Value – Count Value”. On the “timing” tab choose, multiply by 4. This fills C with alternating ‘0’s and ‘1’s, each “0-1” period being 4 grid blocks wide. Now fill row B with a similar bit stream, but “multiply by 2” and row A with “Multiply by 1”. You should now have a binary count sequence entered with C the most significant bit and A the least significant.

You can also group a number of binary inputs together—drag the rows A, B and C such that C appears in the top row and B in the middle, then select rows A, B and C together by clicking and dragging, right-click and select “Group…”. When prompted for a name enter “INPUT_CBA”, and enter “unsigned decimal” for the radix. You will now see the input represented as the sequence “0,1,2,3,…,7,0,…”. Try right-clicking INPUT_CBA and selecting “Value – Count Value” again. This time enter a Gray Code, multiply by 1. Observe that the counting sequence is no longer “1,2,3,4,…”. Now ungroup INPUT_CBA again and observe the Gray code outputs as individual waveforms. Revert to a binary count by a method of your choice, and save the “.vwf” file again.

Choose Tools – Options and under General – Processing select the “Overwrite Simulation input file with simulation results” tick-box and click OK.

Now start the simulator by selecting “Processing – Start Simulation”. The simulator report file will show your inputs and the simulated output, together with other information about the simulation. Switch to the “maj_vote.vwf” window to see the simulation output in more detail.

Note that the output does indeed go high when two or three of the inputs are high but that the output lags the inputs by around 19ns—this is a real circuit we’re simulating, with realistic values for the interconnect parasitics and gate delays obtained from the compiler.

We can save the output of the simulator in a “Table File”, choose “File – Save As…”and change the file type to“Vector Table Output File *.tbl”. View the table file in Notepad to see that it lists all the inputs and outputs every time a signal changes in value. This is the natural output of an Event Driven Simulator (more about that in the lectures…).

For the lab report produce copies of the schematic file and a table file produced for the simulation of your majority vote circuit. You should also include a printout of the screen showing the simulated output (Press <ALT> + <PRINT_SCRN> to copy the active window to the clipboard).

Switch back to the “maj_vote.bdf” file and choose “File – Create/Update – Create Symbol files for current file”. This make a symbol for your majority vote circuit. By combining two instances of your new symbol “maj_vote.bsf” with a two-input and (“and2”) gate in a new “.bdf” file “two_votes.bdf” build a circuit that has an output of ‘1’ when both sets of inputs have a majority of ‘1’s.

You will need to create a new project (with the new project wizard). Call your new project “two_votes”. You can put that project in the same folder as before, and safely ignore any warnings at this stage. Be sure to add “two_votes.bdf” to the project and select the same device as before (EPF10K70RC240-4). Compile your design.

Again produce a set of waveforms to test the circuit and generate a copy of the schematic file and some simulation output for your lab report. This time, just a screen dump of the output will be sufficient (no need for a table file every time). Paste a screen dump of the “Hierarchy” tab of the Project Navigator into the report as well. This shows the hierarchical structure of your design.

VHDL Design Entry

The VHSIC Hardware Description Language (VHSIC—Very High Speed Integrated Circuit) is an alternative way of specifying a digital IC. In this section we will re-visit the majority vote circuit, describing it in VHDL. We will also see one of the big advantages of Max+Plus II—we can build a “top level” schematic diagram and design a set of input waveforms as for the schematic capture case and apply those waveforms to a VHDL-specified circuit by creating a symbol for the circuit. This gets round the “testbench” problem in VHDL, where it takes longer to describe how you are going to test a VHDL design than it does to describe the design in VHDL in the first place. (More about testbenches later…)

Create a new VHDL file “.vhd” called “maj_vot2.vhd” again in the same directory as before. Enter the following text:

— maj_vot2.vhd

— VHDL implementation of a majority vote circuit

— Library contains standard VHDL logic types


USE ieee.std_logic_1164.ALL;

— Entity defines inputs and outputs

ENTITY maj_vot2 IS


     a, b, c    : IN STD_LOGIC;

     y          : OUT STD_LOGIC);

END maj_vot2;

— Architecture describes input/output relationship

ARCHITECTURE majority OF maj_vot2 IS


       Y <= (a and b) or (b and c) or (a and c);

END majority;

The PORT( ) statement describes the inputs and outputs of the circuit (it effectively describes the schematic block for the circuit, without describing what’s inside).

Save the file and create a symbol for it as before. Build yet another top level “.gdf” file and place an instance of the newly created “maj_vot2” symbol in it, together with the usual input and output connectors. Simulate the operation of the circuit as before.

For your lab report produce a schematic showing the “maj_vot2” symbol and its connectors, some simulation output and a copy of the “.vhd” file.

Extend your VHDL to produce a 5-input majority vote circuit. Produce similar output as for the three input case.

Research Paper 101
Calculate your paper price
Pages (550 words)
Approximate price: -

Reasons to trust Research Paper 101

On Time Delivery

We pride ourselves in meeting the deadlines of our customers. We take your order, assign a writer but allow some more time for ourselves to edit the paper before delivering to you. You are guaranteed a flawless paper on a timely manner...

24x7 Customer Live Support

Our team at Research Paper 101 is committed to handling your paper according to the specfications and are available 24*7 for communication. Whenever you need a quick help, you can talk to our writers via the system messaging or contact support via live chat and we will deliver your message instantly.

Experienced Subject Experts

Online Experts from Research Paper 101 are qualified both academically and in their experiences. Many are Masters and Phd holders and therefore, are qualified to handle complex assignments that require critical thinking and analyses...

Customer Satisfaction

We offer dissertation papers as per students’ wishes. We also help craft out the best topics and design concept papers. By ordering with us, you are guaranteed of defending and making through those hard faced professors in the defense panel!

100% Plagiarism Free

We at Research Paper 101 take plagiarism as a serious offence. From the start, we train our writers to write all their papers from scratch. We also check if the papers have been cited appropriately. Our website also has a tool designed to check for plagiarism that has been made erroniusly. In essense, the paper you get will be 100% legit...

Affordable Prices

We understand that being a student is very challenging, some students balance between work and studies in order to survive. We therefore offer pocket friendly rates that are very competitive in the market.

Try it now!

Calculate the price of your order

Total price:

How it works?

Follow these simple steps to get your paper done

Place your order

Fill in the order form and provide all details of your assignment.

Proceed with the payment

Choose the payment system that suits you most.

Receive the final file

Once your paper is ready, we will email it to you.

Our Services

No need to work on your paper at night. Sleep tight, we will cover your back. We offer all kinds of writing services.


Essay Writing Service

No matter what kind of academic paper you need and how urgent you need it, you are welcome to choose your academic level and the type of your paper at an affordable price. We take care of all your paper needs and give a 24/7 customer care support system.


Admission Essays & Business Writing Help

An admission essay is an essay or other written statement by a candidate, often a potential student enrolling in a college, university, or graduate school. You can be rest assurred that through our service we will write the best admission essay for you.


Editing Support

Our academic writers and editors make the necessary changes to your paper so that it is polished. We also format your document by correctly quoting the sources and creating reference lists in the formats APA, Harvard, MLA, Chicago / Turabian.


Revision Support

If you think your paper could be improved, you can request a review. In this case, your paper will be checked by the writer or assigned to an editor. You can use this option as many times as you see fit. This is free because we want you to be completely satisfied with the service offered.