Lab 3: FPGA and VLSI Design

Size: px
Start display at page:

Download "Lab 3: FPGA and VLSI Design"

Transcription

1 GIF-4201/GEL-7016 (Micro-électronique) Lab 3: FPGA and VLSI esign VHL code, synthesis, design verification Gabriel Gagnon-Turcotte, Mehdi Noormohammadi Khiarak and Benoit Gosselin epartment of Electrical & Computer Engineering Laval University, uebec City, Canada February 2018

2 Version history Version escription Authors ate 1 Original revision G. Gagnon-Turcotte, M. Noormohammadi Khiarak and Benoit Gosselin Feb

3 Introduction 3 Objectives of this Lab 3 VHL language references 3 VHL basics 4 Libraries and packages 4 Entity & ports 4 Architectures 6 Concurrent signal assignment 6 Entities inside architectures 7 Creating a project with Xilinx ISE 13 Creation of a test bench and behavioral simulation with ISim 18 Post-Route simulation with ISim 24 Pipelined adder 26 How to launch Modelsim 31 2

4 Introduction A field-programmable gate array (FPGA) device can be seen as an ocean of logic components that can be interconnected together to create complex digital circuits. They are well suited for high speed applications, complex signal processing or high speed control. In the fi steps, FPGA and CMOS digital circuits are designed the same way, by using either Verilog or Very High speed Integrated Circuit Hardware escription Language (VHL) code. Note: this lab will focus on VHL only. This lab exercises will guide you through mastering VHL design, test bench design, synthesis and simulations. The teaching assistant (TA) will assist you in the PLT-0105 during the time period assigned to this practical work. Objectives of this Lab This third lab will give you an introduction to the VHL language, to the numeric design using VHL, and to the creation of test bench. This lab is performed using ISE software from Xilinx at the epartment of Electrical and Computer Engineering, Laval University, computer Lab PLT In the fi part of this lab, you will learn the basics of the VHL language. Secondly, you will learn how to create a project in ISE and to synthesize a combinational adder for a FPGA platform. Then, in the second part, you will learn how to create test benches and to use inputoutput capabilities of the VHL language. Finally, in the third part, you will implement a pipelined adder and compare its performances with it's combinational counterpart. VHL language references WESTE et HARRIS, Principles of CMOS VLSI design, 4th edition. Addison-Wesley, Site web: VHL for beginners: VHL Tutorial: U. Chicago, Peter J. Ashenden: 3

5 VHL basics Like almost all typical languages, the structure of VHL provides an external interface (prototype/entities) and an implementation (architecture). A VHL design consists of entities, architectures and configurations/instantiations. Libraries and packages The fi step when creating a VHL file is to include the name of the libraries that will be used. This is done using this syntax: library IEEE; use ieee.std_logic_1164.all; use ieee.numeric_std.all; The above example shows how to use the ieee library with the std_logic_1164 and numeric_std packages. Among others, the std_logic_1164 package includes the basic declarations, like std_logic, std_logic_vectors, rising_edge/falling_edge, while the numeric_std package includes the declaration of more sophisticated types like unsigned, signed and their respective arithmetic operations. However, be aware that the physical implementation of the numeric_std package is not optimized for any intended application. So, it is common to implement manually some operations or types included in the numeric_std package, like additions, to optimize the speed and/or the area of the circuit. Entity & ports The next step is to create the module entity, which declares the design's interface. A typical entity declaration is shown as follow: 4

6 entity entity_name is generic( generic_name_1 : generic_type_1; generic_name_2 : generic_type_2; generic_name_n : generic_type_n ); port( port_name_1 : port_dir_1 port_type_1; port_name_2 : port_dir_2 port_type_2; port_n_name_n : port_dir_n port_type_n ); end entity_name; Here, the generic keyword is optional, and is used to create instance-specific parameters. The port keyword allows to define the inputs/outputs of the module. The port_dir_x can be set to in, out, inout, buffer, etc. Note: a in signal can be read but not written inside the entity, a out signal cannot be read inside the entity but can be written, a inout and buffer can be both read and written inside the entity. The entity of a simple XOR gate is shown as follow: entity xor_gate is port( A_in : in std_logic; B_in : in std_logic; C_out : out std_logic ); end xor_gate; Equivalent schematic: Entity Architecture A_in B_in C_out 5

7 Unlike typical coding languages, the VHL language is used to process signals, not variables (variables can be declared in VHL, but we forbid their utilization in either FPGA or CMOS designs because they are hard to synthesize i.e not synthesizable). on't forget that your code will be implemented physically using transistors and metal layers. In the above example, the keyword std_logic indicates a type that represents a one bit physical signal. It can take values like '1', '0' or 'Z'. Another type representing a "bus" is the std_logic_vector type. This type can be declared using this syntax: std_logic_vector (max downto min), where max and min fix the boundaries of the bus. Each element inside a std_logic_vector is of type std_logic. Architectures The architecture contains the internal implementation of the entity. Multiple architectures can be created for the same entity, which can have different performances or behavior. For instance, each architecture can be optimized for: speed, area, power consumption or simulation. An architecture is defined as follow: ARCHITECTURE architecture_name OF entity_name IS -- internal signal declaration -- entity declaration (if required) BEGIN -- entity instantiation (if required) -- VHL code EN architecture_name; The following is an example of architecture for the XOR gate: ARCHITECTURE xor_gate_arch OF xor_gate IS signal not_a_in: std_logic; signal not_b_in: std_logic; BEGIN not_a_in <= not(a_in); not_b_in <= not(b_in); C_out <= (not_a_in and B_in) or (not_b_in and A_in); EN xor_gate_arch; In the last example, and, or and not are operations on the std_logic types that are already defined in the std_logic_1164 package. Concurrent signal assignment 6

8 In a concurrent statement, the symbol "<=" means to connect (or assign) a signal to another one. Everything inside an architecture that is not inside a process is considered as a concurrent statement (processes will be covered later in this lab). In VHL, it is also possible to design conditional assignments. The following shows 2 ways of doing conditional assignments: Entity... ARCHITECTURE conditional_test_arch OF conditional_test IS SIGNAL a, b, c, d, e :std_logic; SIGNAL a_select :std_logic_vector(1 OWNTO 0); SIGNAL b_select :std_logic_vector(2 OWNTO 0); BEGIN code Conditional Assignment Statement a <= '0' WHEN a_select = "00" ELSE b WHEN a_select = "11" ELSE c; -- Selected Signal Assignment Statement b_select <= d & a_select; WITH b_select SELECT e <= '0' WHEN "000", b WHEN "011", c WHEN "100", '1' WHEN OTHERS; code... EN conditional_test_arch; In this example, the value of a is determined by the signal a_select. The value of e is determined by d concatenated to a_select. Indeed, the operator & can be used to concatenate two std_logic_vector together or one std_logic_vector with an std_logic. Note, with a conditional assignment, all the possible cases need to be covered. For that reason, the use of statements else or other is required for synthesis (most of the time). Entities inside architectures Complex designs often require to instantiate entities inside architecture. Suppose the following inverter module: 7

9 library IEEE; use IEEE.ST_LOGIC_1164.ALL; entity inverter is port( A_in : in std_logic; B_out : out std_logic ); end inverter; architecture inverter_arch of inverter is begin B_out <= '0' WHEN A_in = '1' ELSE '1'; end inverter_arch; Now, we can reuse this inverter entity inside the XOR architecture this way: ARCHITECTURE xor_gate_arch OF xor_gate IS signal not_a_in: std_logic; signal not_b_in: std_logic; -- Entity declaration component inverter port( A_in : in std_logic; B_out : out std_logic ); end component; BEGIN -- Entity instantiation inverter_inst_1: inverter port map ( A_in => A_in, B_out => not_a_in ); -- Entity instantiation inverter_inst_2: inverter port map ( A_in => B_in, B_out => not_b_in ); C_out <= (not_a_in and B_in) or (not_b_in and A_in); EN xor_gate_arch; Fi, the entity is declared in the signal declaration section (before the begin keyword) and the instances are created in the code section (after the begin keyword). 8

10 Answer these questions in your report: 1: Create the AN & OR modules and reuse them to re-create the XOR module. You cannot use the keyword AN, OR, NOT & XOR. Put all the code in your report. Tip: for AN & OR modules, concatenate the inputs to form a 2-bit std_logic_vector and use it in a conditional assignment that covers the whole truth table. Process In VHL, a process encapsulates a portion of design that has to be executed at specific events only, like clock edge. For that reason, all processes have a sensitivity list that specifies the signals that triggers changes in the output of the process. Among others, the sensitivity list can be used to preserve the state of the signals using memory elements ( flip-flop, latch, etc.). The concurrent statement seen before has their equivalents inside a process: Concurrent when...else With...select...when Inside process If...elsif...else...end if Case...when...end case Here is a simple process that implements a flip-flop with an active high reset: Code... signal,, A_in, B_out; begin Code... process(, ) if( = '1') then -- active high B_out <= '0'; elsif('event and = '1') then -- rising edge B_out <= A_in; end if; end process; end _flip_flop If the state of is changed to '1', the signal B_out is reset to '0', otherwise, if the signal goes from any value to '1', the signal A_in is assigned to B_out. It is very important to undeand that the updated value will not be available until the next rising edge of. This is because the physical implantation of a process will be done using clocked memory units ( flip-flop, latch, etc.) that are all updated at the same time, not sequentially. This can be seen in the following code: 9

11 --... Code... signal,, A_in, B_out, B_out_buffer; begin Code... process(, ) if( = '1') then -- active high B_out <= '0'; B_out_buffer <= '0'; elsif('event and = '1') then -- rising edge B_out_buffer <= A_in; B_out <= B_out_buffer; end if; end process; end _flip_flop Upon the rising edge of, A_in is assigned to B_out_buffer, while the previous value of B_out_buffer is assigned to B_out. oing so, there is a latency of 1 clock cycle before A_in is reflected to B_out. This behaviour is not intuitive, and contrasts with sequential coded language behavior. Using processes, it is possible to create state machines. This is usually done using the case statement in a process that will execute the code according to the current value of the signal that is used in the statement. Note: multiple state machines can be implemented inside the same architecture and processes and they will be processed in parallel. The following example shows a simple state machine that controls two lights according to the state of 2 buttons: 10

12 library ieee; use ieee.std_logic_1164.all; entity light_machine is port( : in std_logic; en : in std_logic; : in std_logic; buttons : in std_logic_vector(1 downto 0); lights : out std_logic_vector(1 downto 0) ); end light_machine; architecture light_machine_arch of light_machine is type statetype is (idle, st1, st2, error); signal currentstate : statetype; begin finite_state_machine: process(, ) if ( = '0') then currentstate <= idle; elsif 'event and = '1' and en = '1' then begin case currentstate is when idle => lights <= "00"; case buttons is when "00" => currentstate <= idle; when "01" => currentstate <= st1; when "10" => currentstate <= st2; when others => currentstate <= error; end case; when st1 => lights <= "01"; if buttons /= "01" then currentstate <= idle; end if; when st2 => lights <= "10"; if buttons /= "10" then currentstate <= idle; end if; when error => lights <= "11"; if buttons = "00" then currentstate <= idle; end if; end case; end if; end process; 11

13 As seen above, it is possible to create new types using the following syntax: type new_type_name is type_definition. This feature is useful to give name for each state inside a stage machine, but also to create complex type. Ex: type word is array (0 to 31) of bit. 2: esign a 7-segment display controller, like presented in Figure 1. Put the VHL code in your report. Binary_number std_logic_vector(2 downto 0) VHL module 7 segment control std_logic_vector(6 downto 0) Figure 1. VHL combinational module to control a 7-segment display. 3: Reuse the 7-segment display controller of 2 to display the incremental value of a counter, like presented in Figure 2. The counter has to be incremented at each clock cycle. Tips: use the ieee.numeric_std package and the unsigned type. en VHL module 7 segment control std_logic_vector(6 downto 0) Figure 2. VHL sequential module to control a 7-segment display. The 7-segment display shows the value of a counter incremented at each clock cycles. 12

14 Creating a project with Xilinx ISE esigning VHL modules for CMOS implementation using the online tools from CMC can be slow and frustrating. For that reason, we recommend to code and simulate your design using IE already available for FPGA. It is important to note that these tools are well suited for early design stages because they allow to simulate and debug your circuit at the behavioral level. However, these tools are not well suited to simulate the CMOS gate level implementations, which topic will be covered in the laboratory 4. In this section, you will create a Xilinx project containing a VHL module that performs the addition of two 6-bit numbers with combinatory logic. Then, you will synthesize it and check it's performances using the Spartan-6 FPGA. Step 1. Open the Xilinx ISE esign suite. Step 2. Select File->New Project... Step 3. Fill the name box with combinationnaladder, select the location to save the project. Make sure the "Top-level source type" is set to HL. Select "Next". Step 4. For the family, select Spartan 6, for device select XC6SLX9, for package select tqg144.. Make sure the preferred language is set to VHL. Select "Next" and then "Finish". Note: the FPGA model is not relevant, but we need this configuration to create the project. Also, we want all the students to select the same model so the timing constraints will be the same for everyone. Step 5. Your IE should look like Figure 3. Step 6. Right click in the "Empty View" section and select "New source...". In the "New Source Wizard", select "VHL Module" and write combinationnaladder as the "File name", select "Next". Step 7. Fill the "New Source Wizard" window as shown in Figure 4 and select "Next" and then "Finish". 13

15 Step 8. The IE will automatically create a file that includes the basic IEEE library, the entity and the architecture template. To be able to compute the propagation delay of the combinational circuit that you will design, you need to add two processes, as shown in Figure 5. Modify the template so it looks like in Figure 5. Step 9. Implements in the missing section (combinational part) of the template of Figure 5 to perform the addition. A binary addition mainly consists of cascading one half adder with full adders. The circuit you have to implement is presented in Figure 6. Note: you can use all the built-in logic operations (not, or, xor, etc.), but no additions shall be used. Provide your VHL code in your report. Step 10. Once the VHL design is implemented, expand the "User Constraints" in the "Processes" tab. ouble click on "I/O Pin Planning (PlanAhead) - Pre-Synthesis". The software " PlanAhead " will open, fill the site section for each pins as is Figure 7. Save and close PlanAhead. Note: PlanAhead is a software that allows to configure the physical pinout of your design. Each port of your top entity has to be assigned to a dedicated pin. Furthermore, this software allows to configure the pins, like to add pull-up or pull-down or to configure the current strength of the output pins. Finally, the same configuration can be made manually by editing the.ucf file in your workspace without using PlanAhead. Step 11. In the "Processes" tab, double click on "Implement esign". The synthesizing of your design can take 1-2 minutes. If there is no error in your VHL code, you should see " Process "Generate Post-Place & Route Static Timing" completed successfully " when the synthesizing is finished. Step 12. In the IE console, locate the maximum frequency achievable by your design. Put a screenshot of the console output indicating this value in your report. 4: Considering the maximum clock frequency of the spartan-6 can be > 1GHz, what is the main limiting factor of the speed of your circuit? 14

16 Figure 3. Empty project using ISE. Figure 4. Entity pinout assignment. 15

17 library ieee; use ieee.std_logic_1164.all; entity combinationnaladder is Port ( : in ST_LOGIC; : in ST_LOGIC; op_a : in ST_LOGIC_VECTOR (5 downto 0); op_b : in ST_LOGIC_VECTOR (5 downto 0); op_ready: in ST_LOGIC; result : out ST_LOGIC_VECTOR (6 downto 0); result_ready : out ST_LOGIC); end combinationnaladder; architecture combinationnaladder_arch of combinationnaladder is signal op_ready_b : std_logic; signal result_b: std_logic_vector(6 downto 0); signal op_a_b : std_logic_vector(5 downto 0); signal op_b_b : std_logic_vector(5 downto 0); begin --add combinationnal logic to perform here set_operand_process: process(, ) --To properly calculate the propagation delay begin if = '1' then op_ready_b <= '0'; op_a_b <= (others => '0'); op_b_b <= (others => '0'); elsif ('event and = '1') then if op_ready = '1' then op_a_b <= op_a; op_b_b <= op_b; end if; op_ready_b <= op_ready; end if; end process; output_result_process: process(, ) --To properly calculate the propagation delay begin if = '1' then result <= (others => '0'); elsif ('event and = '1') then result <= result_b; result_ready <= op_ready_b; end if; end process; end combinationnaladder_arch ; Figure 5. Template for the combinationnaladder module. 16

18 Op_b Op_b_buffer (B0.. B5) Op_a Op_a_buffer (B0.. B5) ResultBuffer (R0-R6) Result B0 A0 R0 B1 A1 R1 B2 A2 R2 B A S B A S B A S Half adder C Ci Ci Full adder C Full adder C B3 A3 R3 B4 A4 R4 B5 A5 R5 B A S B A S B A S Ci Ci Ci C Full adder Full adder Full adder C C B5 A5 R6 Ci B A S Sign bit Figure 6. 6-bit adder using one half adder and 5 full adders. 17

19 Figure 7. PlanAhead pins configuration. Creation of a test bench and behavioral simulation with ISim In the previous part of this lab, we went through the VHL coding of a simple 6-bit adder. In this section, we will continue this process and create a test bench to validate the behavioral functioning of this design. A behavioral simulation allows to verify the logic of your VHL code, without any timing, fan-in/out, routing or other physical constraints. Step 1. Using ISE, Xilinx makes it simple to create a test bench template. In the design section, set "View" to "Simulation". Then, right click in the "Hierarchy" section and select "New source...". Step 2. In the "New source Wizard" window, select "VHL Test Bench" and give the name combinationnaladder_tb. Then, click "Next" twice and "Finish". Automatically, ISE should create a template containing the instantiation of the combinationnaladder entity, a "_process" and a "stim_proc" processes. By default, the clock period is of 10 ns. 18

20 Step 3. In this test bench, you will have to read and write files. To do that you need to add a file to your project. In the "Hierarchy" section, select "Add Copy of source..." and select the file " txt_util.vhd" provided with this lab, and click "OK" in the pop-up window. Step 4. Modify the template so it looks like Figure 8. It is important to note that a test bench is executed differently than in a typical VHL instance. Some mnemonics are not synthesizable, however they are useful in simulation. For example, "wait for xx" is not synthesizable but can be used in a test bench. Also, for a process inside a test bench, the simulator will execute all the lines of codes before a "wait" statement in parallel, like it is done in a typical VHL code. However, after the "wait" statement the values previously assigned are updated. Carefully look at the test bench code to undeand how it works. Step 5. Add the missing code in, and after, the "stim_proc" process to provide the stimulation inputs to the combinationnaladder instance. Note: use the 6 msb of y_op_a and y_op_b. Step 6. Make sure the files "op_a.dat", "op_b.dat" and "combinationnaladder_custom.prj" are in your project workspace. Step 7. Expand the "ISim Simulator" tab. Make sure that "combinationnaladder_tb" is selected in the Hierarchy section. Right click on "Simulate Behavioral model" and select "Process Properties...". Set the "Simulation Run Time" to ns and click "OK". Then, right click on "Simulate Behavioral model" and select "Run". Step 8. Check the console output, if there is any error in your code, fix them. Otherwise, the ISim simulator window will open. It should look like Figure 9. Step 9. Right click in the simulation window, i.e. where the green signals are displayed, and select "To Full View". The whole temporal simulation should be displayed. At the right of the temporal simulation, all the signals of the test bench are displayed. Right click on op_a[5:0], and select Radix->Signed ecimal. o the same for op_b[5:0] and result[6:0]. Step 10. In the temporal simulation, click toward the 2 µs time. A yellow vertical line will appear. Then, hold "ctrl" and roll your mouse wheel to zoom in or out. Zoom enough to make the results visible and provide a print screen in your report. You can also check the test bench results in the "result.dat" file produced by the simulation. 5: Put the content of result.dat in your report. 19

21 library ieee; use ieee.std_logic_1164.all; add here use ieee.numeric_std.all; library work; use work.txt_util.all; library std; use std.textio.all; entity combinationnaladder_tb is end combinationnaladder_tb; architecture behavior of combinationnaladder_tb is -- component declaration for the unit under test (uut) component combinationnaladder port( : in std_logic; : in std_logic; op_a : in std_logic_vector(5 downto 0); op_b : in std_logic_vector(5 downto 0); op_ready: in std_logic; result : out std_logic_vector(6 downto 0); result_ready : out std_logic ); end component; --inputs signal : std_logic := '0'; signal : std_logic := '0'; signal op_ready: std_logic := '0'; signal op_a : std_logic_vector(5 downto 0) := (others => '0'); signal op_b : std_logic_vector(5 downto 0) := (others => '0'); --outputs signal result : std_logic_vector(6 downto 0); signal result_ready : std_logic; change here clock period definitions constant _period : time := 100 ns; add here file related signal eog_op_a: std_logic; signal eog_op_b: std_logic; signal y_op_a: std_logic_vector(15 downto 0); signal y_op_b: std_logic_vector(15 downto 0); signal rd_en_op_a: std_logic; signal rd_en_op_b: std_logic; 20

22 begin signal datatosave : real; file stimulus_op_a: text open read_mode is "op_a.dat"; file stimulus_op_b: text open read_mode is "op_b.dat"; instantiate the unit under test (uut) uut: combinationnaladder port map ( =>, =>, op_ready => op_ready, op_a => op_a, op_b => op_b, result => result, result_ready => result_ready ); add here write_result_process: process file outfile : text is out "result.dat"; variable outline : line; begin if result_ready = '1' then datatosave <= real(to_integer(signed(result))); wait until = '0' and 'event; write(outline, datatosave, right, 16, 12); writeline(outfile, outline); else wait until = '0' and 'event; end if; end process; read_op_a_process: process begin variable l: line; variable s: string(1 to 16); eog_op_a <= '0'; -- wait for reset to complete wait until ='1'; wait until ='0'; while not endfile(stimulus_op_a) loop wait until ( = '1' and rd_en_op_a = '1'); -- read digital data from input file readline(stimulus_op_a, l); read(l, s); y_op_a <= to_std_logic_vector(s); 21

23 end loop; eog_op_a <= '1'; wait; end process read_op_a_process; read_op_b_process: process begin variable l: line; variable s: string(1 to 16); eog_op_b <= '0'; -- wait for reset to complete wait until ='1'; wait until ='0'; while not endfile(stimulus_op_b) loop wait until ( = '1' and rd_en_op_b = '1'); -- read digital data from input file readline(stimulus_op_b, l); read(l, s); y_op_b <= to_std_logic_vector(s); end loop; eog_op_b <= '1'; wait; end process read_op_b_process; clock process definitions _process :process begin <= '0'; wait for _period/2; <= '1'; wait for _period/2; end process; -- stimulus process stim_proc: process begin -- hold reset state for 100 ns add here rd_en_op_a <= '0'; 22

24 end; rd_en_op_b <= '0'; <= '1'; wait for 100 ns; wait for _period*100; -- insert stimulus here add here rd_en_op_a <= '1'; rd_en_op_b <= '1'; <= '0'; wait for _period; wait until 'event and = '1'; while eog_op_a = '0' and eog_op_b = '0' loop --add your stimulation code here end loop; --manage the module latency here --add your stimulation code here wait; end process; Figure 8. Test bench template. This template includes all the necessary processes for input/output. 23

25 Figure 9. ISim windows after the simulation. Post-Route simulation with ISim Step 1. Change the behavioral simulation to Post-route, like in Figure 10. Step 2. Right click on "Simulate Post-Place & Route Model" and select "Process Properties...". change the "simulation Run Time" to ns. Select "Use Custom Project File" and in the "Custom Project Filename" set the path to the "combinationnaladder_custom.prj" file provided with this lab. Your configuration should look like Figure 11. Note: this configuration file will replace the architecture of your combinationnaladder entity by the one generated by the synthesizer. This new architecture includes the timing properties of the routed design. If you made modifications in your VHL code since you synthesized it, you will have to re-synthesize it again before running the simulation. Step 3. ouble click on "Simulate Post-Place & Route Model". Look at your simulation results and provide a print screen of it in your report (like in step 10 of the behavioral simulation). Step 4. In your test bench, change the clock period to 2.5 ns and re-run the simulation. Repeat step 10 of the "Creation of a test bench and behavioral simulation with ISim" section. 24

26 6: Put the your VHL code and the content of result.dat in your report. What is happening? Why the results differs from the previous simulations? Figure 10. Post-route simulation selection. Figure 11. Post-route simulation parameter modifications. 25

27 Pipelined adder Another way to implement the adder is to use a pipelined architecture. Basically, pipelining consists of splitting the circuit in multiple smallest circuit working in parallel. This technique is used intensively in signal processing and in all modern processors. Step 1. Follow the steps 1-5 of the section "Creating a project with Xilinx ISE" to create a project called pipelinedadder. Step 2. Follow the steps 6-7 of the section "Creating a project with Xilinx ISE" to create a VHL file called pipelinedadder.vhd. Give the same inputs/outputs than the combinationnaladder entity. Step 3. A pipelined addition mainly consists of cascading one half adder stage with full adders stages, and by inserting memory elements between the stages, as seen in Figure 12. Implement the missing VHL code for the pipelined adder of Figure 13 (implements the stages 4 and 5). Note: you can use all the built-in logic operations (NOT, OR, XOR, etc.), but no additions. Provide your VHL code in your report. Step 4. Once the VHL design is implemented, expand the "User Constraints" in the "Processes" tab. ouble click on "I/O Pin Planning (PlanAhead) - Pre-Synthesis". The software " PlanAhead " will open, fill the site section for each pin as is Figure 7. Save and close PlanAhead. Step 5. In the "Processes" tab, double click on "Implement esign". The synthesizing of your design can take 1-2 minutes. If there is no error in your VHL code, you should see " Process ""Generate Post-Place & Route Static Timing" completed successfully " when the synthesizing is finished. Step 6. In the IE console, locate the maximum frequency achievable by your design. Put a screenshot of the console output indicating this value in your report. 26

28 Step 7. Validate your design with a behavioral simulation. Use the same code that was used for the combinationnaladder test bench (modify the entity and instantiation names). Make sure the files "op_a.dat", "op_b.dat" and "pipelinedadder_custom.prj" are in your project workspace and don't forget to add "txt_util.vhd". Step 8. Redo all the steps of the "Post-Route simulation with ISim". Use 2.5 ns for the clock period. Step 9. In the temporal simulation, zoom enough to make the results visible and provide a print screen in your report. You can also check the test bench results in the "result.dat" file produced by the simulation. 7: o you notice something compared with the combinational architecture? Provide a short explanation in your report. Is there a way to improve the speed of the pipelined architecture? How? 8: In your report, provide one advantage and one inconvenient for both the pipelined and combinational implementations of the adder. 9: esign a VHL module that has the same entity as Figure 14. This module has to implement a pipelined architecture to performs _out = A_in + B_in + C_in. You have to reuse the combinational adder and you have to design a test bench to test it. Report your VHL code, your test bench and a ISim waveform. 27

29 Stage 1 Stage 2 Stage 3 Stage 4 Stage 5 Stage 6 Result Op_a Op_b XOR... Bit0 Bit1-Bit5 Bit0 Bit1-Bit4 Bit0 Bit1-Bit3 Bit0 Bit1-Bit2 Bit0 Bit1 AN... B Bit 5it 5 Bit0 Bit1 Bit2-Bit5 Bit0 Bit1 Bit2-Bit4 Bit0 Bit1 Bit2-Bit3 Bit0 Bit1 Bit2 Bit0 Bit1 Figure bits pipelined adder on 6 stages. 28

30 library ieee; use ieee.std_logic_1164.all; entity pipelinedadder is port ( : in std_logic; : in std_logic; op_a : in std_logic_vector (5 downto 0); op_b : in std_logic_vector (5 downto 0); op_ready : in std_logic; result : out std_logic_vector (6 downto 0); result_ready : out std_logic); end pipelinedadder; architecture behavioral of pipelinedadder is --stage 1 signal op_a_xor_op_b_stage_1: std_logic_vector(4 downto 0); signal op_a_and_op_b_stage_1: std_logic_vector(5 downto 0); signal op_a_bit_5_stage_1: std_logic; signal op_b_bit_5_stage_1: std_logic; signal result_bit_0_stage_1: std_logic; signal result_ready_stage_1: std_logic; --stage 2 signal op_a_xor_op_b_stage_2: std_logic_vector(3 downto 0); signal op_a_and_op_b_stage_2: std_logic_vector(4 downto 0); signal op_a_bit_5_stage_2: std_logic; signal op_b_bit_5_stage_2: std_logic; signal result_bit_0to1_stage_2: std_logic_vector(1 downto 0); signal result_ready_stage_2: std_logic; --stage 3 signal op_a_xor_op_b_stage_3: std_logic_vector(2 downto 0); signal op_a_and_op_b_stage_3: std_logic_vector(3 downto 0); signal op_a_bit_5_stage_3: std_logic; signal op_b_bit_5_stage_3: std_logic; signal result_bit_0to2_stage_3: std_logic_vector(2 downto 0); signal result_ready_stage_3: std_logic; --stage 4 --add code here --stage 5 --add code here --stage 6 signal result_bit_0to6_stage_6: std_logic_vector(6 downto 0); begin calculation_pipeline_process: process(, ) begin if = '1' then --optional result_ready <= '0'; result_ready_stage_1 <= '0'; result_ready_stage_2 <= '0'; result_ready_stage_3 <= '0'; 29

31 result_ready_stage_4 <= '0'; result_ready_stage_5 <= '0'; elsif ('event and = '1') then --pipeline stage 1 op_a_xor_op_b_stage_1 <= op_a(5 downto 1) xor op_b(5 downto 1); op_a_and_op_b_stage_1 <= op_a and op_b; result_bit_0_stage_1 <= op_a(0) xor op_b(0); op_a_bit_5_stage_1 <= op_a(5); op_b_bit_5_stage_1 <= op_b(5); result_ready_stage_1 <= op_ready; --pipeline stage 2 op_a_xor_op_b_stage_2 <= op_a_xor_op_b_stage_1(4 downto 1); op_a_and_op_b_stage_2(4 downto 1) <= op_a_and_op_b_stage_1(5 downto 2); result_bit_0to1_stage_2 <= (op_a_xor_op_b_stage_1(0) xor op_a_and_op_b_stage_1(0)) & result_bit_0_stage_1; op_a_and_op_b_stage_2(0) <= (op_a_xor_op_b_stage_1(0) and op_a_and_op_b_stage_1(0)) or op_a_and_op_b_stage_1(1); op_a_bit_5_stage_2 <= op_a_bit_5_stage_1; op_b_bit_5_stage_2 <= op_b_bit_5_stage_1; result_ready_stage_2 <= result_ready_stage_1; --pipeline stage 3 op_a_xor_op_b_stage_3 <= op_a_xor_op_b_stage_2(3 downto 1); op_a_and_op_b_stage_3(3 downto 1) <= op_a_and_op_b_stage_2(4 downto 2); result_bit_0to2_stage_3 <= (op_a_xor_op_b_stage_2(0) xor op_a_and_op_b_stage_2(0)) & result_bit_0to1_stage_2; op_a_and_op_b_stage_3(0) <= (op_a_xor_op_b_stage_2(0) and op_a_and_op_b_stage_2(0)) or op_a_and_op_b_stage_2(1); op_a_bit_5_stage_3 <= op_a_bit_5_stage_2; op_b_bit_5_stage_3 <= op_b_bit_5_stage_2; result_ready_stage_3 <= result_ready_stage_2; --pipeline stage 4 --add code here --pipeline stage 5 --add code here --pipeline stage 6 result <= (((op_a_and_op_b_stage_5(0) and op_a_xor_op_b_stage_5(0)) or op_a_and_op_b_stage_5(1)) xor op_a_bit_5_stage_5 xor op_b_bit_5_stage_5) & (op_a_xor_op_b_stage_5(0) xor op_a_and_op_b_stage_5(0)) & result_bit_0to4_stage_5; end if; end process; end behavioral; result_ready <= result_ready_stage_5; 30

32 Figure 13. Implementation of the 6-bits pipelined adder on 6 stages, the stages 4-5 are missing entity complex_adder is port( A_in : in std_logic_vector(4 downto 0); B_in : in std_logic(4 downto 0); C_in : in std_logic(5 downto 0); _out : out std_logic(6 downto 0); ); end complex_adder; Figure 14. Entity to be implemented in 9. How to launch Modelsim Modelsim and ISim are mainly the same software. However, ISim is configured by ISE when the simulation in launched, when Modelsim has to be configured manually on the server. This is a small introduction on Modelsim, showing you how to launch it on the server. Step 1: In a terminal, log on the server using the same procedure as in labs 1 and 2. Step 2. Type: tcsh source /CMC/scripts/mentor.modelsim.10.3.csh vsim Step 3. In the library tab, right click in a blank space and select "New->Library...". In the pop-up window, select "a map to an existing library", and enter the library path: " /CMC/kits/artisan18.3.0/FE/aci/sc/vhdl/tsmc18vhd". Step 4. Now you are ready for lab 4. 31

33 Report Write a report that will include the following parts: o An introduction o Your answers to the questions o All the requested curves and screenshots o A conclusion Print the last page of this document and use it as the fi page of your report. Make sure to submit your report before the deadline. 32

34 GIF-4201 (Micro-électronique) Lab 3: FPGA and VLSI esign Nom Matricule Signature de l assistant : ate :

VHDL Testbench. Test Bench Syntax. VHDL Testbench Tutorial 1. Contents

VHDL Testbench. Test Bench Syntax. VHDL Testbench Tutorial 1. Contents VHDL Testbench Tutorial 1 Contents 1 VHDL Testbench 2 Test Bench Syntax 3 Testbench Example: VHDL Code for Up Down Binary Counter 4 VHDL Testbench code for up down binary counter 5 Testbench Waveform for

More information

Lecture 7. Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits. Hardware Description Language)

Lecture 7. Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits. Hardware Description Language) Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits Hardware Description Language) 1 Standard ICs PLD: Programmable Logic Device CPLD: Complex PLD FPGA: Field Programmable

More information

CCE 3202 Advanced Digital System Design

CCE 3202 Advanced Digital System Design CCE 3202 Advanced Digital System Design Lab Exercise #2 Introduction You will use Xilinx Webpack v9.1 to allow the synthesis and creation of VHDLbased designs. This lab will outline the steps necessary

More information

Digital Design Using VHDL Using Xilinx s Tool for Synthesis and ModelSim for Verification

Digital Design Using VHDL Using Xilinx s Tool for Synthesis and ModelSim for Verification Digital Design Using VHDL Using Xilinx s Tool for Synthesis and ModelSim for Verification Ahmed Abu-Hajar, Ph.D. abuhajar@digitavid.net Digitavid, Inc San Jose, CA Session One Outline Introducing VHDL

More information

CCE 3202 Advanced Digital System Design

CCE 3202 Advanced Digital System Design CCE 3202 Advanced Digital System Design Lab Exercise #2 This lab exercise will show you how to create, synthesize, and test a 3-bit ripple counter. A ripple counter is simply a circuit that outputs the

More information

Getting Started with Xilinx WebPack 13.1

Getting Started with Xilinx WebPack 13.1 Getting Started with Xilinx WebPack 13.1 B. Ackland June 2011 (Adapted from S. Tewksbury notes WebPack 7.1) This tutorial is designed to help you to become familiar with the operation of the WebPack software

More information

ENGN 1630: CPLD Simulation Fall ENGN 1630 Fall Simulating XC9572XLs on the ENGN1630 CPLD-II Board Using Xilinx ISim

ENGN 1630: CPLD Simulation Fall ENGN 1630 Fall Simulating XC9572XLs on the ENGN1630 CPLD-II Board Using Xilinx ISim ENGN 1630 Fall 2018 Simulating XC9572XLs on the ENGN1630 CPLD-II Board Using Xilinx ISim You will use the Xilinx ISim simulation software for the required timing simulation of the XC9572XL CPLD programmable

More information

Xilinx Schematic Entry Tutorial

Xilinx Schematic Entry Tutorial Overview Xilinx Schematic Entry Tutorial Xilinx ISE Schematic Entry & Modelsim Simulation What is circuit simulation and why is it important? Complex designs, short design cycle Simultaneous system design

More information

DIGITAL LOGIC WITH VHDL (Fall 2013) Unit 1

DIGITAL LOGIC WITH VHDL (Fall 2013) Unit 1 DIGITAL LOGIC WITH VHDL (Fall 23) Unit DESIGN FLOW DATA TYPES LOGIC GATES WITH VHDL TESTBENCH GENERATION DESIGN FLOW Design Entry: We specify the logic circuit using a Hardware Description Language (e.g.,

More information

Lecture 4. VHDL Fundamentals. George Mason University

Lecture 4. VHDL Fundamentals. George Mason University Lecture 4 VHDL Fundamentals George Mason University Required reading P. Chu, RTL Hardware Design using VHDL Chapter 3, Basic Language Constructs of VHDL 2 Design Entity ECE 448 FPGA and ASIC Design with

More information

CMPT 250: Computer Architecture. Using LogicWorks 5. Tutorial Part 1. Somsubhra Sharangi

CMPT 250: Computer Architecture. Using LogicWorks 5. Tutorial Part 1. Somsubhra Sharangi CMPT 250: Computer Architecture Using LogicWorks 5 Tutorial Part 1 Somsubhra Sharangi What is VHDL? A high level language to describe digital circuit Different that a programming language ( such as Java)

More information

1 ST SUMMER SCHOOL: VHDL BOOTCAMP PISA, JULY 2013

1 ST SUMMER SCHOOL: VHDL BOOTCAMP PISA, JULY 2013 MARIE CURIE IAPP: FAST TRACKER FOR HADRON COLLIDER EXPERIMENTS 1 ST SUMMER SCHOOL: VHDL BOOTCAMP PISA, JULY 2013 Introduction to VHDL Calliope-Louisa Sotiropoulou PhD Candidate/Researcher Aristotle University

More information

Chapter 2 Basic Logic Circuits and VHDL Description

Chapter 2 Basic Logic Circuits and VHDL Description Chapter 2 Basic Logic Circuits and VHDL Description We cannot solve our problems with the same thinking we used when we created them. ----- Albert Einstein Like a C or C++ programmer don t apply the logic.

More information

Two HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design

Two HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design Two HDLs used today Introduction to Structured VLSI Design VHDL I VHDL and Verilog Syntax and ``appearance'' of the two languages are very different Capabilities and scopes are quite similar Both are industrial

More information

Tutorial: Pattern Wizard

Tutorial: Pattern Wizard University of Pennsylvania Department of Electrical and Systems Engineering Digital Design Laboratory Tutorial: Pattern Wizard When assigning values to a bus in Xilinx during the behavioral simulation,

More information

C-Based Hardware Design

C-Based Hardware Design LECTURE 6 In this lecture we will introduce: The VHDL Language and its benefits. The VHDL entity Concurrent and Sequential constructs Structural design. Hierarchy Packages Various architectures Examples

More information

ECE U530 Digital Hardware Synthesis. Course Accounts and Tools

ECE U530 Digital Hardware Synthesis. Course Accounts and Tools ECE U530 Digital Hardware Synthesis Prof. Miriam Leeser mel@coe.neu.edu Sept 13, 2006 Lecture 3: Basic VHDL constructs Signals, Variables, Constants VHDL Simulator and Test benches Types Reading: Ashenden

More information

Logic Implementation on a Xilinx FPGA using VHDL WWU Linux platform assumed. rev 10/25/16

Logic Implementation on a Xilinx FPGA using VHDL WWU Linux platform assumed. rev 10/25/16 1 Logic Implementation on a Xilinx FPGA using VHDL WWU Linux platform assumed. rev 10/25/16 The following is a general outline of steps (i.e. design flow) used to implement a digital system described with

More information

VHDL. VHDL History. Why VHDL? Introduction to Structured VLSI Design. Very High Speed Integrated Circuit (VHSIC) Hardware Description Language

VHDL. VHDL History. Why VHDL? Introduction to Structured VLSI Design. Very High Speed Integrated Circuit (VHSIC) Hardware Description Language VHDL Introduction to Structured VLSI Design VHDL I Very High Speed Integrated Circuit (VHSIC) Hardware Description Language Joachim Rodrigues A Technology Independent, Standard Hardware description Language

More information

Lecture 4. VHDL Fundamentals. Required reading. Example: NAND Gate. Design Entity. Example VHDL Code. Design Entity

Lecture 4. VHDL Fundamentals. Required reading. Example: NAND Gate. Design Entity. Example VHDL Code. Design Entity Required reading Lecture 4 VHDL Fundamentals P. Chu, RTL Hardware Design using VHDL Chapter 3, Basic Language Constructs of VHDL George Mason University 2 Example: NAND Gate Design Entity a b z a b z 0

More information

EENG 2910 Project III: Digital System Design. Due: 04/30/2014. Team Members: University of North Texas Department of Electrical Engineering

EENG 2910 Project III: Digital System Design. Due: 04/30/2014. Team Members: University of North Texas Department of Electrical Engineering EENG 2910 Project III: Digital System Design Due: 04/30/2014 Team Members: University of North Texas Department of Electrical Engineering Table of Content i Contents Abstract...3 Introduction...3 Report...4

More information

Lecture 5: Aldec Active-HDL Simulator

Lecture 5: Aldec Active-HDL Simulator Lecture 5: Aldec Active-HDL Simulator 1. Objective The objective of this tutorial is to introduce you to Aldec s Active-HDL 9.1 Student Edition simulator by performing the following tasks on a 4-bit adder

More information

Laboratory of Digital Circuits Design: Design, Implementation and Simulation of Digital Circuits Using Programmable Devices

Laboratory of Digital Circuits Design: Design, Implementation and Simulation of Digital Circuits Using Programmable Devices Internet Engineering Dr. Jarosław Sugier Laboratory of Digital Circuits Design: Design, Implementation and Simulation of Digital Circuits Using Programmable Devices This document presents software packages

More information

Hardware Description Language VHDL (1) Introduction

Hardware Description Language VHDL (1) Introduction Hardware Description Language VHDL (1) Introduction Digital Radiation Measurement and Spectroscopy NE/RHP 537 Introduction Hardware description language (HDL) Intended to describe circuits textually, for

More information

ECE 545 Lecture 6. Behavioral Modeling of Sequential-Circuit Building Blocks. Behavioral Design Style: Registers & Counters.

ECE 545 Lecture 6. Behavioral Modeling of Sequential-Circuit Building Blocks. Behavioral Design Style: Registers & Counters. ECE 55 Lecture 6 Behavioral Modeling of Sequential-Circuit Building Blocks Required reading P. Chu, RTL Hardware esign using VHL Chapter 5.1, VHL Process Chapter 8, Sequential Circuit esign: Principle

More information

Verilog Design Entry, Synthesis, and Behavioral Simulation

Verilog Design Entry, Synthesis, and Behavioral Simulation ------------------------------------------------------------- PURPOSE - This lab will present a brief overview of a typical design flow and then will start to walk you through some typical tasks and familiarize

More information

Logic Implementation on a Xilinx FPGA using VHDL WWU Linux platform assumed. rev 11/01/17

Logic Implementation on a Xilinx FPGA using VHDL WWU Linux platform assumed. rev 11/01/17 1 Logic Implementation on a Xilinx FPGA using VHDL WWU Linux platform assumed. rev 11/01/17 The following is a general outline of steps (i.e. design flow) used to implement a digital system described with

More information

EITF35: Introduction to Structured VLSI Design

EITF35: Introduction to Structured VLSI Design EITF35: Introduction to Structured VLSI Design Part 1.2.2: VHDL-1 Liang Liu liang.liu@eit.lth.se 1 Outline VHDL Background Basic VHDL Component An example FSM Design with VHDL Simulation & TestBench 2

More information

Department of Electrical and Computer Engineering Xilinx ISIM <Release Version: 14.1i> Simulation Tutorial Using Verilog

Department of Electrical and Computer Engineering Xilinx ISIM <Release Version: 14.1i> Simulation Tutorial Using Verilog Department of Electrical and Computer Engineering Xilinx ISIM Simulation Tutorial Using Verilog Spring 2013 Baback Izadi You will next test the full adder circuit that you built

More information

EE 367 Logic Design Lab #1 Introduction to Xilinx ISE and the ML40X Eval Board Date: 1/21/09 Due: 1/28/09

EE 367 Logic Design Lab #1 Introduction to Xilinx ISE and the ML40X Eval Board Date: 1/21/09 Due: 1/28/09 EE 367 Logic Design Lab #1 Introduction to Xilinx ISE and the ML40X Eval Board Date: 1/21/09 Due: 1/28/09 Lab Description Today s lab will introduce you to the Xilinx Integrated Software Environment (ISE)

More information

Tutorial on Simulation using Aldec Active-HDL Ver 1.0

Tutorial on Simulation using Aldec Active-HDL Ver 1.0 Tutorial on Simulation using Aldec Active-HDL Ver 1.0 by Shashi Karanam Introduction Active- HDL is an integrated environment designed for development of VHDL designs. The core of the system is a VHDL

More information

ECE 448 Lecture 4. Sequential-Circuit Building Blocks. Mixing Description Styles

ECE 448 Lecture 4. Sequential-Circuit Building Blocks. Mixing Description Styles ECE 448 Lecture 4 Sequential-Circuit Building Blocks Mixing Description Styles George Mason University Reading Required P. Chu, FPGA Prototyping by VHDL Examples Chapter 4, Regular Sequential Circuit Recommended

More information

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1 FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1 Anurag Dwivedi Digital Design : Bottom Up Approach Basic Block - Gates Digital Design : Bottom Up Approach Gates -> Flip Flops Digital

More information

CS/EE Homework 7 Solutions

CS/EE Homework 7 Solutions CS/EE 260 - Homework 7 Solutions 4/2/2001 1. (20 points) A 4 bit twisted ring counter is a sequential circuit which produces the following sequence of output values: 0000, 1000, 1100, 1110, 1111, 0111,

More information

Laboratory Exercise #6 Introduction to Logic Simulation and Verilog

Laboratory Exercise #6 Introduction to Logic Simulation and Verilog Laboratory Exercise #6 Introduction to Logic Simulation and Verilog ECEN 248: Introduction to Digital Design Department of Electrical and Computer Engineering Texas A&M University 2 Laboratory Exercise

More information

ECE 545 Lecture 6. Behavioral Modeling of Sequential-Circuit Building Blocks. George Mason University

ECE 545 Lecture 6. Behavioral Modeling of Sequential-Circuit Building Blocks. George Mason University ECE 545 Lecture 6 Behavioral Modeling of Sequential-Circuit Building Blocks George Mason University Required reading P. Chu, RTL Hardware Design using VHDL Chapter 5.1, VHDL Process Chapter 8, Sequential

More information

Today. Comments about assignment Max 1/T (skew = 0) Max clock skew? Comments about assignment 3 ASICs and Programmable logic Others courses

Today. Comments about assignment Max 1/T (skew = 0) Max clock skew? Comments about assignment 3 ASICs and Programmable logic Others courses Today Comments about assignment 3-43 Comments about assignment 3 ASICs and Programmable logic Others courses octor Per should show up in the end of the lecture Mealy machines can not be coded in a single

More information

Lab 1: Introduction to Verilog HDL and the Xilinx ISE

Lab 1: Introduction to Verilog HDL and the Xilinx ISE EE 231-1 - Fall 2016 Lab 1: Introduction to Verilog HDL and the Xilinx ISE Introduction In this lab simple circuits will be designed by programming the field-programmable gate array (FPGA). At the end

More information

VHDL for Synthesis. Course Description. Course Duration. Goals

VHDL for Synthesis. Course Description. Course Duration. Goals VHDL for Synthesis Course Description This course provides all necessary theoretical and practical know how to write an efficient synthesizable HDL code through VHDL standard language. The course goes

More information

VHDL simulation and synthesis

VHDL simulation and synthesis VHDL simulation and synthesis How we treat VHDL in this course You will not become an expert in VHDL after taking this course The goal is that you should learn how VHDL can be used for simulation and synthesis

More information

VHDL And Synthesis Review

VHDL And Synthesis Review VHDL And Synthesis Review VHDL In Detail Things that we will look at: Port and Types Arithmetic Operators Design styles for Synthesis VHDL Ports Four Different Types of Ports in: signal values are read-only

More information

The block diagram representation is given below: The output equation of a 2x1 multiplexer is given below:

The block diagram representation is given below: The output equation of a 2x1 multiplexer is given below: Experiment-3: Write VHDL programs for the following circuits, check the wave forms and the hardware generated a. multiplexer b. De-Multiplexer Objective: i. To learn the VHDL coding for Multiplexer and

More information

Introduction to Xilinx Vivado tools

Introduction to Xilinx Vivado tools Introduction to Xilinx Vivado tools This document is meant to be a starting point for users who are new to using the Xilinx Vivado tools. The document will describe the basic steps to start, create, simulate,

More information

Introduction to VHDL #1

Introduction to VHDL #1 ECE 3220 Digital Design with VHDL Introduction to VHDL #1 Lecture 3 Introduction to VHDL The two Hardware Description Languages that are most often used in industry are: n VHDL n Verilog you will learn

More information

Xilinx Tutorial Basic Walk-through

Xilinx Tutorial Basic Walk-through Introduction to Digital Logic Design with FPGA s: Digital logic circuits form the basis of all digital electronic devices. FPGAs (Field Programmable Gate Array) are large programmable digital electronic

More information

Abi Farsoni, Department of Nuclear Engineering and Radiation Health Physics, Oregon State University

Abi Farsoni, Department of Nuclear Engineering and Radiation Health Physics, Oregon State University Hardware description language (HDL) Intended to describe circuits textually, for a computer to read Evolved starting in the 1970s and 1980s Popular languages today include: VHDL Defined in 1980s by U.S.

More information

Using ModelSim to Simulate Logic Circuits in VHDL Designs. 1 Introduction. For Quartus II 13.0

Using ModelSim to Simulate Logic Circuits in VHDL Designs. 1 Introduction. For Quartus II 13.0 Using ModelSim to Simulate Logic Circuits in VHDL Designs For Quartus II 13.0 1 Introduction This tutorial is a basic introduction to ModelSim, a Mentor Graphics simulation tool for logic circuits. We

More information

and 32 bit for 32 bit. If you don t pay attention to this, there will be unexpected behavior in the ISE software and thing may not work properly!

and 32 bit for 32 bit. If you don t pay attention to this, there will be unexpected behavior in the ISE software and thing may not work properly! This tutorial will show you how to: Part I: Set up a new project in ISE 14.7 Part II: Implement a function using Schematics Part III: Simulate the schematic circuit using ISim Part IV: Constraint, Synthesize,

More information

TUTORIAL On USING XILINX ISE FOUNDATION DESIGN TOOLS: Mixing VHDL and Schematics

TUTORIAL On USING XILINX ISE FOUNDATION DESIGN TOOLS: Mixing VHDL and Schematics TUTORIAL On USING XILINX ISE FOUNDATION DESIGN TOOLS: Mixing VHDL and Schematics Shawki Areibi July 7, 2005 1 Introduction The objective of this tutorial is to show how VHDL can be incorporated into a

More information

Using XILINX WebPACK Software to Create CPLD Designs

Using XILINX WebPACK Software to Create CPLD Designs Introduction to WebPACK Using XILINX WebPACK Software to Create CPLD Designs RELEASE DATE: 10/24/1999 All XS-prefix product designations are trademarks of XESS Corp. All XC-prefix product designations

More information

VHDL Introduction to tools. TSTE12 Datorteknik Kent Palmkvist, Thomas Johansson. Version

VHDL Introduction to tools. TSTE12 Datorteknik Kent Palmkvist, Thomas Johansson. Version VHDL Introduction to tools TSTE12 Datorteknik Kent Palmkvist, Thomas Johansson Version 0.5 2017-08-30 1 1 Introduction This handbook is your guide to the VHDL simulation tool set used in the course. You

More information

Lattice VHDL Training

Lattice VHDL Training Lattice Part I February 2000 1 VHDL Basic Modeling Structure February 2000 2 VHDL Design Description VHDL language describes a digital system as a set of modular blocks. Each modular block is described

More information

Lab 1 Modular Design and Testbench Simulation ENGIN 341 Advanced Digital Design University of Massachusetts Boston

Lab 1 Modular Design and Testbench Simulation ENGIN 341 Advanced Digital Design University of Massachusetts Boston Lab 1 Modular Design and Testbench Simulation ENGIN 341 Advanced Digital Design University of Massachusetts Boston Introduction This lab introduces the concept of modular design by guiding you through

More information

Introduction to VHDL #3

Introduction to VHDL #3 ECE 322 Digital Design with VHDL Introduction to VHDL #3 Lecture 7 & 8 VHDL Modeling Styles VHDL Modeling Styles Dataflow Concurrent statements Structural Components and interconnects Behavioral (sequential)

More information

Digital Systems Design

Digital Systems Design Digital Systems Design Review of Combinatorial Circuit Building Blocks: VHDL for Combinational Circuits Dr. D. J. Jackson Lecture 2-1 Introduction to VHDL Designer writes a logic circuit description in

More information

Outline. CPE/EE 422/522 Advanced Logic Design L05. Review: General Model of Moore Sequential Machine. Review: Mealy Sequential Networks.

Outline. CPE/EE 422/522 Advanced Logic Design L05. Review: General Model of Moore Sequential Machine. Review: Mealy Sequential Networks. Outline CPE/EE 422/522 Advanced Logic Design L05 Electrical and Computer Engineering University of Alabama in Huntsville What we know Combinational Networks Sequential Networks: Basic Building Blocks,

More information

Sequential Logic - Module 5

Sequential Logic - Module 5 Sequential Logic Module 5 Jim Duckworth, WPI 1 Latches and Flip-Flops Implemented by using signals in IF statements that are not completely specified Necessary latches or registers are inferred by the

More information

PART I BASIC DIGITAL CIRCUITS

PART I BASIC DIGITAL CIRCUITS PART I BASIC DIGITAL CIRCUITS CHAPTER 1 GATE-LEVEL COMBINATIONAL CIRCUIT 1.1 INTRODUCTION VHDL stands for VHSIC (very high-speed integrated circuit) hardware description language. It was originally sponsored

More information

Lab 3. Advanced VHDL

Lab 3. Advanced VHDL Lab 3 Advanced VHDL Lab 3 Advanced VHDL This lab will demonstrate many advanced VHDL techniques and how they can be used to your advantage to create efficient VHDL code. Topics include operator balancing,

More information

structure syntax different levels of abstraction

structure syntax different levels of abstraction This and the next lectures are about Verilog HDL, which, together with another language VHDL, are the most popular hardware languages used in industry. Verilog is only a tool; this course is about digital

More information

Here is a list of lecture objectives. They are provided for you to reflect on what you are supposed to learn, rather than an introduction to this

Here is a list of lecture objectives. They are provided for you to reflect on what you are supposed to learn, rather than an introduction to this This and the next lectures are about Verilog HDL, which, together with another language VHDL, are the most popular hardware languages used in industry. Verilog is only a tool; this course is about digital

More information

Active-HDL. Getting Started

Active-HDL. Getting Started Active-HDL Getting Started Active-HDL is an integrated environment designed for development of VHDL designs. The core of the system is a VHDL simulator. Along with debugging and design entry tools, it

More information

Computer-Aided Digital System Design VHDL

Computer-Aided Digital System Design VHDL بس م اهلل الر حم ن الر حی م Iran University of Science and Technology Department of Computer Engineering Computer-Aided Digital System Design VHDL Ramin Rajaei ramin_rajaei@ee.sharif.edu Modeling Styles

More information

UNIT I Introduction to VHDL VHDL: - V -VHSIC, H - Hardware, D - Description, L Language Fundamental section of a basic VHDL code Library :

UNIT I Introduction to VHDL VHDL: - V -VHSIC, H - Hardware, D - Description, L Language Fundamental section of a basic VHDL code Library : UNIT I Introduction to VHDL VHDL stands for very high-speed integrated circuit hardware description language. Which is one of the programming languages used to model a digital system by dataflow, behavioral

More information

Speaker: Shao-Wei Feng Adviser: Prof. An-Yeu Wu Date: 2010/09/28

Speaker: Shao-Wei Feng Adviser: Prof. An-Yeu Wu Date: 2010/09/28 99-1 Under-Graduate Project Verilog Simulation & Debugging Tools Speaker: Shao-Wei Feng Adviser: Prof. An-Yeu Wu Date: 2010/09/28 ACCESS IC LAB Outline Basic Concept of Verilog HDL Gate Level Modeling

More information

Tutorial: Working with the Xilinx tools 14.4

Tutorial: Working with the Xilinx tools 14.4 Tutorial: Working with the Xilinx tools 14.4 This tutorial will show you how to: Part I: Set up a new project in ISE Part II: Implement a function using Schematics Part III: Implement a function using

More information

Mridula Allani Fall Fall

Mridula Allani Fall Fall Mridula Allani Fall 2010 Fall 2010 1 Model and document digital systems Hierarchical models System, RTL (Register Transfer Level), gates Different levels of abstraction Behavior, structure Verify circuit/system

More information

Design a three-input, two-output sequential digital circuit which functions as a digital locking mechanism. LOCK ALARM

Design a three-input, two-output sequential digital circuit which functions as a digital locking mechanism. LOCK ALARM Department of Computing Course 112 Hardware First Year Laboratory Assignment Dates for the session 2005-2006: Hand out Date: 10 th January 2006 Hand in deadline (electronic and written report): 17.00 Monday

More information

Digital Circuit Design Using Xilinx ISE Tools

Digital Circuit Design Using Xilinx ISE Tools Digital Circuit Design Using Xilinx ISE Tools Poras T. Balsara and Prashant Vallur Table of Contents 1. Introduction 2. Programmable logic devices: FPGA and CPLD 3. Creating a new project in Xilinx Foundation

More information

Review. LIBRARY list of library names; USE library.package.object; ENTITY entity_name IS generic declarations PORT ( signal_name(s): mode signal_type;

Review. LIBRARY list of library names; USE library.package.object; ENTITY entity_name IS generic declarations PORT ( signal_name(s): mode signal_type; LIBRARY list of library names; USE library.package.object; Review ENTITY entity_name IS generic declarations PORT ( signal_name(s): mode signal_type; signal_name(s) : mode signal_type); END ENTITY entity_name;

More information

Summary of FPGA & VHDL

Summary of FPGA & VHDL FYS4220/9220 Summary of FPGA & VHDL Lecture #6 Jan Kenneth Bekkeng, University of Oslo - Department of Physics 16.11.2011 Curriculum (VHDL & FPGA part) Curriculum (Syllabus) defined by: Lectures Lecture6:

More information

CSE 591: Advanced Hardware Design and Verification (2012 Spring) LAB #0

CSE 591: Advanced Hardware Design and Verification (2012 Spring) LAB #0 Lab 0: Tutorial on Xilinx Project Navigator & ALDEC s Active-HDL Simulator CSE 591: Advanced Hardware Design and Verification Assigned: 01/05/2011 Due: 01/19/2011 Table of Contents 1 Overview... 2 1.1

More information

Field Programmable Gate Array

Field Programmable Gate Array Field Programmable Gate Array System Arch 27 (Fire Tom Wada) What is FPGA? System Arch 27 (Fire Tom Wada) 2 FPGA Programmable (= reconfigurable) Digital System Component Basic components Combinational

More information

Introduction to VHDL. Main language concepts

Introduction to VHDL. Main language concepts Introduction to VHDL VHSIC (Very High Speed Integrated Circuit) Hardware Description Language Current standard is IEEE 1076-1993 (VHDL-93). Some tools still only support VHDL-87. Tools used in the lab

More information

Chip Design with FPGA Design Tools

Chip Design with FPGA Design Tools Chip Design with FPGA Design Tools Intern: Supervisor: Antoine Vazquez Janusz Zalewski Florida Gulf Coast University Fort Myers, FL 33928 V1.9, August 28 th. Page 1 1. Introduction FPGA is abbreviation

More information

Lecture 1: Introduction Course arrangements Recap of basic digital design concepts EDA tool demonstration

Lecture 1: Introduction Course arrangements Recap of basic digital design concepts EDA tool demonstration TKT-1426 Digital design for FPGA, 6cp Fall 2011 http://www.tkt.cs.tut.fi/kurssit/1426/ Tampere University of Technology Department of Computer Systems Waqar Hussain Lecture Contents Lecture 1: Introduction

More information

[VARIABLE declaration] BEGIN. sequential statements

[VARIABLE declaration] BEGIN. sequential statements PROCESS statement (contains sequential statements) Simple signal assignment statement

More information

CSCI Lab 3. VHDL Syntax. Due: Tuesday, week6 Submit to: \\fs2\csci250\lab-3\

CSCI Lab 3. VHDL Syntax. Due: Tuesday, week6 Submit to: \\fs2\csci250\lab-3\ CSCI 250 - Lab 3 VHDL Syntax Due: Tuesday, week6 Submit to: \\fs2\csci250\lab-3\ Objectives 1. Learn VHDL Valid Names 2. Learn the presentation of Assignment and Comments 3. Learn Modes, Types, Array,

More information

VHDL 2 Combinational Logic Circuits. Reference: Roth/John Text: Chapter 2

VHDL 2 Combinational Logic Circuits. Reference: Roth/John Text: Chapter 2 VHDL 2 Combinational Logic Circuits Reference: Roth/John Text: Chapter 2 Combinational logic -- Behavior can be specified as concurrent signal assignments -- These model concurrent operation of hardware

More information

Tutorial on VHDL and Verilog Applications

Tutorial on VHDL and Verilog Applications Second LACCEI International Latin American and Caribbean Conference for Engineering and Technology (LACCEI 2004) Challenges and Opportunities for Engineering Education, Research and Development 2-4 June

More information

Vivado Walkthrough ECGR Fall 2015

Vivado Walkthrough ECGR Fall 2015 ECGR 2181 - Vivado Walkthrough 1 Vivado Walkthrough ECGR 2181 - Fall 2015 Intro In this walkthrough we re going to go through the process of creating a project, adding sources, writing vhdl, simulating

More information

Lab 6 : Introduction to Verilog

Lab 6 : Introduction to Verilog Lab 6 : Introduction to Verilog Name: Sign the following statement: On my honor, as an Aggie, I have neither given nor received unauthorized aid on this academic work 1 Objective The main objective of

More information

CprE 583 Reconfigurable Computing

CprE 583 Reconfigurable Computing Recap Moore FSM Example CprE / ComS 583 Reconfigurable Computing Moore FSM that recognizes sequence 10 0 1 0 1 S0 / 0 S1 / 0 1 S2 / 1 Prof. Joseph Zambreno Department of Electrical and Computer Engineering

More information

CSEE W4840 Embedded System Design Lab 1

CSEE W4840 Embedded System Design Lab 1 CSEE W4840 Embedded System Design Lab 1 Stephen A. Edwards Due January 31, 2008 Abstract Learn to use the Altera Quartus development envrionment and the DE2 boards by implementing a small hardware design

More information

V1 - VHDL Language. FPGA Programming with VHDL and Simulation (through the training Xilinx, Lattice or Actel FPGA are targeted) Objectives

V1 - VHDL Language. FPGA Programming with VHDL and Simulation (through the training Xilinx, Lattice or Actel FPGA are targeted) Objectives Formation VHDL Language: FPGA Programming with VHDL and Simulation (through the training Xilinx, Lattice or Actel FPGA are targeted) - Programmation: Logique Programmable V1 - VHDL Language FPGA Programming

More information

ENGIN 241 Digital Systems with Lab

ENGIN 241 Digital Systems with Lab ENGIN 241 Digital Systems with Lab (4) Dr. Honggang Zhang Engineering Department University of Massachusetts Boston 1 Introduction Hardware description language (HDL): Specifies logic function only Computer-aided

More information

Introduction to WebPACK 3.1. Using XILINX WebPACK Software to Create CPLD Designs

Introduction to WebPACK 3.1. Using XILINX WebPACK Software to Create CPLD Designs Introduction to WebPACK 3.1 Using XILINX WebPACK Software to Create CPLD Designs RELEASE DATE: 8/28/2000 All XS-prefix product designations are trademarks of XESS Corp. All XC-prefix product designations

More information

Timing Analysis in Xilinx ISE

Timing Analysis in Xilinx ISE Timing Analysis in Xilinx ISE For each design which is to be implemented, constraints should be defined to get predictable results. The first important class of constraints was already introduced in the

More information

TKT-1212 Digitaalijärjestelmien toteutus. Lecture 7: VHDL Testbenches Ari Kulmala, Erno Salminen 2008

TKT-1212 Digitaalijärjestelmien toteutus. Lecture 7: VHDL Testbenches Ari Kulmala, Erno Salminen 2008 TKT-1212 Digitaalijärjestelmien toteutus Lecture 7: VHDL Testbenches Ari Kulmala, Erno Salminen 2008 Contents Purpose of test benches Structure of simple test bench Side note about delay modeling in VHDL

More information

University of California, Davis Department of Electrical and Computer Engineering. Lab 1: Implementing Combinational Logic in the MAX10 FPGA

University of California, Davis Department of Electrical and Computer Engineering. Lab 1: Implementing Combinational Logic in the MAX10 FPGA 1 University of California, Davis Department of Electrical and Computer Engineering EEC180B DIGITAL SYSTEMS II Winter Quarter 2018 Lab 1: Implementing Combinational Logic in the MAX10 FPGA Objective: This

More information

Luleå University of Technology Kurskod SMD152 Datum Skrivtid

Luleå University of Technology Kurskod SMD152 Datum Skrivtid Luleå University of Technology Kurskod SMD152 Datum 2003-10-24 Skrivtid 9.00 13.00 1 Manual synthesis (10 p, 2 p each) Here you are given five different VHDL models. Your task is to draw the schematics

More information

DESIGN AND IMPLEMENTATION OF MOD-6 SYNCHRONOUS COUNTER USING VHDL

DESIGN AND IMPLEMENTATION OF MOD-6 SYNCHRONOUS COUNTER USING VHDL Arid Zone Journal of Engineering, Technology and Environment. August, 2013; Vol. 9, 17-26 DESIGN AND IMPLEMENTATION OF MOD-6 SYNCHRONOUS COUNTER USING VHDL Dibal, P.Y. (Department of Computer Engineering,

More information

Introduction to Verilog and XILINX

Introduction to Verilog and XILINX DEPARTAMENTO DE TECNOLOGÍA ELECTRÓNICA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Introduction to Verilog and XILINX Lab Session Computer Structure WARNING: A written solution of the preliminary

More information

ECE4401 / CSE3350 ECE280 / CSE280 Digital Design Laboratory

ECE4401 / CSE3350 ECE280 / CSE280 Digital Design Laboratory ECE4401 / CSE3350 ECE280 / CSE280 Digital Design Laboratory Instructor John Chandy Office: ITEB 437 Office Hours: W10-12 Tel: (860) 486-5047 Email: john.chandy@uconn chandy@uconn.edu Class home page: HuskyCT

More information

PALMiCE FPGA Probing Function User's Manual

PALMiCE FPGA Probing Function User's Manual PALMiCE FPGA Probing Function User's Manual This manual describes the probing function and presents the basic usage patterns. Chapter1 Introducing the Probing Function The probing function makes it easy

More information

IT T35 Digital system desigm y - ii /s - iii

IT T35 Digital system desigm y - ii /s - iii UNIT - V Introduction to Verilog Hardware Description Language Introduction HDL for combinational circuits Sequential circuits Registers and counters HDL description for binary multiplier. 5.1 INTRODUCTION

More information

MLR Institute of Technology

MLR Institute of Technology MLR Institute of Technology Laxma Reddy Avenue, Dundigal, Quthbullapur (M), Hyderabad 500 043 Course Name Course Code Class Branch ELECTRONICS AND COMMUNICATIONS ENGINEERING QUESTION BANK : DIGITAL DESIGN

More information

Schedule. ECE U530 Digital Hardware Synthesis. Rest of Semester. Midterm Question 1a

Schedule. ECE U530 Digital Hardware Synthesis. Rest of Semester. Midterm Question 1a ECE U530 Digital Hardware Synthesis Prof. Miriam Leeser mel@coe.neu.edu November 8, 2006 Midterm Average: 70 Lecture 16: Midterm Solutions Homework 6: Calculator Handshaking HW 6: Due Wednesday, November

More information

QUARTUS II Altera Corporation

QUARTUS II Altera Corporation QUARTUS II Quartus II Design Flow Design Entry Timing Constraints Synthesis Placement and Routing Timing, Area, Power Optimization Timing and Power Analyzer Optimized Design 2 Can I still use a Processor?

More information

ECE 545 Lecture 8. Data Flow Description of Combinational-Circuit Building Blocks. George Mason University

ECE 545 Lecture 8. Data Flow Description of Combinational-Circuit Building Blocks. George Mason University ECE 545 Lecture 8 Data Flow Description of Combinational-Circuit Building Blocks George Mason University Required reading P. Chu, RTL Hardware Design using VHDL Chapter 7, Combinational Circuit Design:

More information