「正点原子FPGA连载」第三章AXI GPIO控制LED实验( 二 )


图 3.3.5 打开Block Design
因为本次实验我们是要通过GPIO控制LED流水灯 , 因此我们需要添加AXI GPIO IP核 。 点击Diagram界面的“+”按钮 , 并在弹出的搜索框内输入“gpio” , 双击AXI GPIO选项 , 如图 3.3.6所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.3.6 添加AXI GPIO
双击AXI GPIO IP核进入配置页面 , 将AXI GPIO位宽配置为4 , 用于控制开发板上的四个LED灯 , 点击“OK”完成配置 , 如图 3.3.7所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.3.7 AXI GPIO配置
All Inputs:将GPIO通道位设置为输入模式 。 All Outputs:将GPIO通道位设置为输出模式 。 这两项默认情况下是不勾选的 , 可由程序动态地将GPIO通道位配置成输入或者输出接口 。 Default Outputs Value:设置GPIO通道所有启用位的默认值:默认情况下值为0x0 。 Default Tri State Value:设置GPIO通道位默认情况下的输入模式或输出模式:值为0xFFFFFFFF时 , 表明GPIO所有通道位默认情况下为输入模式 , 如箭头1所指示 。 另外勾选箭头2所指示的选项可以使能GPIO通道2 。 该通道独立可以配置位宽 , GPIO2的配置方法与GPIO完全相同 。 如使用了该通道 , AXI GPIO IP核就会生成一个GPIO2接口 , 可以连接独立的外设 。 该选项默认没有勾选 , 即该IP工作在单通道模式下 。
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.3.8 连接AXI GPIO
自动连线:点击图 3.3.8红色箭头1所示按钮“Run Connection Automation” , 在弹出的界面在左侧勾选“All Automation” , 点击“OK”工具会自动连接AXI GPIO IP核的GPIO接口和S_AXI接口 。 连接完成后 , 在Diagram窗口空白处右击 , 然后选择“Regenerate Layout”对设计进行重新布局 , 并将“gpio_rtl_0”接口改为“LED” , 最终的界面如图 3.3.9所示:
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.3.9 重新布局后的设计界面
到这里我们的Block Design就设计完成了 , 在Diagram窗口空白处右击 , 然后选择“Validate Design”验证设计 。 验证完成后弹出对话框提示“Validation Successful”表明设计无误 , 点击“OK”确认 。 最后按快捷键“Ctrl + S”保存设计 。 接下来在Source窗口中右键点击Block Design设计文件“system.bd” , 然后依次执行“Generate Output Products”和“Create HDL Wrapper” 。 接下来我们双击Source窗口下的“system_wrapper.xdc”文件夹 , 添加管脚约束文件 , 如图 3.3.10所示 。
「正点原子FPGA连载」第三章AXI GPIO控制LED实验文章插图
图 3.3.10 添加约束文件
添加管脚约束语句如下(可复制) , 然后“Ctrl+s”保存 。 (约束文件最后5行 , 本实验不要也可以 , 这些语句是用来压缩bit流文件和设置SPI位宽、时钟的约束语句 , 防止因文件过大而无法固化Flash 。 用户可根据需求自行决定是否需要这些语句)

  1. set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports sys_clk]
  2. set_property -dict {PACKAGE_PIN U2 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
  3. set_property -dict {PACKAGE_PIN U5 IOSTANDARD LVCMOS33} [get_ports UART_rxd]
  4. set_property -dict {PACKAGE_PIN T6 IOSTANDARD LVCMOS33} [get_ports UART_txd]
  5. set_property -dict {PACKAGE_PIN R2 IOSTANDARD LVCMOS33} [get_ports {LED_tri_io[0]}]


    推荐阅读