SlideShare a Scribd company logo
Chandrajit Pal Mtech(I.T) A.K CHOUDHURY SCHOOL OF I.T UNIVERSITY OF CALCUTTA MAIL:palchandrajit@gmail.com
-Introduction   >In the world of digital design, engineers use Hardware Description Languages to describe complex logic functions. These are included in design suites such as Xilinx's ISE and similar tools.  >However, if a digital engineer were to code an adder or create a cosine lookup table each time they were doing a project, it would be reinventing the wheel and a waste of their time.  >Similarly, if the design engineer had to continually re-code commonly used complex digital circuits in large projects; they would end up wasting more time and money. Because of this, a digital design engineer may just use an IP core  Introduction to IP Cores with Xilinx ISE 9.2  and Digilent Spartan 3E Starter Kit Board
IP CORE( Intellectual Property )  >  An IP ( Intellectual Property ) core is a block of HDL code that other engineers have already written to perform a specific function.  It is a specific piece of code designed to do a specific job.  IP cores can be used in a complex design where an engineer wants to save time.
Advantages and Disadvantages of IP CORES >  As with any engineering tool, IP cores have their advantages and disadvantages.   >  Although they may simplify a given design, the engineer has to design the interfaces to send and receive data from this “black box”. Also, while an IP core may reduce design time, the engineer frequently has to pay for the right to use the core.  >  Many are designed for particular parts but some come free but Other cores may cost you thousands of dollars.
-Objective In this tutorial, the designer will learn how to use Xilinx's CORE Generator System to incorporate an IP core into a VHDL project thus creating a four-bit Adder/Subtracter.  Xilinx cores are often beneficial to use as they are written by engineers with knowledge of the inner components of the FPGA.  This allows them to be optimized for speed and space.
-Process  1) Use the Xilinx CORE Generator System to create an IP core. 2) Connect the IP Core to the VHDL source as a component. 3) Synthesize and program the Spartan 3E Starter Kit board
-Implementation 1) Start by creating a project. Launch the Xilinx ISE software. Once the Project Navigator window opens, create a new project by clicking on the File drop-down menu, and selecting  New Project .  2) Finish creating your project, noting the folder it was created in, and proceed to double click on  Create New Source  in the Processes window. Choose  IP  and name the file ‘ add_sub’.  In the next screen open the tree to Math Functions => Adders & Subtracters => Adder Subtracter v7.0 as shown in the image below. Click  Next  and  Finish. Fig. 1. New Source Wizard window
Steps(contd..) 3) After a few seconds a new window ( LogiCore ) should pop up. Select the options to match those in Fig. 2 and Fig. 3. Select  Next  on Fig. 2, and  Generate  on Fig. 3. The window will disappear and will have created an  Adder/Subtracter  that operates on two four-bit numbers. Fig. 2. First page of the LogiCore Window Fig. 3. Second page of the LogiCore Window
Steps(contd…) 4)  It will take a few moments to generate all of the files.  Progress made can be seen by looking at the messages in the  Transcript  window. When it is finished,  add_sub  will be shown   in the sources window inside the Project Navigator. At this point, the easiest part in the tutorial has been completed. The hardest part, integrating the core into the project and simulating is yet to come. 5)  Go to  File,  click on  Open ,   and browse to “ add_sub.vhd” . This will bring up one of the files created by the CORE Generator System. This does not actually do anything. However, there is some information that needs to be copied from the file, so it is nice to have it handy.
6) Now, click on the  New  icon to create a new VHDL file. Enter the code in the file as you see it below: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; library UNISIM; library XilinxCoreLib; entity adder_subtracter is port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end adder_subtracter; architecture behavioral of adder_subtracter is ------------------------------------------------------------------------- -- -- Component Declaration -- -- The following lines were taken directly from the add_sub.vho file -- that Coregen creates for you. It is created in such a way that the -- designer has to simply cut and paste the Component Declaration statements -- into the source code as I have done here. The add_sub.vho file -- is created in the project directory and you can get to it with -- any text editor -------------------------------------------------------------------------- Steps(contd..
Click on the  add_sub.vho  file that was opened earlier in the project. Find the text which looks like this: component add_sub port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end component; your_instance_name : add_sub port map ( A => A, B => B, ADD => ADD, Q => Q, CLK => CLK); Copy it, and paste it into the VHDL source.
ADDER/SUBTRACTER CODE library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; library UNISIM; library XilinxCoreLib; entity adder_subtracter is port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end adder_subtracter; architecture behavioral of adder_subtracter is component add_sub port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end component; attribute syn_black_box : boolean; attribute syn_black_box of add_sub: component is true; begin UUT : add_sub port map ( A => A, B => B, ADD => ADD, Q => Q, CLK => CLK); end behavioral;
Steps(contd…) 7) Save the file as “ adder_subtracter.vhd ”. Add it to your project as an existing source. Highlight the file, and double-click  Synthesize   in the Processes window. If everything was done correctly, it should synthesize without errors. If there are any warnings, ignore them for now, and in the case that there are errors review the code and steps as pointed out below:  Create a new project. Start the CORE Generator System Create the desired IP core. Create the top-level VHDL source. Copy and paste in the component declaration in the generated .vho file, and the instance declaration. Save the new source file and incorporate it into your project. Synthesize the source file and check for errors.
Steps(contd..) 8) Create a new source  Implementation Constraints File , and assign the pins as follows (see Table 1.) in order to use two Digilent PmodSWT [3] connected to the 6-pin accessory headers J1 and J2 respectively for the proposed pin assignment. Table 1. Pin assignment for the adder_subtracter project.
You can check the pin assignment with Fig. 4  and Fig. 5: Fig. 4.  Fig 5
Steps(contd…) In the figure below, a behavioral simulation is displayed of the adder-subtracter using Modelsim XE/III 6.2g [1]. When the input add is ‘0’ the system substracts a-b using 2’s complement otherwise, it adds a+b on the raising edege of the clock. Fig. 6. Behavioral simulation of the adder_subtracter project.
9)  Double click  Generate Programming File . Once a green check mark appears, double click over Configure Device (iMPACT) and follow the instructions in the wizard to program the board. Test the logic by moving switches. Remember, you need to put  SW3  (pin N17) in the Digilent Spartan 3E Starter Kit Board in the up position if you want it to add the input, otherwise it will subtract. The inputs A and B are connected to the PmodSWTs associated to the J1 and J2 connectors respectively. Finally, the 5-bit result of the Adder/Subtracter is associated to the  discrete leds LED4, LED3, LED2, LED1 and LED0 (pins C11, F11, E11, E12 and F12 respectively). These controls are illustrated in Fig. 7. Think of how long it would have taken to come up with the four bit adder/subtractor VHDL code from scratch. The importance of IP cores is clearly visible. Fig. 7. Leds associated to the output of the adder subtracter and the operation control SW3 included in the Digilent Spartan 3E Starter board.
References ISE In-Deph Tutorial.  Xilinx Inc. Copyright 1995-2007. pp. 36-39. Available:  http://download.xilinx.com/direct/ise9_tutorials/ise9tut.pdf Spartan-3E Starter Kit Board User Guide.  Xilinx Inc. Revision UG230 March 9, 2006. pp. 121-122. Available:  http://www.digilentinc.com/Data/Products/S3EBOARD/S3EStarter_ug230.pdf Digilent PmodSWT Switch ModuleBoard Reference Manual.  Digilent Inc. Revision 06/07/05. pp. 1. Available:  http://www.digilentinc.com/Data/Products/PMOD-SWITCH/Pmod%20SWT_rm.pdf
THANK YOU

More Related Content

PPTX
Hard IP Core design | Convolution Encoder
PDF
Nios2 and ip core
PPT
Digital design lect 26 27
PPTX
Introduction to EDA Tools
PPTX
PPT
Introduction to fpga synthesis tools
PPTX
Embedded system
PPT
The Microarchitecure Of FPGA Based Soft Processor
Hard IP Core design | Convolution Encoder
Nios2 and ip core
Digital design lect 26 27
Introduction to EDA Tools
Introduction to fpga synthesis tools
Embedded system
The Microarchitecure Of FPGA Based Soft Processor

What's hot (20)

PDF
FPGA/Reconfigurable computing (HPRC)
PPTX
Digital VLSI Design and FPGA Implementation
PDF
Free / Open Source EDA Tools
PDF
Session 2,3 FPGAs
PDF
Synthesizing HDL using LeonardoSpectrum
PPTX
The comparison between FPGA , ARDUINO , ASIC
PPTX
Compare between FPGA , ARDUINO , ASIC ..
PDF
Resume_DigitalIC_1
PDF
Fpga computing
PDF
Zynq architecture
PPTX
Vlsi design flow
PDF
Design of LDPC Decoder Based On FPGA in Digital Image Watermarking Technology
PPT
Fpga(field programmable gate array)
PPTX
Implementation of Soft-core Processor on FPGA
PPSX
VLSI Design Flow
PPTX
Implementation of DSP Algorithms on FPGA
PPTX
SoC FPGA Technology
PPTX
FPGA workshop
PPTX
KaiSemi - FPGA to ASIC Conversions
PPTX
Implementation of Soft-core processor on FPGA (Final Presentation)
FPGA/Reconfigurable computing (HPRC)
Digital VLSI Design and FPGA Implementation
Free / Open Source EDA Tools
Session 2,3 FPGAs
Synthesizing HDL using LeonardoSpectrum
The comparison between FPGA , ARDUINO , ASIC
Compare between FPGA , ARDUINO , ASIC ..
Resume_DigitalIC_1
Fpga computing
Zynq architecture
Vlsi design flow
Design of LDPC Decoder Based On FPGA in Digital Image Watermarking Technology
Fpga(field programmable gate array)
Implementation of Soft-core Processor on FPGA
VLSI Design Flow
Implementation of DSP Algorithms on FPGA
SoC FPGA Technology
FPGA workshop
KaiSemi - FPGA to ASIC Conversions
Implementation of Soft-core processor on FPGA (Final Presentation)
Ad

Similar to generate IP CORES (20)

PDF
Altera up1
PDF
Larson and toubro
PPT
Developing new zynq based instruments
PDF
Vhdl design flow
PPT
verilog basics.ppt
RTF
Readme
PDF
xapp744-HIL-Zynq-7000
PPT
Getting started with code composer studio v4 for tms320 f2812
PDF
Firmware Debugging with PICkit2
PDF
Micro Processor & Micro Controller Practical Notes_Electrical Engineering GTU...
PPTX
Lab Handson: Power your Creations with Intel Edison!
PDF
Deep Learning Edge
PDF
Hacking the Kinect with GAFFTA Day 1
DOCX
ABC Consolidated Financial InfoABC Companys current financial inf.docx
PPTX
VLSI Training presentation
PPTX
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
PDF
Application of code composer studio in digital signal processing
PDF
maXbox_Arduino_Pascal_Magazine
PDF
Unit III ARM Interface and ARM Programming
PPTX
Xilinx ISE introduction Tutorial #1
Altera up1
Larson and toubro
Developing new zynq based instruments
Vhdl design flow
verilog basics.ppt
Readme
xapp744-HIL-Zynq-7000
Getting started with code composer studio v4 for tms320 f2812
Firmware Debugging with PICkit2
Micro Processor & Micro Controller Practical Notes_Electrical Engineering GTU...
Lab Handson: Power your Creations with Intel Edison!
Deep Learning Edge
Hacking the Kinect with GAFFTA Day 1
ABC Consolidated Financial InfoABC Companys current financial inf.docx
VLSI Training presentation
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Application of code composer studio in digital signal processing
maXbox_Arduino_Pascal_Magazine
Unit III ARM Interface and ARM Programming
Xilinx ISE introduction Tutorial #1
Ad

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Encapsulation theory and applications.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Big Data Technologies - Introduction.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
20250228 LYD VKU AI Blended-Learning.pptx
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
MYSQL Presentation for SQL database connectivity
Spectral efficient network and resource selection model in 5G networks
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The AUB Centre for AI in Media Proposal.docx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Review of recent advances in non-invasive hemoglobin estimation
Dropbox Q2 2025 Financial Results & Investor Presentation
Network Security Unit 5.pdf for BCA BBA.
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Unlocking AI with Model Context Protocol (MCP)
Big Data Technologies - Introduction.pptx
Building Integrated photovoltaic BIPV_UPV.pdf

generate IP CORES

  • 1. Chandrajit Pal Mtech(I.T) A.K CHOUDHURY SCHOOL OF I.T UNIVERSITY OF CALCUTTA MAIL:palchandrajit@gmail.com
  • 2. -Introduction >In the world of digital design, engineers use Hardware Description Languages to describe complex logic functions. These are included in design suites such as Xilinx's ISE and similar tools. >However, if a digital engineer were to code an adder or create a cosine lookup table each time they were doing a project, it would be reinventing the wheel and a waste of their time. >Similarly, if the design engineer had to continually re-code commonly used complex digital circuits in large projects; they would end up wasting more time and money. Because of this, a digital design engineer may just use an IP core Introduction to IP Cores with Xilinx ISE 9.2 and Digilent Spartan 3E Starter Kit Board
  • 3. IP CORE( Intellectual Property ) > An IP ( Intellectual Property ) core is a block of HDL code that other engineers have already written to perform a specific function. It is a specific piece of code designed to do a specific job. IP cores can be used in a complex design where an engineer wants to save time.
  • 4. Advantages and Disadvantages of IP CORES > As with any engineering tool, IP cores have their advantages and disadvantages. > Although they may simplify a given design, the engineer has to design the interfaces to send and receive data from this “black box”. Also, while an IP core may reduce design time, the engineer frequently has to pay for the right to use the core. > Many are designed for particular parts but some come free but Other cores may cost you thousands of dollars.
  • 5. -Objective In this tutorial, the designer will learn how to use Xilinx's CORE Generator System to incorporate an IP core into a VHDL project thus creating a four-bit Adder/Subtracter. Xilinx cores are often beneficial to use as they are written by engineers with knowledge of the inner components of the FPGA. This allows them to be optimized for speed and space.
  • 6. -Process 1) Use the Xilinx CORE Generator System to create an IP core. 2) Connect the IP Core to the VHDL source as a component. 3) Synthesize and program the Spartan 3E Starter Kit board
  • 7. -Implementation 1) Start by creating a project. Launch the Xilinx ISE software. Once the Project Navigator window opens, create a new project by clicking on the File drop-down menu, and selecting New Project . 2) Finish creating your project, noting the folder it was created in, and proceed to double click on Create New Source in the Processes window. Choose IP and name the file ‘ add_sub’. In the next screen open the tree to Math Functions => Adders & Subtracters => Adder Subtracter v7.0 as shown in the image below. Click Next and Finish. Fig. 1. New Source Wizard window
  • 8. Steps(contd..) 3) After a few seconds a new window ( LogiCore ) should pop up. Select the options to match those in Fig. 2 and Fig. 3. Select Next on Fig. 2, and Generate on Fig. 3. The window will disappear and will have created an Adder/Subtracter that operates on two four-bit numbers. Fig. 2. First page of the LogiCore Window Fig. 3. Second page of the LogiCore Window
  • 9. Steps(contd…) 4) It will take a few moments to generate all of the files. Progress made can be seen by looking at the messages in the Transcript window. When it is finished, add_sub will be shown in the sources window inside the Project Navigator. At this point, the easiest part in the tutorial has been completed. The hardest part, integrating the core into the project and simulating is yet to come. 5) Go to File, click on Open , and browse to “ add_sub.vhd” . This will bring up one of the files created by the CORE Generator System. This does not actually do anything. However, there is some information that needs to be copied from the file, so it is nice to have it handy.
  • 10. 6) Now, click on the New icon to create a new VHDL file. Enter the code in the file as you see it below: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; library UNISIM; library XilinxCoreLib; entity adder_subtracter is port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end adder_subtracter; architecture behavioral of adder_subtracter is ------------------------------------------------------------------------- -- -- Component Declaration -- -- The following lines were taken directly from the add_sub.vho file -- that Coregen creates for you. It is created in such a way that the -- designer has to simply cut and paste the Component Declaration statements -- into the source code as I have done here. The add_sub.vho file -- is created in the project directory and you can get to it with -- any text editor -------------------------------------------------------------------------- Steps(contd..
  • 11. Click on the add_sub.vho file that was opened earlier in the project. Find the text which looks like this: component add_sub port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end component; your_instance_name : add_sub port map ( A => A, B => B, ADD => ADD, Q => Q, CLK => CLK); Copy it, and paste it into the VHDL source.
  • 12. ADDER/SUBTRACTER CODE library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; library UNISIM; library XilinxCoreLib; entity adder_subtracter is port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end adder_subtracter; architecture behavioral of adder_subtracter is component add_sub port ( A: IN std_logic_VECTOR(3 downto 0); B: IN std_logic_VECTOR(3 downto 0); ADD: IN std_logic; Q: OUT std_logic_VECTOR(4 downto 0); CLK: IN std_logic); end component; attribute syn_black_box : boolean; attribute syn_black_box of add_sub: component is true; begin UUT : add_sub port map ( A => A, B => B, ADD => ADD, Q => Q, CLK => CLK); end behavioral;
  • 13. Steps(contd…) 7) Save the file as “ adder_subtracter.vhd ”. Add it to your project as an existing source. Highlight the file, and double-click Synthesize in the Processes window. If everything was done correctly, it should synthesize without errors. If there are any warnings, ignore them for now, and in the case that there are errors review the code and steps as pointed out below: Create a new project. Start the CORE Generator System Create the desired IP core. Create the top-level VHDL source. Copy and paste in the component declaration in the generated .vho file, and the instance declaration. Save the new source file and incorporate it into your project. Synthesize the source file and check for errors.
  • 14. Steps(contd..) 8) Create a new source Implementation Constraints File , and assign the pins as follows (see Table 1.) in order to use two Digilent PmodSWT [3] connected to the 6-pin accessory headers J1 and J2 respectively for the proposed pin assignment. Table 1. Pin assignment for the adder_subtracter project.
  • 15. You can check the pin assignment with Fig. 4 and Fig. 5: Fig. 4. Fig 5
  • 16. Steps(contd…) In the figure below, a behavioral simulation is displayed of the adder-subtracter using Modelsim XE/III 6.2g [1]. When the input add is ‘0’ the system substracts a-b using 2’s complement otherwise, it adds a+b on the raising edege of the clock. Fig. 6. Behavioral simulation of the adder_subtracter project.
  • 17. 9) Double click Generate Programming File . Once a green check mark appears, double click over Configure Device (iMPACT) and follow the instructions in the wizard to program the board. Test the logic by moving switches. Remember, you need to put SW3 (pin N17) in the Digilent Spartan 3E Starter Kit Board in the up position if you want it to add the input, otherwise it will subtract. The inputs A and B are connected to the PmodSWTs associated to the J1 and J2 connectors respectively. Finally, the 5-bit result of the Adder/Subtracter is associated to the discrete leds LED4, LED3, LED2, LED1 and LED0 (pins C11, F11, E11, E12 and F12 respectively). These controls are illustrated in Fig. 7. Think of how long it would have taken to come up with the four bit adder/subtractor VHDL code from scratch. The importance of IP cores is clearly visible. Fig. 7. Leds associated to the output of the adder subtracter and the operation control SW3 included in the Digilent Spartan 3E Starter board.
  • 18. References ISE In-Deph Tutorial. Xilinx Inc. Copyright 1995-2007. pp. 36-39. Available: http://download.xilinx.com/direct/ise9_tutorials/ise9tut.pdf Spartan-3E Starter Kit Board User Guide. Xilinx Inc. Revision UG230 March 9, 2006. pp. 121-122. Available: http://www.digilentinc.com/Data/Products/S3EBOARD/S3EStarter_ug230.pdf Digilent PmodSWT Switch ModuleBoard Reference Manual. Digilent Inc. Revision 06/07/05. pp. 1. Available: http://www.digilentinc.com/Data/Products/PMOD-SWITCH/Pmod%20SWT_rm.pdf