ECE 3610 Microprocessing Systems Lab #1 Verilog Design of the

Transcription

ECE 3610 Microprocessing Systems Lab #1 Verilog Design of the
ECE 3610 Microprocessing Systems
Lab #1
Verilog Design of the TOC Using Quartus II
This lab manual presents an introduction to the Quartus® II Computer Aided Design (CAD)
system. This manual gives step-by-step instructions for using the Quartus II software to implement
a part of the Tiny Operation Set Calculator (TOC) in Altera’s DE board. Students must complete
all the Verilog descriptions for all components of the TOC, and implement and test the complete
TOC on the DE2 board.
The Quartus II system includes full support for all of the popular methods of entering a
description of a desired circuit into a CAD system. Designs can be described and entered using
three methods: (i) the Verilog hardware description language, (ii) the VHDL hardware description
language, and (iii) schematic diagram entry. This lab makes use of the Verilog design entry
method, in which the user specifies the desired circuit in the Verilog hardware description
language.
Each of the workstations has Quartus II software installed on it, and the workstation may be
connected to the Altera DE2 Development and Education board via a USB cable. A student who
does not have access to the DE2 board will still find the lab manual useful to learn how to use the
Quartus II software and how to program the FPGA on the DE2 board.
The screen captures in this lab manual were obtained using the Quartus II version 12.1; if other
versions of the software are used, some of the images may be different.
This lab manual introduces the basic features of the Quartus II software. It shows how the
software can be used to design and implement a circuit specified by using the Verilog hardware
description language. It makes use of the graphical user interface to invoke the Quartus II
commands. The objectives are:






Creating a project
Design entry using Verilog code
Synthesizing a circuit specified in Verilog code
Assigning the circuit inputs and outputs to specific pins on the FPGA
Programming the FPGA chip on Altera’s DE2 board
Testing the circuit
1.
Getting Started
A logic circuit being designed with Quartus II software is called a project. The software works
on one project at a time and keeps all information for that project in a single directory (folder) in
the file system. To begin a new logic circuit design, the first step is to create a directory to hold its
files. To hold the 5 projects for this lab, we will store them in separate folders under the top-level
directory called c:\ECE3610\Labs\Lab1\. Using the OS, create this top-level directory now.
This lab manual provides a step-by-step procedure for implementing the Register A of the
TOC, which is Project #1 of #5 for this Lab 1. This lab also specifies an incremental approach for
designing the complete TOC, by adding one component at a time. For example, after completing
the design of the TOC with Register A, a new folder (directory) should be created to store the next
project, which is to add Register B. The next directory and project is to add the ALU. This
continues until all components of the basic TOC have been added and designed. Each time a
component is added, a new project is started, and the new project is stored in a new and unique
directory. The advantage of incrementally developing this way is that if a problem occurs at Phase
n of the development, the developer can revert back to Phase n-1, the last known working design.
Also, if a problem occurs in Phase n, the developer knows that the problem must be one or more of
the statements added in Phase n, since all phases prior to Phase n have been thoroughly tested and
verified for correctness.
This lab requires that students complete all phases of this lab:
1.
2.
3.
4.
5.
Phase 1: TOC with Register A
Phase 2: TOC with Registers A & B
Phase 3: TOC with Registers A & B and ALU
Phase 4: TOC with Registers A & B, ALU, and Register R
Phase 5: TOC with Registers A & B, ALU, Register R, and 7-Segment Display.
Start the Quartus II 10.0 Web Edition software. You should see a display similar to the one
shown in Fig. 1(a). First, click the “x” in the top right hand corner of the “Getting
Started…Software” dialog window.
Click
Here.
(a)
(b)
Fig. 1.
The Quartus II startup display (a). File menu (b).
Most of the commands provided by Quartus II software can be accessed by using a set of
menus that are located below the title bar. For example, clicking the left mouse button on the menu
named File opens the menu shown in Fig. 1(b). In general, whenever the mouse is used to select
something, the left button is used. Hence, we will not normally specify which button to press. In a
few cases when it is necessary to use the right mouse button, it will be specified explicitly.
For some commands it is necessary to access two or more menus in sequence. We use the
convention Menu1>Menu2>Item to indicate that to select the desired command the user should
first click the left mouse button on Menu1, then within this menu click on Menu2, and then within
Menu2 click on Item. For example, File>Exit uses the mouse to exit from the system. Many
commands can be invoked by clicking on an icon displayed in one of the toolbars. To see the
command associated with an icon, position the mouse over the icon and a tooltip will appear that
displays the command name.
Quartus II Online Help
Quartus II software provides comprehensive online documentation that answers many of the
questions that may arise when using the software. The documentation is accessed from the Help
menu. To get some idea of the extent of documentation provided, it is worthwhile for the reader to
browse through the Help menu. For instance, selecting Help>How to Use Help gives an indication
of what type of help is provided.
The user can quickly search through the Help topics by selecting Help>Search, which opens a
dialog box into which keywords can be entered. Another method, context-sensitive help, is
provided for quickly finding documentation for specific topics. While using most applications,
pressing the F1 function key on the keyboard opens a Help display that shows the commands
available for the application.
2.
Starting a New Project
To start working on a new design, we first have to define a new design project. Quartus II
software makes the designer’s task easy by providing support in the form of a Wizard. Create a
new project as follows:
Select “File>New Project Wizard” to reach the window in Fig. 2, which asks for the name and
directory of the project.
Fig. 2.
Creation of the TOC_REGA project.
Set the working directory to be c:\ECE3610\Labs\Lab1\TOC_REGA. The project must have a
name, which should be the same as the top-level module name of the Verilog file that will be
included in the project. Choose TOC_REGA as the name for both the project and the top-level
entity, as shown in Fig. 2. Press Next. Since we have not yet created the directory
Lab1\TOC_REGA, Quartus II software displays the pop-up box asking if it should create the
desired directory. Click “Yes,” which leads to the window in Fig. 3.
Fig. 3.
The wizard can include user-specified design files.
The wizard asks which existing files (if any) should be included in the project. In this project,
we do not have any existing files; so click Next, which leads to the window in Fig. 4.
We have to specify the FPGA that we are using in our system. Observe the part number on the
FPGA chip on the DE2 board. Accordingly, choose Cyclone IV E as the target device family.
From the list of available devices, choose the device called EP4CE115F29C7 which is the part
number of the FPGA used on Altera’s DE2 board. Press Next, which opens the window in Fig. 5.
Fig. 4.
Choose the device family and a specific device.
Fig. 5.
Other EDA tools can be specified.
The user can specify any third-party tools that should be used. Since we will rely solely on
Quartus II tools, we will not choose any other tools. Press Next.
A summary of the chosen settings appears in the screen shown in Fig. 6 (a). Press Finish, which
returns to the main Quartus II window, but with TOC_REGA specified as the new project, in the
display title bar, as indicated in Fig. 6 (b).
(a)
(b)
Fig. 6.
3.
Summary of the project settings (a). TOC_REGA project windows (b).
Design Entry Using Verilog Code
This lab starts by implementing the register A of the TOC, as shown in Fig. 7. The register has
four D inputs, four Q outputs, a Wn input signal, and a positive edge triggered clock input. The
wires on the DBUS connect the DE2 switches SW3-SW0 to the respective D inputs. The wires
RegAQ connect outputs of the register Q3-Q0 to the DE2 board’s red LEDs (LEDR3:LEDR0).
The LEDs will facilitate reading the register contents. This will facilitate debugging the circuit and
for verifying the contents: after we write a 4-bit value into the register, we will be able to “see”
what was written by observing the state of the LEDs. All items colored in light blue and light
orange represent our partial design of the TOC, which we describe and enter in a Verilog design
file (source file), and which are to be added to the FPGA, while the objects colored otherwise are
existing items in either the FPGA or the DE2 board.
Fig. 7.
Register A of the TOC with the FPGA of the DE2 board.
The required circuit is described by the Verilog code shown in Fig. 9. Note that the Verilog
module is called TOC_REGA to match the name given for the project (Fig. 2). In the next section
we will create a file to contain the Verilog description of the REGA. While the Verilog file can be
given any name, it is a common designer’s practice to use the same name as the name of the project
and the top-level Verilog module. The Verilog file name must include the extension v, which
indicates a Verilog file. So, we will use the name TOC_REGA.v.
Using the Quartus II Text Editor to Create a Verilog File
This section shows how to use the Quartus II Text Editor to create a Verilog file. Select File >
New to get the window in Fig. 8 (a), choose Verilog HDL File, and click OK. This opens the Text
Editor window. The first step is to specify a name for the file that will be created. Select File > Save
As to open the pop-up box depicted in Fig. 8 (b). In the box labeled Save as type choose Verilog
HDL File. In the box labeled File name type light. Put a checkmark in the box Add file to current
project. Click Save, which puts the file into the directory Lab1\TOC_REGA.
(a)
(b)
Fig. 8.
Choose to create a Verilog file (a). Saving the file (b).
Maximize the Text Editor window and enter the following Verilog statements. Save the file by
typing File > Save, or by typing the shortcut Ctrl-s.
module TOC_REGA (SW, KEY, LEDR);
input [17:0] SW;
input [3:0] KEY;
output [17:0] LEDR;
wire [3:0] DBUS, RegAQ;
wire RegAWn, Clock, Clockn;
assign LEDR [3:0] = RegAQ [3:0];
assign Clockn = !Clock;
assign RegAWn = SW[4], Clock = KEY[0];
assign DBUS[3] = SW[3], DBUS[2] = SW[2];
assign DBUS[1] = SW[1], DBUS[0] = SW[0];
reg4 AReg (DBUS, RegAWn, Clockn, RegAQ);
endmodule
module reg4 (D, Wn, Clock, Q);
input [3:0] D;
input Clock, Wn;
output reg [3:0] Q;
always @ (posedge Clock)
if (Wn==0)
Q <= D;
endmodule
The result should be as shown in Fig. 9. Click on the Files tab in the left side panel to view the
list of files in the project (only one in this case, TOC_REGA.v).
Most of the commands available in the Text Editor are self-explanatory. Text is entered at the
insertion point, which is indicated by a thin vertical line. The insertion point can be moved either
by using the keyboard arrow keys or by using the mouse. Two features of the Text Editor are
especially convenient for typing Verilog code. First, the editor can display different types of
Verilog statements in different colors, which is the default choice. Second, the editor can
automatically indent the text on a new line so that it matches the previous line. Such options can be
controlled by the settings in Tools > Options > Text Editor.
Fig. 9.
Quartus II window with the TOC_REGA design.
Adding Design Files to a Project
As we indicated when discussing Fig. 3, you can tell Quartus II software which design files it
should use as part of the current project. To see the list of files already included in the TOC_REGA
project, select Assignments > Settings, which leads to the window in Fig. 10. As indicated on the
left side of the figure, click on the item Files. An alternative way of making this selection is to
choose Project > Add/Remove Files in Project.
Recall that we checked the box labeled “Add file to current project” when we created the
TOC_REGA.v file, and so it will be listed in the window in Fig. 10 (a).
If you want to add files to a project, select Project > Add/”Remove Files in Project”. Then,
click on the ... button in Fig. 10 (a) to get the pop-up window in Fig. 10 (b). (Note: the files you
want to add should be previously placed in the current project directory.) Select the file you want
to add and click Open. The selected file is now indicated in the Files window. Finally, click OK to
include the file in the project.
(a)
(b)
Fig. 10. Settings window (a). Adding file to project (b).
4.
Pin Assignment
During the compilation process, the Quartus II Compiler would be free to choose any pins on
the selected FPGA to connect to the input and output variables that were specified in the Verilog
top-level source file being compiled. The compiler will connect the inputs and outputs specified in
the top-level design file (SW, KEY, and LEDR) to arbitrary I/O pins on the FPGA chip if not
instructed otherwise. The DE2 board has hardwired connections between certain FPGA pins and
other components on the board. For example, the slider switches (SW17:SW0), push button
switches (KEY3:KEY0), and the red LEDs (LEDR17:LEDR0) on the board are connected to
certain pins of the FPGA. To use these input and output devices (i.e., switches and LEDs) in our
design, we need to do two things:
(i) Assign names to the FPGA pins to which these input and output devices are connected, and
(ii) Declare the names of the inputs and outputs in our Verilog source file with the same names
as we had assigned in step (i).
For example, the slider switches SW0 and SW1 are connected to pins PIN_AB28 and
PIN_AC28 of the FPGA chip. To use these devices in our design, we would need to assign names
to these pins, and then use those same names in our Verilog source file.
The easiest way to assign names to the pins which connect to input and output devices is to
import a file, called a “pin assignment file,” that already assigns names to the pins and indicates the
I/O device to which the pin is connected on the DE2 board. Using the OS and a Text Editor, open
the file: “C:\altera\DE2_115.qsf” and browse its contents.
To import the pin assignments into our design, select: Assignments  Import Assignments
(Left side of Fig. 11). Then click on the button “File name: ...” (Right side of Fig. 11). Locate and
open the file “C:\altera\DE2_115.qsf.” Note that the switches we will use for regA are SW[4],
SW[3], SW[2], SW[1], and SW[0], and the push button switch we will use is KEY[0]. Finally, we
will use four red LEDS called LEDR[3], LEDR[2], LEDR[1], and LEDR[0]. Note that the Verilog
source file in Fig. 9 declares the inputs and outputs with the same names as the pin assignments
that we had imported. Finally, note that you must recompile after importing pin assignments.
Fig. 11. Importing pin assignments into the TOC_REGA project.
5.
Compiling the Designed Circuit
The Verilog code in the file TOC_REGA.v is processed by several Quartus II tools that
analyze the code, synthesize the circuit, and generate an implementation of it for the target chip.
These tools are controlled by the application program called the Compiler.
Run the Compiler by selecting Processing > Start Compilation, or by clicking on the toolbar
icon
that looks like a purple triangle. As the compilation moves through various stages, its
progress is reported in a window on the left side of the Quartus II display. Successful (or
unsuccessful) compilation is indicated in a pop-up box. Acknowledge it by clicking OK, which
leads to the Quartus II display in Fig. 12. In the message window, at the bottom of the figure,
various messages are displayed. In case of errors, there will be appropriate messages given.
Fig. 12. Display after a successful compilation.
When the compilation is finished, a compilation report is produced. A window showing this
report is opened automatically, as seen in Fig. 12. The window can be resized, maximized, or
closed in the normal way, and it can be opened at any time either by selecting Processing >
Compilation Report or by clicking on the icon. The report includes a number of sections listed on
the left side of its window. Fig. 12 displays the Compiler Flow Summary section, which indicates
that four logic elements and 40 pins have been specified to implement this part of the TOC on the
selected FPGA chip. Note that we are actually using only 6 pins of the 40 declared pins. We will
use more pins when we add more components, such as regB, ALU, etc.
Errors Messages
Quartus II software displays messages produced during compilation in the Messages window.
If the Verilog design file is correct, one of the messages will state that the compilation was
successful and that there are no errors.
If the Compiler does not report zero errors, then there is at least one mistake in the Verilog
code. In this case a message corresponding to each error found will be displayed in the Messages
window. Double-clicking on an error message will highlight the offending statement in the
Verilog code in the Text Editor window. Similarly, the Compiler may display some warning
messages. Their details can be explored in the same way as in the case of error messages. The user
can obtain more information about a specific error or warning message by selecting the message
and pressing the F1 function key.
To see the effect of an error, open the file TOC_REGA.v. Remove the semicolon in the Q <=
D; statement, illustrating a typographical error that is easily made. Compile the erroneous design
file by clicking on the
icon. A pop-up box will ask if the changes made to the TOC_REGA.v
file should be saved; click Yes. After trying to compile the circuit, Quartus II software will display
a pop-up box indicating that the compilation was not successful. Acknowledge it by clicking OK.
The compilation report summary (Fig. 13) confirms the failed result. Double-click on the first error
message. Quartus II software responds by opening the TOC_REGA.v file and highlighting the
statement which is affected by the error. Correct the error and recompile the design.
Fig. 13. Compilation report for the failed design.
6.
Simulating the Designed Circuit
Before implementing the designed circuit in the FPGA chip on the DE2 board, it is prudent to
simulate it to ascertain its correctness. Quartus II software includes a simulation tool that can be
used to simulate the behavior of a designed circuit. However, in this lab we will skip the simulation
phase, because our design is small and we can test the circuit directly.
7.
Programming and Configuring the FPGA Device
The FPGA device must be programmed and configured to implement the designed circuit. The
required configuration file is generated by the Quartus II Compiler’s Assembler module. Altera’s
DE2 board allows the configuration to be done in two different ways, known as JTAG and AS
modes. The configuration data is transferred from the host computer (which runs the Quartus II
software) to the board by means of a cable that connects a USB port on the host computer to the
leftmost USB connector on the board (the one labeled “Blaster.”)
In the JTAG mode, the configuration data is loaded directly into the FPGA device. The
acronym JTAG stands for Joint Test Action Group. This group defined a simple way for testing
digital circuits and loading data into them, which became an IEEE standard. If the FPGA is
configured in this manner, it will retain its configuration as long as the power remains turned on.
The configuration information is lost when the power is turned off.
The second possibility is to use the Active Serial (AS) mode. In this case, a configuration
device that includes some flash memory is used to store the configuration data. Quartus II software
places the configuration data into the configuration device on the DE2 board. Then, this data is
loaded into the FPGA upon power-up or reconfiguration. Thus, the FPGA need not be configured
by the Quartus II software if the power is turned off and on. The choice between the two modes is
made by the RUN/PROG switch on the DE2 board. The RUN position selects the JTAG mode,
while the PROG position selects the AS mode.
JTAG Programming
The programming and configuration task is performed as follows. Flip the RUN/PROG switch
into the RUN position. Select Tools > Programmer to reach the window in Fig. 14. Here it is
necessary to specify the programming hardware and the mode that should be used. If not already
chosen by default, select JTAG in the Mode box. Also, if the USB-Blaster is not chosen by default,
press the Hardware Setup... button and select the USB-Blaster in the window that pops up, as
shown in Fig. 15.
Fig. 14. The Programmer window.
Ensure that the associated configuration file TOC_REGA.sof is listed in the window in Fig. 14.
If the file is not already listed, then click “Add File” or “Change File” and browse to your project
folder and select the *.sof file; in this case it is in the TOC_REGA folder. This is a binary file
produced by the Compiler’s Assembler module, which contains the data needed to configure the
FPGA device. The extension .sof stands for SRAM Object File. Note also that the device selected
is EP4CE115F29C7, which is the FPGA device used on the DE2 board. Click to place a check
mark in the Program/Configure check box, as shown in Fig. 14.
Fig. 15. The Hardware Setup window.
Now, press Start in the window in Fig. 14. An LED on the board will light up when the
configuration data has been downloaded successfully. If you see an error reported by Quartus II
software indicating that programming failed, and then check to ensure that the board is properly
powered on and the USB cable is connected to the “Blaster” connector on the DE2 Board. Close
the Programmer window after successful programming.
8.
Testing the Designed Circuit
Having downloaded the configuration data into the FPGA device, you can now test the
implemented circuit. Perform the following test cases and answer the following questions:
1. Write the data ‘1010’ by setting up the switches SW3:SW0 as 1010. Then, make SW4 = 0
(SW4 is connected to the register’s Wn control signal, which, when low, will enable
writing to the register). Next, press the push button switch (KEY0) down. As soon as
KEY0 (i.e., Clock) is pushed down, you should see LEDR[3] and LEDR[1] light up. These
LEDs are connected to the outputs of the register. Then, release the Clock and observe
what happens.
2. Do the same test as Test Case 1, except while holding KEY0 push button down, change the
data at switches SW3:SW0 to any other value other than 1010. Explain why the LEDR do
not change.
3. Do the same test as Test Case 1 with other instances of data, such as ‘1111’ and ‘0111’.
4. Do the same test as Test Case 1, except make SW4 = 1, and observe and explain what
happens.
5. Draw a timing diagram to show the procedure for writing to the register. Explain the
procedure (if any) for reading from the register.
9.
Adding Register B
Add Register B using the following procedure:
1. Close the TOC_REGA project: File->Close Project.
2. Start the New Project Wizard to create a new project; name it TOC_REGAB. Place the
project in directory Lab1\TOC_REGAB. Press Next to create the directory.
3. Using the OS, copy the file TOC_REGA.v (Verilog file) from directory Lab1\TOC_REGA
to directory Lab1\TOC_REGAB. Rename the file to TOC_REGAB.v
4. Add the TOC_REGAB.v file to your new project, and complete creation of the new
project.
5. Change the top-level module name to TOC_REGAB
6. Add your design of the Register B to the Verilog file TOC_REGAB.v, adhering to the
following constraints: (i) Connect the Q outputs of the Register B to the LEDs
(LEDR7:LEDR4). (ii) Use SW[5] to connect and control the Wn signal of Register B.
7. Compile and upload your design to the FPGA.
8. Test and answer the same test case and questions as for register A, except perform the tests
on Register B.
10. Adding ALU
Add an ALU using the following procedure:
1. Close any existing project.
2. Start the New Project Wizard to create a new project; name it TOC_REGAB_ALU. Place
the project in directory Lab1\TOC_REGAB_ALU. Press Next to create the directory.
3. Using the OS, copy the file TOC_REGAB.v (Verilog file) from directory
Lab1\TOC_REGAB to directory Lab1\TOC_REGAB_ALU. Rename the file to
TOC_REGAB_ALU.v
4. Add the TOC_REGAB_ALU.v file to your new project.
5. Change the top level module name to TOC_REGAB_ALU.
6. Add the design of the ALU given in Fig. 16 to the Verilog file TOC_REGAB_ALU.v,
adhering to the following constraints: (i) Connect the S control inputs of the ALU to
switches SW9:SW6. (ii) Connect the data outputs of the ALU (F) to LEDR[11]:LEDR[8].
(iv) Connect the carry out of the ALU to LEDR[12].
7. Test the circuit by loading numbers into the registers and performing operations on the
ALU, while monitoring the LEDRs for correctness of the operations. Be prepared to
demonstrate several examples to the TA.
Fig. 16. 4-bit ALU.
11. Adding Register R
Add Register R using the following procedure:
1. Close any existing project.
2. Start the New Project Wizard to create a new project; name it TOC_REGAB_ALU_R.
Place the project in directory Lab1\TOC_REGAB_ALU_R. Press Next to create the
directory.
3. Using the OS, copy the file TOC_REGAB_ALU.v (Verilog file) from directory
Lab1\TOC_REGAB_ALU to directory Lab1\TOC_REGAB_ALU_R. Rename the file to
TOC_REGAB_ALU_R.v
4. Add the TOC_REGAB_ALU_R.v file to your new project.
5. Change the top level module name to TOC_REGAB_ALU_R.
6. Add your design of the Register R to the Verilog file TOC_REGAB_ALU_R.v, adhering
to the following constraints: (i) Connect the Q outputs of the Register R to the LEDs
(LEDR16:LEDR13). (ii) Use SW[10] to connect and control the Wn signal of Register R.
7. Compile and upload your design to the FPGA.
8. Test the circuit by loading numbers into the registers A & B and performing operations on
the ALU, while monitoring the LEDR16:LEDR13 for correctness of the operations.
Observe that Register R performs a write operation only when its Wn is low and its Clock
undergoes a positive transition. Observe that the positive transition is implemented by
returning the push button switch KEY0 back up. Demonstrate several examples to the TA.
12. Adding BCD 2 Seven Segment Decoder
Add a BCD to seven-segment decoder using the following procedure:
1. Close any existing project.
2. Start the New Project Wizard to create a new project;
TOC_REGAB_ALU_R_BCD7.
Place
the
project
in
Lab1\TOC_REGAB_ALU_R_BCD7. Press Next to create the directory.
name it
directory
3. Using the OS, copy the file TOC_REGAB_ALU_R.v (Verilog file) from directory
Lab1\TOC_REGAB_ALU to directory Lab1\TOC_REGAB_ALU_R_BCD7. Rename the
file to TOC_REGAB_ALU_R_BCD7.v
4. Add the TOC_REGAB_ALU_R_BCD7.v file to your new project.
5. Change the top level module name to TOC_REGAB_ALU_R_BCD7.
6. Add your design of the BCD7 to the Verilog file TOC_REGAB_ALU_R_BCD7.v,
adhering to the following constraints: (i) Connect the 7 outputs of the BCD to the seven
inputs of the seven-segment display HEX0.
7. Compile and upload your design to the FPGA.
8. Test the TOC circuit by loading numbers into the registers A & B and performing
operations on the ALU, while monitoring the HEX0 display for correctness of the
operations. Be prepared to demonstrate several examples to the TA.