Differences

This shows you the differences between two versions of the page.

Link to this comparison view

learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:start [2017/09/21 21:36] – [3. Add the Zynq IP & GPIO Blocks] jon peyronlearn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:start [2022/10/04 11:38] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Arty Z7 Getting started with Zynq ====== ====== Arty Z7 Getting started with Zynq ======
 +
 +<WRAP round important 660px>
 +=== Important! ===
 +This guide is obsolete, the updated guide can be found [[:vivado:getting-started-with-ipi:start|here]].
 +</WRAP>
 +
 {{:learn:programmable-logic:tutorials:arty-z7-xadc-demo:arty-z7_obl600_702.png?400|}} {{:learn:programmable-logic:tutorials:arty-z7-xadc-demo:arty-z7_obl600_702.png?400|}}
  
Line 9: Line 15:
   * Created a simple hardware design incorporating the on board LEDs,switches and buttons.   * Created a simple hardware design incorporating the on board LEDs,switches and buttons.
  
-  * Created a .C project in XIlinx Vivado SDK tieing the on board LEDs and buttons together along with sending switch status through the USB-UART using the hardware design shown in the previous step.+  * Created a .C project in XIlinx Vivado SDK tying the on board LEDs and buttons together along with sending switch status through the USB-UART using the hardware design shown in the previous step.
  
 ----- -----
Line 78: Line 84:
 >{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_1a.jpg?600|}} >{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_1a.jpg?600|}}
  
->1.3) Enter a project name and location the click **Next**.+>1.3) Enter a Project name and location then click **Next**.
 > >
 >{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_1b.jpg?600|}} >{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_1b.jpg?600|}}
Line 115: Line 121:
 ==== 3. Add the Zynq IP & GPIO Blocks ==== ==== 3. Add the Zynq IP & GPIO Blocks ====
  
->3.1) Click the {{:genesys2:addip.jpg?nolink|}} **Add IP** button and search for ZYNQ. Double click on **ZYNQ7 Processing System** to place the bare Zynq block.+>3.1) Click the {{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_38.jpg?50|}} **Add IP** button and search for ZYNQ. Double click on **ZYNQ7 Processing System** to place the bare Zynq block.
 > >
->{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_5.jpg?800|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_5.jpg?500|}}
  
->3.2) Click the **Run Block Automation** link+>3.2) Click the **Run Block Automation** link and click **OK**. This will use the board files and correctly configure the ZYNQ processor for the Arty-Z7.
 > >
 >{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_6.jpg?800|}} >{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_6.jpg?800|}}
 > >
 > Your Zynq block should now look like the picture below. > Your Zynq block should now look like the picture below.
->+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_42.jpg?600|}}
  
->3.3) Click the {{:genesys2:addip.jpg?nolink|}} **Add IP** icon again, this time search for "gpio" and add the **AXI GPIO** core.+>3.3) Click the {{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_38.jpg?50|}} **Add IP** icon again, this time search for "gpio" and add the **AXI GPIO** core.
 > >
->{{:zybo:add_gpio_core1.png?nolink&500|}} +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_44.jpg?800|}}
 >3.4) Double-click on new **axi_gpio_0** core that was just added to bring up the customizing window. Under the **IP Configuration** tab check the **Enable Dual Channel** box. Click **OK**. >3.4) Double-click on new **axi_gpio_0** core that was just added to bring up the customizing window. Under the **IP Configuration** tab check the **Enable Dual Channel** box. Click **OK**.
 > >
->{{:zybo:setting_dual_channel.png?nolink&500|}} +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_8.jpg?800|}} 
 +>
 >3.5) Add another GPIO core by repeating step 3.3 but do not enable dual channel. >3.5) Add another GPIO core by repeating step 3.3 but do not enable dual channel.
 > >
->{{:zybo:adding_gpio_core2.png?nolink&500|}} +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_9.jpg?800|}}
 ----- -----
  
Line 144: Line 148:
 >4.1) The connection automation tool will add the required logic blocks for the demo. Select **Run Connection Automation** highlighted in blue. >4.1) The connection automation tool will add the required logic blocks for the demo. Select **Run Connection Automation** highlighted in blue.
 > >
->{{:zybo:connection_auto.png?nolink&500|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_45.jpg?800|}}
  
 >4.2) Check the box by **All Automation**. Select **GPIO** under **axi_gpio_0** and select **btns_4bits** in the Board Part Interface drop-down box. >4.2) Check the box by **All Automation**. Select **GPIO** under **axi_gpio_0** and select **btns_4bits** in the Board Part Interface drop-down box.
 > >
->{{:zybo:conn_auto1.png?nolink&500|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_10.jpg?800|}}
  
->4.3) Select **GPIO2** under **axi_gpio_0** and select **swts_4bits** in the drop-down box.+>4.3) Select **GPIO2** under **axi_gpio_0** and select **swts_2bits** in the drop-down box.
 > >
->{{:zybo:conn_auto2.png?nolink&500|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_11.jpg?800|}}
  
 >4.4) Select **GPIO** under **axi_gpio_1** and select **leds_4bits** in the drop-down box and hit **OK**.   >4.4) Select **GPIO** under **axi_gpio_1** and select **leds_4bits** in the drop-down box and hit **OK**.  
 > >
->{{:zybo:conn_auto3.png?nolink&500|}} +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_12.jpg?800|}}
 >4.5) This process will add: >4.5) This process will add:
     * The AXI interconnect     * The AXI interconnect
     * Processor System Reset      * Processor System Reset 
     * The board parts for the buttons, switches and LEDs.     * The board parts for the buttons, switches and LEDs.
-{{:zybo:sec_block_auto.png?nolink&500|}}+{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_46.jpg?800|}}
  
->4.6) Next let's clean up our Block Design. Click the {{:genesys2:regenerate.jpg?nolink|}} **Regenerate Layout** button to rearrange your block design.+>4.6) Next let's clean up our Block Design. Click the {{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_39.jpg?50|}}  **Regenerate Layout** button to rearrange your block design.
 > >
->{{:zybo:regen_layout.png?nolink&500|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_47.jpg?800|}}
  
 ----- -----
Line 172: Line 175:
 ==== 5. Generate HDL Wrapper and Validate Design ==== ==== 5. Generate HDL Wrapper and Validate Design ====
  
->5.1) Select {{:genesys2:validate.jpg?nolink|}} **Validate Design**. This will check for design and connection errors.+>5.1) Select {{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_40.jpg?50|}} **Validate Design**. This will check for design and connection errors.
  
 >5.2) After the design validation step we will proceed with creating a HDL System Wrapper. In the block design window, under the **Design Sources** tab, right-click on the block diagram file. We labeled it "design_1.bd" and select **Create HDL Wrapper**. >5.2) After the design validation step we will proceed with creating a HDL System Wrapper. In the block design window, under the **Design Sources** tab, right-click on the block diagram file. We labeled it "design_1.bd" and select **Create HDL Wrapper**.
 > >
->{{:zybo:generate_hdl_wrapper.png?nolink&400|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_16.jpg?800|}}
  
-This will create a top module in VHDL and will allow you to generate a bitstream.+This will create a top module in VHDL or Verilog depending on what language you choose and will allow you to generate a bitstream.
  
 ----- -----
Line 184: Line 187:
 ==== 6. Generate the Bitstream ==== ==== 6. Generate the Bitstream ====
  
->6.1) Click on **Generate Bitstream** at the bottom of the Flow Navigator. Wait for the process to complete and click OK.+>6.1) Click on **Generate Bitstream** at the bottom of the Flow Navigator. 
 > >
->{{:zybo:generate_bitstream.png?nolink&400|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_17.jpg?800|}} 
 +> 
 +>6.2) Next there are a series of popup boxes. On the first popup select save 
 +> 
 +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_18.jpg?400|}} 
 +> 
 +>On the second popup select yes. You can choose to have this not notify you again. 
 +> 
 +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_19.jpg?400|}} 
 +>  
 +>On the last popup choose the max number of jobs allowed if you have no other tasks going on your PC. Otherwise choose the number of jobs based on system needs.  
 +> 
 +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_20.jpg?600|}} 
 +>  
  
 ----- -----
Line 194: Line 211:
 >7.1) Go to file->Export->Export Hardware... Make sure to check the box for **Include bitstream** then click **OK**. >7.1) Go to file->Export->Export Hardware... Make sure to check the box for **Include bitstream** then click **OK**.
 > >
->{{:zybo:export_hdwr.png?nolink&400|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_23.jpg?500|}}
  
 ----- -----
Line 202: Line 219:
 >8.1) Go to **File->Launch SDK** and click **OK**. >8.1) Go to **File->Launch SDK** and click **OK**.
 > >
->{{:zybo:launch_sdk.png?nolink&400|}} +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_25.jpg?500|}}
 ----- -----
  
Line 210: Line 226:
 >9.1) Go to **File->New->Application Project**. >9.1) Go to **File->New->Application Project**.
 > >
->{{:zybo:sdk_new_app_project.png?nolink&500|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_26.jpg?800|}}
  
->9.2) Enter the project details: +>9.2) Enter a Project name and leave the rest of the options on default settings. Then select **NEXT** 
-    * Project name: "getting_started_with_ZYBO" +> 
-    * Hardware Platform: design_1_weapper_he_platform_0 +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_27.jpg?800|}}
-    * Processor: ps7_cortexas9_0 +
-    * Languate: C +
-    * OS Platform: standalone +
-    * Board Support Package: Create New (leave default name) +
-{{:zybo:sdk_project_details.png?nolink&500|}}+
  
 +>9.3) Select the Hello World template. Then select **FINISH**
 +>
 +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_28.jpg?800|}}
  
->9.3) The Hello World demo is a good starting point for this demo. Click **Next**, select **Hello World** and click **Finish**. This process will add two directories to the project explorer.   +>9.4) Expand **Getting_started_with_zynq**(the application you made) then open **src** and double click on "helloworld.c". This is the default Hello World C code.
- +
->9.4) Expand **getting_started_with_ZYBO** then open **src** and double click on "helloworld.c". This is the default Hello World C code.+
 > >
->{{:zybo:open_hello_world_c.png?nolink&400|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_35.jpg?700|}}
  
 ----- -----
Line 300: Line 312:
  
 ==== 11. Run the Project ==== ==== 11. Run the Project ====
->11.1) Make sure that the Zybo is connected to the host PC via the **UART** USB Port and that JP5 is set to JTAG. To program the FPGA, on the top toolbar, click the {{:genesys2:programfpga.jpg?nolink|}} **Program FPGA** button.+>11.1) Make sure that the Arty-Z7 is connected to the host PC via the **UART** USB Port and that JP4 is set to JTAG. To program the FPGA, on the top toolbar, click the {{:genesys2:programfpga.jpg?nolink|}} **Program FPGA** button.
  
->{{:learn:programmable-logic:tutorials:zybo-getting-started-with-zynq-server:echo_server_zynq_9.jpg?direct&600|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_36.jpg?800|}}
  
 >11.2) Save the project.  The project will automatically build. >11.2) Save the project.  The project will automatically build.
  
->11.3) Right click the **getting_started_with_ZYBO** directory and select run as -> Launch on Hardware(System Debugger).+>11.3) Right click the **Getting_started_with_zynq** directory and select run as -> Launch on Hardware(System Debugger).
  
->{{:learn:programmable-logic:tutorials:zybo-getting-started-with-zynq-server:echo_server_zynq_13.jpg?direct&600|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_33.jpg?800|}}
  
->11.4) The demo will be running on the ZYBO. Try playing around with the 4 switches (labeled SW0-SW3). Doing so should light its respective LED. Also over the serial port, pressing each button (labeled BTN0-BTN3) will produce the message "button x pressed".+>11.4) The demo will be running on the Arty-Z7. Try playing around with the (labeled BTN0-BTN3). Pressing each button should light its respective LED. Also over the serial port, the 2 switches (labeled SW0-SW1) will produce the message "switch x on" or "both switches on".
  
 >11.5) Tera Term or any serial terminal will work as a Console for displaying the output of the BTN's. >11.5) Tera Term or any serial terminal will work as a Console for displaying the output of the BTN's.
Line 316: Line 328:
 > Set up the terminal as: > Set up the terminal as:
  
->{{:learn:programmable-logic:tutorials:zybo-getting-started-with-zynq-server:echo_server_zynq_10.jpg?direct&600|}}+>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_32.jpg?800|}} 
 + 
 +>You should see something like this on the terminal depending on what you do with the switches. 
 +>{{:learn:programmable-logic:tutorials:arty-z7-getting-started-with-zynq:arty-z7-getting_started_34.jpg?800|}}
  
 ----- -----
  
-{{tag>learn programmable-logic project arty-z7}}+/*{{tag>learn programmable-logic tutorial software vivado arty-z7  }}*/