基于Block Design的纯FPGA设计 - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

1)准备代码

这里使用的是野火rs232的代码。它包括uart_tx/uart_rx两个模块,形成回环。

2)创建project

3)创建block design

4)在block design界面下导入rtl代码目录

image

5)在block_design界面中,右键->Add Module...,添加uart_tx/uart_rx的模块

image

6)按照需求手动连线。可以添加一个ILA方便观测信号。

7)创建HDL Wrapper,并对各个block单独综合

跟zynq设计流程一样:在system.bd界面右键创建HDL Wrapper,Generate Ouput Products。选择Out of Context,这样可以对每个ip独立综合,以加快速度。 image

8)分配引脚pin_local.xdc

create_clock -period 20.000 -name sys_clk [get_ports sys_clk]
set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN P14 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]

#set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS33} [get_ports uart_rx]
#set_property -dict {PACKAGE_PIN G15 IOSTANDARD LVCMOS33} [get_ports uart_tx]

#set_property -dict {PACKAGE_PIN M19 IOSTANDARD LVCMOS33} [get_ports {key_tri_io[0]}]
#set_property -dict {PACKAGE_PIN M20 IOSTANDARD LVCMOS33} [get_ports {key_tri_io[1]}]

set_property -dict {PACKAGE_PIN B20 IOSTANDARD LVCMOS33} [get_ports po_flag]
set_property -dict {PACKAGE_PIN D20 IOSTANDARD LVCMOS33} [get_ports uart_rx]
set_property -dict {PACKAGE_PIN H18 IOSTANDARD LVCMOS33} [get_ports uart_tx]
##set_property -dict {PACKAGE_PIN F20 IOSTANDARD LVCMOS33} [get_ports {iic_gpio[0]}]

9)直接创建bitstream。这样它会综合、实现、产生bitstream

image

10)烧入zynq运行

image

11)运行效果

烧入后,自动打开ILA界面。打开串口助手,输入"hello",它会自动返回"hello"。另外,设置好ILA的trigger条件,它会自动捕捉到波形。目前的问题是,ILA的频率太高了,只能捕捉到一小段时间。需要将ILA的频率降下来,才能捕捉到整个uart通信的过程。在另一篇文章中,解决了这个问题,用的是VIO+divider产生可配置分频比的pulse_out给ILA提供时钟。

image image