当前位置:   article > 正文

【zynq嵌入式设计一】系统搭建(1)_vivado zynq嵌入式开发

vivado zynq嵌入式开发

 整体硬件系统的搭建

1. 硬件部分

        1)主控选型

        使用的单片机为zynq7020,其vivado端配置选型如下:

        摄像头选型为淘宝双目ov5640模块,在预研阶段用现成的模块,后续可以进一步绘制pcb或者使用单独的更小巧的模块。

        主控zynq的引脚接线PCB如图所示:

(初稿,在后续会进行修改,具体引脚规则全部参照zynq的pin.xdc文件)

        2)摄像头模块选型(资料详见文档1)

        测试实验中用此款摄像头的单镜头测试。

        模块的io口配置如图:

         因为仅用一个摄像头,因此cmos1系列的io口需要占用,同时额外的io口可以用来进行其他的配置。

        在zynq上io口资源配置如下:

  1. set_property PACKAGE_PIN L16 [get_ports cmos_pclk]
  2. set_property PACKAGE_PIN H16 [get_ports cmos_href]
  3. set_property PACKAGE_PIN D18 [get_ports cmos_vsync]
  4. set_property PACKAGE_PIN H17 [get_ports cmos_rst_n]=
  5. set_property PACKAGE_PIN F17 [get_ports {cmos_data[9]}]
  6. set_property PACKAGE_PIN F16 [get_ports {cmos_data[8]}]
  7. set_property PACKAGE_PIN E18 [get_ports {cmos_data[7]}]
  8. set_property PACKAGE_PIN E19 [get_ports {cmos_data[6]}]
  9. set_property PACKAGE_PIN B19 [get_ports {cmos_data[5]}]
  10. set_property PACKAGE_PIN D19 [get_ports {cmos_data[4]}]
  11. set_property PACKAGE_PIN G15 [get_ports {cmos_data[3]}]
  12. set_property PACKAGE_PIN A20 [get_ports {cmos_data[2]}]
  13. set_property PACKAGE_PIN E17 [get_ports {cmos_data[1]}]
  14. set_property PACKAGE_PIN D20 [get_ports {cmos_data[0]}]
  15. set_property PACKAGE_PIN L17 [get_ports {emio_sccb_tri_io[0]}]
  16. set_property PACKAGE_PIN H15 [get_ports {emio_sccb_tri_io[1]}]

        在实际情况中,因为仅使用其中一部分引脚,保证不占用其他资源,将此处的排针引出单独的排针,进行数据的处理,引出同样2×20P的排针如下:

         3)俯仰角传感器选型(详见文档二)

        对于俯仰角的测量,选用霍尔元件进行测试。 

        每个霍尔元件需要5v供电,GND接地,同时需要一根信号线,八通道数据一共八根信号线与AD7606采集模块的八根信号线相连即可。

       4)采集模块选型(详见文档三)

        对于俯仰角信号需要用霍尔传感器进行测试,霍尔传感器为模拟信号,因此需要通过AD芯片进行数据的采集,此处主要使用AD7606芯片,芯片引脚配置如下:

  1. set_property PACKAGE_PIN N17 [get_ports {ad_os[1]}]
  2. set_property PACKAGE_PIN P18 [get_ports {ad_os[0]}]
  3. set_property PACKAGE_PIN R16 [get_ports ad_range]
  4. set_property PACKAGE_PIN T16 [get_ports ad_convstab]
  5. set_property PACKAGE_PIN U17 [get_ports ad_cvb]
  6. set_property PACKAGE_PIN R17 [get_ports {ad_os[2]}]
  7. set_property PACKAGE_PIN W18 [get_ports ad_rd]
  8. set_property PACKAGE_PIN W19 [get_ports ad_reset]
  9. set_property PACKAGE_PIN Y18 [get_ports ad_busy]
  10. set_property PACKAGE_PIN Y19 [get_ports ad_cs]
  11. set_property PACKAGE_PIN Y17 [get_ports ad_vio]
  12. set_property PACKAGE_PIN V18 [get_ports {ad_data[0]}]
  13. set_property PACKAGE_PIN V17 [get_ports {ad_data[1]}]
  14. set_property PACKAGE_PIN Y14 [get_ports {ad_data[2]}]
  15. set_property PACKAGE_PIN W14 [get_ports {ad_data[3]}]
  16. set_property PACKAGE_PIN W16 [get_ports {ad_data[4]}]
  17. set_property PACKAGE_PIN V16 [get_ports {ad_data[5]}]
  18. set_property PACKAGE_PIN R18 [get_ports {ad_data[6]}]
  19. set_property PACKAGE_PIN T17 [get_ports {ad_data[7]}]
  20. set_property PACKAGE_PIN W15 [get_ports {ad_data[8]}]
  21. set_property PACKAGE_PIN V15 [get_ports {ad_data[9]}]
  22. set_property PACKAGE_PIN R14 [get_ports {ad_data[10]}]
  23. set_property PACKAGE_PIN P14 [get_ports {ad_data[11]}]
  24. set_property PACKAGE_PIN U15 [get_ports {ad_data[12]}]
  25. set_property PACKAGE_PIN U14 [get_ports {ad_data[13]}]
  26. set_property PACKAGE_PIN V13 [get_ports {ad_data[14]}]
  27. set_property PACKAGE_PIN U13 [get_ports {ad_data[15]}]
  28. set_property IOSTANDARD LVCMOS33 [get_ports ad_convstab]
  29. set_property IOSTANDARD LVCMOS33 [get_ports ad_cvb]
  30. set_property IOSTANDARD LVCMOS33 [get_ports ad_vio]
  31. set_property IOSTANDARD LVCMOS33 [get_ports ad_range]
  32. set_property IOSTANDARD LVCMOS33 [get_ports ad_reset]
  33. set_property IOSTANDARD LVCMOS33 [get_ports ad_rd]
  34. set_property IOSTANDARD LVCMOS33 [get_ports ad_cs]
  35. set_property IOSTANDARD LVCMOS33 [get_ports ad_busy]
  36. set_property IOSTANDARD LVCMOS33 [get_ports {ad_os[*]}]
  37. set_property IOSTANDARD LVCMOS33 [get_ports {ad_data[*]}]
  38. set_property PACKAGE_PIN Y16 [get_ports first_data]
  39. set_property IOSTANDARD LVCMOS33 [get_ports first_data]

        5)SPI通信的加速度计模块(详见文档4)

        其主要普通八脚排针即可控制其信号,因此在PCB设计上仅需使用官方库中的八脚排针即可,要将其固定在中心位置,方便对初始数据的采集和存储。

        其与ZYNQ的接线方式详见下述代码。

        其中io0对应SDO;io1对应SDA;ss表示片选信号cs。

        其中ss1,ss2为CS片选信号的必备引脚,不配置程序会产生bug,因此配置对应引脚悬空,占用此两个引脚不进行其他的操作。

  1. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_io0_io]
  2. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_io1_io]
  3. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_sck_io]
  4. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_ss1_o]
  5. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_ss2_o]
  6. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_ss_io]
  7. set_property PACKAGE_PIN W13 [get_ports SPI_0_sck_io]
  8. set_property PACKAGE_PIN T15 [get_ports SPI_0_ss_io]
  9. set_property PACKAGE_PIN T10 [get_ports SPI_0_ss1_o]
  10. set_property PACKAGE_PIN T11 [get_ports SPI_0_ss2_o]
  11. set_property PACKAGE_PIN U12 [get_ports SPI_0_io0_io]
  12. set_property PACKAGE_PIN V12 [get_ports SPI_0_io1_io]

        6)IMU模块

        IMU模块的数据主要通过PS端的串口进行通信,因此占用引脚一共四个。

        对应引脚为:

  1. set_property PACKAGE_PIN T12 [get_ports UART_1_rxd]
  2. set_property PACKAGE_PIN T14 [get_ports UART_1_txd]
  3. set_property IOSTANDARD LVCMOS33 [get_ports UART_1_rxd]
  4. set_property IOSTANDARD LVCMOS33 [get_ports UART_1_txd]

        应该预留VCC和GND引脚负责给设备供电。

        7)磁力计传感器

        磁力计传感器模块还在测试中,在后续将配置其储存引脚,将在下一篇博客中记录。

以下是整体的xdc文件:

  1. set_property PACKAGE_PIN L16 [get_ports cmos_pclk]
  2. set_property PACKAGE_PIN H16 [get_ports cmos_href]
  3. set_property PACKAGE_PIN D18 [get_ports cmos_vsync]
  4. set_property PACKAGE_PIN H17 [get_ports cmos_rst_n]
  5. set_property PACKAGE_PIN F17 [get_ports {cmos_data[9]}]
  6. set_property PACKAGE_PIN F16 [get_ports {cmos_data[8]}]
  7. set_property PACKAGE_PIN E18 [get_ports {cmos_data[7]}]
  8. set_property PACKAGE_PIN E19 [get_ports {cmos_data[6]}]
  9. set_property PACKAGE_PIN B19 [get_ports {cmos_data[5]}]
  10. set_property PACKAGE_PIN D19 [get_ports {cmos_data[4]}]
  11. set_property PACKAGE_PIN G15 [get_ports {cmos_data[3]}]
  12. set_property PACKAGE_PIN A20 [get_ports {cmos_data[2]}]
  13. set_property PACKAGE_PIN E17 [get_ports {cmos_data[1]}]
  14. set_property PACKAGE_PIN D20 [get_ports {cmos_data[0]}]
  15. set_property IOSTANDARD LVCMOS33 [get_ports cmos_rst_n]
  16. set_property IOSTANDARD LVCMOS33 [get_ports cmos_pclk]
  17. set_property IOSTANDARD LVCMOS33 [get_ports cmos_vsync]
  18. set_property IOSTANDARD LVCMOS33 [get_ports cmos_href]
  19. set_property IOSTANDARD LVCMOS33 [get_ports {cmos_data[*]}]
  20. set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets cmos_pclk_IBUF_BUFG]
  21. set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets cmos_pclk_IBUF]
  22. set_property PACKAGE_PIN U18 [get_ports hdmi_tx_clk_p]
  23. set_property PACKAGE_PIN V20 [get_ports hdmi_tx_chn_b_p]
  24. set_property PACKAGE_PIN T20 [get_ports hdmi_tx_chn_g_p]
  25. set_property PACKAGE_PIN N20 [get_ports hdmi_tx_chn_r_p]
  26. set_property IOSTANDARD TMDS_33 [get_ports hdmi_tx_chn_r_p]
  27. set_property IOSTANDARD TMDS_33 [get_ports hdmi_tx_chn_g_p]
  28. set_property IOSTANDARD TMDS_33 [get_ports hdmi_tx_chn_b_p]
  29. set_property IOSTANDARD TMDS_33 [get_ports hdmi_tx_clk_p]
  30. set_property IOSTANDARD LVCMOS33 [get_ports {emio_sccb_tri_io[1]}]
  31. set_property IOSTANDARD LVCMOS33 [get_ports {emio_sccb_tri_io[0]}]
  32. set_property PACKAGE_PIN L17 [get_ports {emio_sccb_tri_io[0]}]
  33. set_property PACKAGE_PIN H15 [get_ports {emio_sccb_tri_io[1]}]
  34. #################### AD7606 on Z7_Lite JP1 ####################
  35. set_property PACKAGE_PIN N17 [get_ports {ad_os[1]}]
  36. set_property PACKAGE_PIN P18 [get_ports {ad_os[0]}]
  37. set_property PACKAGE_PIN R16 [get_ports ad_range]
  38. set_property PACKAGE_PIN T16 [get_ports ad_convstab]
  39. set_property PACKAGE_PIN U17 [get_ports ad_cvb]
  40. set_property PACKAGE_PIN R17 [get_ports {ad_os[2]}]
  41. set_property PACKAGE_PIN W18 [get_ports ad_rd]
  42. set_property PACKAGE_PIN W19 [get_ports ad_reset]
  43. set_property PACKAGE_PIN Y18 [get_ports ad_busy]
  44. set_property PACKAGE_PIN Y19 [get_ports ad_cs]
  45. set_property PACKAGE_PIN Y17 [get_ports ad_vio]
  46. set_property PACKAGE_PIN V18 [get_ports {ad_data[0]}]
  47. set_property PACKAGE_PIN V17 [get_ports {ad_data[1]}]
  48. set_property PACKAGE_PIN Y14 [get_ports {ad_data[2]}]
  49. set_property PACKAGE_PIN W14 [get_ports {ad_data[3]}]
  50. set_property PACKAGE_PIN W16 [get_ports {ad_data[4]}]
  51. set_property PACKAGE_PIN V16 [get_ports {ad_data[5]}]
  52. set_property PACKAGE_PIN R18 [get_ports {ad_data[6]}]
  53. set_property PACKAGE_PIN T17 [get_ports {ad_data[7]}]
  54. set_property PACKAGE_PIN W15 [get_ports {ad_data[8]}]
  55. set_property PACKAGE_PIN V15 [get_ports {ad_data[9]}]
  56. set_property PACKAGE_PIN R14 [get_ports {ad_data[10]}]
  57. set_property PACKAGE_PIN P14 [get_ports {ad_data[11]}]
  58. set_property PACKAGE_PIN U15 [get_ports {ad_data[12]}]
  59. set_property PACKAGE_PIN U14 [get_ports {ad_data[13]}]
  60. set_property PACKAGE_PIN V13 [get_ports {ad_data[14]}]
  61. set_property PACKAGE_PIN U13 [get_ports {ad_data[15]}]
  62. set_property IOSTANDARD LVCMOS33 [get_ports ad_convstab]
  63. set_property IOSTANDARD LVCMOS33 [get_ports ad_cvb]
  64. set_property IOSTANDARD LVCMOS33 [get_ports ad_vio]
  65. set_property IOSTANDARD LVCMOS33 [get_ports ad_range]
  66. set_property IOSTANDARD LVCMOS33 [get_ports ad_reset]
  67. set_property IOSTANDARD LVCMOS33 [get_ports ad_rd]
  68. set_property IOSTANDARD LVCMOS33 [get_ports ad_cs]
  69. set_property IOSTANDARD LVCMOS33 [get_ports ad_busy]
  70. set_property IOSTANDARD LVCMOS33 [get_ports {ad_os[*]}]
  71. set_property IOSTANDARD LVCMOS33 [get_ports {ad_data[*]}]
  72. #set_property PACKAGE_PIN P16 [get_ports key_init]
  73. #set_property IOSTANDARD LVCMOS33 [get_ports key_init]
  74. set_property PACKAGE_PIN Y16 [get_ports first_data]
  75. set_property IOSTANDARD LVCMOS33 [get_ports first_data]
  76. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_io0_io]
  77. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_io1_io]
  78. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_sck_io]
  79. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_ss1_o]
  80. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_ss2_o]
  81. set_property IOSTANDARD LVCMOS33 [get_ports SPI_0_ss_io]
  82. set_property PACKAGE_PIN W13 [get_ports SPI_0_sck_io]
  83. set_property PACKAGE_PIN T15 [get_ports SPI_0_ss_io]
  84. set_property PACKAGE_PIN T10 [get_ports SPI_0_ss1_o]
  85. set_property PACKAGE_PIN T11 [get_ports SPI_0_ss2_o]
  86. set_property PACKAGE_PIN U12 [get_ports SPI_0_io0_io]
  87. set_property PACKAGE_PIN V12 [get_ports SPI_0_io1_io]
  88. set_property PACKAGE_PIN T12 [get_ports UART_1_rxd]
  89. set_property PACKAGE_PIN T14 [get_ports UART_1_txd]
  90. set_property IOSTANDARD LVCMOS33 [get_ports UART_1_rxd]
  91. set_property IOSTANDARD LVCMOS33 [get_ports UART_1_txd]
  92. set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub]
  93. set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]
  94. set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]
  95. connect_debug_port dbg_hub/clk [get_nets clk]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/604126
推荐阅读
相关标签
  

闽ICP备14008679号