基于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代码目录
5)在block_design界面中,右键->Add Module...,添加uart_tx/uart_rx的模块
6)按照需求手动连线。可以添加一个ILA方便观测信号。
7)创建HDL Wrapper,并对各个block单独综合
跟zynq设计流程一样:在system.bd界面右键创建HDL Wrapper,Generate Ouput Products。选择Out of Context,这样可以对每个ip独立综合,以加快速度。
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
10)烧入zynq运行
11)运行效果
烧入后,自动打开ILA界面。打开串口助手,输入"hello",它会自动返回"hello"。另外,设置好ILA的trigger条件,它会自动捕捉到波形。目前的问题是,ILA的频率太高了,只能捕捉到一小段时间。需要将ILA的频率降下来,才能捕捉到整个uart通信的过程。在另一篇文章中,解决了这个问题,用的是VIO+divider产生可配置分频比的pulse_out给ILA提供时钟。