From faae3829556e7d801b73d890738cfa37960489d9 Mon Sep 17 00:00:00 2001 From: Miaow <3703781@qq.com> Date: Sat, 29 Apr 2023 02:07:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor(pl,drv,doc,scr):=20=E8=A1=A5=E5=85=85p?= =?UTF-8?q?l=E7=AB=AF=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 添加pl端vivado工程生成脚本和源码 2. pl端设计删除本项目无关的fifo和valve interfaces模块 3. 系统部署脚本中删除fifo相关内容 4. 删除linux下的fifo驱动 5. 修改与上述内容有关的文档 BREAKING CHANGE: fifo有关功能和寄存器不再有效 Co-authored-by: lyz <1942503466@qq.com> --- README.md | 4 +- doc/develop_and_deploy.md | 100 +- .../system_arch.jpg | Bin 264014 -> 0 bytes .../system_arch.svg | 1 + doc/hardware_description.md | 39 +- doc/pl_reference_mannual.assets/blocks.pptx | Bin 47310 -> 43480 bytes .../encoder_regs.svg | 2 +- doc/pl_reference_mannual.assets/fifo_cr.png | Bin 5379 -> 0 bytes doc/pl_reference_mannual.assets/fifo_datx.png | Bin 6836 -> 0 bytes doc/pl_reference_mannual.assets/fifo_ecr.png | Bin 12254 -> 0 bytes doc/pl_reference_mannual.assets/fifo_regs.png | Bin 106008 -> 0 bytes doc/pl_reference_mannual.assets/fifo_sr.png | Bin 6696 -> 0 bytes doc/pl_reference_mannual.assets/regs.xlsx | Bin 29949 -> 20822 bytes .../system_arch.jpg | Bin 264014 -> 0 bytes .../system_arch.svg | 1 + doc/pl_reference_mannual.md | 95 +- doc/version | 2 +- hardware/pl_platform/README.md | 1 - hardware/pl_platform/bd/system.tcl | 648 ++++++++++ hardware/pl_platform/cstr/lower_machine.xdc | 30 + .../.Xil/.ip_encoder_0.xcix.lock | 0 .../ip_repo/ip_encoder_1.0/bd/bd.tcl | 86 ++ .../ip_repo/ip_encoder_1.0/component.xml | 1105 +++++++++++++++++ .../ip_encoder_v1_0/data/ip_encoder.mdd | 10 + .../ip_encoder_v1_0/data/ip_encoder.tcl | 5 + .../drivers/ip_encoder_v1_0/src/Makefile | 26 + .../drivers/ip_encoder_v1_0/src/ip_encoder.c | 6 + .../drivers/ip_encoder_v1_0/src/ip_encoder.h | 79 ++ .../ip_encoder_v1_0/src/ip_encoder_selftest.c | 60 + .../example_designs/bfm_design/design.tcl | 88 ++ .../bfm_design/ip_encoder_v1_0_tb.sv | 197 +++ .../debug_hw_design/design.tcl | 118 ++ .../ip_encoder_v1_0_hw_test.tcl | 45 + .../ip_encoder_1.0/hdl/ip_encoder_v1_0.v | 102 ++ .../hdl/ip_encoder_v1_0_S00_AXI.v | 482 +++++++ .../ip_repo/ip_encoder_1.0/ip_encoder_0.xcix | Bin 0 -> 241 bytes .../ip_repo/ip_encoder_1.0/src/encoder.v | 226 ++++ .../ip_encoder_1.0/xgui/ip_encoder_v1_0.tcl | 56 + .../ip_encoder_1.0/xgui/ip_encoder_v1_1.tcl | 53 + .../pl_platform/ip_repo/ip_fan_1.0/bd/bd.tcl | 86 ++ .../ip_repo/ip_fan_1.0/component.xml | 993 +++++++++++++++ .../drivers/ip_fan_v1_0/data/ip_fan.mdd | 10 + .../drivers/ip_fan_v1_0/data/ip_fan.tcl | 5 + .../drivers/ip_fan_v1_0/src/Makefile | 26 + .../drivers/ip_fan_v1_0/src/ip_fan.c | 6 + .../drivers/ip_fan_v1_0/src/ip_fan.h | 79 ++ .../drivers/ip_fan_v1_0/src/ip_fan_selftest.c | 60 + .../example_designs/bfm_design/design.tcl | 88 ++ .../bfm_design/ip_fan_v1_0_tb.sv | 197 +++ .../debug_hw_design/design.tcl | 118 ++ .../debug_hw_design/ip_fan_v1_0_hw_test.tcl | 45 + .../ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0.v | 82 ++ .../ip_fan_1.0/hdl/ip_fan_v1_0_S00_AXI.v | 457 +++++++ .../ip_repo/ip_fan_1.0/ip_fan_0.xcix | Bin 0 -> 239 bytes .../ip_repo/ip_fan_1.0/xgui/ip_fan_v1_0.tcl | 81 ++ hardware/pl_platform/lower_machine.tcl | 568 +++++++++ hardware/pl_platform/version | 2 +- script/loadfifo.sh | 3 - script/version | 2 +- source/linux_driver/fifo.c | 354 ------ source/linux_driver/version | 2 +- 61 files changed, 6395 insertions(+), 536 deletions(-) delete mode 100644 doc/hardware_description.assets/system_arch.jpg create mode 100644 doc/hardware_description.assets/system_arch.svg delete mode 100644 doc/pl_reference_mannual.assets/fifo_cr.png delete mode 100644 doc/pl_reference_mannual.assets/fifo_datx.png delete mode 100644 doc/pl_reference_mannual.assets/fifo_ecr.png delete mode 100644 doc/pl_reference_mannual.assets/fifo_regs.png delete mode 100644 doc/pl_reference_mannual.assets/fifo_sr.png delete mode 100644 doc/pl_reference_mannual.assets/system_arch.jpg create mode 100644 doc/pl_reference_mannual.assets/system_arch.svg delete mode 100644 hardware/pl_platform/README.md create mode 100644 hardware/pl_platform/bd/system.tcl create mode 100644 hardware/pl_platform/cstr/lower_machine.xdc create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/.Xil/.ip_encoder_0.xcix.lock create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/bd/bd.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/component.xml create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.mdd create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/Makefile create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.c create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.h create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder_selftest.c create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/design.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/ip_encoder_v1_0_tb.sv create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/design.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/ip_encoder_v1_0_hw_test.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0.v create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0_S00_AXI.v create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/ip_encoder_0.xcix create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/src/encoder.v create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_0.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_1.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/bd/bd.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/component.xml create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.mdd create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/Makefile create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.c create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.h create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan_selftest.c create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/design.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/ip_fan_v1_0_tb.sv create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/design.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/ip_fan_v1_0_hw_test.tcl create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0.v create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0_S00_AXI.v create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/ip_fan_0.xcix create mode 100644 hardware/pl_platform/ip_repo/ip_fan_1.0/xgui/ip_fan_v1_0.tcl create mode 100644 hardware/pl_platform/lower_machine.tcl delete mode 100644 script/loadfifo.sh delete mode 100644 source/linux_driver/fifo.c diff --git a/README.md b/README.md index 64e3f9a..24f363a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ IO扩展版提供了 - 6个编码器或IO输入,本次项目为1个编码器输入、1个物体传感器输入,其余冗余 - 8个阀板接口,本次项目没有用到 -接线时,12V电源连接到IO扩展板的电源接口,阀板从左到右应连接在阀板接口1~6上,相机线应连接相机触发接口`TRIG1`和对应的`GND`接口,编码器线应连接在编码器输入接口`E1`和对应的`GND`接口。注意底板不连接任何外部电源。 +接线时,12V电源连接到IO扩展板的电源接口,相机线应连接相机触发接口`TRIG1`、`TRIG2`和对应的`GND`接口,编码器线应连接在编码器输入接口`E1`和对应的`GND`接口,物体传感器应连接输入接口`E3`和对应的`GND`接口。注意底板不连接任何外部电源。 开发和部署说明见[doc/develop_and_deploy.md](doc/develop_and_deploy.md) @@ -70,7 +70,7 @@ b分支编号-p生产环境项目名-t分选对象[-其他特点1[-其他特点2 b分支编号-d文档版本-hPCB设计版本-lFPGA设计版本-p协议版本-s脚本版本-aAPP代码版本-i驱动版本-c系统编译配置版本-e设备树版本 ``` -分支编号和分支命名中编号一致。各部分版本应在相应目录下创建文件注明,比如`2.1`版本的PCB设计:PCB工程目录中建立`version`文本文件,内容为文本`2.1`。对于涉及整体设计的大改动版本号加`1`,其余改动版本号加`0.1`。每个分支的版本各自独立,新分支的版本从`1.0`起计算 +分支编号和分支命名中编号一致。各部分版本应在相应目录下创建文件注明,比如`2.1`版本的PCB设计:PCB工程目录中建立`version`文本文件,内容为文本`2.1`。对于涉及整体设计的大改动版本号加`1`,其余改动版本号加`0.1`。每个分支的版本各自独立,新分支的版本从`1.0`起计算,也可从建立分支处原有版本起计算 ## 作者 diff --git a/doc/develop_and_deploy.md b/doc/develop_and_deploy.md index 9afde2c..afdcf4d 100644 --- a/doc/develop_and_deploy.md +++ b/doc/develop_and_deploy.md @@ -2,11 +2,26 @@ ## 开发 -本次开发基于zynq xc7z010-1clg400芯片,因此FPGA设计软件为Vitis中包含的[Vivado 2022.1](https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/vitis.html),Linux编译工具为[petalinux 2022.2](https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/embedded-design-tools.html),Linux应用程序编译工具为linaro的[arm-linux-gnueabihf-gcc 12.2.1](https://snapshots.linaro.org/gnu-toolchain/12.2-2023.04-1/)。 +本次开发基于zynq `xc7z010-1clg400`芯片,因此FPGA设计软件为Vitis中包含的[Vivado 2022.1](https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/vitis.html),Linux编译工具为[petalinux 2022.2](https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/embedded-design-tools.html),Linux应用程序编译工具为linaro的[arm-linux-gnueabihf-gcc 12.2.1](https://snapshots.linaro.org/gnu-toolchain/12.2-2023.04-1/)。 ### 生成硬件描述文件 -见[doc/hardware_description.md](hardware_description.md) +1. 下载[hardware/pl_platform](../hardware/pl_platform)文件夹到家目录,这里假设用户为miaow
在vivado 2022.1中执行tcl脚本,复原工程 + ```tcl + source /home/miaow/pl_platform/lower_machine.tcl + ``` + +2. 重新生成`block design`的`output products` + +3. 生成`bitstream`后创建硬件描述文件,命令为 + ```tcl + # 下面命令中32为计算机逻辑内核数,按实际设定 + launch_runs impl_1 -to_step write_bitstream -jobs 32 + + # 生成硬件描述文件 + write_hw_platform -fixed -include_bit -force -file /home/miaow/zynq/vivado_git/lower_machine/system_wrapper.xsa + ``` + 硬件描述文件为`system_wrapper.xsa` ### 创建PETALINUX工程 @@ -17,7 +32,7 @@ $ petalinux-create -t project --template zynq -n ps-linux ``` -2. 上传硬件描述文件[source/petalinux_hwdescription/system_wrapper.xsa](source/petalinux_hwdescription/system_wrapper.xsa)到`ps-linux`目录中并config +2. 上传release中的硬件描述文件`system_wrapper.xsa`到`ps-linux`目录中并config ```shell system_wrapper.xsa上传到~/ps-linux @@ -53,17 +68,15 @@ # └─Copy final images to tftpboot (不选) ``` -4. 创建两个模块 +4. 创建一个模块 ```shell - $ petalinux-create -t modules --name fifo --enable $ petalinux-create -t modules --name encoder --enable ``` -1. 分别上传驱动代码[source/linux_driver/fifo.c](../source/linux_driver/fifo.c)和[source/linux_driver/encoder.c](../source/linux_driver/encoder.c)到下面的目录中 +1. 上传驱动代码[source/linux_driver/encoder.c](../source/linux_driver/encoder.c)到下面的目录中 ```shell - ~/ps-linux/project-spec/meta-user/recipes-modules/fifo/files ~/ps-linux/project-spec/meta-user/recipes-modules/encoder/files ``` @@ -75,7 +88,7 @@ 上传source/petalinux_devicetree/system-user.dtsi ``` -2. 配置kernel,使用命令`petalinux-config -c kernel`,按下面提示或[source/petalinux_config/kernel.cfg](../source/petalinux_config/kernel.cfg)配置 +2. 配置`kernel`,使用命令`petalinux-config -c kernel`,按下面提示或[source/petalinux_config/kernel.cfg](../source/petalinux_config/kernel.cfg)配置 ```shell # File systems @@ -90,7 +103,7 @@ # └─OTG support (勾选为星号) ``` -3. 配置rootfs,使用命令`petalinux-config -c rootfs`,按下面提示或[source/petalinux_config/rootfs_config](../source/petalinux_config/rootfs_config)配置 +3. 配置`rootfs`,使用命令`petalinux-config -c rootfs`,按下面提示或[source/petalinux_config/rootfs_config](../source/petalinux_config/rootfs_config)配置 ```shell # Filesystem Packages @@ -190,18 +203,17 @@ # ├─imagefeature-package-management (勾选为星号) # modules # ├─encoder (不选) - # ├─fifo (不选) # PetaLinux RootFS Settings # ├─ADD_EXTRA_USERS (root:3703;petalinux:3703;) # ├─ADD_USERS_TO_GROUPS (petalinux:audio,video;) # └─ADD_USERS_TO_SUDOERS (petalinux) ``` -8. 替换`~/ps-linux/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h`为[platform-top.h](./petalinux_config/platform-top.h),用于添加u-boot所需的环境变量,实现动态加载比特流文件 +8. 替换`~/ps-linux/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h`为[platform-top.h](../source/petalinux_config/platform-top.h),用于添加u-boot所需的环境变量,实现动态加载比特流文件 ### 编译系统 -1. 编译工程,使用命令`petalinux-build`。编译完成,在当前工程目录下生成images文件夹,该命令将生成设备树文件、FSBL文件、U-Boot文件,Linux Kernel文件和rootfs文件镜像 +1. 编译工程,使用命令`petalinux-build`。编译完成,在当前工程目录下生成`images`文件夹,该命令将生成设备树文件、`FSBL`文件、`U-Boot`文件,`Linux Kernel`文件和`rootfs`文件镜像 2. 制作BOOT.BIN启动文件,具体命令如下: @@ -213,14 +225,13 @@ ### 编译驱动 -依次运行如下命令,单独编译3个驱动程序 +依次运行如下命令,编译驱动程序 ```shell -$ petalinux-build -c fifo $ petalinux-build -c encoder ``` -编译后的模块文件为` ps-linux/build/tmp/sysroots-components/zynq_generic/fifo/lib/modules/5.15.36-xilinx-v2022.2/extra/fifo.ko`和`ps-linux/build/tmp/sysroots-components/zynq_generic/encoder/lib/modules/5.15.36-xilinx-v2022.2/extra/encoder.ko` +编译后的模块文件为`ps-linux/build/tmp/sysroots-components/zynq_generic/encoder/lib/modules/5.15.36-xilinx-v2022.2/extra/encoder.ko` ### 编译应用程序 @@ -241,8 +252,6 @@ $ make CROSS_COMPILE=交叉编译工具链前缀 ### 修改文件系统 -> 注意:github的release中包含了修改完成的rootfs.tar.gz,因此无需重复本节的步骤,本节仅用作记录修改步骤 - 1. 给SD卡创建DOS分区表,然后分2个区并创建文件系统,细节如下表: | 扇区 | 大小 | 分区类型 | 文件系统 | 卷标 | @@ -250,15 +259,17 @@ $ make CROSS_COMPILE=交叉编译工具链前缀 | 2048~x扇区 | 100M | C W95 FAT32 (LBA) | FAT32 | boot | | x扇区~最后扇区 | ≈SD卡大小-100M | 83 Linux | ext4 | rootfs | -2. 将打包和编译得到的BOOT.BIN、boot.scr、system.bit和image.ub复制到boot分区;将rootfs.tar.gz解压到rootfs分区 +2. 将打包和编译得到的`BOOT.BIN`、`boot.scr`、`system.bit`和`image.ub`复制到`boot`分区;将`rootfs.tar.gz`解压到`rootfs`分区 - > 注意: 这里的system.bit为比特流文件,可以由petalinux从XSA文件中提取,也可以是vivado生成的,注意命名为system.bit。 + 这里的`system.bit`为比特流文件,可以由`petalinux`从`XSA`文件中提取,也可以是`vivado`生成的,注意重命名为`system.bit`。 3. 拨码开关拨到SD卡启动,插入SD卡到XME0724底板上,上电启动。 4. 终端软件连接底板上的串口,波特率115200,8位,1停止位,无校验 -5. 修改/etc/shadow文件,将root用户的密码删除,切换到root用户并设定密码为3703,具体命令如下: +> 注意:github的release中包含了修改完成的`rootfs.tar.gz`,因此无需重复下面的步骤,这里仅用作记录修改步骤 + +5. 修改`/etc/shadow`文件,将`root`用户的密码删除,切换到`root`用户并设定密码为`3703`,具体命令如下: ```shell $ sudo sed "1c root::15069:0:99999:7:::" /etc/shadow @@ -268,7 +279,7 @@ $ make CROSS_COMPILE=交叉编译工具链前缀 ``` -6. 配置网络和ssh服务,用root登录: +6. 配置网络和`ssh`服务,用`root`登录: ```shell $ vi /etc/network/interfaces @@ -293,17 +304,14 @@ $ make CROSS_COMPILE=交叉编译工具链前缀 $ sshpass -p "3703" ssh root@192.168.10.10 -p 22 ``` -8. 安装编译得到的驱动文件fifo.ko和encode.ko,并设置自动加载,对应自启脚本可以如下方式写入,也可以直接上传[script/loadfifo.sh](../script/loadfifo.sh)和[script/loadencoder.sh](../script/loadencoder.sh),ssh方式,root登录: +8. 安装编译得到的驱动文件`encode.ko`,并设置自动加载,对应自启脚本可以如下方式写入,也可以直接上传[script/loadencoder.sh](../script/loadencoder.sh),ssh方式,`root`登录: ```shell - 上传fifo.ko、encoder.ko到/lib/modules/[内核版本]/kernel/drivers/ + 上传encoder.ko到/lib/modules/[内核版本]/kernel/drivers/ $ cd /lib/modules/[内核版本]; depmod $ set +H - $ echo -e "#!/bin/sh\nmodprobe fifo" > /etc/init.d/loadfifo.sh $ echo -e "#!/bin/sh\nmodprobe encoder" > /etc/init.d/loadencoder.sh - $ chmod 755 /etc/init.d/loadfifo.sh /etc/init.d/loadencoder.sh $ cd /etc/rc5.d - $ ln -s ../init.d/loadfifo.sh S20loadfifo.sh $ ln -s ../init.d/loadencoder.sh S20loadencoder.sh ``` @@ -322,35 +330,35 @@ $ make CROSS_COMPILE=交叉编译工具链前缀 $ ln -s ../init.d/target.sh S99target.sh ``` -10. \[可选\] 设置.bashrc,修改PS1,对应脚本见[script/.profile](../script/.profile)和[script/.bashrc](../script/.bashrc) +10. \[可选\] 设置`.bashrc`,修改`PS1`,对应脚本见[script/.profile](../script/.profile)和[script/.bashrc](../script/.bashrc) - ```shell - $ cd ~; rm .bashrc .profile - 上传.bashrc和.profile到/home/root - $ if [ ! -a /home/petalinux/.profile ]; then cp /home/root/.profile /home/petalinux/ fi - $ if [ ! -a /home/petalinux/.bashrc ]; then cp /home/root/.bashrc /home/petalinux/ & chown petalinux:petalinux -R /home/petalinux fi - $ source ~/.profile - ``` + ```shell + $ cd ~; rm .bashrc .profile + 上传.bashrc和.profile到/home/root + $ if [ ! -a /home/petalinux/.profile ]; then cp /home/ root/.profile /home/petalinux/ fi + $ if [ ! -a /home/petalinux/.bashrc ]; then cp /home/root/. bashrc /home/petalinux/ & chown petalinux:petalinux -R / home/petalinux fi + $ source ~/.profile + ``` -11. \[可选\] 安装ncurses-6.3和htop +11. \[可选\] 安装`ncurses-6.3`和`htop` - ```shell - $ cd ~; rz # 上传ncurses-6.3.tar.gz - $ tar xmzf /home/root/ncurses-6.3.tar.gz -C /usr/ - $ rz # 上传htop.tar.gz - $ tar xmzf /home/root/htop.tar.gz -C /usr/ - $ echo "export TERMINFO=/usr/share/terminfo" >> /etc/profile - $ reboot - ``` + ```shell + $ cd ~; rz # 上传ncurses-6.3.tar.gz + $ tar xmzf /home/root/ncurses-6.3.tar.gz -C /usr/ + $ rz # 上传htop.tar.gz + $ tar xmzf /home/root/htop.tar.gz -C /usr/ + $ echo "export TERMINFO=/usr/share/terminfo" >> /etc/profile + $ reboot + ``` ### 直接写入镜像 -强烈推荐的傻瓜式的方法,在windows上准备好正版[DiskGenius标准版或专业版](https://www.diskgenius.cn/),盗版有BUG,从release中下载sdimage.pmfx文件 +强烈推荐的傻瓜式的方法,在windows上准备好正版[DiskGenius标准版或专业版](https://www.diskgenius.cn/),盗版有概率写入错误数据,从release中下载`sdimage.pmfx`文件 1. 在windows上插入16G的TF卡 -2. 打开DiskGenius +2. 打开`DiskGenius` 3. 左侧栏选中TF卡,右键,从镜像文件还原磁盘 -4. 选sdimage.pmfx文件 +4. 选`sdimage.pmfx`文件 5. 点击开始 把TF卡插回板子,启动方式拨到SD卡启动,上电。要进入系统,参考修改文件系统章节的第7步。 diff --git a/doc/hardware_description.assets/system_arch.jpg b/doc/hardware_description.assets/system_arch.jpg deleted file mode 100644 index ca76e22ab77d3ee17d95ba8ed29473c41a36b65e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264014 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�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 diff --git a/doc/hardware_description.assets/system_arch.svg b/doc/hardware_description.assets/system_arch.svg new file mode 100644 index 0000000..ac15b3f --- /dev/null +++ b/doc/hardware_description.assets/system_arch.svg @@ -0,0 +1 @@ +DDRFIXED_IOip_encoder_0ip_encoder_v1.0 (Pre-Production)S00_AXIin_signalexrst_nout_signal_valve_posedgeout_signal_valveout_signal_camera_a_posedgeout_signal_camera_b_posedgeout_signal_camera_c_posedgeout_signal_camera_d_posedgeout_signal_camera_aout_signal_camera_bout_signal_camera_cout_signal_camera_ds00_axi_aclks00_axi_aresetnip_fan_0ip_fan_v1.0 (Pre-Production)S00_AXIfans00_axi_aclks00_axi_aresetnencoder_signalexrst_n_0fanout_signal_camera_aout_signal_camera_bout_signal_camera_cout_signal_camera_dprocessing_system7_0ZYNQ7 Processing SystemDDRFIXED_IOUSBIND_0M_AXI_GP0TTC0_WAVE0_OUTTTC0_WAVE1_OUTTTC0_WAVE2_OUTM_AXI_GP0_ACLKFCLK_CLK0FCLK_RESET0_Nps7_0_axi_periphAXI InterconnectS00_AXIM00_AXIM01_AXIM02_AXIACLKARESETNS00_ACLKS00_ARESETNM00_ACLKM00_ARESETNM01_ACLKM01_ARESETNM02_ACLKM02_ARESETNrst_ps7_0_200MProcessor System Resetslowest_sync_clkext_reset_inaux_reset_inmb_debug_sys_rstdcm_lockedmb_resetbus_struct_reset[0:0]peripheral_reset[0:0]interconnect_aresetn[0:0]peripheral_aresetn[0:0] \ No newline at end of file diff --git a/doc/hardware_description.md b/doc/hardware_description.md index ac8f19d..ebfef64 100644 --- a/doc/hardware_description.md +++ b/doc/hardware_description.md @@ -1,12 +1,12 @@ # 硬件平台 -PL端主要由4个外设组成,分别时**风扇控制器**(FAN),**编码和分频控制器**(ENCODER),**先入先出队列**(FIFO),**阀板控制器**(VALVE)。其中阀板控制器没有提供AXI接口,因此并没有映射寄存器,软件也无法进行控制。各个控制器的连接关系如下图所示。 +PL端主要由2个外设组成,分别时**风扇控制器**(FAN),**编码和分频控制器**(ENCODER),各个控制器的连接关系如下图所示。 -![2](hardware_description.assets/system_arch.jpg) +![2](hardware_description.assets/system_arch.svg) -由于开发板的PL端没有自带晶振,所以4个外设由统一的同步时钟驱动,时钟源来自PS端,为200MHz,软件不可修改。外部编码器信号输入**编码和分频控制器**,控制器根据软件设置的阀触发分频值和相机触发分频值对编码器信号进行分频,分频后的信号用于驱动喷阀动作和触发相机拍照。上位机的识别结果存储到**先入先出队列**中。 +由于开发板的PL端没有自带晶振,所以2个外设由统一的同步时钟驱动,时钟源来自PS端,为200MHz,软件不可修改。外部编码器信号和物体检测传感器信号输入**编码和分频控制器**,控制器根据软件设置的阀触发分频值和相机触发分频值对编码器信号进行分频,分频后的信号用于触发相机拍照。 -为同步触发相机和队列移出信号以及保持队列中数据的动态平衡,两个先入先出队列在相机触发同时输出一个数据,即**先入先出队列**的读信号和相机触发共用同一个信号。而由于电磁阀的物理特性导致电磁阀可能无法以触发相机的频率进行开关,因此**阀板控制器**对先入先出队列输出总线上的数据重采样,即按照**编码和分频控制器**输出的阀触发信号读入。两个先入先出队列移出的数据在**阀板控制器**中进行按位或运算,得到的数据转换为阀板协议,输出给阀板。**风扇控制器**用于驱动风扇的启停,给ZYNQ芯片进行降温,防止芯片过热导致工作中出现问题。由于风扇寿命短,因此目前采用散热片方案,风扇不开。 +**风扇控制器**用于驱动风扇的启停,给ZYNQ芯片进行降温,防止芯片过热导致工作中出现问题。由于风扇寿命短,因此目前采用散热片方案,风扇不开。 ## PS模块 @@ -37,37 +37,10 @@ encoder模块主要接口为in_signal、out_signal_camera_a_posedge、out_signal 1. in_signal接口与外部编码器相连,接收外部编码器信号 2. out_signal_camera_a到d最多课用于触发共4个相机 -3. out_signal_camera_posedge_a到d为上述信号的上升沿,其中out_signal_camera_posedge_a控制FIFO的读出 -4. out_signal_valve_posedge为out_signal_valve的上升沿,驱动**阀板控制器**动作 +3. out_signal_camera_posedge_a到d为上述信号的上升沿,固定不连接。 +4. out_signal_valve_posedge为out_signal_valve的上升沿,固定不连接。 5. exrst_n为可选的外部复位清零信号,可用于连接物体传感器,根据需要屏蔽相机触发输出 ENCODER模块输入输出频率的详细计算方式和寄存器说明见[doc/pl_reference_mannual.md](pl_reference_mannual.md)中的ENCODER控制器部分 -## FIFO模块 - -FIFO模块的主要接口为rd_en、dout[383:0]、empty、full、almost_full、almost_empty、data_count[11:0]、fifo_valid - -1. rd_en接收ENCODER模块传来的信号,控制模块内部FIFO按ENCODER模块所需频率进行读取和输出 -2. dout[383:0]为FIFO中读出数据,数据位宽为384bit -3. empty信号为1表示fifo中数据已经为空,无法输出有效数据,但输出寄存器仍然保持上次输出的值 - -FIFO模块寄存器说明见[doc/pl_reference_mannual.md](pl_reference_mannual.md)中的FIFO控制器部分 - -## FAN模块 - -fan模块接口fan输出为PWM波形,连接到外部的风扇驱动电路。 - -fan模块寄存器说明见[doc/pl_reference_mannual.md](pl_reference_mannual.md)中的FAN控制器部分 - -> Note:fan模块代码中设计了PWM调速功能,对于带程序的交流风扇,无法观察到调速现象。但正常的启停可以做到 - -## VALVE_INTERFACES模块 - -VALVE_INTERFACES模块的主要接口为total_valve_data[383:0]、empty、valve_en、sclk[7:0]、sen[7:0]、sdata[7:0]。VALVE_INTERFACES会将total_valve_data_a和total_valve_data_b两路数据进行或运算,得到同为384位的单路数据。 - -1. total_valve_data接收FIFO模块中读出的数据。 - -2. empty信号与两个FIFO模块的empty信号相连。检测到任意一个empty信号为高时,无论输入数据如何,只按协议输出全关给阀板。 -3. valve_en信号上升沿将total_valve_data按协议发送给阀板 -4. sclk[7:0]、sen[7:0]、sdata[7:0]连接到外部差分芯片,为最多8块阀板的时钟信号线、使能信号线以及数据信号线 diff --git a/doc/pl_reference_mannual.assets/blocks.pptx b/doc/pl_reference_mannual.assets/blocks.pptx index 608c0341f644b8aa830703101bc4a19580a979d6..552ce90e965d65cdb61eaa61bc0f62a1760c72bd 100644 GIT binary patch delta 14294 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 qpe)0#{P%ov&W7qg2~}sEva=(#4Wb-~2D~vQruW diff --git a/doc/pl_reference_mannual.assets/fifo_sr.png b/doc/pl_reference_mannual.assets/fifo_sr.png deleted file mode 100644 index 22499d78f28dacd477b187ca1f5174264a41532d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6696 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 G{`x<0`6JK( diff --git a/doc/pl_reference_mannual.assets/regs.xlsx b/doc/pl_reference_mannual.assets/regs.xlsx index 33a32055921015b12610981ccdc36c7e79031a50..c407676bae49e257516a9c5b47227099aada173d 100644 GIT binary patch delta 10886 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 wPi10Y5JdJ3!?EPx# diff --git a/doc/pl_reference_mannual.assets/system_arch.jpg b/doc/pl_reference_mannual.assets/system_arch.jpg deleted file mode 100644 index ca76e22ab77d3ee17d95ba8ed29473c41a36b65e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264014 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�?N9h4g@w}%<0gM`>b8EGH|5_k(e$gnTD9dhcUkc5bDbqvu4-c` zK{SN#()?e#Qt;Yj8wh9#Jp4=7yN;L!lT~DBY3sEI;fqJ@v``Nq2z2;};X8QuJvbIjHlPA+vO*(H(>5VwpB@5GCI=(| z3u&2Z;s!)UYF;EBdyb?b<1+H89l!1U)--PoL(zrqazVdfL0!Ou4l3eVWl*m4zpR(e&%3NaO5gqWnJ|I z4GeWp8%~+nIrt>)H0hQ5uBQ3prBhobUxO~%x31yafn=1Cl1u9mU8Cg=+3isI0Ym#A z1DXHQ{n;-X$BUMt4$wd1R3{!k~7GxgJxbak8Y8@3m&#pPbARvmn8pYaw~U*HUZ_J(vxH> z)C5WrfoQ%%>h#UJ%({aI9+isyOd7VKbxe{66(i&@&#kKje}XdfFWsXGK}y=$#aZEH z@~WE>0Pwe#iUZKK@MB|E?<1Q3{((p)pn{|cg zoiGKAE(Bo3>>f5!)FR?^*H^6~7{ax5tr53zYGJl3#9MpvQ0&up(dTdv46-UHu8kQk zPpKEo|FZFNVjOv~rxz#f%fhFVQ;u*k=1P8){UdVB>$Ync_Y#B(YYVwAic|V zJyR^wJu_z~o|yM-Nv*dzos{eG$b3{>{wPst?p%B8)r?wFy|`+1LRcgv^H?4ji6>ag zm0ur4UL0*m z(FThF^TAZHrZD_5{%l2Yf6+7rI5thj0(*99n`2|`jn^;TAs6=7hd3>Gwt2F!4lS8i zl+~Q5s4I3XOmZh>zgGL)FZAhKN%z5XY}}eu@(|)0MvV{XzpLRa!yB8MVp7ya{W{hUd>CKzpSA}{1v?j(eGTwYY~rHy1^X>y%Qtxbw4A!teW-sXXb$6uwJMTSADbO9M-#Z z3Y3#@M!|>RXD0CDeX#e%2;B4Ymj!dLB#kqCcB+X>d6gb>XWiEIsq=L4Tp=m{_y6ee z{C8CwV_z*sPC3z6zbP>*K-CIhqk!Hb$)dmhLo_##p%5>bb`lBs`9lNf;7_OJ0*45P zLW1Oyd@j}EW&S_<4|zqiC(f1`QV9!16!HH};Gq!hwm5U#iR9hU5Zn;FM6!rohFk(F z-M1()qXdiLr;}3BLBDMhJ`!7G?Q!+ji*7~k!DNeY{z-cv?9QPPsvUgHUXK1_SP6yS zL)iQmHeisMb#GryT|*Et`lx(_DP?3E5gMlUk@ z1k54?2Gw{4}J>Gwp}#p~r==D0>Cq4*Bj`C8gmXsrV~kP)c?V1?(1VJO+4 zMe9FinC(5@5_w@pu_i!?k3bC6&@uF5NCG$CVrNBIQ$Z}~RqbyX&n*P+x?&o);zog8 zb$7C2>s74qwWn-6pQZ0kPq**NP_DRywJEMciF%3Q>@WzPyJLVIQ*ly3wpI67-XfQU zUgGN_zU%d8t#*I!{Z5tnPKJ4kAwGY06GXW_7Xr9nAlI*9JW2Kep1|*~Kan;hB;_CL z>Heg_a-sk{k(7aZb*qTpqmQ_K%j_+HYYjxvGDnhN2B1+q=8mF{i~uACfW-mS&vPn? z5Flz%EdEP3AP|zznW&5wT1Nise@uMSG-}nt07u=g7@P*Q$=Xk7sNMu>~ zAQW$RYt=S({*hu*$}HI_cyM{Nt-lDzHtIds|3~~U-NcbupQYxb%0vETOtEM{INkF$S$Q+u*KXTgqr6f)nmTd9B=! zifdnMB8l3~G~&eJ?xdOCBjVQqR9S!7>_%?D(gmtmy80utAo2_PK&;yN*RP6;RV#+= z-yyqAF^c}c6a!15UbPTGFm5>lxf2dCsUt7*Y6z zR-#0HgntFBq2EQ5>R?n4dp2hdiF&(}?9|O3BbWJF;d<@Yu4)BiL&g73%+MB>G>Ep? zRJdM5F<^#fcWaZ8t!?5LTUFo+Z)=FkSAKa@Uh*>ctKCaiZ+F+zIpG|{y{;6NEgRyY z{gT}~q*6&la5>JZd}&jQPk_atM%L@~{BVlY{kl_$fEn5aR>i|pC}x_|afdzxU;F&2 zQce&_7s^SQx9%iO0piworqolo2Az|xl1>g}L)Y0F=W*bh8QMkZ5J+K+hheDsm+J-q zLDH3^d9b1j_aNC7)){|*<@Gyq)rO{LNTyoWGQu8uG4NUAREh_$Sm+lt{kqYdm)M}W zAta}m!Nh}jpfP}y0rDmT-WH7?dK#wv0OTw@twm**lpEAuI3M3fO_sMxFw7A0=-uAxnc*}<gHnce(atQ>dVR(fCciarpndjl+?xB&_21&>!?|19{9uR->&JBJ2lu$#!F>PtsJO(9-tF3G)3-Ngzfu!NNb&EJ0J_yj;|Qv|KtJhWcbsI$Mte5;}I{_^A$ss z8-9P;o{KFqEKyH>WIe0o;&6&tu$PBr|H>*asBbUEMTF9iuieH9`q;Ug8|Tdmf`<83 ziv=bRpvLVDGWmCeLs=8gU-&EYdWbFWIfQ`f@=g zYSFQ?+t*He!R-7?=;wiB?r7ivZeFYOU(x&O-lHXPW^xzqw2X_jDW$w8e=6dYy@R*Iw)##~#NSGPj9lsP z`?9zi`gva@@r_}N8x;RM#53F%zvB|A>O`Dz?983Ls@9Wyb2wO5h5@?&=3{=3*(8z= z>8;ELe?U^#Ep5h}izr{d$6KXuf_#|#;RnW}B}YiVV!`xLP*=@_bwk><3B{eFgR`Rd zUYmNVsn~YSV@!3VX|wRm%&%}DaA01f%!W{}EW!Z|*Do_Xb6YNoV^D~qcdM#ma+o0t zacX^bML{5a%|=Rsh0xzRB9FX9X;>Kr(Py5nKcgvEQoucbz)?>Wg&e1(ry6}V^z!|8 z_Fa-qnm13jB%b$JHNRGjPTPMjvUsgv{Stl0{)@?7_hgmt*Vjc@YqX%EL0RIa463gg z)YKtOZ$5p-&!0~-ZhiSEXz)t7IEe&6A$#*>{Y&SMKcdy}zY8Zql;be^SQ1NGp2`r6RMIjEmycis|`+CILLv{WQ7bk3i)*VM&1EEx$w)ooKR2z_BYK zhE6e46 zcbvWrRRIPbz!>E9%?uMd)2r8WB{%QB@?|7+N?zdj%$vRT8=&D| z45$?9{(1F*-ZMbg6Wgpj02PL-&lqz4G~`ATF|Wf(@&h{nt=YIwb7H~7jhif6Rvu_R z4P(nG=uy8p!o;Q-#o+huBjaXR~`j9F%CAdXn>QH9^tLti63Kg!x-j z{9(6D{zr7m`&gqb>15A0^B;Y>@52Pk!+B}MZT4t!Xj4L8Mw zwrGWKLtg>io+4HQCZ)Y$Vp*cnxu2!8EWMH&yOU0^+w&5DIJ0cPK&l&%3WzDA=`~NG z+3;I9{*4S{jksCsSM4_B7eV(IU5`6gUs;BDBq_*y@*9)0hFjy+qkZ`zr&e5v zE*JD37H3sA-53F6pwI~J9I>)XkFGsCNbk7Bao)(-y961FVx#F1g8|u^h#mxJ9IaE- zvu~ZH8}cf2dbMLW+<}K-kG}Z^1h&ze&vq`d>8%@&ZCpd>UqGAgq z>aa}{HPvV^P|@<=ay+hFynnB0q4;{Gq~=uXE!FDwU90YxuaY4^%$ zEgqcaN*YRk7Z8XmDq}6&xNoyP^ACdzc*XTNH5B(J?Prq>*@?85jF5!$PlVWjU~m|; z-!$TrQq?!fqGJ1Clhd0C3d6#=0;z61SvCrmA3M%S(=4dBfh@(2u7c=60rrSC>@ir|jN9q@2Mz7zqxT}I+3hc|qy;@cg(Nm6f#HE=YIES2WpAa|RCG>x@N z^=9UIz;Dz>5k+U#LJ##;CNmN*l>V=33j9yc|Nol+!vE}IS^u(v{|DmH9Kh7(1FFB; zNFN)jEJE_H(%@7?F=*3%<1YC;P;+^on9=jbX7A$Rct>t#VnhP&-3qpu*{n}jC>DNh z`y?t2eU&Bi>4{xm#fQyp*w&=APx1xsc|8x54CLm^9A$W#HQ?Su+B9=T zs0~(VthqKPcpax<6qML^iJ>1VI;a4@{7v$T{*!+gFwa)xnBDi34+6?@?{@9t>jux( zF1oPjaZR1qK2hHNA#i=jt?Oais<&Lh;>XM8a@ZSl4q=k35bY80amf1PIjaT?pVi6H zuab1of8YdS^f^>B>v3x3KMW;*sv{TWcY`QMM+%tErXe{<^+kLaO$8GgU5}Ng{A*e1 zI}X49>S2e>>=n|0#{Qqm49L&s2nFP<7SS6(1#GQJ>$KuBJoq@%^(=B@rsoNckq1S* z4N6=%-UB)+rGPGif=fk%I}LwZD&M01$YRvRk(=^(-5*x2yR`Hf(F@fUV87AdN~i`_ zKmincY>c+LZ$lFdOQXoH_ob0j^8h$P@A@_XjLrs;X2|ZKMM`Gqzoo8mM29h;aRS#D zyjS{frEAqA`jizi9N{y}TP-59UadeU+}Bz!!m3 z)GGu~tceCN2rnR32@T73VWBLOTx}HF6`opWco+-EXM7Ifxnk%uSi||0mBznC=P)J$ z9kRcu?hZpl+*J}e2J{Smz7pxvl28SKpm9wu8;YRUtM^AlL7wo{8dWf8tj?=v8EBAs z^-ME4nQ;Q6mhm`fRO0mtmUnp{4B?L3+5epZ809#)wR%H#U$7$PM|4)?rdx@$f(a7{ zXf?zx>DDCCW`2fTL2B7vq}tI0@+_u{CNL6aCH??_n5O=_`g};o#B#^CD*D)3{qJ-R zjVYN9NODI88xxO;3z$eHFHve&_F_@|wR`#|vUysGh;uMAb7JVR>X>NHQ||cPD)(4p zP?rAIt0pvmy7o)O!J%hG?vaZGXtaw6AV})0)i>9i$@T7o&mX&Y?;X)2U!q26T{Djw z!}q_NLm>OtSD6Dq`6&-5Wn@btYx3cq$Slt1{5uk@xxwE^Z~jfL14JrO&*J>WbDBHs zy}ZU;UsUBImrpI4QbSFJ#s_13ko<5H2p*K&E|-kag!T4nf|=1CSsAd;oM2Okt8G2% z+Q&)0k$XQHGA6&&Ac%l=rRwd)JIG$q6nAF-p{cd#*sK3Y5Oap0M_*oA1KwE4-#cE(bkG9t{7+9{_BU`2KTlJr1Ji?9oO_OKI}2 zwpa}p`7W}Sy5=jirsuGxr`E{%A+hoOH;@)U5@UCO5}=ezii6QWD&h{)-0RkI>|gI4 z2D1%D_=NZyc#VuHJKaqWCckLOy*8;}^l^6G(dlycOYeL@U_QVmLE<8ivgzTeqav`a z+Y`S~i7pz%{S$*K*rdn>1v2#tsJy&^Ri3L`)syH*GKj_x;#|*^t(nx9iHCzl?bJ|kHSwVXABkb4$9$I z+7Z^^?nBK@^e?d*SeVB|kTzG}|jo`D?xF8R1$EjX|> zV&9RhralA+z^c0Y{0YU;+182Ey)HA#Rr3VdT#O`UGDL4n6cmp+-!$Q}dAy#r>Cuq- z3$l`75$Kiu*tEps!dBDEvyeR+e=R<=5}(Gq(H?_J(n!#^dxF~$x4AaO#c;s4D_`|1bLqyL(YS%Pgzms_`^|`CdJ^NGF!RU9b71IjR*75+L z2zbowZJmrNIZYB7tA426vInW*72^$hYBZ3a{(@l#bhz`hAL&j0lKz*EN&)h-HrPj*D!cTrNcd|+ z6U>Gtu!o|^vF@A%Ftqu9dl71a`SdRN3xbGu(teu`?f@VJ@E?FF+gd9CY&DONKTcy= z=(#iWf?w?9TFS-w9U#i~r~eCbF#{l%%FJW=zYc`_D2kLaU_saj-ft_no9PtVqI>bW zcDkTeBl}&HS4QVo@IYAy;QP3oBci7PVa8u6?maUqvztS}-{XM(!*}($mi`e07c><& zh`2uJn=9!oX}&r*ybc{aZ@z}Xn77RrM5Om?`b$YkDdb(hY+wjz4Mv)>{gLqVm~dq2 zv>Ac|hcqtvFl(haO)o*+wdyW(8-vjP!|EVqkHuKt&%s0yq zP7GMD-3-d5dXsyP>+H#nupfHZ`@sy3`*? zxmTE;;Q7gRVR(@~tJ#m>_5Ftd{Zg4GD{+Qe=6@O%XZCd zd3Yp{momXt`aql^l^m{Oe)brlmWHgI>Kbgzc=&^foij@36EMSwZ#s#)xA@)g6u_1n57-V_Ts>u)!)Y}Q}{ez5!LMQr!NUlSkZZZqa&z#LvN9v2SXKr}e z^Xa_WeRxI6Url|&FnsbKhCpn*E3fNvKVX*tJmc+6Gf9S0n-cs}0TB3|a{Y(eXpM@^ zizmA?uUqVRazn+wq%iSFzTg~IfzcC>%MG>?L!^!wY>i2`+PGQ@DqL*qOm8B!Ui{jA*oS7z(V3&?8t4FX*>UF4qU&;rhpJJwi zVy|n$*U#K_b%w+mt{Pd1*LgRef<&>l)Gx@xcing0Qu29CK#^!5A+56Dn3&5I*Bhb`aZ;N zZgcQv#Lpr?fv!s`S4W-t`U&HVgo8b#Pr0T5U?MqzN`j|B9E}EY1g{Fh&&FSIeU7`Y z%YM#eU-|;ya=HjDZBCX_xywE?^J0hLITi|HmzeN0A(n7*XN`7$_t0$5&Z>H zq^#mOm!$VTgvG#GPfOoG52Whay$7k<_$d3(aC=7EyLxD!q51MNfnax=7g`v;Z*XuB zaj;8B0z~YbaP|4)fe~+ra8|_+i+ILr##cekKe$&e;?@d0Gx`oxRSHCrW)O}Cb5po` z4KEQRUpU&thUCCi&P@E&^sDA+ZnE{sz0e1dyd)hj07lTmOOV~x`X{Sss+1f;{9&4~ zF?SF2)DU5h$Kk%CQ}rqb=SZz@(8F@MbBo5o?_G?xP|86`0m-$kA)p4ppIn~6orG-E z8gOOVbm5qK(kX-=OqekKIGyVRu3us*_O&mOwr%yLP1C=rzT3a{kf$TxWASWXo8c!R zSMq}vN(=tewxOCMg@cg%6i!&Vp19Zj%|!6k4|a1S8^upcSLI({VqaCQlb){agU&|x z04pw>vDQcMDKLGQj`!X8p}-Y@uu^o43LKT`Oe*=p*RR-~7QCQ`1Q4YNOmj!nK^u5fN-U2@v9%U z8R+-HNK=M;RW>AKNP~&zNRx&<-)K6;8|17RUuBw9mhKl6wqWO+PlnEFdTCDK+>dv6 zBP*l<)||0RoF!Eq(eJ`>oP$=3z0% zv`ZS$3+)X$8K#g?5&CD;X*j&u?$2N^>cmz;>7uir=B>@AC#xqzTkNx0{BtrNBdZD? zdcKT0o#BZK7E4nGVD{xwN1GG~S{5TpaV0tRIUc3(_iJg+ovCilIdlB}=h@x8|F znp7fk7vjeyo-R9aF87w&_EtzItSlIHSF9ljkiMusX{prpK zJP!~kup8P-42-7U9$axv(Z#)h>nvl1{DC!9FTkb zH>t(;FIAWW4@7l_MrzWC-aQzx`thAZ9M?}l%|9$Jmq6q0an^|%6YA3{yAAP|o_$O| z*}6|(|D*3wA)iaM0;Hh663Ht!DDM=>*;T$rICi*9#EP?xRh;cuh-F8$?wF@qd`t@M zXT!zh3l;^JZ^RqB2RVe`C>PiA@Z#=$c28$|Y7=uUVVZM;b|kUP-csR116i_ZBJTF< zti#xNwEg+_X^}k~78XgOmJ-XIE7R-88HQ&TD1+BXfF~_c)ZaxUb&gZ=ccZ9R+k|A( z?dFQpF&yWfiJ3C8qk0(EnnQ5U3phwx&ziW|f&GNIxEJ%w;s?58Y;EFUglJMuV8On_ zoLInt#KxEHZe#VBw{`C6D@d-t?MFCnge>hz1JOEv4+IYUz?#RRP8Mg=c0lk-zJC~BSLX*{u)#~ z50mk7s0n@T8{HqmaKAjB@#D(yX7E5u0@y2!of6&mjncE;i(t(ogyctE^(AzmxcUvg zs11tPXs7g;GKGuke+$(se8eVaLk^`J6(S}T#NkTx&&{Qc;9sFIv9Ve~upHic9RGqg!U$Pxi_4>0o9E}mM%}}hXHJz9-R{3KkQEG)xl)Z zdBV8Cmv4RP@l|re*(2NVLO%QFEkHz?=+jQmD+18+I2y zyob8hltuqy-0_+B##mOG*Iss@=0UO;@5#~aJmSDV3M4<->AqxG2QkZt0k) z+98bp5?@=|HVzBnoE&?RXcl~0>F&wWGuY)iAVh=95v*>{+)i_90g7LM10<)N zPJj~s?T!hlwv4qUQS%zde;C54;^TcD&DUNHXf{hH*JoeUJv6v}M3$q36~ix+SYObj z@L*O7K+GcZY|J$Hx(H7=%f>3}6ge#Cvc}%K^Q6clemLRHx#avo`Q=d>{{$Y@lNSB7 zB}!RcTyEg3a=b=StzXukk)#KTfi=^5u!o*aQKza2`)*CK7s#fk?w(9eb(nuP0bYK8 zw&pddj3A35VB_eQi9cH6o`6pwJtz+eOFfanccwI|jqRJvi!zpWE$vcW>*s4W!YY|P9^z0 zZMhcTRGiDj3(jq-ru4d$VPQ=8k!WIBkKI%5Sam?|V@{$#1Oo6Or}dni9*vC5OQzV` zD|{Jb%6e!cox2XW%?Q81@?+GI4M2bD@~_djMz@*rt$9$54^Uk3F<>PZP>jo9qrG1E zC-WOM)h_bUB3Vm>=`|5m*nyN>xskP>(zd|BDy(i#7yVab>eE4=%7y&d zPjvnQ^pgsR`@JIe!b{J)n9dx8Z3BeMlaG%9uc!AC7pI@NMi&?usscVFel6`Uq>LvI z51<@k@@tz*GCF~m*=ma+_u5aGPHem-phuSC-YsMS_|>_8HCO&^u>9Zf0>ry-15K$_ zn*rPpIcg7npQRYnIe{v4rY_0sI5iCX$IQ(&Y!Qk2G}8kjLcM7@Gl}5;AWyUZy8I8r zu5G8=Z?#k`wU4{A1HkDt-$r+ak5O*TN)!Q*(SyHKp#NR3e`VnGTfI~xv6PEAT2b78RROknDAcE$c%ee!BI}ZRWAxtH+uyk*k4vzt?`cASO4DcH z#<{iQ*KuhD=?ndR0Slz|+m8We_+*4*&F4-rt*)R+N>t*7nrML6^uIpewNl5xXZfa> zk&TXXLuw^_=)9SOPXXEgk`1z>7?3==K};idOqcq3tbPnP#a0AD;%)lHjE zBe&*}uTY%4D}7z~&;U!i}UaFVg{7@WIg(Ra=z9Yn@O1r~L*XMlAN7q13Eq*uF7-%{}4 zDf*%V!P_Zy*Q{Gnjpz$YpyRhRAv{RJuemy$i0aE4@W%?wjd;>OAG~)^Kk^STUNe4T zk>KocS~g>m8M>C0I@-lOm+45UBRyW}E|4PX7jR5N^tp>D;{-O1tKo{ZyyP)suGab+$oJDDBpGGK{p?pDZ< z&EcF}3-!(F8MnD;XzQIN8a~Vte{lmN0p|qrX3tvTO&lNEfv^}skfFkq&52LGdgEt3 zCzS;UZ%rvlwZAlxu9hB^C`>qi>Rs{kRmN-YwQ*?c_@4+v#JJ;n6hay1gvUOIUvwkv ziNlJl(KFZmbi2n67v-&*GER9GL_BBS>HN`_AeAEdcs*R^42Qi6$&%bf+UrF!z;!a| zJjzTs*f2pZ8Ps#r5!v&Y^z$ZUqIR$U)1_k;PU5ltM}x!$mw=5?0b>?uaa%3VGZ#OaZim zuHv^`nPA37BS>Q;vFHWTpyThnm46s$`~xcl z!02oX$pkC1AhN!o%fM7|T?mCS0+G_XSlTVKG%%4b7ZXsUpGR#?P7&LR<_KVs!fxb= zYHx4jW7Y4ykFm9NmkC{Aihle2dDqUKnL=)ZQHBNRGU7Xqc?ud}wd;Ti)JycH0jf;U> z00q1=zLzP0|0+OMntb08tL4Pz@XpuG%Qo|LNj;2@X#_?9a!Dvf4itmX-g04`L~8+D zy*aygWfbxt&~?||HeT40?KH8XsiMeoX{5OLjh$5P4%P?tV(AP;kIGBCKLMA= z=d<NS~^jEQ~ciY$tS0D45iThU`S(pqW%2d~&cd`LdrbBV) zGD`{m*bmnm4A%il%W+oKsYNxzZuofN#p~d(nhR0Em5an z0du&`b^%~YR-uj82S1OUnf5_AC??3>ciVa8G5;|z6WBJRt{_GwWT%vx64D7ohwMzpVJbuq=(MFLT6(ep#Fj-yy(e% z7uit8$poR-qqn9p@qk|JELF!;v#fW6|MB)`N}R2jL{R^zjo)v1I@<>I1YC}?L%oF< zHw2MvVw`S|(bx#j%YNDoSGry$3v;f$k6}y=QS7rAIy7vWiuse&GksK6{}Y=No*55A z`7*bKZBs!uFnKbDVhbSdCmAWPtE@<%uAmLwIG_Z~HtT@X#QG`jddJ-)DP&$t!}?pC zz3-$}E?wRl|B|Uf9!Ltd@Xj+kzlekP(+Kv@*2V+iCkgXxd)a-0UelrpO(0J6mwJ}s@>xOn&0 zM@xv6PKe^bxVeNYLm*_BFiMee?TVBm&r^`gR9B``aBwY5v|qPmr*&F`bNs#|4u&`- zY_Y!QT!(Y!eAkRpljf^TbueR$lrhLQnVOf~ZB?hD5<4rC^WsgaW`PfZ>-)(?0r4*<9|OfiJJ&fB9@~eb$Q|{G zi}oT6iLUV)5hWA3OT#y&cXoH>28sf3mrTD5zL0*Y-S0*J26)x}!|>dY1#pUyvKptI zZf-{=qk{}HKlErskf~OUh_f?LTh)n-*4D-rc~n?(|(4g}HOgamo2C*1IX76dT7AJEHyJ`qC{Nz9(v zo?5{+W@T5vTn7q-DKUV*QEnrGH}=njZBwJM%<#s{MUKy;b3<9za>u7=O`lE$J z1R#2W;i^Oq-J^H|XBnV?_LZ8SzF3c->QO6Xr$wqR%kP%twD!gLz2B?$IjDJ?^Maa=)rWyqv!%;B<*qI*z4f&sZg$}g$zq~>4FGGOBdiw&Jto6 zJrVFAqFn@HTFQ@e$BlHZOn}zrjxVDNOat$WS(PuyGYK#Hd(E~YSbP9nW3EUVNK>sm z(~d=MfSYT(zlBrkh-3DkaP+N*MJ>k~N5Hy&LVzR3Ww7j)iwm}Srn@->$RM}j8ViMD z+yeKOS66EDD94xFsNOV*gB+WFWNeWy6PTDe3txB{L>;}ty<+w{M%U#^!Ql(5h%@)=BhLLDfC|+YE++N&Qg3a;t-J^6 z*9z&tcOZXO{pWYw-J0V6l6K=gdXz3|xx9CLCM_08xik9@1L-rM;DP}PKx6;6Tc@zH zAm?g7(5bGO-HiiUfldRDN*PcjUU`KAWYk$lX;U__JG=Upp1_@RG4MvtMjN=Nqs?`F zbXDhQc;#5QTHun0q3C#ZV=<&8?3CoahUif}`8l3Fd@SGeW zC4B_y-H!1+#3+>dW}#+Jksiuu4^j~k`O|{|e#od@#3w`1<0|ZOzM+0*pZ%Ym=M?uc zSIR#Omb&-HjK((w&pQ8%kx>?1lazsUhqiFUx&*IHWZbsb-J~hZ9De}&B2Ut1a744T zWQ+kNq6*n_6|c+(v~?Q!&H(J1+%NZqw`(D&qc9G!qy+c$$Ddh0o68{lR>8~jzpnyc zuR;^mv16q|PlmJ7<#OYmu3~+-DbjLXpzm9BHZ_vJ`4~b1X5aU;GP5Q2_2sng`khU(m~hSelym%(@%+0IpF-134kJ+OSwgW3e!M0beF0PHgfNy;qs+AI#vO#z1kdf)UJn~CaOeUZ{3&X^9EeQyh=fVo?b>4cR+i78{a zNPC9Aa4|$qk-PcaYb9O}Q+s=n)95IJt2M5KnL#isjfptyU!X%Wi=~O+4_}{y*f>w( zCw7=qA62Yf|J*Uu#cnS5*89xb3Y{&9s_{t(+_2t7)@E8GDrF5GT(*}ZCDBifQ5E2U zMBBl*klJVeFr40b($U6ef&6%Q?@+XK?y=C0py7@AFox@U-Gk>y$)2A45GNIcKC;^g zbAlF3TzZZNv}Yg`W5OQ4Ux6}lbXGlIXuvV_U1ac&t!BQVdSNebNP1D*9M>7)w>u zg%Mygv44Gv_}&@X2y=P=qS1HRszd!Y4C>ETnIx z^v%4BgU&9Bg;cFqbkpF#z4&|+d%DS0zzUznh~fowThKz@D>&iNazB2bKe4DXXN?JI zyXnV{4PRj&@3~wj-kAOo+7r`aZX^Nx>`~8Me}V;?n(K*({0jJGA~LDbhH0xnnm+Hd z2iTXH)L)e8eA(=#(P&k%vAN$!N?*HS#Cr;tu%b+n9ZhK3V_WpeMfOL;Mh{@Q)kou8 zd6a)Si`V|L;dPu%dZm?h1oE}1U$PYcwW(jP*k$OU*w}b&sCGs9`&p_30GcU(q_htV z;!%lc`}dSRXJY$LRZFB{QAr6Z`%Lw6>n(9~bqOGJzIuH&@qt+Q_cRwTZ;xifR1#~v zB2Bs2?`+KYCMUFP-ZJEpgQI20qfdzr%~#nQ$1y^TybcK~3@^E}eL*euy$1J8l{KpG z7`@qId-oMm?IZN({&bj{lfk6?rG>5(KFhPbVi_?O_X13njKr`BF4|4UHHIRTUVKe5 ziXYBf0hrjKC*IE}p)Z!tmLv`FpL^}$apjSX_9JH)SJ`QOKOFtkI)va468nj{K$3gm zMl|dDeHcr!iAA3W%oWWb%GHNII((K>`WI@2vj{M+4CA)%UBfTy-E6;)9hyA{`*E@o zpncqNWQ17f1XLYJF5K-%5-6$eVCJK&=`h^@uusBi(X%Ynr|DAYfFAQ)?H{J;gzuC^ zs?kqy!*mkMJA$RFfMQ9X+Ct|*K0e>lE_PhosIgYhp<64X@bbA<(YE;xf5<^UMXLfX zKmt8OoQGBR&9$T`W6lCP?!>o)*2KQ*@R}4;szr`cfnL~y`ay|TNwR$$@?Y+sGCDO1 z2=O3BfQX^nI7C$3(mcP>S=o3(LtJvpj1o=UCG7V9=(sE}38}7;ZAyWjzn6d8o?pB{ zcjaWXkb9_ilRvf@^y~>p{3l%$-~-vsgjhZPJaIQxoZA>PEhws2A)UGu5!aY_H|nB( zPL7M+&1ZYO$Ko_UZ!HmZ*Mm;-K`!uybO8 z27bhcX4hv;O3Jz3XUdJgy2&6XD}nyiGJ#=dqqJ6tD^ z&zl!Gf4Os2`mwQo`6fxzSpK4!`Jw?=^3AEP-h>iD>c_G= zW~K#X+!jD?=VqX6P}Quc;WXV$3sT>bDkZ#d$;<$VJmbz9aQ)U0@FLt%_~_iI3grAd z#YXyF!JPs%HiNa_+s$RB(6^RFH1I3cmIFK#3`cp>e5B!uMZUUTByWF*jc1rxT~mHz z#QWC78;!M+?XOK-OWxlSF+To679*vW$^9zkh#6R05$^5=8P9C|GHB)h+_(4b_b^%U zI2MUF1{fEA%Hl(ks*MK>MS<3z#>E8MI3AhdTLZ+hg$0 z{3xI@ww%7i-9~{x@uDCJxcOM45YZ)V8DcGZv9UkTp?-X7`rEMDta{x?K0`dywOUk; z`GV*semp(T$3WXI5dFaYmrhYukNqaBIl5>ITo340;73^i2|7R&3V4F2;Z{mT5*4La zR~P+qt4B)o87vj#{6<5Ry7(DSMD;}tK)A_w)2u14t6^o=N%qNT9fp# zI_v#1EAE_=hhV>6vUP5|laIaBqTLUe1V5x{P^5@=Zd0CD!dkAOdP7~#wvj>_v%<*Z zUn@7Vw)ia#a#?Nj&E^#E3TP__v#%?)N%?Qy`k^aCmo+Vb^r;lR8-b(LyL7Bb$6Fg4^a*fY3?sr`kU*F~}93&bq1Doxk>ls)_FOpaU z+1`PxRXIjRt^K}@v&yt$x!c~HJGJT`em{Gkkvr;goAInauF1O>%tpHw2e^RuaWns< zU&`4bSe>OhH$@#6{CKUHIpn>Fv43LXigt+o))nPJ9NjS^t_~(;;GkpimsR z#HUu12g>n#8u`j0liAsPi#Afx>bLXj7tFDnaSOtqdd22lzsp-uAS)@{{khNtjHF){ ziaVs*rXL|je2Cj1`A#3TkpH}}zZ`qHYE)v!=*Nmfpy;qS1HbV1r&ht_1Bz=1K6DZ- zPrz}&jrK#1IeL#Y>7vtBO*#RqQz8D5nry{)(-YqhJrX0b-3C*^(iV=>OMj6I)0tTvnbjgls zC);t^HuL$bQ`_l~iQ`K;BBkh-lxg#{-CX0z+}Rf3rwR7?!;)Y06_1Mt@zUf7!>4}5 z*V1g;#@OTKa5i#Bm9Kb=7%2w7%t%fjt5F-8)@ED2bw%3yvXNIDV8MF^;9X3 zVCjt=uT>72xAc#+o^|Az5!~HBnIS{HCK4iJmisopYf7F;f2$7#aKSlXsW!2HkThwR za}7jjPxF{-FI_lx-rC=iW!&YWqJCwCq9gr$yKwZ2cE&MH6uQ4+2uLV~h;MU|2~RXg z_DSwUt;FIfxpv~X(}v46)y)(5(hSiC4``8R?wapQj+FAi2|Y%Igop)OO7o5g7nxTuSKSpOXs!HEci`C#|LfwnT!08oS+Vk_^NotbuaMRg z6yXLC2(ofZQ}=GxZJ%uWFgu$7GMPo-wadPJkRrNnxXbfLOEA!;0$$E*&#G9ij<`vQ zCZyaRB?vaHY@oy3tL{0^ZrbPG-zlE|`9nHfp{S|V0s=|P5p{Tf5f$KT`0Fhfy9qtbKIE7hFy^FvO$*9|8R5r$U*sVx40Fx6W%6P zSz}btKi4MqiPM=oA(7<^)zzJ?UZ=D^11!^uP?MAK!l z7s8y&o&4l6302%tTyIm90)NT+*nI-v5i=(sY(<8KL1M(RZ7U*_oJk>(qFpEnL=+yC z)>Nr1;CSz9BtiMK!)CUMlTvhvZcn|9=*MLJk$KkPEIASBnP#{lvHzCD>026Fs<~9I}XVKNNlnk-HN{&29Bj^coz=` z3+u3dg`O2;czck0IPdwr(=tTIaP57@uUoI}Gt9-JSanv)Ty#VC0J)*vEAtMKiEk4R zp2~(D$-OT+_=jPHn{o@N^}GcU3zaNP%>I2?1XN_S!T2lpGZNGOeQ1WFKSK6AYm+$x z`qxn!moGsSbcRD@$WjK*E|dekPk#@?|6y2X zrCs32xOMCIzYqU?1viDH{|~&FRF}hl5BQ>Z3pc&4{H@b>`){#ZG`cB<2OyP3fLBM* zKm_leKT1#kZoe3IXU*)Uzz&m~fwo+M_RjBrA>%RMT)!Xni`to{pgkY|4Bg)%%geGd zfqPhyov$}bJMXKzPX4FUb>tn+%_4xZSANAy_#FQ{)7yP+DPi@x;Wg9hSkY(NmrTJb zxxZb>FDOT(KxKf1?Lbt1)-)PN2aO#nv;CY~9j8S1wB+`+*lQi-R!KObbyMCCB(^`! zD7jBR2%2Lx^h@igm5(K}n*T8w=Y3 z&yA@}N~jQUkN8%o9_&YHZmp_DkFsK2)+dmj$T{-X;M~s4GkB!8`#YNTxLd~Fr$#TT zP=dniXVj3`wTGWMB!}6&G8Pw^Jf#yYWc90E6vpqagHrAtZC(#eR{!2GS-uZ${w_oO_0j ziU<@V6#GdG)U`*sAdVVHn;Rr(^{Nxo5(7q~_5yYSnu3d#MCJQX*0IDPg#lhMcKEWnyP0;sjeA-zGdEr?5`YcpAY zoU8jgb4yBI9ktkpX$kSpJ2~|-U)Ud3Xc*?ZB$;8kUMP#6=|eW3Y_5YY>+KkX*su%| zplAE>z5z6Myz}**y_*@97NtB+0~;czdoB}J6#3$v!y(;Q430$~AI|Ss*XAR{klnWo z`QTQhy%%V`A{;EsLLY!dN+?dZTZv2Wpe4Wt)6&)ou>V_L7)!e;dL1uAs*GMMRGrNL zQ7+l^M4;kt14;~|{2~za-6htJ$+TDv@OF}T!2QS^1wKMHtBSI?3t|d5vh8PpTjMZ|uEyR8!yIE*M2c zrGz5A1Sz5*AiWbCT?DbvK?JD+A|OEmp$JHC0@6i5I!Nz{7&; zfA78Tnpxl9+_`t%e`eOaf3R4AOO35q#9T-E`N1B3{7-zcDFChV`z6lMqiGr)lLcc1sb7$qQyo%nO-UN|_^s;s zQ_hUt8Ba}&kwMQvn&nqC#^>(V2#{BgpOIxq{>1rg4Aaepp1g}h?UlTl5)uFlXa-i> zTK+72=3X{BDZcw;VYfoR`Rn7s>`e1h&uPy%x%Y*UvJ(?oA;8FE?<4XtVdt_!wyQZ239cd;8J8w>`)Nr#!fdctsnsN4*v9% zE&uoG{Tg}Qw2u!_XJ(Y`L=G7JS0QrD)ddw~dfNG90s?CsE#;vw=WY^ZINo3gBs#Ux z3X84RkCbXlW{SN0G^@tflD~ecEZu1U@7+C3FRCj95JBQPM;s>3-k#vLS6x&Dww81ljz_wtVdhdIO zcePT{)7?VCYNS_V$vtk$26WGIIr zY{T)K{=(vK+LkKL=$>EO7#!^1;IYsXV$t?(`0p0;|D)gkd-n515ZLG_xWm=(u|_Nj zD4nIm66|PwlKE8K#`3L-_+{1S8d{mK9JpW=&!dE>|{Yih^NDiPW&cKxWXG z{2m!*vg9KoEfa%c-lTC)_~r_4e-qF?Q|w)AEHM6L+eO6XN5iLtQw1Tp=JXPeI+V~P z>nROILI&EbZ3K;oWryphS`!g(geQUpVD(00`!eU4ysTR$p!J@4R+}(slbt3e9;}=bF&qGu~N6#wb_gS1e7rK95!+$ zY1Gcou+$sGw_#XHliu>$vHk&hK>!nivx+;P$f-S(Ge*CHWoii*kWY&TD_>3EUt7jk zmA%zrk({}clIb7d#>{Y%S&MxP;gC4P-kl1o!}V%06MLJ9kRHo}@cnTjM@jUSFyZQf zlG@#<)94K~m-aIV>6PA1k*%w8G5uys_IL<4^zk1MEBpoZLx;}HK}5C*0UV|Hz)oK4Muvtxr8 za8W&|7$9=QgF+AP&aRRkGWhOUvj{}9@$osw8T*M|B>{qvcj{rahC-}pwscXJGMm#G zx9Z71j-4o~)O?DK`+IVQ`S{g+hFF)Hl4GUVz#!&S_p9@_{mtsS*!$c)N0;I2(=5+k zn4f-vEN1+$!jYm`r{kS&*B*BL6rxT?PxCC#nvWev@HBuu!o6`dT$C5h1iRNe8h%9- z1li7+KpJ~kH|`FHxhwl$Y(};(JuoY#+>dXB>yNleJrSnwu+cu zq)y^L7$q2LU2sU}cg~^Ktsd)c`4L_1?_Kmd>$Y;upc(o&r|hD>${;Ssd&f=y0A>xf z&QKici6dW*H%Agso}+#{aj&$SqZDw9n<_wwl%p+k+j4Yu7~HnGHIydXe{!IMy#Yl3 z9jQh3!!1NYK7o4;p%C~@C|jexhGM1ltun-8bP=D+-F)G*8t=Hn9=>hD-q3Ou5lS5` z?Y*KX<=K9qt5Du~-v+W2(ATpt%Y_w>KsdxBx{tix(1xpLC~AbeolG+pv$cl92D>YK ztx9zl)Kf(Hyc?ezl&2U4QQ17A%`_!w+VKh42afq3AYM+1`>g&8SxaL93^mo{LmAX3Om zc@>N*_)Q-IT^5CMLbtNX@_#^g^CU{hJ2caOrAybuLw~Ph)SUkx-?6lL5UjTq^#y5v zY=#){r)B_Up<wMC0ZdlNk+y>!Tzsx36xck^{{bD!qc{*hSG|EO z&_{{~UxH?S%Nrk*=b=8R0xV^~1z75S{vC_$rR1X26*|zah)BV`F`>PbbDHuYpjJJz zOC9TW1vA=Ar4M@XKX+pMr>7_}{uw)W=}zW6m2@+fK%%w2p_cBE{DA6wzBX6Vp~*;n z&EW+!TLogj+|Bh)R>trz>(br)nHsEC^PO(0=^*Eg-isI;HC}uV58Dqj{k7AW7hh%2#{u z1IOUtXJ#_=TYzlMVlxjiM!7wS08_MUtTz4I=zq@WKGmE0*2KkhMfl2Uf~xg1)iV#) zFN(CWm28b$O?_W3yX)z1cq_G&T1qj)qNei!YhqvZSVNDKyMc~`O7@wGL8(U@m&Mz% z^E4*qIpTI>%2HDv23e8n$q{96QEL8v4a?fDwqT)yRM9Mv$ z7Hq~C^TGTLiR>;k0b=|_^~ZDu`xWW5SE-d#Y&UPmoV31R`eX6*i>-5W4gM%dFeBp2 zF8M|o%<$ijz?l~d@ zslSmNgaz{fOi2-}k>vWG zFcc}2xEkdNR|l{afbtMkjkj+YPdBtly4oarR~i4d{V<{L@dI(@)*d(57|A@f=g7Ec z^9J^clo_@vfBJ^iBd@JgYTnh@#CfKrh`HTEXMSg)YxRISX!9Wf(PLw0Sx@AMT|m2)%K?UQusj+(_Xo=)sMMfBp9Go)wU34*AN zz6gkWu)sqCt@h)Z?X{M`AUg9rcb%w*!s3}cPxSBns7%(`Mn1VBbRxv!Mj-|@o3+qQ zqyMqL2B*WW;ov>lcWVWd{Qdl{n;Tl&D~!fPIpSa37vlZ_<6AXE6C54Rc*53A_Tmybtz%W zmhAOBLrtgRQufOAufkb#qwWX=uW0;p*>jJSEBY67iwWgm^lhAq>u3UZFi2G zYB||qK`miabJUr+Qn~GWc*@M=>!=>9fqtj{sW1^S|EF|TL@pquz{uU4@COtlLX3*S z!#xUa1eP?;z+UN$)m*L46Nlx^;-6f{R4qQ=RN+gawCkDdL_un|Y(YfuYrk7H13>}r zhpKEhq$dsXXQo~it$Qo{WNH$syK?cm=lQ*~0shir#6&9hNcIy|fXP`U2aQ4sOcfFq z-gsUja=rOT_~4rS=Jaw?A;X;RRj=0Wz()v$L%w8damX zBB2=mlt5_X5JIZWMkiK0cj=kZ?m7QV(9GE`_?6Bg+CY5qPnS=KFWN0GGz}!NDflye zmh{t(BtTVCd3ZCZM$lPxmxf(sNF>UWM4QQ>SUXmC=*$d)lvjYY@?v)#Ds??c`u5HI zcZ=^-jLV%^(wq6qzZUB}q|YwXvE`I1yUO&u#+lA1Tf#)WPh&$~pMk44{e zVKsCY8$U>~;%m4f-2dcSV_m}s(?t*6Q)f&Y^RWvv#=SFMz~<%XDgq1uhD53A5~=0b zIdjD?+1_XR^fd_Cy4fvDkzKvN2mt>oQf(Z8;Tv0Nn9$(CEO5BIS|!bA1Qoy@{QOzS zE!G6vmO_s9J|~Pw)Ut^$3`U5EyLbN;hQ@UmR>17Kjc{PbS#mx4g>6j^lIQJuGmG^W zW4<$2g+$BlMDyVi=YV9w$+xA{wY3Bg|>+&M? zJ!&f(7W)Te52YxXJY8s1B#6k!j0CSBA2n{|5C2W2<^6dPu0T8saHlVYXPa7$w zw(C%rNk6V|JWDtdqIjV$Ak^@(DA-zt3=DFT4>1GJ2Y~0RjmGqAXmeva*c({8HS}57 zub-}u+8z~2dq!modtO=Ti?FU8_^fycV3((E0S&zc52Tg^vu@_IbjTAc`XKcquPJxZ ztBNw!XYIN~?VPhzIc}HwtkiOIk34hW(w>{WpMKY%eAx!PHhhV> z6%8(}IZu7-C6Y)ArIskml>_{>!8%4m5IyDIJTG)?zb5(v@P%~2qi1CQfcRL*^Xfi= zr3*Erkwa3A3RwzhkPi6}=M|0OR%o}It-;a~eK0ayv+HW{`yH=RMrytuok@mC7duWQ zqpvC_&4vtL;+)V^c^sYNinbadAeLNKO*hu4>2FpPam~vBPcY#0^Xyg)$CE!zpQ}43 zkOl6-YK9#DqXmq>72{(gFFt?o*i-IE1au)WLqvZH3z(EV(ZN@<4lK$}pCWhqDHS|< z5{ox1msnC$VFFwTU!LG|zxa%eE)RSwwS?Jf&u&L)C6}ZXMxFpZ@Qj*E(}Eq1El!08 zUxp#N^I1iRiBU@H>B6pTxPhr>V()HwFUJPtDd;%qEjgVp!iCXK{%BM0%`}?z4_Y*r zrhh7$4rG}mfHf-)e^XPSi!pW$iCa;}mK4TG4IhB;MhjiEdu^){<6a}+${XJ?QxbEx zq;%Hm<|VL3O8+N);X{M(I^_a;9r@R20A009|2N*!ood=vnz)BW8nA0Q*v>|E|Xu^Si{+XOf)wm>h9@9ma=&MmI=-du(M1 z`H}mH7g}O<>&E@etDMIjf0f=gylA>0{~_*$MHtTeyj3~v2jEfrTPEhnE>xz&8>0^4 zbt9guY&hrlMr6E3*w^VkzZjZr6R21B$0t^6v6DCLv0iLsajb(IK$7b4KhsGZS-cyL z@jACY>>PwW*AQecGO01kFuSiWc*VX2S(m(B9YcR&x_>vP<^~RR5|#pv&Vv%f`XVV7 zrLeI+J1&X&%^~A8pPdsQ_kazcB6b9`F=X{ zoo@TrUqdOC{DsOl&-|*PZ?-KF7_wYZcwU_CR{BkkQSN1e{Fn&;VtCh%t^ctxIs5^^ zf9nUX(@OV;q72(+`YWcnZeH8m08y@tQK`ye2Yq1Wu17C=*=0{=PQ?Edg&nh*pZMsd zpaP(DgU%j12OU^T#aU$5O*lJD2&qPWGukj0!w@A5DA z8mk|;SiHg1sXzl6gG&-`#T@#Ro+CIQF(}X^H%%OkX#`xro=!zY)5e{6QKXEhl#8&@ z$2=j&h$J0WtjrSjVlNkkgKe*8CZP;NnVwRd?ro|2Ky?p)Rqo@)SMmChvh$LEhv1ulE8Z>wQ2V zlbiKQ*CqE@lo=DEcr4sWw_@U#R9ud333Q1qzDpT7MA?9cC(DkF4V{B zi%#*GaB==;eibMYy^h72_0%xKLgAXuka&e@ zxB$+5zim8ax7XrCYnW;6m1+MIYWF_`aH)TJ_kLDa-s;3rQMO|)&bt0e?+e-Q$thrn z?>?#5=bGheCR`(s~_(@{hvtIe?cYH1#~s4J(ct(Gi9VA5I$6V9+O#{X?XAFS1D23cz4w+Q zBn!cV#xCC^Jq0bK()yn9^^VEEXB~+3*GSVJ%Lrh+og$93H zU~a4lhc=dU$8$2E-tcCG%zi-%Og3!Ruxw-;6}{MGvvrr^YnB zOS<3lSAbE&HpVxREbi5_!%Y$VK@%Xy?0s&t&BQ=Mf`!R4C2m>4WdT7!L4E)zavE8v zVC>EktUjO`bW@I@x z`^AfVW%1Pbt`Hu2&w#~~I{tJ6aCsnw%j`=e`UX&pwTq&05XVg!0_S+q-Sj45lNMSo zqpD6}le!ChI+(rs2JvSg1XK^hl81i4|RHnhQ}B@kQ_(TY4aIq6GHJj>iTT zWt?p>-r78VLEoO;l_-<%BU-B~TI-o>(938)yREXE^2lstr}%uFo>oXwC$s+gXI#sg zr1i$VS#8bkDORi5FB${V;<*Ml%k9FJlKZ}a@AsctTz1mFO{OQkAqU_jy=H7TKdVVc zc>&xxZi+o2quXL1ycKV{Zm0WBO!%UU))XcKJ32EyuRI}foTz}i>KXnb(&B`5UHSGrN}@@2&%a*?^js~je`KT+ zNPitBW_Jfm5=ba4J`gQuRP>YlR57q3Utr^Cfi&EkiOuD+Y(*yURE;vIEQcGnuv+zS z-*%3EVUnAF10Dc4$^b_3?TgR^BpcZfD;^24BQ{6vJo9KWaN3P6upWV&F0hYCzB}nB zt-{oYvT=Jv8mzaT>*6N848(1n;fv&gO)p?Uw6NEvp;-c9IgSN8K-K9QEzDH;T+$$_7jxBH3Xn?ssqyG^IgxvqFgy@r_g3CmiIy8F8NE2dKwdB)=EhT3{rPQIy>6i4+2PA0 zpj;WtLYr7%P&8(uFp(oL?K|w2bJNEDr}J9HVt@TC9^}jRYSc*?dNzt)5lUlebL2pC zI3Ar*eO*(3@k{ITqBGK6diDt==O5IS(k*;S2&@Q_o3qr{$Qcl5s|~7DZZT=ih)YL< z0yIGKA=fpONvEjU9cIUBWSKrrq{J~`7y;$9aVIG?Auo1LearU{<=kl6wVgkq@U4m+ zzAd+0AHjWZcL%Qz5IO*zBe2#Es|o&@&!Hs@zeQB;9tPNr`-U>$TU=3%419q;CtYUX zpX-L*Wf$7kdvBeH;5S1QNT2P)wioxCbcA(hW zCb2$M2Mm>aufaPtb&Ol+ptOvl^x$vwvJ4H4B6zHR27+?vF^G-lxMzs1S zO6=)P7_6 z2mz?&2LuR}5yB58?2-HafYRS0(47Q7{BI5f#mv*_ z{(uU?aZxlu1UDeZ8tp_YI3+mJM*%JS$B`iaJQZ6^mb|VU9dK&@JX9jt9~JTkwDy>c z0lquG7fNZUc|Ocjn0W$t{m(=F`(F9+H3Wb({&}RrfAo~(FL@o8mFqCXKYI7xKRYUI zo2O90=f67qpTqF~*B!1aPGMjD>_7vi*?-QdwC&8&rKK!*f2I`pbUSd13LrD4ED)05 zUcXA7&k?hG8ReVlE;h=YC9MU9+X0iZ>jL8G2qWbs^_?Hy%5oejY%y;|{)nB>i6YY3 ze#cL1R~2r4-8WSE$jQZ>G`!8DuKomKS9-taD zS3&_>=Zxdq;P+#+bNI!}pC3*kl_hFG;JA5N5SYSi2GG#h{AwZ)we*w=41K&n$j(U! zcox`ngDJ9_9eL`+{mEj#7effFti&y)GQX?s7r3M2&EL!9W~$cwhzs8BaK_o;QG|m< zyB^n$i&)7-F0B^dpMJW{KRO_l?iEax!wTL5BGa=*{EnTK1-Ft9%=cQRGPwL4>eSTp zmC(m<$~mi$KAiKHpuwVAU=vZ-RU0}mQ%a-xaxkyzd~|tm(uJF@y*xEHf|0L7MnWq0Ul({}YOE9}-bFkO5eoHAcM?K(fM$ zJVZ3A@yaWrkDu$SV6Lxp24cXyU`E<^!SmtWd2Exy6Agh=u!t|`E~Z@Jp!`+%KhpcC zV|w18;5)JJDfjM{yIM+min<|ej~CPC*Cn2_H?V>fqkcdXh%QnydVA07P z53de&H5dINg(vgs7Qx@^wNEjM%6C7xq;ut>P1TyM0AZ!`n1}WQ!qS1jR^7)`XA_#S zC)c@NeQU3TB^U{A-ayum6^u=aMjCouTDjsFDJQU9Fuejvt{oZIXF1W7FO&B&K3jji z_f@UK)J$zdJ|7IxD|m6TfzJ@Hc5FhR{J2#ytt>w;Xw zK=|?#93mBIBgNtxm^eCdiyy`1yS64!^M>$h4caPhjjvBnipl6NA`F8Y-Wx}x*^)C2bl zRSn&8-C~OX&eZ-o8?^ypojYzXudo`x`)0ZOzJ6}o22p0Ixz!pLW$>5O6x!MKwwe%% z#e3Qa5EbeFsydW|k`=x_DJU@BFccVnmn%%gciPZbi(wZ{4-=F0L=tF>Wg5+l)L zYHI+8I4fO@dAD!O0e5aDM>7tKV&|@M^}Ng)$+)unFurg4z2j{BN1JlTnHO3uhfmVX zDdi(`VWk?W`=Up$&Q~aY&ZN^@;f(W8|MZfr($I0qgH9twcM#2U;RIkm4HW9K7P#O( zM6~v};!^^1!KG;8tEs+W9Mi3yqt5vnM4@&?P_?GCrphce>qiydV77X|l1C##jP;|F zaRB*Z&0p_|<3d=U5xJO1hnaf4LhMV}2dJLwbS6`apTMsEFZXW0YmrUah`9BPQQ0}` z=vsr*%lKw_kCjUr{VKNC@!A4_4BGMiQErFf#($_7ZjA6 zMh}(GMcHBe?31o}C+P`&ryr3U#)7$n$Bs~a#?uETWJ6*&`meoGVtC`46EV3l)-d}{ zYiCQOd*G0v`^2;AVu@kTdwhb1VRs+3qGlaPSIGs(Hz;@8koC0$u4n}tpU>Z6uSU_` zTGA5@vtW9+FspDM1V?cLlfcnns%7=`DaI;i-pG3*_~RQ2n}GnHt!w%oer#`(d*HB4 zC(uH>`gqA#1Q|E?!s*eW-osvV&(DL2*>Q18AUeifIgr*PY8uKO#Q~=$I!E|1JvqLP zGzL=`0U*iZ(Yaz7>4K6@w6z|63aB~R(WsJ{G=p~eEIxv~2;9!a0p6MqNsWAhkZ3mb z+em2vvxCmn?a~tKXh?CrGd4$lwhnP^xEb=bLcXEc(Ph9^Pn39IHTY%=)qeH8mL9k1 zT{;%^lvk@c$|6}70#YBGp3ZfK*oRb!c%JWQIx(QtK^g|Z6OZ|5eR-l}2V&}-sg9?F zgD^;Fp~(iB}(;lrv{w7$CUf~Z2BiXAzcx8WmWAB6~^bH)G)v?^gfA^ zEI?Q_&PE^g77$jBcr<{VyD$1d1?zd2>o^Z;8_ST9Tv-bG+aA@-!uBFo&*0%LK{cY8 zt@gB92Z`r>s;Z2zE)VpML+F7fQRpcIY4R0p!S2pNUt;QWcx*!72d#CE_zfjrf`oPW zl~A4#^Sc(J{OvAi_yl5u= zU83J-zjGz+%=>%QLSdLAiTkV@#GLB`-UJWDnXZJe~{3sC-F(c>aBuF@I>z?knaO zuSSE)_h>=DQUUb`M0Eo-YhN(=ALW+({ons~c1cnY&QMQ_SPVEN$;?>M3}m_x$NbfZ zeZk3!x@zTrlEi+X;q(H=Z!Uj`S(E>l_v&B&)&IpG-XCY?4v_X?@`>YcG(lvlwOFzv zzRT+IA@h8EufBjfb4cJydbsK6<7-x>9BW;&MpkwEP-JI2vWpi$Fs5yD29EP2GnEDeFHWRw-pe;io_BB2XtqSR3q<|y1O$HG|{^b>_R@mM`qY*Tp1K0 z;Kiumqfly|?lcOc&YMUPI)Y?S)9R@*{<9r;r120+^WecV`VHssU_r7!rYW+`Eb_Mi z1by_Xf0V&UX;3{7AsbfaCG~)5_4{RUp&U=e7SO|ohfSsD+e7C zH6d7nI?Y96mAVgNZ>ag{yy(Es+Gj}~p`EuO*5Eh`aETF3$_sQ_=t43ACz$Mm8P=xQ zJIheSxUO{$&ddf#gjNNQqGVHU4hjAeK%b&A;Q;sUJPmRxfS>^V+7kr4j`AQZSVW=Q zx=q%HYi?8qePk`s`{Jd<0b={Q*$}4lH8th>I*Iv;5wfCuJ3;@^-HpC%xE(p4uwzV( z*&mA6#YB;+!@YoH$%8#tBdp{btubfsz!y#FPL9`yNY3&3U+LsBx=hZ17l<-x=cTbf zL5};1hwemt_X5Efs2+K+Deb(5GQB%}bL;xJ%p1&$7eTVNKd|{^iToZsL-$O4eEwD@ zQRIGOZF~AWUw_`g(@~K$Hb&Pa&}U~Jm67|#tf6I(WYe^EUS?>|y;~-i-e}euD#=M~ zkxp>5+xu^vqCcP|Ks5=hrT;st2zdI0)xn*U63OU4py-8zxr09-$#Mu;h34NFtt|;JyT$bIK~tI4 zgQJok_0-So zX4))Lj_8y|00bPY8c=NFX_$|0860r9fT0#U9+B`Ys45I+stW?=Z66=m7U3FH(zv02n)7JNQ#-o~Jla z!n?M<>x$H9YYCeVy7gs8y7(fYEJT~a6iOtyJj#?FyQ;t7RP-Ic&b4h(`YNz?oTD*QjaEs^Yw z0GzFV)c%Elx|+jLhk>^KlIog8#=ajqWN5q#eW>5h?0_w($Knpn_6Oie;)Po{Qj!5M zAfG=zD zotb9_kS9FkpC_L1NN`lV?Vc^yzd5CU)3z6%NXeQbUc))y!MAZSfI;Fvx=r^VZA^=5 zh~9QxD-wOt#n1^ zt=r9)$q|I2G$zsmNMmzi)5(Q;a36FviS;J)=8)VyF> zmzVx_;KnuQaW5H)j96!wQuYg8S5BrU`W7tkufhpBA`y?g(mVQl_C(5yQe!p4Y3IE; z7l1@7{F%W3C=*2ooe*^_u}If9hSJ){<`X(i_E-0!Yav{5cLJcHoGySM$Yt-GWifx)5BZ5 zr6Lr@c;8y%wh#4dqU8=HM_af;&da97^nn91U}vOY33n>RPTNd^4%~+TE1;sa*jm3g zKIou*ZS!?DRA1j(vWeq4Ilx|V`IHQ3v2^CfsY$OdJ7JdKt_p@y4Xw5!!vNuti^z!@ zMd&;j3vo-o*%5MgRPMUCRAhBqjH(H1wxhR1U3!AidnWu_P^|35!VN2`|2@&)8qyz2Lz!-Qetbj*cNN?<7uz&Ykjp zAs|n?3nKqwx_1jlms=QeMs>^EurBA!Y5wH3Q-+?mD_VMgRG+U&Kkz)t4jf2v+gdoD?HkzX!4l1|~E5n`t#-_fHL@ZhUq)5J_v8pn-y~hPQgc` zKZe@-kYco1TTyBm;>kOTKoR-)*rzuuW2*)`hv;qMy~-)KagCfcKXv;}pN1iyVq<^6 zJ~!|5Nx8$VlV#?)(0j#A?04!g@FmlNT71HD9n2Pt)ITiJ#b+cbjjxkEVIIl2>Mg=} zc8Ntk?nDx()P-4w1ScvbBs5G$=qU{+Wy+UTLjw;Y}aN50JCyV`LP0>_8or zk!4xD=0;Y>I^z-8+hm7hqqVHnZb{=eYTL<#k=`~^R+|wiw1)iX8{h5Z#|bOnEh|X} z5_R2?d>_-VbX3%4Ff<`o053$mRX0uE!wnq0!0M|a=JLxm3*L0ancL)jd9;UP(wW&k z&*VhWlPc9mDk4oC0m84f6}AfxyhB%Z_4@lyJ^kc8a%b_fTeNnAX0sMOdFR-cjQ#=@ z^fQv7aZdET-d_v8N``hF>4rFr{XU4YAW-+WQw8QWt|swC?FCQ2WEyOVkqcu9yO*^< zet3KxuGdJ8UW9PD=V?vBwTsAO*n>n3Ff>wR?5gSH(48?zkCf9SR)x(+!LaZK2e05wC%dBjth zH(HW}_?lUYej)7T_JMvx)$mu-A$~ansNYD=`zz`XDCo0Qsi|v5A0=lsSny%GX+@9p z9JCW2U7g1GB&R>Vdv{y^8MXy+5`J#HLjdbjW(_wWM_{>gw2lQV4e1+S;M`?dXLOb# zj$5BGW1@he{uRQBatq??LeMEF67uol(0J*Nd)WK-f1T2iqJ+upl6B^Eb{h>Yv*h&* zPJ(C{+giN))oV*?*K-b1lJqa;1iGTU;u1RtjB!?WQWC4 zc8%N_fCs54WXO$wv@YYZTg89=k=Sdsdip)BEf*BbEKq`i zj+|{^{fzs*3pTmyV-z+osRwVt=@p0}Z{JI}A<$=QEUw}GYx(j|a9FT3ZC2|NfXAZ> z$GiPHfQlru>3bw`)dMCdUW-&*U>_O+EQ_xG7>|7{Ht9U;h4PSSRp+ zo~W#jIOb7Yni&K1qY!==r_Mx9Vf+=dp0*pxqK3!y^~}eurtHbhiocDceZgcs1*4nu zd}R%@u|v0l$j>uEPkqR4j93$PEz&;S%17?Idck4gJ)Nr-bCpWtA zewhjQKH!u*J4_0U7LW3EX_0;VtW92d=ntsTt50UO9n*)8COQ~XGic{2vgG7No_%-K zM$KE@$^^8ZSE*9`$I7Nfr82kKQ|CN&gf*J62;EVzgl3^z4Si^M(ivub@$kIX{?B+I z19_QkglLAl{rUwG@GLT>3>_)o$y4|3_1?LEf6*ZdQ2j3({|qF>0=vN&*l~BBka0W| z6nvKK)XM<7n?itf{w~U$PQcpE7}-S6oMA0UEIq7P543xOXbAsYi8@C+Q=UTvT!bAS zaH}q{0s?|nJ4@1j<9ROcU$Zw;<6h#)dz-^XjDb(??RocIY7vpt7O1ja1xn0cK2wWO zYpE14uu88lN9?KUQm%q$3~A9&pdwFES1b7gl26;Va+%dt-!c{l#DRoQP*<5FVE0W2 zz%^SN`INt&R19>als}*k#($0Mn7@_%0exK#OrKHu@$H!YzdrL{eehr7;Qy<0;XVWl z#*5`2{+;ir|CsJ(ZTOF^vxeFIca^O27?iv1W;EkMD3{5?!-8@mA8LL!G2vK~9jxF{{xH0UGzzhXZP0-;Qr)iXTgTymv8Czip01TZfIy z)F1b_*LXdR+BW!WUqDr5i3PUPS7Y$EC{GMAJQg4q`RWqWM(ZRZP6fpbjnO03eskB{ z2P^JN%=kqueNzMOfi97q-~#r)&Av1Vm{AxLG#s622EBi8N_d!2WGybYH?cku9xXmPtIlqI1 z&vH$GIljcD{qP;D`cAyn@Lsd0MtW+=je#fhHiat3b7yPh2#xc_gagu#ACJjT>TKNd zL{n5d5FaGv*6+FAIFE3fgHqb(KYmV1GX-jG5(8Y>9_yw6ZUt2=9RnU#k&)!-bYV@@ z6GF^ki3TGRYXBtB^SbI9E@s~=1X@28g>sf*9Qn8g_$Or?Ol5c=%H3w(hT%*nrIq4_ z72a_8r+tw)9dD|5_D%W8$p>q@>c7^@>~bwcMy2?CuTUoz<9_!EKuaJuMp1yC!81RG zqy|ldx}Bp~01E1P4l)LF&jlDD6sSGcuu60Pw3<|9lT^u1kvD#H-j#f7p2|JS11$R2 zV%|{=nzXNpT>4(Dqq2s~Ew36bN0!z(X%Z7tUr;B762RYca5)}p^lI<&GXeMO5k}ZM-`u$6}PXaEC{sbTC)|80Xn;GzzQZeM{j7OmLWYMU?z(t#z z^SX6;`(g=t7u(|n$2;V%#z>zt3Erx0@t6ECt;+#;`!8VH<8#_Vv>SgpjyVH-DqlT;n5yvGgG* zOh#H!_9oKu?VW_Iy_@3=0QqErMeCX_4*VvSJcULzq^wy!h{t9xe6n=)fqfadlL|y< zy`bjeXGXDp=!-$4%sTypR6w2iv*yMp@>mh;X32)8RIzqD#k1W#`seXzD5zjA-; zvf{!fdfjn%UN3xbR82IYyvsa>bk1I9k4`4*Yb!$bhNy2Zv-<8U8PS7bP_Q9In_4{q zeYS88@VTLheIoQldupl9!o=?r-sY)IDH^l)@xM-mozeB+tqVE5RF zncI35A~Qj4fTa29 zZBfR%N0^(tDtr`r3Z{U;WHe|K=onC)I?oq$o8#OYK zA9t?a|191TDLO{d*?w7+Qdb~acQ``fkim(+#s>=l^PL@;t;hC-d%^(|d4Zq|6KWDA{tFqYVnh3>_UM zIp%nAUm@1yY#=4pkeZ7WgVFUsSvqbIvvJN{b1(KxxsK-M3#h2S@+%2NNxAe?`RjEz zym=1|8NE}^*}ZFzqIxuksk_5!+mvQ=zsh}XqPKq9Dk8d<jPqs;3fyPAn!|hXUyPVkT0!c?#h|<-~nKaUuELXEf&7I=ooPUPk1y3Rt_@c!_J( zYqJB+j14Wcf*jxL3>Twe-@*0cM#)tuvzIR-YJqSE5lWLLzO2FuxOeAs??`Paj&Q(6 zunDb2Yi;7&HJ;cMl6m!~^bMheQI*|T(bSs)=$z(_x9Ntf`b+4gq33aqyHoD9C!X`X z4R23iUc7epx5DP;*_yO;qdLo`W!Q3}WE^W6cdu%fN*DKP^>r$$=M=-{w z=LcXfQyvxqnj`7r4=%iK&8E!K_gpt!U0>uqIC!D2k-p&x8G7k-pC@tXYPNeC@Y$k` zd@vsBxiFm^EK08SItP<>hjL06z!ZB&rK}k|RQd#lXY~1QF*Ii+ciu|ocWlmVM7ERr z2!J$_Z5BW&U;AVIW03-i@7`KpiUwR4NxQR34f)R+@=q%f?t8xQNsehHpfTGei^k`N zi`?h05y6SuOKCGkhURsj!c0?6vOF(P|3rS&|66mRH~=4+V&A{XQEi|P z5vp*X&E37eP622H%9!|J?PQE{Fi}^VcF8NvEE&L0eR_no_UVuAeXX%K&{vmr0m8G2 z^11-#18@KdN4h)NHW{uM|0Q3#_aj*Foh;Ua2uxEgo%&gNQP7#|OX=3mba@{#g}zn{ z0740-NdM34Yd7Og>Oqv7p{Ibl(rGU8TiOZgdyRX7Ws9v=n5)66sm6p=ilnBSqR$6o zgx9mtO*>De7g3y_8fuFk69!t8ytBRDL*UxivQ(ynx8Cq8VM3F@)q%JYhZ`-{{P3Uj z+erbZm^xpj+@%jzb3)!D*B`r)H!&!@JZ9l_(<|rK+Z0`5n7aB7-G(#|e#=9MZ$GuP zXLTpt(C_|LEi0ki>J--IffUPrui5*3Gpl$s;H5zzSA1#X497s(UDY_!lF80h?isJz zeywNuEp=}+O%Z2iRt#~xJR+Ak9ysGtT8~3X!U`{pn}@ig4J^gVF8LcuFcc(p3WGk0jO2<7dQ^t#Oj1e&$^-->)ik{$>? zpWe_35YFNAI{(vj`dN~{eP|!Q0}nSo?`IFZ7V9+w!O`~ss+z|wvsu8r|&dz!F)c2yhkh(UraFa>t%N!C4KD=;~ipbQisdBIU;-InGPPz>u- z6``g4NEk2C5CDHMgy#wfHJc!y%hmhhsPvgqyo8v2GL6tLltGo!*SmwX>!nUh_Pl(7xrqWxEW7U^VX;2}D##2}tT+ zIH$#DUl(k~o4e@&=?UFqKDRj*bA-MR+=r3D-)L+Tp1<37-Y|FteH;;M?7nq-oNp+Z zyMnQ}^?oFMlF?Ns&MG}IBULxjZyk$Zi5$NBt}e~{8Hf3I0vOg%X+jOAhlfFLY<0Oe z?XCe3&ML}j;plQ9Kn_vM{{s>Mwg~7|;GPQn4d}oB_?sC$DOj>tHR$WUR%;XuMqN8{ z-%|f5)v~LD027zIZ3S?%3U=fx&@VxSj0;R~H-Bc?-1}dGA~lgMf@y;_6wW}B2he!2 z|AW2vjB4r&+dff1L_m<C<0Ld0V$ChdgzFV zbOND=COrWS5kmfR{?GHyS~KgJ_0GFy)|xdRo)1}kAcv51_St9O_r9**C5T##0e-G{ z?_&f|9S_f;~?fq(-#5${VzWSOpBiGIf;FZ`jzTNofib% zHe;z9m$Hc2Q`xh>;)i=S2S~TrDXFk87-kd zgW=s=a!Na{FVF}7Fih@1m}n^AES4Zx$+(`qm)cqHmeI9SaB%O~CZQZRb+|$Cf$FMN zPD?C(V6O2G^?Pg9w=VhOi`nz9z){1{ru1ypz$)*xmM$|xR z;?i!?ZpyEnwxdfr=0xi$Wx$e8zHM0j5xwV;`w9QW?N1XYRA!@e4ah$%mk&M$+@6JL z`4-fBp0=s`LkY49#W>0Q0A-7(rw;4Nr8W5+atvMBxK6?3{qJwmf;{7SEOOO<&rt8zYDD}0mv65J z{u%3kKeM*iBB$^(|6lr>!aOVo=gT&5?H4b7m!9(c7}=jjI)Qzz zZ;#gmDZL+Zm)o@Q9U##81*#&tLlMQ|g8G&BsEwMqDvSTob`HD zvzOfg#-=}gc-rQ1#u6^}U9?gIfB|wo@BeCMD_PsF6%UkI9p*p5i@E;^N8tL00iYwa zG+@HSY~;TKB7f3-(-2@LihKryDoLdwaMAM;ve8{vg1Cj)fa z_$yiMVc;F0aF&b#WLZ_X&V{4Yjk<~AS;&XV`;;F5yzUmz%>|;QU?;{wgw3&C#bLXG zDC&9b1;JXYJ3&HGyjBLx|I^of)5T$ypQze}9egE?oh;MMJc3|liEYs##dN9D<;YRA zqaRrsR*rWS3a`5R)z`3J@>!@EUjw=R8 zz?a6d%)%|-TZ{#Zd{g+))DYeOS$*VPI%VZsnc(>`m9&<<()3}kf2Yq?Dt0*~1y^O% z#VG{eAG(#`2!yAoCKAw7+c2sG_7*>EZJ!iSB;AL zV-c4FOIC}e0iI z_q7O4AXJxF!Aa3f>1`7uiMn2|BMEfOaS~ z_jKa(*Vmo5qmAqx_t~POjlxbn>hbxd=R(q_a_5KS71f^2!{kI=$9Z zNY8W8qs-seHyzF2hih@0DC9A}O|xZL5VZ>wT#YL5+ty#1q*?fW@Cqel&c2@6pzOQM z8ozt<#&~)z^8r7s$+&a>x{)Pk%oZ>o+yh6_uQs&M$4PCarG!nct?L}xC~ohHVh5wL zJ964Njx%iNYvbnG+^<%?@G1MTtQfS`We)Y2F8o^=15e5>ED10NynBSNTy0BVP-xCM zQ+FZDi}Lsutx!CI^ZC+`{Jz{@ka|es9{7nAwX_1R(cUI95`Z3mviyYFkQHpt^#b*n&M*cj<&_6 z^S>xZ9$&o<2{^*L-Jq4GDc>C~!TC`Q4i#U{D#XxD07eiQMpGQ4afU5dQB@_o9_t?y^7t94W>dGmDHU-xg6U%&g>?VRmDujh9JrV{_%S(2xG9|rp-Ssip zPX55qJk&xTMv2Oyp6tC8mm|}wd_w(;sYdtE*7*cxHq|!AbP1R4D^k(38CczQQM?Gb zk8*+P3CNUQS&k#DJ}ztuI8LI^WS7p&_#7ogMVE0jw+zeA@*l`qKMj+-HY!oQCkVbq zoX=QV5J%Wn0m-0biB8mc1>Fl6=;+iYfBkcy_X31}#99@271cYRF28ZwTm>&78Ol~% zHHi?%>jDCPdBv0#wIvLPx1Sa9)ouLxq;`nv zd;g#z~J!Yry^i2Rc7_(YcA z*pD>Bg@xn?7>SYdi}k_}2LZJ_&z?$ndRQf>I(c_J9=Odrby@ylFyI6vq)&9+|6%yv z1YTMaXZ(lZ!@pi(6>%lt!S538nYMR?CKr4=Jh7mT@)yVbKRIq#I9~=>rJe<>$qfG* zncx0vWWENp|6^XmIq5GzfK2cQyzd`|%;24TBitscH$`IM4|v(Y8;+*wN&t>jhJW?6 z(e8j@xU7IKegQB9^LVik@>m46tn{~uFz5pR|b6DK+qXN|7q39 z5bNIb$0kZDtPCAjR3M-2xQHfabwb@Wcb`2!qF`PDMbP~54PXWcCHj^h+x6O={eZpp z>3jF7UY5B&SZmg1Z|gk`#s3j%;DswUI1*O`w7D-n+XN3IHI%W}j5^SQxycI$Y#0D) z{A=MH5L^m4U#K^-4=!l5(FHqg33+A1zEK&MW05m=Cv9S%(pa3m8+wE1}x!QL4V@?OSdU z-_Hq~>LjoY+6G>Pb}oo|-?}^e^rO4l;cJYT z;|(S+R;cRXxoxEbN4Htxw8N+Al%<6oQ68CgFeAlS15IsgiZ2T=?p@$qWE@^(VA1`J zxqI>!olbrbFyHz1r%8!OHXXoWMHYoMv2 z`_xP#YUY6Qx}lA{mW^5x1KW%^>YepcE|UzTB1i3M@1q;9o{skY@lmu{R%4)Y70HVohP&YvYoUqoxg`yQ}j2_DSQZPPH|X z;*SKpDA5BC5qQ+G115>aK}y~~bQwWj*=$1fvPH01rXO|)%nMDlC@dSdG_p#g12xlS z$Il5pPCZMwTHwYLDGB?q({gngLr^iA&;^2qI+`?I1@WxT&bY#Lh<=}sQt~lx*yLL) z5{F;nuPR<#Olo19=L8gT0#xokBP@30kJ(+IMG0Mo?**HMT2833<@w4B_rod`{G`*v zR-8iYUt~`6UEsa)z>+~9N|guFpJ8M@>^26Vo<5+4g)L$T_wB3+9MLh#5O~1%<(uPm zruN)BmG;g}^0l&ZgS;s1+{@9|l29`~%Tf6W#FV&DVQg1D3G`ZDO{2?wX?%EH;Q8lw zim|@G{eu+S#`$$(lR9(|S%yxCT-dVH;yR6+u+@dD>x)GAgcnmmT}V-?`$a18i*D8LtftGVia-6@-qW6V_2?07s%r_5Sp36aM;h#lnXYv~ zbq_3yY`KT~H@VmZ3;t1SIM5wj7D(+=Z|_iU4%z;Dg>e-kg6g<~fC694v?~Cr{Q>aK z&N&fnuwA8zNJg}2Rc%gqzv^77cMU{?P+Z?+S*`3OxN>E)=|>TVDVi;ysNmh0uUomr4BpZ55=a!qg^;%a`uP16P88fwOa0fQAjD? zy1Y0ic9TQXIU@aPet^sOn|uTP4IpK+8G(GD^U{8$Fb1GGEU@@wwMkE4{>(xD3<u0n)m?uK;1>U%7U(AkasXeuf z7!&13V_DwOp8FjOL$HwrZ0j0*HPf!fn{HillkN3bF}i%+aCRVax?(R8ApBTFgT-5{ zPO6AzVAu40UtvW~hyt2uW^wP8!x%9gDpA)OPavwc#EBD^*))+dZ$#rnE`sznfG)H~ zFN%Qaql;Bh-AmyD?MLRVB&S={&)JSY;{q#;u{p1^Ps#I2jWd3~7T0#8;e{acqm^Pd zpq0#Q3!p5&IAxgaEdSi4!J#A>FYV{Sv!KN_x+@?qnZ!T(p*V4 zyxz;Zjb-I39$}a?05a;lrM+$g!?`QPO&sPix5E6`RJl zeZo>lLXvR#eA_1%dd?L@&+>#vxR5L;mq~Wp2Slmy7RAuzqU+OjQAJs0%P#KrW52fo zz9Y)Q0g8m%OT!793tzTx)P+2#rbY&@T%pi8_| z$nE^xk1WJ$=EVH9WT3-Tp4c<2()fW&?MC{1w zr9=+MJzo>~9o6Zlm((XG=|NWxmHSJ&9daz@`dFo$0>SFu>E)KPBW)rND{4r$xijB0o^{i{MoF!h2%GLkPHLZtDM7fB z%Juokq0x$K@9#8|LX-ZS-BTUUv=R9}Uh%1_@y@$|>YKa;Os5jgGq8L`Xp99{fZ7SZ znAkdB9cTQ-n8&*x-5)-c-;?SeC_m$HFKoBXJuvs-GxaT&C0yh-U6?9kHmv%$&a_NV z;R5@8@8@|xi^8r&BE$UrJkp`L>ryKr?psdz-bcfXC7))wC3!ZZqSR6nM+{O{f*Zsk~t@V=MpfY&y96Q@M0P7Hp+ZB#013qR=rHl4FWGc zn1B7JQSJYn4Q65|3FM`W{bvdoAA3{Eo4tL^z{{*h1(KqSeWJ?;w5vdl3g*9B z73d>mnZ@s4lwj0*y9NxN^v82v=>{w87xsqk0#<4t#Tkt*P*vNz#bZFj1*KnX8lycX zHltX(^z&e%3B~>Lbv*+v&VSR5R%dQ;)TYQL_3%bAa&<(A>eTZ6)J9*}dSjPP(>bZ8 z$&$g8GBUnXPXX_c;YtlHo`!fgy?hC-F?D`%`+_M>fm~)dwEu$f&$k}4V>cuoDSQ%# z6PI@4z@Fy3v}C<0o(OB~R#R6*a!wd}H^P z_UNRd1w`WB>I$HK-gHsyYLkgxT_mg2LZ(6j?)dpxi^Lu7CVh^Q_WIeGv~pcesKDVO z(1&pPwIJ5=l)#LRp}BknbXJMbc{%$(WmhU7+o6XVB&TRAS>?NiXvy-#Q^u<)A%bsM zA0#kNcwrO)`-!y!jThjKBji1o(A@Ba-u!FP;dv@IhLb+c4luFD>2>vo>T=y-hp9F3 zr{9qqE4dTc^N?n6Qs=aUjnow=fzafs*^04~pKKNhSNL>5frt7+f=<(O6Mxx^W3N727fjkY8=-|_LNSk!ztt{8Ou z3L(CF>+R<;%-aNaC9evpG>xS9^g;ohg4wcG|Mc(32Y)zz8LT9m>sZ@dZqJG*p@CLg z#~q}|ma8naqu9m8yGb71p=mbXTDCxVI=1V(e0+1(%=^2eiS4|P>08M&YHo5)53WC! zX2tn6r<|urlI@aPtbjZv>}y@cCDgeEIBv%=9V##Nr>OjNNR(Ujk;$XRbiJO-dG5!B zN;gG()(paT_|_JLQQj%%Xs5<#0%1hx=dWWl-_o{s%-bovAx+Sfd#&RuIh%&hB;qc9 zMF%R-xLbU=m3;u1-w=$v)t&}_Z!t_WDfGgR>Oe=mDUU{d?~W_6hNNaGO9osyUv@o- z^7Z?x9?@^-2mXfYzqxcEAn`Ya{7IeN1}pnHls!m4lZfU)@*$q$bpuOW;qJuAIH32! z`RyBp!b5!`TPmONDEdcKM}P;r!E)r4H?m)G=d$7ENsE)re2jrOVwr0Z>WEc8 zkf!&1{Y6_N{msNXXMXE*>q4`|N6UXOvL_WtRqq8hT~3(WlJU;2ZUk|lc2rlz_v&BC z+*FUu7}`Pn1`f05@m=8a{oyQ0GQQ{b?8#l$+5X^LHgGzOA$h^Ehw8ta zr$G#TsS4rt+L3?)=-Gt(HM0e%%xh(pH`CAXeKmw%O#am7QGL<|Lki5$ye4!#@WKEFa;8#yU3>YqWv+!KxtI>+H$P1Enk05a*Tf4oJ^0$<(EeWJ}_ zJ1l8ZTfFrP9BtU}-fUd{5oCLh+y2FXTtLC8>R`*6rc#@W3O7O*I32I&yqOs3ct*!e1Xf3o`cS$6DLLayq18rCZ;E@MsBI`iy?djB7*MC8jqk+v_8vp0PIN#@yKJLY7YXMwJb$6!|QV_XcsI4dc?0^_YOGJ=2d zR;|>%xurffJ%sf%Mo4D0m-it%gDghq4^;oTu*#3`9}^1%Ecl)@=@(C?UAX-Co!!yN z6_&qvCDJ^MYg7I7RyQ}{%e@y}ezCR&Iz0V-m}M6&m)rpTy58_N$G`^WjSp6Lcng_) z&pd&ia@l@)W+_#vxnx)QMjv){rH0?*WmDgE`SHtlD3NZcVb&b>mrVkD`5k8Lp>it+k9BtP^brznt-Dw9}yV)~%Aj0Rg%OYrQ$h>#{6>&+tLhV2^ zCs&VJwRgUNwl{NCiiJN*HoKLI`LVDDJ3jl;p=5dHLu7BZutgtQ0KNs>mVEjW@FyTK z?|R2J?9z-#1i#DWBOf0fC$S1(GtntE-N~Udk!cyEa@9J}CKxgkR;e3aMhyqlIOph6 z)XA;RGA5)<_FejSdxTb~T5af6cUdz;q)%qN{rv6vgGgD-4~I;r;WkEEz$nTK%(j`+ zmf~CLK!EB?Owg2+7Yx(x;vIcy6qQWNoi|Y5*^iRkh1|R=tS#alvH+(XLT4@eND~=r z6N4Vbr0B~a3`u*P_j%yAx{hc^&LKI@X-=&z=FCNTAM?_suc3iQdQx5Q*~(Yl1jD*x z+h3E&3uIImT9|5j+r`ur@AM$WcI>>&*dLLIn|yzz(#+4u<7TjMaCwiuSF;tkXAyXe>*vyrH}YaW(VGYF)7s!UxF4|yFRvLB_=-1^r9Z^FzejR+xm^Ax`J%KHrMFS^YkgC};)X6}Q923%cyg zEBA8;1v{|RQB^v%AzeevP^8%K_R?683-_qJe&;AN8xZnkT-A3j@!6LzAKY194u%~9 z4Ki;w7Zi~*5+U;iZranvPu56Q&4bv-Sd1^#DMQH{SasWj@;#VpT9$hR&&RkzI|HX@ z8$j4#JQ%ijh8jqWiPhzReWt#5B)7#7&+2NxK5Ps-^@o)YNu%9M^m-bgnf#+{;nWzlk_Bp=ShDan<0Si*`Te zmh`ODUpN)z78&#fI5aJn^cu1@Os;v$Hqm}Qe=|`zl&7zV>_c<4*c^-cwDFC#=pSmY zu6Ly{{o*1N%_?QLjA0ZWH{EM~ak}r?K6U6uMo)x;46wHsZkuCThK@p=_p9`igg(iE zaZLA1R+`BDn1@K_rbqZRN7)`-k&Jskkbc>+bWX&BG4(u~XY#Wy#zfmpTtEM8jj!bS zV%%t>_p-O?oTCFyA%T{htA8ffPG$0BVhHHpM~hJv0m)6uQZ}8Nf};7QP~8?H|6%xT zOcz2eDS85=t*!CU2$Y239%jV{RBl7}Jgh0${Ef?u__n|IU*Fr?5`HX!xQ0E!Aq9W= z)6_`pj(UeLbe$snALWB;`Nw8&l)(KopLo$)D3U3B~WLEupwf zLDZ`noskmm!ZdaATluk!FK`P+z`e3xEc^#X2DirBKZks8TmJbE0~9sQxn%p2TuedK zRZ)ExbwtcieRy^4H~jPBwefm4nMk-;KkKV+jN&95mXa-#QpGO3nEimSQQX!dxf#*Y zEutY*)9D}pzZE=4pQy&r6fx6D&kO+`kH!lRcQDxq{&ra`@P);aE17@#e!y1=$!CGX z#N4t8;1pE#ahU$Kn+@}%UEk|K9Z90tair{;e;Ag7I*!lL1Z>l?mt?xQMi(_`*7dq6 zm`wB!e0iAb@2BN+&-0v)r%gG{o@URc{h;YnO_zpV=iJUgMg0~N=&D!#>6brquR3}3 zOlGDHdcc5J>6{iLR!bLe>eqb9WJYfz%*L%{^#lZAl!10ONy!9Dxi}puGwu&mY`%hAPfWPqJ$Nyd7 zd9{etcakZG%ymCd-L%mRex!ocJW={Rs7;fy}k(5owz;E+B&(rG%5e*tZG6+ zM&Z2J<wasF!Sl)=AVX)#^&UG^whC1B=pWovb=?9Rn zU2%Or+C4lCtY1i?=?(u$a$UEZ)CHH>|MGjvZ>8llQ4^Huo^!c^67;U!$RpXM(6%^+ zuDc21T&W}VCCSrlfGT6U`bKa$Ku)6+!wM~0_KZ@XO~zA~l3WshXq2U`u6zF#h{r9y z)5a!#q_(obySjkL%(iQAoo;c#tiH~9q1Mr-ga~_f@6eExQWN$=%f!{Ri(&Wh%(+6R zOeW5x1masfkKwfIB!M2rB{4huHWwGQGENTFVK0qCVT5+kfk9T5vP%!!OrQVNCak{G zw{zuR`c^NFELs3Q>+Eh!eA(ilfZe2mT4|lHg~7`;5~ax3EwFT>;u&^QX@1ZzYt;D; z#WY%}Fwx<%LUYC%2HmDdAB1oRLkKr5*s1zr?sP6NFXAqcere{vr`r6u4oe?u7~8F6 z4;?^OhXv$mxpTeePc{F0U@MVH5fh;BL@4yNQ_`rNYhdavx+J`qD3~R3N;E^gTGx>I z3rMM@7zO7G~*}s0m%TdUO|>pQhM6sxR>?i>@&GWUNwg zw?#Gr%2A!#AtaThD7W*-o-wtHVHI9rS^X=BA6>8b+E157Cic<@U9v9Twa*RE2w;Mz z_N3GAKm`WseUwzwwhe!jBndvW{Q8tJgE&OJg6hPa_0ks@FPyCNIfe*t*fmYY=6J@` zi5U`)M*BaSV)rW+Lv7CfsS0Exh*6nw?I)!ac!JWy+94*J+v{QkLUpIs#0> zCg^I#s;X8+Z*MhyMwf)8^@tY9FJq5c-hBOVDGSo_{@KJHFfKohpcV^3EWsxr%W-*{ zRTxD?Pk+V+oA1JC9j)g&y0#?myH@3iJ^k0CAzd?OntegHD!KB*6rgNa{D5Zr4Pn_h z>X|Ph%7#qn8X&I1im*|2_bbHg9R?yO{9`?hO(sd@X4g5nYz-63uBR){n=S*LeaVWH zWI8`WmbBBCcqy!nhbnQ8^cgMxGkMI(TSHyI(dCDo9alo8Jdc>FM8}#(;WpD31DRUt z{bMHV3k;2=#58QtSJ9FLOa4r*=%hkAM>j%_n!z!DIQSl=J#KAqyH-KU7?SII$|}C_ z*NYRbW%Vm3X2)}J4n&mBUP`*rVpFu~xOL+U+COwD!Ww_CA%}QL?s`OPMNi4wN|vm# z(_$?xdw+dCQ7g#BU4V`nXnTNpy}9jwQ9_jnYgdFffrXOSQuO>4BDaa$zUj5goi7VR zE?&!h2~nW|&-=(=S9meyMH4kIoM~nZMWm*er)3n=0Tf|?aKW|pQ2WS*$J(KxfBgMF!|~j ztO)80L`pt){|4|U+Cifbr$>kW6GyTfBKQ#36WbJMdJsN% ziYdOl*2$?3A8ZDGT>f18o$@79r?;tTQr*QNbKP8x?WN_okUmhdeleggX9l)GfzE90 z=i;!(q;(>!Yav!3=c%mTthg{)D!)Ri_Gu5_tkbvE2i0kfUzL^cms=HBZ{6n9rPu8% zwnL~F@!JWc^Yt*rN zEFCs|xEKzCPz`>!q4t@dK|Ml4t9J7r0;!`Z*HLM%VgT2n>tD_Lf<6lXnqvh(MC5qz z(iEx&b|SLg4xl0~sp9BL7B^gt8veeb#p`y^@4!Q8I-C?>uf7051p$gy>1<#rdh6Rke{_h4SeJw+65f|RA+j8lm4B4aiS%R)VzdCQVR$3%t9%LO^4BP!B-ct{2{k* zVpQ*SUjJcyZxLCy>DGuWa+(BXXl@-uJQ9!D*feQ9*fo0omyMD}hIE5@0OadM5;}%{ zjasv``|1N6bZdebb9=1T30>>rvaqEzB>DO1`=$X?h$S;yRls1s4BrO8(6E@UZ2*&o za7<2K?L#kB+wvIxVXz{!1(5rIei6L~RDYOQ008hJe7cZ4WW`8bbt`>wn)=^01hY9-rxx4LS&zI9RB{OO-#P8@c(1)6^ zfP%XO4-R-qeD&#R2%`%&V! z#rJd>YIX$zG6DpGUhC?_o!8g@>)9uKk1lkKEG*n0ZD5VeTaF(h!a%_&QuIVfr%~ zCiS}hes;1l_jF-Wxu3E-LVNeGfgXrbeo`ESnr2z7J4~u86El5KgKe!DE2yi1PeOMU z{fMtQzmk5(cuX=M5C8$oTtbR-?Pwd{rnvMl!iH3j;-%8@U26k7!s=ht z)O=)12UPo2W9!Q$`re7pycka9x@xOEf05c>OrOd>gV&W>6lfa@c92La1Xc&YFw<{R z^+|ZPIKZAd*Y~J;?_SA_`iiEG6B9^<3g`!!auSvnUi}tRhj3Go-^DbD&ZrBLBQ(9G zkWm`gJE5pGh2n>PcxauV>8z2vv!Mh~u75FszxlWGYg&(wxR0(h#lnunsE0{UIc2-3}4F9e0%Aw2Lgj#-+S>7Lk+$==A;1S z2|GPC2j8-!S{&> ze}$LJbizqK&1Nx^925eqlQL-L2}EsRqI37-cZI~s|LJmH4WmAmp1Rebyx6RD>xai_ zd^aGQ%z974Q!+>B;?$asruCSe788uo(xAruY{yY)jcnzZW0m)seuRBZnY5dI65U!s z^Hq_?^FVlkB0OW+=rvN(1)g$W`wc;$JLQ6xx`LZ=x2A|Wzv1R zVc^A7$BDk~1d$Y~y(?EeY5pDA8XSN1GMpF0;~mIhzlm~dnb4m;{$`U$G_;rSxcve# zAY}9hbHM{Qc^*wPwOc-=wlagaL5tY{#SKP1rwM%l$)#9Ac zlXRh$hL=*WxmA>}^j92PBj*B<--X4JOG{}wWN}OZ;2c&jDw&tYewxxt$0+)x&bf9U z3f$G&|Hxj*d-|sRxfKPZ7&T@Y*E@J?S)+YOxMy+jmh-4DLY64YDMHg4FRUNW>hyWH zz3U$7P<#9)OS+}edKHKeE@0x6H@koG8Ml}#ewlheMq81y@|G>m09QYugFl~r+!L?M z)wDX9btz}lJ*=pC&M+&`giu1`j^+G=uyXq;LPB!}1umUVWTZrl8m${f+9cKIE{bPR0)Qb7H#!Dy&5O1{ z_>8__V%m6qq1i?ix6v|#^ue%Ph@Xm*<=P$Dvun!eEqgA3RI(?H8=x)69V;U)P#u8$ z5ogz5C|1OU(8YwmA4a=*wuYU5$rtpidJejIPr)=;e*WSC_Zf)wZJz-DC|5PLk8F3B z>*iKmcoXj08z@; zUJ|0|85O zq&tLw?8h-9MK|(QhGA-u$fH{A7L~1eLG9=yA}c?EGB>$r?o`t6>{=UF|IFI{Q2@k` z!0-n^Q3z15q{E%}q_yMj9I?E$H2(tcv0uVC={|#wMVEx6iy})EFt% z|0Lb%wT<9U-62XiDLD<8E1CgKUZNbJhmj8j7#ckmg0AqMRUnna*J?XxJ$>@~+>U#6 zr%ng2v2RTFnx=2^DTQw?6y4CpvOU5A5&R0NNV`OSkk3JeMfwJV*)_>2FN68NPHZbW zPCCU(*W_*cDQ7r14v5BGUMjd4ZP&v9cvw5GgS`|lAji-(uBAjAw@GP2scs;#LVa?< zx;A=pzw`T;D-K&%pQDMqlP(MY7+0V1!z1gFDX4(#s&ULt{~>^`_H1uND3-vhVImL+ zJjIDD)mx>Wo5k&7Qo3oUvC|~^#NfN%-7J@n@wUP%OR{U(4?A~H%Jot9w>rIEfJLUH)?vJitZ=T{Zqj=!E zT@OgJ`n>es3ECZ^>>D#v%ki~|N{lOU-CORFdid)^uIbaN2I?iMIBvSI12BRNklJvV zD+%4xGlt+H9h$Xqn=FNl?O_ThFz!BK?BoT9SwfiX6Ti#sH&WmCKTuY<6=7Q?xYO;` zbF*)?q@QqxfdwzYC`#E4@V?3L#4Z1=WuNRX(;&GJa=MQZ|Bs=>Kb%w#RQyCi^-yoPME&9R~z?uorr@}{7;`Uc~hIf0BhsaTf8F+GhYpMs%YO{DSrq# zf>sm|Z0rVH4G3lXkvD$#2?}ZsozDK|ynD*#tH8AnT&IROlBQWS*BSM$JRmTxDGJM> z#lc?kEX4Kp9iMi9aiL~$?pIUFtKe4Y1DE#}*w!js{^*LS_(vG;An%BYN8y#YF1a7d zi6sNwzkv7+2tOPHWFehM^bjWHfGYT?D>mR#}6u(eok!UebKrYzD|qSu-^-s9d)xXSO|mvwZMWPUGbtKjDYGl5l1pl z;f6l}$F_-4_1qToKphaF7G}GDpU+Nj_8LbbWe_QyVGxf(0HqVS)#Pl!tM!SsU^WoAd&Y{*o`dK_NhI#{7 zopJV&Uv)cO?I4RYRYo%#Y;TTmeZ>t zrgWvGfNF=f`^lzDxcC+@srbhG9(|?>nijNVBVVd@oO!Jv7^+sTqN_Y*MDelZuDO07 z^H}G>8HVg5Hvm&NF?1^taQ*@So8%X1zrCHVN%|bVmN?5Qd2xAFl!Uv|zNrV@|EjNb z@(Jt?iv?kaB9S0Cgour96NiU(&9jkjYp-^}VSNIGp1D~osBlr!0AqjA%wL|qP=6me z_w$0XqO!MNwk4h9{RV;H79BNE)P*`d5$B28=00paUXJf$hGV@|?5>}0Clj{eF+s>? z#qgoSZSPLi-4%$|q4A*1#Y!U5{A@dgX(d!})BJ3}i&h;`jEr}vh|!JYS@Ej@Ur&eJ zE}y|(2VFh>;h!-!*0`KMu?DJx>@ah-E5`T)dsod<3+x+GOiA-^MGl*y3zS&TMg206 zE2LN&K6AMB+|NN$?u(IGUo&F*k^YAR2pmT}S0H!OIm{}vo2rBLEOlP_l)4&j&*^`X3{V#?9cuy7{g36|C{j9nxd(4}2$}f& zx_u9gSV=Z*e8H%-9DNp$J z(|}+go7$Hel6fF&=1yr!_K+{2u}q65ti`(0`d1GL!q&IC1KtUpi)VafL_kS;g&09z5u{{Ner#I-?ke)d1|yGR|b99bol9z2Y>HG_g{7 zApQRGi>~jFo?$XU*F_ANQcjVp?SFv;TTD*sBz=nej&FG#%xaK6Qx)ENUQ8-m^N3V7 z&{G2lgTOO4ke^pf3EO?h7DOn3a1ie23C@I#rueszHA*rUqu7e$b8 zM9}LtDIc>E5SLHZQF3; zn8Qi2zR6kP_}A-pLM(@bYmSo1rS?S8=z2DZ?o~B!f$yVDQSUIJh(Oa7)F&a0px$ zeg2VD+>;WGl-B0R@OCU2)wS>pKgsld@lHWOT}$aEPQl|D?->@&4t1m`5)a6}+OGG* zK(FZlL9aW*#kKMs`*Y9O@;&x!U-p`!1|{S6?;|%p;F-P4Do*COmxD?e0 z&TaxSA-EJuA@r6q;X@{QT#UqKDWqBx)&2{ypmGIobELs(JgdVe)E;)#rU||VItyW2^|Ue^PUXFgSc=@ z&Ttf9TxpRY^EkZf20Tey0*-QRLT$%XMy60!(L`=BOn)#od=ytj#-v7S&2W_zq12z}|&(myHl4}&R#g0sqn zReTXb?Bokwh(2tWtxi7$P`@pNUF_Sj0>e~Pw>sfX*1TIs82?p=Or+U|)RwQJ>x?=} zLpxn02$5bI4CtT}aO^aPu+P&b;eoIMYIUEbPdGdz?sMj)H<{7bzX!l?PG1xr^ioG0 z9&;kU5%4tbn8o$iLB|+gIQSklR6NP6O{1=DeAPI}#ou>1>JNu{nERzqd66v9!8dS+ zCGG@>o zr(RCp$$R05ERd?c^s z>%7KOW|Oi{=0GGIN1GZvX4#?>64wNYqVvxADQ4<#m}_xXYy7fADe3%^Cx$&gnlM%M?HZXH9>J$&knHwU(hyKuuX6?iO9CFy>rD0 z{;Ahy+>hJ1K%JB(E!3UfeZ5#}jyE@zv+Pc&piR^47dAiJxlGHz#sqEy!9$62*8vr- z3&UT;F4#2r@;5}q@g&b$HL5NQ z_go65CP)0?pZ&0H;uzYqM(@M%o7N@{E}nSGnS5XS9xxLcH01V8{4EjNqC>{F)0Iel zF?D$&z2ZWXs%QacwfqE>&ljh`^HtB{w7h(CH65Oa+jKm(e&(K`Nx0*NoW5In45Ha4 zh&%Qz?l^<)K)%i@1Q;-_S^(&Q+_6Mo3GER-Z4i0{)$tBj!<+QKvG?9#O}zWQXcQHt zh|-$`=|w;gqzFVrKt!qnQX|qqxdq6rQAP`81cUABMQ`^l(a8190jSDcElS2v(r-PRD!>>E{?A5*+j+&Q0K@uUQ_f-4 z(Film%Z5Oe@W_vG(`6gNAV1`V!FQg-KLrS}aBc1>*b$h#>svKt9+RF}S*=abC6Als z{5DyF$Af^?3p)}w4Q)f5RqIxxr77ULA?M^raPA!B%3d$d5;Wum$P#kd$`n zH|U25KJ%;MOj6_1(V6RjF(c@IcgdSQH-C}Hf+)00c_W;My1eG_w7a?*|7NS47U3oYs1xLB9T z+)8gL=<*!82s@P;Zr96YoUaGfY8l--^K&1z5~BUogiPauXbvXC8~JN1T>`oRN1Ob- zC350sN}zLy4Bxs!d5N|%07uK&tj9bg<0CZ7Ts!l7>y}+p8>{_rRZDXqlG$`rj`3uQ zFXyybQgb5Nvr@Npv!+4^pqp8Y(&tpt4R7&(JC)<___OVe1IACT%QfhkSe0-|AHRwv zSIF6~OBEyj`>{nWAhDomx6M?W7+WdwLuyU7iWT4d?3fdKd5epxpg20CpIZ1H*}Wa# zZdRA*(;hA+5^I*)Zs&^tL61KJJA0S~97ZB~9<(uQ(L1-S;Vd;ji9#7Zp35uv`DFIR zg(P;Gt%ofH(TBjt!i|Tw+BVc{rO}Y5T6h0;biA9VKYX5eUa0qbLwxt#za_(!j~Br3 zQMyc>8~*kxKgCwjPMmhdOTG&1E1&y~DLbowgJ4h45be)8j=%}Yic>5h5p_#2R@nh2 z7u@&I(DP`I#j}`=%IWX&(;foiMF9s{JbM~4^kCy(U0y?^q30ip5!DjVa5i>-!ObRi ztdHF1jI^@zWR232PfVa)2KwiGQcNJ$>xt1EYH?r2BHZ-k;y;JP={s*P(yp20G!WnK zzXuG-K(yM*HlWPNk<@gH3rb8`;%@9@d;?5bDInnW0oI<2;rEnnemNPp)@RS*#h*9nUQG+sAmGfv%$eD^6 z)N>xFY~@3mZUEVXK2qm^@(5_qrwtL~ru6fHfz7pOo9g>#_vQt5-`$0e6ASi^^VOuB zkxST~p(?~ZO)!EEfKULd6vzG0W)P9LI;cTOGJH!2&-gklmiGcS+n;pe!y>W+lXZB>!=%Lw9XPcWt>g%iL{;$f=#H zgKm-D)>xE$^6@uJH~|i!F#BZCg#Dmrn>TOta>MgPugF zsm?!idv~<9Ih^!?Oe}Pc^x#!F2s6mJq=me(Dvyz|OY|3TBjU$KXYCyBXmb4`!JIu` zN$8L95S@x#r`-Y-&e(|UQ4RuSQ~F)MhU*$I#{8mXyet`Vo^k2b^Noy4f&&kapN%;l z%0G`+UT}-NuE2J#uqE@lQ2QY*qO{s1j9Krt>qRs#c%QY(ZR24#i z8p$t(S1N(-a~%u|yJ`GSG@JjPTFXzmAYKu)&#W^=#c`h9yqZa10Gj0d*YgaFT zM%X%?@-_eKeqL`Qt7MDII1b=F7YF_E6aLF%i-h{hTAL)G5yw5LA)ynTayuWKMsL#bO=MmCjbcV7Vv<&T$@v3v>rr(X{+_(xv# zn(VJY2CA)0tgq4^j5UljI}J=SkvUVb`nn_pq+gI9ALEPXCvk8}O!%oY5(=UtWoMJL z&R{(%T;qNPk@jQs>qXMY0;Hl#u{iDQ?bOgHSxbOnbkrPpG~l+pMvSp{aIwv`JxNNI z3Hd}T+R9q~K#3x}WDq)Vmriev;BCDtgvBf1($GMkM`RezfPKBKf`N3f*cZ8Jfhi<< zirLFQwWr^%44WV=!#|Ew62}&ZyNKINDsqWR96u^<=O|bG_>!uQE-{R~bl%@mK*K19 ztfZxDok_k=_LH9Ybd7~zcX_^3!wWV#uO55`+W$Jd1J=$BA8AsgIB4J^?_jwZ3G6x zZx6eh@V3`22EVbWeDZpvQte9VCyj#$_Ubs%if@d)VYFpp!2W+X|QC-80b(O7ESyo|%zt~em$9?17Gf%tS zLUv`Cfh#@WKqYSk3v}GGmUuf*fs@E`s`v7oM%#v6sq%DlFtO1E5%QtjIUKXsm$7}e zTk7&&JO)WExt~PCIO1;wU#p?`fG`7J7YPHv_;i3$Lhi@24Xu#aEr1IVJ0}}Nd@$`V zM$sdWW;$t04Hu%sq=l^`_g=Q7nzIio`hWF{5^#tk7fHMAc5~=X|F{18@nS~OycAbS z{G0DmGa2~#j$YBqy=`H2>1JH~*WC+c7rLLf?1T&rAR^@f!#%9Zu{$nexxgnTj7sn#Ql11=>CEicWpueVzFS!l7+t#si=b!~0(Cih zFgasuk*T$Q`IAYjmmqc0T&>4q4pX+c9@zk_i0tl7?3Vz8RgZpUmt#X zuZVxY>U{O4Y^1Z8=Jb;S4l#eC!Q8D2ItD3zuOA(m*Q`4m$4#B@OP^Pm&EvuFmqG{C zgxfQ9WkIp^Zyd$4d)aa@vJsF^=BbwJ!A>et?M8A}TE zWU6m$uAGU4?Ifw0`>a`c`7<12R77jlvdLM?Xs*7OTC8jKmF36M9Dh!3m+>(r@Zi|0 zV;rNLAcgMPX; z4p~n`Aq~?#r{L+ueHqA;V4$5t%zjhy%-F@41`$BIS0@=Pd%Ji;G$&vMKj7h0 z>rOtvylnFB%rdnrug)SU#PwNFj`SI?^+aY;&r^K$-F3MOtLCJscKUP1nMPF`4Dvx= zdLW9MIvM-w(Nuu@j(N=U1f2^3ic=$iv#icvG&KK6SM$$a`=4rV6i1t`;Q*kS{}9Ld z8}!TD0eZH;+~|X|-!Sx8y+P?WD5pO4#O@zN z*G{H@!*03D(}OY3V@{R3cS-){+6z6iuR+lQ(>`a!8UtBMKO#GB{!bKBZxMaT z+h>g3xV|w$OpQ%u_)nR@)SqdpRsQ^2%*HZl4RO8S`UG}gy|`=E!yb6o^%|qBdGx!< z4~lp$#pOgi5s-F$h|d~Y-L&4eetb9DV{wLaVaC)b_xdcR45K%nE>^b5Z(b^iu^ ztB6unGUO2sPbxg1!As!Yr~8S+wVaBOq2CFEDXEa<)ISHVgk13?UV!=haRc0*MGW%I z5?yqU!qdK=)yW1CnQ}XzzYLmq5lalA&8PY=>n2-cZrZX5j8!z_j35lW__s91s_wUv zLx@8bac_QujMBuV7VF6?UsC6Cdrvm({su{*l7EAo7AY6)yc;|x0J658HzH8>Wi`V! z+9=BU@8+N=gK-BvhlVTcpDkS#^~UWqbjst>3`HZIYNu2%V58b}nBQ2Dw^SolumG#rE_Q-#)e3nzSwc%>CIK=y&#@X8b|&Nn^*gxCx$nL$t?2lFu)Xr zw}U}COz)qkxkrh#mkdbE#ZSp%RIaAvRz~kJ)CIr3F55D(&GGT%;#Q{ucYuk28(zcI zL5^X=nz79V_p}O7TS@rz>7_2BJv;2*zhG6RU}J@)gk1PjKz~xSKwpYH!?*~cTGCz< zo|xg5u^i~{4)I>}#9Ogf07=Fu@mPUzd)Jf_1!t+8B+?TU5kLkGL)BU9@KVi)_z(yR zv!do4ADMw=!ez_69*0_hUB$W5vTm(M%ahs3Q)8iBQQ+l;0IE>$(-2a&lPc8Y zRhJt83R}5EvNd2wllqn%OY>e<4m1M_urL~~5;9Ia}C>5Oe_h1q7F1!lN5 z96X$@#@#L&up5nuf>LuSJx_{WY%dJ1VUa{wU8al&Q7F60wVdKRn<*RtC|e{#9W&H= zb`nw{r>KN!fJ%nuj_JQN^3}tlIy_btIT2ZbOrXfVn#eeIGoB*M>%|TTX%o9}ka?l8 z(Kd-fAo|fL5p0TkP4{A4JN@MfB2^V0uh`&q!Tgb$17owbr6*)uyL>G6jJf^TccRh< zAv1{%?Fd89m%sHOvb|z-hn`+OV*4tE0IIYOpCnq=fl z@7RwvFag?+mQ-39znGlORP{)qcU5Hp?1A^c_dM33WnIqzr@_~;>&x9?&(ZRw0FtXR zAq@1=GgsQyb;pHPJSs+l%RU}mPEzP_aI?K!p&BUfyBo6M#mWD@rq<@Ij}-UYN?}-F zFS;GUBnw%pM@4{HCbh7FG6oC3L9c9}(}SB%-0i$G*OP9PMDt1+ABeUNco;6W3|P0z zsQ(~-!IrOBrbR`HxVS%&@8!0jXjg;PdZ< z?~bnS>?;+<&F;tZ26Nn#x>}aNaqH`^IUn7pU(*uXdS}wjF`>^B&#8{W2Z*ni;Oe5o-V$q8!BscxXw z_%=VEl?u#tZIoe*9AWo!?Njoap!fRx*a+(7xZon2`=xM0+*(fiN_|Sl6yCL@ND9&zWTc;E=zj{N#A$RVcv2r|P2ZyzjupVc>M|Y}A za7(e1%6X~;B^B}7fO+nQJPV#Q0<~P4V5FFPntU?M^Mz%uZTo{)a*x5qE@SE%?RE-# zNj4{sN0Clg&gq?|OWQJub?Q#o>J_C9r&tOtm`ecr52+d0jDW6g4rED z5AWp{a%y5W-SB>Lu%KgsmrZzN{qbwM0c;iIWgk2By>5?(iNiIJ*a^>oAoTz59j|gITW}cb6NC`Wi+a##gU&oq|3^854+KpNgrR8e&!?T%xQj>4^n1MqW9 zOpB-ria1oNh}rMF?{^zCD3UP>03&&5xyAO4V< zw>$ITVm#Yxcq@>Qyutc>otQyKx!QC7#LlCad9VyiUhf8h5=(h9~bWqo_=9=(Yv$ zq&OrJ$spl-uj4tFcArx&48~$<;c>{VJVuwO@Qm%=VLm7lEwY3Pf(vHCl>q#O1xEi9 zzXI@6(+sih1*0c(;=;OYWX4p`Q3G4u$_E(+<`9K3K;w$#2oBuioh*W6Qf5dOAag=l*>(Okhi z;3oxFiN`89u^Zt$`&&ppBdn}h1CZV!PJ!MXGMNT{M*R1aG@P=kt2j@$-Q^l${~#%A zYO8sz@CTxVmR&Zq%o@t~E#B6~1FP45LDb=Xo@}6;J~MFC-qOxx5@b^W++%;Nh@9Q|4Wenrkhd=q3cfK?yMT^d&?%S(*wRtf(}lTza&-w z&qLjz7Innp3N&VjXeu)x{;Q6AJ7e*GsoaC_m(y z_`2r3cF6K8zftHfRU#?CdYt|NIsKePq$l0w2B0S75`uUu4dBM6^q$Be4e$HftosHf z^katpvdMo|ib^lOT0NA#_YXGu*FTMN1NO^$BHD9G`u`lx|M_?||fFSf1~=6O(ZPhkr&)>B}>a4;rNqesp&Xs#BEv((f4>2!nZV zKYVu0@3!BlW@Yp8a{?6;6EMF1359=PN|$RdFEt5S%4oisgFOi)@Gdu+0lY?a&dOm~ z1(%{(-_L;MvqkKjy1CWXUYm0d=c@whs>5cx^D*X~Tdv-d!EopEcjmb7*rx53D{0sV zD-i$6BE`q0!y>nb%}0J#)>oIOAH&qRkAlB1)@#*V3L$$DP#uXBflck@)S3_mP5HT~ zm5Y9Q&6asrq{&cyEF~!(`Ru#*PCo_q`Vfebz}sw;5JU}xD>bQASr;H9H_HCxCQ~40 zsx<)=^(4Q9i~B|6)albQrJu9j<%m}4N|c}-z`SRX-efi$f!gX+U zrBQ#0bmu$3FP$E08?!x=oeBBk<@?s@NDiv=K|OElgzMFSY&e~o!v#8RI_f{6$)Ljg zk=2QHb;G%>i3fc)^e@c^$#Rw0;a^>Tol6~WKt$!`VLojLP_xa@%yw78OIZAwO)kbX zr55g4Xyb8THUItYp0HzX74og#a6w^NopOI{7v7}-eMBbJq5Ta-mId-AL;2(gVPd6E zE!5wc=e4p%zjFo5?ChVDVAmhvrdNd2mO^*`aNfxX&+yivzit^Vqc>8Ug9u9bi_^9= zcHTWf+W5=of%7_Hz(g`hEM$2v;u|h~zl{b)+HNWs zGG>asyjL+X^WiM1+QIFPtErk`?#HC6wU8yX!)RssVs$d9j3?+>3YTD|7Yf0;_$*S+ zHO`=D0o^fwhuM#A1g^+~tNZEFXsPy_;h?1cy^5H9-;uO=xBb-kPZVmGo`!$>mIb=t zPnwbYS9hI%)&=}$?>&*nW&$kjSTig&pGWIM&SLC!r}bIzYKZSjf9#sf z6NiXdGe10ZH4R+>djkuDTl% zVafxPzwJ;8m`_K^W^$@^h`G#Mvd;DudsVBTC(-JmJAB_bM0+Sg*ITurTCnzI;UM%r z6HE>IqfqH*!IH@%6V1mTd-{%<)+*8mmD^%j-ZI=1W@Kd;dZS|txeAA564WONmJViX zu!K$-KVl+))_MO9uA7bB(?x}cbJN$lM!;x#xL zdQ)QmJ%VJ9V1iadG0nhXICFP&{eZj?%gZ9d19uu*jW~nT8(jl--@l1J?%(q?Y+Gx3 z19kegP!XP zexdpYt;o{cP@sHFai?@!)(qLTz$%oRK-7awvDdS>Lz1n=PRnMdlMg3)>77}-FABip zqP}Q9G|q5FR_E?&uMAC_uV^H@TRV^1_z7TC-oN=}B5!k>$B9mnm1Z-)2Iw~AMa?iy z?OvJo(^3`cB#@q0%Iey$^!!?6g|+gO;&_*wZf+rHB}l9t01e#imXleoN!f14MI+yP zI(0Xdd#OJ9$9@ytm#J=%M%c34y5=Ve({Jc)k?hfuwGgjvj+ndRce63gRe}M#}jfNt0Hp_9f%j3c;#2KH<%Ki;Fq;ABId#h>zTr;+x1irRF>Y%0+ zw?q*mpUTlF|Jr}gtn$0O?L5E&Ufi`s52!68yHHFpaK}szav4eq1gb))2-5e1th49m zO;m-;&90!_oP@@89_`*9_v;7~wHYZis7k)0GTFqBqg#eB!;XhK>XKsUx{A!dn&N!9 zsb%ejk+9=kHwP}8$F2pwNvsTdd@m9OREL;yiEUu=U&v`6O`L=^aLa&0y^TwZXKjzY z8+VI3^lvN*e_;hIslqMm4*e!FU5Sn>Yhkij*?1oS+^228MPUUdp8!r5p4gZ!@bzsl zjjW4XmZ^QZ@EAc{R>92D>C60`FFM2iD$sKH$7St;$*TX!!-78@m?m1&zk@P+5|1 zaCs<&sbq|Vnv^^3gpi1Y2;25dbW!%g9S4Rq>pWvqRZrWG^Rb0unPsYCH}v!`Pnd$R zp)KlEDwyUrC^?LQcvDVbe3v*oiMm}&Q&DuM*l6dlVSuy#LEoLooqf*xD;+b7>xG3WJkgkIO~89?IR6N$dPH)w}x!kajK^ic&}T zQyZXJn6wk?og%>%&C#+y%@v!(~|tVU0WHqwxEBgGMHb zPeaIUauS{#K4x(;zA0FdofVlhsN|!+`-v~~SPEB!6ip`Hm^b-QmS_87YN&^V1W5FJ z)a6sxPy2 z_1INT#J+i)OA+_`5@rIjqfQT5nm~-RWB%Ug=#*cZ;g#xEt$80(AFVy+>7bTgVvUP# zgbYolhN#O{Y^{Z?lI-O%b+2!EpPe1*MU-SyrdJB6?=jQe9wU6bDTSDUj z3>?vgtkwT{8Y(^0z_#i#XW=U_xNj$ku7s$?B(g%I{YW;UHzaf$>VL?ZS#xx}z6NCL zX^(w5J9XBGK;{*hkhFUc$wrHQ%^DQ%(a+xx6X8kP@?a85PEx+(T}2K6zTT7vrzn>5 zYI(uxR;mDIWLR^hL=@|cos3*b!`Pjoec__uu3Y;!c+StXx04)-HRqq#`q{~SO%Kvm zDNxK&al@}ZP&}-5lpgeA%ZOYLyt=KC1ZHOh(&R3>>LQ0p<`VXYYA{l8S&fLPkoy?_q6fLW zLEF%FJ@0o_o(%L80*Kv2~@QwN#RprW6d zhiRH%^uyq!MF2vxea2J7MLqX&5OCTkDS@#)Ntbpg&WNRZ6NP_5ah1&z{|c^$t;)x1 z5qNP*z?tswSh&`J{fR7s#pq)}W0~V3LU-Q&D34Tfpl#{=IVAM!VSWBAtC;y`?V4Ig zUm?02%s_3kS5%AW*0n)t^ag+5s~3nur*6n_wC`_F8qA46Gkg3V%g{X(keW;25i)ZD z)P*Fl0z-^xrH|RokV&1IG52e`muHj>8k%LK&>wQ1D97e4k)6D>w2m@Jw!d-Bc>T)f zPmS$~9MW&#hk;8dCcTIA*Hxg0o6(gtwsySp=}-OVNNR#&y@npCvaKE!1RwBA>NGzb z&cC0wo-{Xoz25j{8k!V^G7aTKv5rPbrBsVY_LT^a4I`ln-Hf2?8g5-ed&gf7@A~a; zD+BzmT5W?ugRI$~O>-b+O($oCUt5~n>YvmM*6s|9-%y@gm-CX1X{U2m-PIuFh)}Dk z)mASw=yQx~a+JF(-6eO|t7ko6Q^Vnbmz5ZNH`*g0Q2wLTdX6{Ewq9Q5P{FM@@FPuwfkihVpepOsJl+4r>j7QW`K?Hi0wv2`#&*AFBxp#&CSI>qC@5`$;mL;Q+vYuc~- z4T8j>-a(cYhEDIHXc1HEZoffaJ?OT~euL%;yxR|~Zy`?JgMB=6Z|9uk@){nRW3tNR zRJ4`o09NlG{_lVD0&pb_6;7h~-;l=njV>N&`;q?!O|1d@ly_WdlIYT0QBC*&4g3u{ zmNxzk+L9~Mw=|7rS(4g<13Y$pg^&O8HT>(ZjBWu)y`IcJ5U{cXxa{Q|ft z?xMUP@Kb*!>zfL2y2*x&>n7Bjr}V7GJI+k@kgF+7p-BbD?K~b;Pw86bn9N21yk1aE zWQJyiH_8b$sZ)vzUOwl1STo91K~}>3E;S)Z?8^B{-+6{>_LVUP9TvNe+PVwffX!Vc zX@^Mk3{?oh#RW)_SzyCGU)koFxFbQ1q*do>bjtZoqHgQvlI#2KafmLN3H@&WBi*$r zv0~^>Dc)@xdW>)Cau*Ljt#xS8!D@W$!)vOt5Q}{gQ+OlKJkV-i{CFXh8AIi z`(G8Gs67^YKl$!;|6Fpb=Cr2vc^o$e6((!6(ucaW0VXBz@&*uCa&3szHR?|%+H8f? zRNdFqMC)q~3g4_8az=A^XgsxgL@&3O;R!(1n!8`j@%P~m6VxUvjFLtlUHelfp2j)Z3)9>PvUPv1ShINh`Adf9@2z+L-_XjLhKllxp=kAMTrUb6j8y_sy> z1YFe3miN8*kbuqJuLcdX*;~E+k~ND#%!E)7nM@3U=KeB45wBoJ55BQ4eu!=BrQ{h< z{ve5a)VZ)_@>J@UrEd6HXw~PX?#!yMhP!B{tqx zDJ#3Y&+3ed)K21XZhAH$X)ElqaUZ|ZbePU9XCCai?%eL%^&16av^{X#4p<%ZQ%qAr z;Y+wk1Ewm%C2z}=gV__reOn!A3*be%OiilCIYYJH{{2JojiVEgP6rM3|O5Ay0hvi-H9#l6#EwT#r!7hYYVk9 zw(7@xg_l$3;l$%V`{UiS9o_K|I~xt{Lm zTBHiT@$sI8afo1Zoz?-xwE&)#aT7S#F2;M@H*v;C&W_|Ief z1g==d$W#5OcDm$1X)dZvT)OVn!o+(q zy;@(i1Ah4d6erNV(;6cLG=KvHIhMqbU|WTNLD3+2K#QPkzbI~EHQ8Y(SNz4?#mURu zmwL!amiih;`hAwTAE6Y5UvH>fV#YBq5-H!EhxUu^;RHtS>gw#ToWD)K?kegHl3rbU zb=WO&5*kS0GzT6tZOo>@*=-KL8kr{^ut-J5@Fr5&QA^CNmYY3f;z|fVn6FK%Pfvsd zFu&DSx(x6#AO5#3%8T2~U;kEE_L;e>v_inmYx0Ooh#d`JDlj6`>AOqy^dCvv{$Fm1 z?hl9#{_PU2G6VSjyV^bN!$RK|68JNrc82e;v$kh%s65^8gp$+RWT%AvBKu0DwVRL4 z=1QD)DZaaPcgk^zhR|Hh-!nT|y>3dn`~w$^?R!#*r5lQn0EgB&<^wWgTN(K@i<3U` zJpSW+$K^DG-sSK++NVBMmf^_`5;zDN1X-FeysU|9 zCq`Izpa>w$36LzkCEY}ht8Z+kg9cY zN^%9!DFj}z1{CIKa>R84KUT8K!KmXbB-m#;*VpuTLC$_RPQ@B7tjAa6n97*aK3h*E z=1?q|rh@hM>yf8!Mbb2LVjPaJ#_e+NWBozDrO@Shq4u!p=uwbFOPMA6Z2#wH# z&Ohgc>d$%M{{alAA1C#j%K*=8zMya{3 zHFFcCRLEjT^h=Id*Q+@MfK3!=Uol}&O)=MFBZK8y=U37bm?F%2fUMSGvcJmto5 zuY5PX4`y!S=6rNjkDiT9Xz)Q*lBT1xvTxqYKbHZqr1`_-c{IWb29&DEARrk~-405< zEt6i52a7SCu&gq&nvhV#e|Hitrswv!sXY3$P3lDSNgKZvd&2g$wu5Q80az}9f05DR zH>h(9m-wAGf{F@_#D_fp%O$zl0I)?qYTju6aE$6Z%sL=!cOw4%WeYqhf+1+CGa)2( zGlt|3tt9(zS8Efnn}62ITdlwOG(W1poAHu`&*8aX*I%}jozEyKMjz z2=-aH@GgF#FF)814X=^z3uRv_EQR20+21-Hf0)#|a@n=gy4PJ|G7Qlw+q@cJzj&-e0PfoS=yKCpw-e2=v%eLL$%NSdQ83!Xw5iO>^#WTR z{`cat|H}UbqBy3F5rv5hP%6JGglAO%OZp2g zimlpLW@fq=iCOQENh{9cua*?LRXI@fA=X&zQQ;0pT-A>Al*Oxi1b~!tnHuK=M7h58 zqa1YrDEV#b?3LDKO*pd^AF9&q5%=oUpQ;r{YA`NXwzhb%Ioor~8i_A>1%lvYgF9Y@ z00J_+MNw}TNpQf^`1wS!XIEg`4D|Ze#QPR%rj%mdYQ?B2JvqU9ia4g?n3;97a-*9Q z&!=S+GwxoyAx}zvVd*vAnm`9jE2W30EIJ2QPGd=aI(G&+4C<7yKmfv#BRCXD;B){? z<*l|mQonk?8&fbVq$0B`-AGMPOyCRBzQ1VkAy~g_+RsBLzb0hXd?|M~8-qU%!zNC| zEDOCp-Z~ScL0Fv_s_#ZJH)am4HV%9!>p+c8*=sqNs-C60_k(%5^bf=rj9Wi+78|pi5#$KPEJYbsSuc?`<1&JlZ zVGfULaXwf*5t8aqf&yC>pjhKnuAd~x(ofh7tfisij#IeivUZ3DbyYg$ZyXLUx3CAS z0M(S!G`Ov*gf8`E11o;kqmF2|0B?w@DCRNX9MhNZS(Tvper`Wc2&Z}Eco_$_-_l5k6uZ5R% zyh?UFsQC-P^gy6DI21y%j-{37m_TLLVA6`?Jo9I#Hcsk35AzhjkD0ySRfa2jS=B_v zKF+AQB&zk5`BbwFa4}UE2{R=bX)wVYRqj)4nbKpE{l&K_AqK;6`7;)nd58Cz!O9%K^HwaeIN4a#GacBRYFgd37qifbC)lI*J=IaC|3{(#nRE&ygfGnF_ z-z;*<{sF&$GBACl!+Eb4a6mCi4!*5#mBMK=+4ssQa(ts&e1Jm+iFoIP?RvRdtb%);oULLq+)gKb{ z@ds^cZ|l`kD!t63NAE*qBI0;O@KxWBMuz`XA=Q z5~RaB?$<0Ht4UXi@b1LT(Z{{$vg|Dv@cpSPr}-XX2fYaRGB?vmM5!6!g_AMxUbs1b zS#4Z}3mfuE_HBXE1c9QoezCm>?=-xEFq29Tk^LM=`ISbxYsxzI>p_BFym5A0A=Kht5M@K~sAUVq*MgtSa`iv~8yF71 z2UIhiqDww`^1x{K;-^P=7gY!wZ;EyJHEQYHXv?vForfq65hP2+<2nNFmHoH#@>X!^ zey7q*UvukOjaIwk&Q$-Edoj;rot0(uA%*bUSc>LqL;&2LGPoB9RlzwF+vrPnS@ts| zGlztUll7>+e&&%-YH1u8M0%wf^5%fy7=o)PD4So!gjDkE$v>J9gZDS=k;siBlXJzD z^=f@nxUFq#hhUbt_Olx;?VJ9;1F7#%_bk`;>cGEK%6q}<>ClQ ze&i14;f3xy8i?>_gC@oqdqYHf8rfn;vKAB;ve3qOr1nwa<(_aNC`swEKG`5+%m-)h z3#RrsWd7!J+|62`L96w@*ogce{o{YotbE}>EdBP>oB}eD<3sv?s+g$1 z1`OhJdBGUkwn)r_^VIb^nPOEX z6<{w_(ue~L3a(EDAi&GA`^PqQk-Op~_O>U+M1*UV4%Eg7) zUhrw(6=Y6#RYkL}I^R3--CjdPr^a*w-k(7$md(*I?e1kxA!nO4%p4}4KJGI)CUInH z$R@lozaw+{1>1V1x_xZj?#X(`i>JbO&gA(BQSIclu3ut!QP3hO3bHH|U{cmrNB1*3 zPxEqAG~oRGqkodR@TQ>>bEt>M>x-Gfs*e5?sUATqa*$4M?xg(eMT0G7)9g#09-dVv zH~XACFNGWML@T{6jI4k1%30BRd!EU0x{ocmSKxl_%Z@iV-MB=pWG%3>6e#`zcL-?6 z*;h$IgkJqyt=BC@4v~dqPMpH}Skla0xAaQmo=iIdmQUl=wFhb)We%4(tGLWRv+`Z4 zk_%WhA5Q+dJk%@6H{HVN*{``geDR7~&@da{&xi8i!NN~;59zc^>YLzvT)QMcTcuw; zL?ay^`phZEJBTSWkX|==lyI=SKT_T*pZ?C`&nhyAfJ?8#GyYAxflY_VHoPzEU8 z^Qi0cH|$7=xgvA`Frb(>St#g8w>D1Xir#{>n*xB!i&TII{%_kT;=X6@;@|}>93lSJ%{igm zD1i9!#A9X(H|fw33aMvcmd~}l){WO^xY2d3r7zmPoO<0+`A6$_-ar*r?-<1{6^TEb zzmTkx&=DoNVHGjpQVEy?>V%8SO0?QOm)pYmCE-(9&h+7Y`9F<-!SnByGh2@|?W8lS zFWBU)HS+ao53z0UU(Va&ueB2!2i$d_Fga3f^*)^-6$MR zNis2Y%IunjKvnQZ(%w%W0>2ioKxoD=-QuzW>wErmeZ|*wKHsQe4{AZ9q@DJe#TGtf zUN^4O!=;YmaB$aQC;NNn!;PRg^M`VWoWRovC?u3B_P#`-t0&yPRwn$ z;xTKBzp28R%ZMhabSivW^!c7!tJU1YrAW4J&Lmc3F{Mnnah}CJ1MUtsBj33T2ZW4t zS7)g`mu^zhcmb6_$#}&|kN%fs$LqPJoV*F?*QIi`HRCRKeIyJtS#izCnA;`zUqh3A zW{upH-dv~wG93H{i5GEc#ogavpIZH>vGiH2YL3E{a?CSZF3j;Qq_94!j|r{aa)M=< z(JvTomyUfIt-$*jz03++7#HZIW{>95z3}jAfbvCu&<=#`W8R@|lX>L28$GZ5`MLDq zm4{t6nbD7hEhLtn3om_>lB@kr%Egvd4e}QaXhjb+zZok(R=^eUFu3AWUdCR3nsCe% z)+5atH+#!xGUpXF$gC#NYl-ZTYL-W{!teVc^_xjBkP$7JXFFk=?&#2|5etQMv)tC@>HvxzgPR zy}U^j09a?vw%xlY7!^kzH+VF&WKD21XWgK}9)BNp_84c$h!eyN)T}eOykbKWANdyS zU;9-mUSBPu<=j_e&MC_#O+t%(-MoWz&1@v|3eNnnnQx?oz)`Y7o-Z!gn})U`F^vc( z)ENg7C48K0S1rB}J3&CZqg%n`sK+o|vo_LvYX@fj?gnW#^$E=XK`z*})S3 z0*lr$|Ji*ZE`hAwd7T$TOpkc>7QJZ-47ZnM$`yep`TBVVmouYCyXMW?x2};stL^!} z+I!Eirn+`rGzyAJ6Qs8&ARsLY2uh3SOBWH4B2}e>5IO+@0TGZcARr(_rAe1wC3H{( zq)R76dP}Gi65^h|Ypt{QTHkk_v#+(!-q-%Ievm7WnK=q$j`5WHx$l_~`+VvkBtJe) zJ^Ed*sCkzpjSe7FyaLm(Unpq#Zju^wcL@rnv42G$ zV-6P&F=x?j`zOuV70`bE4QW|NQ%pf#D%$abdECcOm~_L@059SG>!oqr;7lYw7kZEO%lqUqEXg<1EeeXjNa*Q-XjU28-j`+ zFg@p>m_OV-SDniNO9H1k4Mu~mg*5?XAl$wSJtbxgeE2vC?BdYDUQn7ow}L{e3Gz``?&*GovrtysTp1C4S%r#P< zCcKsG^)b2NStoQdA!s~085?S@VQ6>5@2&ar8C~9U%L<<3N?)!ASpd5vSUbVG%5tHYT@O__U-&}e~nc`}grMFhTPw|~-Dx2Bdsd1U<+Q#mT zpb6R-zyeADiIqVlWhF`+&Va_z4);f#M2%-ZW(rJUtUSs8u51}Jfb~t?aV23SCy%2| zeiV}paO)*<538%2%10z}Y8qZFuqM)e`gJE!Ap3N2OufGR#egUo3I2iBbcxc8oW~QZ z#}Cq6Qx1F{3c8t2sc>z?og4Higo%E*13AO@-e{=9G9#?v^(WHwxH7miyubhotrg_^ z1ZZTFG2SXfR&Me^YGF6@WspSYr4=q9btBv?+Sl*mJzwV5Me$ByG1gxC(5RzqJXmP1 z$O_gxltneE;C0WhDxVqOM}+Y4)&pX=6P+h!vD_9Cg$r|k?Iuh6r(z~9a~PWBPsIJu zpxSpejQyFD&@G($BDcJXt^thJ+oXsE>++tWX2#ibI859vOZi}JbL##buc^3O_|Sxq zm{aL^y~YN4zpC=1GUC%cY0^Cahf+CtJy-P-08q_}#crhs{-QXO`;{1-j zGeFk4E^F-eVnPP3boS*m(5u@B9J?*n^OXwnj)%&eJvfNk$&!Ys=pQ@R5&w!$D4zLR z#i;FPlH?NPT8GhKkIAJS^7peFzDq|gpW+8#FM*S^W>%CMU_gv+wPJ2k23b(|#9$l_ zL{0bn=E?;qXXVty8Y1UQY~P4m|8Y#ZPUmOe*q61Q&28n<#+nG*GDmC$W1M)9pw2R7 z@H|nsb(G7(y`yWASXc zmY?N~li>>*o7n`|osUu1xcY^6gJ3R`|aVM3TgznQ>(IeJV2wM`tS zT*xN~A2-K znxh+7WuDPsbJ9ub(L!@DAVyL_8XvqOsFp>d*o#cpC+YE0oxbOxeo(UE{30~t3HkUN%Y6kev zUhg>zU?*+~+IY<;bW_JU?{2rxol|^F6rfzFCuz+h(dvLwfn$oCB~!c}n%%)*jeW3S zNX7m6U_;pSJBSK*uu{4CppKaIsD6VE)Tf(h)xOgt+R*%_&mDb|d?EU0Wa1u;T{Toz zaq-bJgWL1R1}Gh3Kzk5f{G&iK%O86qgA(|r5&E$YET`Mf(~5h1w+N2qO=zpUm{ZU? zzz?eiSCZ1@80BTRD4)R!!YO|=|Hu1hlMv!=nZD} z=*8QC;Xbj05>OkQp8e5C)f^un{BYPyMt!7AVt>j}Vvn#{et+of6_(m>=eIjukx)EM zc(bsnraLY(;2x2;__?*?Uf*4@Pov!m=hbdKx558B_B{FxA$gLaM7bC6`FC?5g@tPp zL3Z?}8iDLy7P5B@G*+t^Hv^uE)QNw$y_-V~xs*7uS2}kPN3d!i2m@D~Ui?HEh1Cdy z+h#;*k5*@D4R?$+^TmlhmL!WdfRYTFpVZl?R9OkblhSgU8nlTT5GZ1uPq6xjS5eV= zy>)d}W$a?Q-c}ghDb_q?=dd z)X4uTxHKc^`Ox4Up8QU9m=Bt*2^#ou&fH?M9m$juU_YT$T;A}NrTj+!xF!<^4^#4r zr=^#SRZJG$+esB@`!?6zLRl-zH92Lzw~$+OkdHy+T1sZ$n2NQf@0W9A^x!@~uD)Lq}A4yvQ6$k$NV zvSrhzN8g)^E_G05h^ds97;wP=mX@IB@G-s?W&0cQK^TXou%}|lpUR$tAmLe%c=ONe zYM|4z<3dH<%{fl=iY8zM8rF;3Ahbh-s)7=P&>E>WH$ zX8c>zvwxcYQVDuD0lPW2%RoV(lY?^6rDY5&*#wB3S7=0f_p#6S$Bjqn)O`Wsy-#Hz zW~Ul8IlG~m((P6p&6klCNb6xQt5Eru!wOyHlVpwhw29<h!|5MenF$W&1T#vlso5YTXU|;u^#tDVp3R#kY#f9i^fBU~ z8zlwifGhDC(JI`go){B!Ih@+4e$+_FHzC;!ktAvd6;Y;!)!ybVD$UgOOgDQsl>co{ zo)#O4y;McYdjYZ`(QGcoJqj7peO2q!D;Ug?M5Dojy+uO}ZtJ5T7O>HYPUvT#O|5{l zno6Or3vkD;4`069seOjh^VR&tsjl-J3r(I2m{u`36qH1!dpa(d@o*$a42jhpt=?3V zMJ^=6jY)WFS@*SdRQVbbV?`A1bnxxLGAq&&3J=w>JN)7Uek{XH za-yeGItWeDU4=;ICrL4x0(`c}a{sKEY_cT~xd6Lp=_v0LO)!2q3T`sMQAG`q>?wZm z3;I@GGEoa3mpwjI1n(Z;7WzDiK0vg>YWQJJ9XJAjr=o);_k}fmk~8jHHk7O zoQ)z*PHl3VhrZUt?G|!?yC=Fo#Oq^jFh+U(!W9tKwIxXcqy588N@p zirz%W?-QVlQwocL%B0FcFS_DmS>9a}T)oAK$NGo1W0;ghfSQT?A+j_fTEAB9k)wF? zm6->H9SJXtHCvRfD!Y_v4|{@U5Xs_(pNplWsGj(g z-5?&e&vBEv!K71s5WnLAg%$8ESofJ^h{!it(FapnW?gC@nYNZ4uY~cb#r=AJA@l+k znRqVU`*yaU+0vuco%{Q?qs=l;eUa?ANIPnBmO}H>;c?Ps@Tu9ad?4T5W$4gKfVV4t z{ef=tMRE|6T89D{bZZyQUCSL8sEDZ@eDp~RsZojw)}U~z%7Vx~r%`8V^?CcOO~EWX zMSnv|kKU5&dH^_48_X1!HsUhq?{ze!2BUsMPB~CS*yK$or}~O4W;Aal zha}!USNl?x@1bX8xMr8BpXI9h7LTveRc}O0Uo9UE@XS|I1zew7Kq$zC827eyUI?a2)Z zWF0IymVQk1YyO$<(Ft-#-_1U&Z}OyoQ(2xE(J?>^SZfm1WAcb>nYbCbcDAJTlKIAx zn|VX9hxHBh^>MbI67?~EJ(_BY$*|)#e=;0%b@VR}hrJIaWE&}$Ki(-0*+S=uFT!=B zk6v1bB#jT3_Zj{`ITEcqj&;5qU~ted_Ay^AF0l**bXJ@0osajBY;FGqat;M$EH{tl z{v#aAvqyq+Iw^~rG-(&knE|fa*Y?H;iyNmT?W)5*8nV0fqzt~$KAorW6;@RU`nA|- zvIX(dJ>XJy`$F_K;{?#CHd=bqx3Z!tZp{<1=;u@)nW)tG^M>lmW}H?<^J9s?p=b3~ z>YsSc@Uoz9$pULvvei1nLk`eu`t8)Xn~bF=iu$k*$STc#(7b*)NC#At1DntN~n+%`S1)Sup$QePZ_&Hg*e7dISnoTyOK~-hq9Kg7C7? zC3-j%Y+f$i+!2*I%1r26gK{+m<|Dts88x%XZ1H9(s(*b>0-yF74UYL|u#JzTFE#jl z#WDOkluNO_wgpRvY6_zUwg6_$-;mGh_pRUU_pC@;nk`@$XM?^QH{?g=RS+0E7*DUw zN>K*WSLbbsY#2|^Py7qFWqVn_)}-8F7m_OA8%VWt_MgL-Mdbsz2tsDHCS!~MQE~F+ z__}MjFQLt)iJklIX6r8h=jpTeUv*O#^eH=vb@lm0C##aW9cAl@Dc4CL_@gh)^RUSm z`QDmWW9Y#x!K^xbDbj%`+;x^oj(izQPv-&A{xkalA@AH1ayGZ)G`@1McCQ2p5Y@ve zx9Ektxw@k_usGq-YF>Ezu4CnDl7r{nXvHx?aggz(b(R9M-#7fMnf>j{VP$e4z{ZLN zB@PybUYY_WU@R|>2!q8^XOrA|W#3t8>53j0#f>hj#?n>XDL?zB?o6;A_JXdxw^ufh zCcJHOSm#|9lh_4D+|CKNOO$l;DK_=EuK$Kyj?1Rm$<;yN1sIQ*f;g8w=@|JeWq+LN za?kM=w5Gb%A6V4qjbKLU56i?-sWgvP4=~o01UrH)i>LVkzapDNJS+MxVa?mnWe7|c%S=t^$MTXJTDJz05(xU2V68;)=N01ByXY$|>BnV~Q zWE<;cIc2bDsX^NUO=acp?!JnZUrdqoU6f~Ill?OAPfUUTXodW%DUkiQL6E&}03Fp^ zK)V9quXq1|M9450`bbZGs#)qc!F`E1-abJ zSD!>-EqirGua|k!q6cznz+nHN?CSs^xJ>4;CKw+uoCKq&KZ zIo0~+8;rw9X=zfgBSOIQW#*~r=-tz|IfM`Osut58EKMg$j;V1chd}rkd7Iy*Crhxh zFs8;IIGgl|)O~gIlz%hj*osN9BC`8#fZOC%_btFN zrLZ1n9(W&+Kau1~L61BQDEfh!R!eYk^n&E}L^tK7Rh$)Ybr^m0RGq9kL%IbnmuMom zil`e9zaipc`wAQDn@4(o-(V@9{9$A5H{`~VH5kD14eE#Q@smBk36cb(puHF1|M7-a z1#|XRh;Q+gWwndyH{pwn_Qpr?y-*;!@xUE4pxN=Ml=EJ56caG4{*QM%dGL3C12Y4$ zqPM|tvq*qE_Ir>CSX5~-R~dhD4$FfjXy<`Oaa;U9+|YQ^}Rn|H88!*I735VIVylv@b#DNLX)vXw!;m) z|Dg%NxC@vZ8{K+~ws8#jrdGOHg?8{3jgfLwTHoEq%aM6>Nq2%q8^#LC0N)M_Bl#u) z(P=3JXH*Xs)V_^Ub+-*fh{z3<(yg&wZ~2y3eAnnvyUXm{(95w{0kLb3CVgSOKZw5} z<1`#SO3q+-dVRkyqkRe6G*_KseThab z!BdA7Y|~Pjw?Dr7u*ohenqybcZ11_c9fxL?Y-U7VBI-u&m7LxMC2k|UzHYmC1)Mg; z>nF<4^gfK*+`U8=+3?)SPJB-u4A`69?0nM=|Iu&r3S4?sdOQde)7pZIeG zWti)D>@^u)s~lQ3wNjI)=y6Z{9IvENKnRzRg-^j>&lrd2%B{L)?j6LOyl!Skl1ysD z#|?@3;WB;Cc5Vf0{53o!Sn-CMkS16f!1Rv6nY#l^&;@p^4KZ<{&5^o!=>gwX17N)za3GqxB1|lAeB>=3YH6@dyP1#?G*Z9weTmTLa0s z5=P4*GSnT9rA0ccH%1u7jXxR{tRpg{T7U9OcqL?lt4+au6y>P?rhe-l*V}yMkOFk8 zbTh-c>2&INI>Q&)Rqt!_)u7p!ZxlDK6R2rtamTcy_Cn19TKVp*exAuz3m##PEuU+D zE8%T|0}qQF`TqQm>vFO`rgfaHC6*FyHcdWX;4l$%p{uDO#W=lCq1LNIj_PR&KTF6Z z-6cP@3W1*AzPU1fFQC^?qGYpVU+gQWh$fWofYV4QnFooaHvo<7a5X!TVEUHvFr+T! zg5d(}6(2PLeZbfr5D*V$B^GYZwHL(-=#9BnMF%P`@N$9Tte4UxpEEBzzUX_D4JMCr zucBH$+3s2R;_PFv4w+&UCUg`ZC*i&_>*M!LnoaP9K6TQAp`}UW(hCQ{xO0}*^fg-P z665b%U#V53A+eA_vqdO<(lWY0Vk~LF8N;dK9Z+I9XCYhSnXi-A=PQ`>ZBsDO)ck%7 z&+GeP1fH{nt2PQb$bnZN_{uacfw*lzh)r#8#4?#85gj#r%%d6F>Bq|tQz%OcM!war zOajw3=bd{(zjTf^ZbacakgCiNf57JphiW%=OMrG$LRo|hO5M@-!>Uj7#p-c{&6qf> z+AO}Z6;UuXkk{&N$J(#mP2WZ2X*PNNG2+mQDX2T^Jm}MM53qBP^>Ur%b354m;}3+R z_H~5DAEk(labzt_PU0@7rQ8~oS}}X}UNHDZnmvgcbu;=d@l5OtCepid!J+s=)0Z)n zUcs8_%e&tm3ssVoz7JQ`^wCvn^Ec7O@g9cLC+etzq%k8{1SWD;X}pepDf@)T1fhOMN!JN)0x@KeBm26+EUG&)Eh|y)~UXW|hD8rK!lQipO!$f0h)b|Ht z$s|btdJkODz8n6q2{7ivN)*ap*py>8&~Vw;(Qx8FKxa;Q^xSm*4VjU(z6b9qWW8fr zUim{VlEHX&1UjOpzOy2|IvG_YrB>le;XT4{KQ~z6IA+jPazmcQDx+9QD6$b?O%vOs zv!El;-Yhy&4P`;b4QT$j)RCS!a&Ta(N=}K95Z|cM%!!5U+|v=;n8row;AmFvomNvn z?j*&i`2_Kv=XtGr7kzBzl96Co)XhejuTEJgFg0)G-pe$LGP1*HY>#+xl_26a3oP^@=gLyyn{uy^or zBIve$kPYUe;SpS!Wd~tH(HO=_bzjymDT}YAHsg+0{N6{t?M+;Mc4q&quB1}7`vnN6 zA|A8bMf092N+8JALkvYnZX_C$c@7C6)A0-u-i@JYa>hZUC-WnluHfMp11pyQ8roYe zwk16%@%4qK>{_W_>F_ULs(+NZd*nHlHsW z6V4n|Ua@=Fg4Zzn5sEo-Fam{tV^!cZ`;wrc!TN8Rq!CJQ>P#bjqcA5Yo@YL0Z##Y0 zo>*BE-x7aG7ZA}6ocPJuE2oI|4R9Qej|vPg&~!7BrTM^VTC@nTPuM=j z5dWp0Ke)1lL6zro1n3Dw`4$@YmKYC)Bv<~~__EZoYv`_cfw_G+{?0!eU0yAjg}VhT z9P0TWdj6&H@A(+~g|0$NQ)F_uve?0iKf_4i0c(rVc;A#_Dmn7CG7eNdH3Pg-$`7CK zpFuf4!HPS{kSyJnDe+WwvF_%R8oOLICexTHx$ja+)+?MbYf3ph&oj6k?l4VrN2?*B z_3W4WlHG5wxk0{J@PBaPP+hGpLhW8ycunxk!}m5xKLQ;ing9R71hH~M-;KN(<}*p> zxcK#4a@?Kn;j*Kad|Gd+%zOgtmG~&u>(!#NM)itCK{-Kpk70{o-C(sk`I7EID3Nh< z8($VZcOK;q#=zQ$$in`it{Vl~0yE-zlM`LIY}v&3-%}G;N*4M45^90G(diY@GYge7g=q^nE(V_Y6u9^7=Fg9C-&P zXiuRhWS1WjYh$a$5F9Ae@tlORn=#VuHZdK3Zmx!kpDex`>T;`pyM4UA5riM-SaCAR z-WjX%PB$-Cb8j(NUUtD6dvIKKHt7hcbrHsN!1|SPbbo@|&~x2n-(?2~!&xzBTM#F^9DAHOKGe-_OHu@cwMQk&N>IXJ zOubjf)FOxzKlEPn*+_2eLdyQ*N6!{CekF6M>`L{h+!ExXTt9iM%tuy>HnCy`gxmN) zQ~YIA8?TtLd|tGR?@5UxZPn{m_oXY$-8?bhKTW8LyJgqi`c#4!{pl&4ID7LADe(&-pC7md?6#I^fMiC;$3JL7O~``4=z{ie9?;uqb*Aaw zJZa&F)8u_C#_jAR{YtlWak^orUG?4U*V>)@Nr?}aStrOKF+wvZ*@M84fkSX1sah?? z31e}eQn-xDKbX#$nuJ+I@yGoo#y4`x*n#^_3m)QsJsxonu#WPG{TO_EI|5Cs2q(n1 zr8Lllc?F8K%b(3^w#ZA(ecWwt?~o?^++FST`(7^y0}T}`mL=%XQ*|fr|AE=$pCHr! z^C)*#DeRqFWs&g8vJlFRwa>H2$~I+I;?2%t7uKru(s&oYs}-NyMP*)fT-!UmJph5X zK_Mts!r{HxJr9wzsm3&Jm<>Ztr<7&Y{!|Ud`oQAaLSjE-MP9FZq*fP^xKmNe!qmd^EG?fbH}qW5TJDv=u-BXM(h}2L9T+L=QC+->24b?S(9r3-~T#mzB0 zdVst6^Px?Atz40!>Q&8P^IM+PUt3&y@|8TNCjiF#*@eR`(bnQPiy zoo`!$OQ$ia^sq%Zc5~f~E~9a%aFf?5S7?vcxjd-^kkchvz8mwe&MeJ!n&QOOh1teV zn7JvKDREQ#KTEYBxMCIpVH+Slc;-pg9=M86e`T_Hvf`7aY!$A*wQb2*V#$rQVUD}q= zo5C}y-z#okV0U`KLU&>F49lXvN4(e>mdwFc6%q`kPz!{BxU5G(X9@nuq&{}&WYNbd z+F=oDzbv0VQa#UdVN}WdTyWoelns$F?xxO@wd2_m7rs=xUb~dlJV#=$;8)i=!AADv ziOe{Tup_l;AS_!l2h|Pspd{5K_pOkmK|15m&c4GRM(-kF}r}{t6o?*HA>_wDF;r}$E{(lC!{{ME( z-x|Fc-}5OTO8qWuV23P6WUd(%Z$aCdzYD&tgqA;a>LnsVy|8?M@590BKILAM!Ri1% z@$F*RlgFE-^9epp`f3wKYWgZh)E9Liy<^7OzRo<6)yZ8dM$_l^sUKyufEg#_2n-+u z+n5ok)Fi>lOo^Htjg?4t?W=F!C8FJ@htTbx!Sa`ZW4Qrv(ExWH(d1`gOAqqvjzY;% zimen?q%T>4@c>M|WTXCQioFy{1;LIW+%n=Rn5x`EU_i5t@Nx+JYNt_%A0K{+aYtmA z=7<$HM*xu*wUpRhkTL#ZI+#Z0$foc{kYqsuh-MTcXjNR&2Gs{y9M}`Kl%M>D@W)?A zCs^`=bS3R48R(TcWza&zozMLZAx6P*Khc$l6YgbjG~_EXSjr8x|MM;NJGW#1p&#G~ z{&W}q@472PJ+TJ5u_Ayk4*IeT#O$&-o5CYxctzpzBv5Kzpt7D%-gC&>55OP zXCl2hdLaP=P;{#R+Rp0LEYnDp_FM@3!p4TTnSEtlpm4j-q|RI-Fk9g1RIbaWre>Ys zzngw!cJK<+D)WR}V?(SUO)hxY1+oB_aik(IZvDhw^9!HI*pjnzV}NlA=Y_BSJvf^f z*)je64;=kYne~ILWj$MgqeSin%VC>lq4j6k?Tq&e_0t}f+yHa^`~ z3^kQ19*BKyLX)0TWg{i$S}3fe`|+1hcZkwRXRXgf)nsrTjj=~{S=lbah z*cRjdW?Il!^g>4C4ny~xV}-jXZR4ZK*YJ-O&2TL;W<~LgEABdZvT2@A>0`#XrObNi zYMEK%R#}DL$QOqF45WX);jStsb|B$^B|L<)kndL$@tvMw#OO1d=kn>E%Zq)++b;n6AC{6R-FSm^?jz!2Te=X#Gxl(EtX7xdY%KExmrP& z%F#b41c7FMS++f27bn8RX4DXM_GRU1&YsH%$#WDYWulR`wYAwv4VemO#ky{){D~qy zZo(PXb$lONt2E0nqu$+-F zvWPq7p@j-%h9UrCA_!^cMo9=&<8(A{#`19&JRds{v5limjoz*jUsD{};FWqA8h+UZ zfOn$-VKK@`Iq)7Jb#hr|gSJC|@_Zo7vbtjMYHej>eEaO>rm?G&u|8WbHW7StXQp~+ zv4{0Pm9h_zz~f>R6X1uyeYw}MgZwzI0k<36%CFi%NEAPM#_fj*5bxtSLba4{8(ORl z)KBd6h&S-Iawu^I#z`MDi@c}*A|3B9y6}h5;ZLPrNXNA#FSyEy=zB_4^ALY+ zOTXCx=qx9y6o9;e3)mBlYSI0Wp(e~f`y+@@U{-g5hWLX-Mj9jkUz893^?4NJ|NI=J zTb&K&wKO1k@PLqLcJzk!7<@0>e_usXS8KOya-f|(OYtNPB*HgE1=$`{;{vt1W;97d z+Roz6$DarG3-gJ2_Ga@All_N5aPTaXzavLSZvM$DCft%GQx1gU=;h3ZZ7!Ltv#t7` zqRaNEo9S8rQ|aT19;bS^TEms~ik)t5T zsoEQ@E!`@?a8XBdu+B!8lb0q}a{EB%iW7gB*Dd;N;>Yx|q@i~YK%>X9sOPDw&^BW1 zjfbe;3sZ--C}|2ZN0=s;r}q=BDpjsf5GIp{xW&YlCO3nyrP-Gu|AsUkjXJNdZ0f7| zaODVjn4itkuoi6> z6|L&#FD1_Yo7rM#na!-6##7y7)uA%dYG|(ghkl)Y$;z_*Yu7%B9k4~wpZ=h!6ni>K zB=6LJ7A^i?-}_%j-2byVH1VH{Hq#;+W#*P<1bClhvkY;6n!ItQEalRP-4gvS0^(wH z*y(BxzabSyA$iV0OaM1~IGMX>0$F>16skAs-95PV^yN<(W6`a{ z@6G04MVrKUf~;TvV-X8Tw&L{+BBpdHx(lAgdl$mHVOp<1A6h zl5qmtVay~3`adhc`^Gw|jUc{TueNg#fu%WsvG@@ITvzG_!3bwww^h;9N0AIqR&< zIpkWl&lrojB);+dDF~989dB>F9LrK!|A$Cz2I74pmU@z}7|0j_TFB5)id6*J9gV>U5pWDrCBtZ%mR{*Y#o(s=DBOZ=X3n=5@S%YkXwZnc?R*i*O zu5Rodak$do{4$^DZM3z?GgwQyE8Wt{qFJqA-lw{Alx0RZTyVj3NI0uhM=y+bOUOc5 zr~B+bT3N1`Qp=ha4~kU^8ldf1znV;cdd~K9n$Eb;l*~K^(|^j|&G<^c55e3gDrm`z zxW>WE8Gm2}nV;XgY(Loq(itnBB=55WkLQ(~yST=q^HST5*-ewo&I7V{Nd^VmWG+l7Ou>Jh~I`CSgN1#ksusvWXEVr;1eW?RyqnZEI9esmkGEco^- z+>72bT5rhsi2vh;|H*PIz3C9qWeU_m4)N%*xtL+aaFlUJFcUkGcB^%T@t%2i1d8?p z*@%!IQEm1c!VMx{Q*oG!4-!f;+kQ@(eXP*Xtk>3de#`|;bygQzL|nHuVPj1r7`HaF z4l47nbLqx5(Rv0FX&w?Elpq^M=fZ57!jC5(F9tl;Cw)a`|5bUhv#KXoOA3FxRDC|R z{S``qFolzh&qK-?4(@MX07}Ox%+@sFOXbsSw2SO~h?D{uKU?mEv_~4A1E=|>C@Sps zo*T{*MgzJjN|NU#ngs4I^^*_p;zQ95_o zYt5s2!HW7rI_cm&P+4eN_Ae@)QjCofn@!BUaHXGDXBsYzu(Xou%A9NIK8x5*w>)|0 zT`W5MD>-5C{4V3iC^4xvkZ2IJF#qf4|CTu@(sf+w|L)#H6%(hhjOiUJ9)@lk+zqn7 z@t!O^NS2<518Ooq?S^GcHck6E#PbtpO0u7ZE;fAj7WnkUBmV=BwQ%cPGV5oj zJpz38@bUK_dJQBw`8n0~=+{4N-^%*(MLF|^(Y4h>XSn}iorMwutQ&LM3;W8yV%E|r z>w0Cvvz;2pETIvZm3We>#FDDSmZ~e#y7e`n{uiiopS9+&IdVB=$4@ffJu%47=GjJ& z^$T6jo1d3YzpfF@mfd3)RW%ySmXN0cCEQZzT8(xXRRl{o4s2WM4KP`egX~VM#Q&DSJ(QU6_o+& zxcU_((SE#EzEA|41SjK9HukI(Q}u}7?mtg1gl#0p=~WR5FLA3AcD|?+Ktx1|)s&8t<$HsS z2fMwl&m$~K&-D{S$H&X=C5*>8s=d2Em9A#{lihJex9mMW20|lz8_(7!pZY=ZQ{I^P z;O4HCD?~uJw(jz=xA1;mU#|F2iuJ##UxaMjF#hy$2uxanmoC<7%*pY+<-zm4Rs7}I zvX?LW&b-nOqhOu+{z-fugFG?oCXk$588GZl%#_fXf_r!k#q0}eX diff --git a/doc/pl_reference_mannual.assets/system_arch.svg b/doc/pl_reference_mannual.assets/system_arch.svg new file mode 100644 index 0000000..ac15b3f --- /dev/null +++ b/doc/pl_reference_mannual.assets/system_arch.svg @@ -0,0 +1 @@ +DDRFIXED_IOip_encoder_0ip_encoder_v1.0 (Pre-Production)S00_AXIin_signalexrst_nout_signal_valve_posedgeout_signal_valveout_signal_camera_a_posedgeout_signal_camera_b_posedgeout_signal_camera_c_posedgeout_signal_camera_d_posedgeout_signal_camera_aout_signal_camera_bout_signal_camera_cout_signal_camera_ds00_axi_aclks00_axi_aresetnip_fan_0ip_fan_v1.0 (Pre-Production)S00_AXIfans00_axi_aclks00_axi_aresetnencoder_signalexrst_n_0fanout_signal_camera_aout_signal_camera_bout_signal_camera_cout_signal_camera_dprocessing_system7_0ZYNQ7 Processing SystemDDRFIXED_IOUSBIND_0M_AXI_GP0TTC0_WAVE0_OUTTTC0_WAVE1_OUTTTC0_WAVE2_OUTM_AXI_GP0_ACLKFCLK_CLK0FCLK_RESET0_Nps7_0_axi_periphAXI InterconnectS00_AXIM00_AXIM01_AXIM02_AXIACLKARESETNS00_ACLKS00_ARESETNM00_ACLKM00_ARESETNM01_ACLKM01_ARESETNM02_ACLKM02_ARESETNrst_ps7_0_200MProcessor System Resetslowest_sync_clkext_reset_inaux_reset_inmb_debug_sys_rstdcm_lockedmb_resetbus_struct_reset[0:0]peripheral_reset[0:0]interconnect_aresetn[0:0]peripheral_aresetn[0:0] \ No newline at end of file diff --git a/doc/pl_reference_mannual.md b/doc/pl_reference_mannual.md index c05fbf1..4ce6ab3 100644 --- a/doc/pl_reference_mannual.md +++ b/doc/pl_reference_mannual.md @@ -4,11 +4,11 @@ ### 系统架构 -PL端主要由4个外设组成,分别时**风扇控制器**(FAN),**编码和分频控制器**(ENCODER),**先入先出队列**(FIFO)和**阀板控制器**(VALVE)。其中阀板控制器没有提供AXI接口,因此并没有映射寄存器,软件也无法进行控制。各个控制器的连接关系如下图所示。 +PL端主要由2个外设组成,分别时**风扇控制器**(FAN),**编码和分频控制器**(ENCODER)。各个控制器的连接关系如下图所示。 -![system_arch](pl_reference_mannual.assets/system_arch.jpg) +![system_arch](./pl_reference_mannual.assets/system_arch.svg) -4个外设由统一的同步时钟驱动,时钟源来自PS端,为200MHz,软件不可修改。外部编码器信号输入**编码和分频控制器**,控制器根据软件设置的阀触发分频值和相机触发分频值对编码器信号进行分频。为同步触发相机和移出队列,**先入先出队列**在相机触发同时输出一个数据,即**先入先出队列**读信号和相机触发共用同一个信号。而由于电磁阀的物理特性导致电磁阀无法以触发相机的频率进行开关,因此**阀板控制器**对先入先出队列输出总线上的数据进行重采样,即按照**编码和分频控制器**输出的阀触发信号更新并转换为阀板协议,输出电磁阀的状态。 +2个外设由统一的同步时钟驱动,时钟源来自PS端,为200MHz,软件不可修改。外部编码器信号和物体传感器信号输入**编码和分频控制器**,控制器根据软件设置的相机触发分频值对编码器信号进行分频。为同步触发相机。 具体的硬件设计和信号说明见[doc/hardware_description.md](hardware_description.md) @@ -16,7 +16,6 @@ PL端主要由4个外设组成,分别时**风扇控制器**(FAN),**编码和 | 边界地址 | 外设 | 总线 | | ----------------------- | ---------------- | --------- | -| 0x43c00000 - 0x43c0ffff | 先入先出队列 | M_AXI_GP0 | | 0x43c10000 - 0x43c1ffff | 编码和分频控制器 | M_AXI_GP0 | | 0x43c20000 - 0x43c2ffff | 风扇控制器 | M_AXI_GP0 | @@ -138,91 +137,3 @@ ENCODER寄存器可映射为32位可寻址寄存器,如下表所述: ![encoder_regs](pl_reference_mannual.assets/encoder_regs.svg) -## 先入先出队列 (FIFO) - -### FIFO简介 - -FIFO模块为下位机的核心模块,用于接收控制喷阀的信号,以先入先出原则,按顺序由encoder模块控制输出给阀板。 - -### FIFO主要特性 - -- 384bit数据位宽,最大4096深度 -- 实时计算存储数据数量,提供队列满,队列空等信号 -- 指示队列输出状态 -- 清空功能 - -### FIFO功能说明 - -下图给出了FIFO的主要信号: - -fifo_block - -FIFO模块在写同步信号拉高后接收用于控制喷阀的384bit位宽的数据,并在读使能拉高后将数据加载到AXI数据总线上,当队列读空后,empty信号拉高,不输出有效数据,表示关闭喷阀。复位信号拉高后将整个队列清空。COUNT信号表示当前在FIFO内存在多少个有效数据。 - -### FIFO寄存器说明 - -FIFO模块寄存器主要包括数据寄存器x (FIFO_DATx)(x=0...11) 、状态寄存器 (FIFO_SR) 、控制寄存器 (FIFO_CR) 。数据寄存器x (FIFO_DATx)(x=0...11) 用于寄存写入的384bit数据,并保持该数据。状态寄存器 (FIFO_SR)用于反映FIFO内部数据的寄存状态,标志FIFO是否被读空、写满以及FIFO内当前存在多少有效数据。控制寄存器 (FIFO_CR) 用于控制AXI总线上的数据被写入FIFO,以及实现复位清空操作。 - -**Base Address: 0x43c00000** - -#### FIFO数据寄存器x (FIFO_DATx) (x=0...11) - -FIFO的写宽度为384bit,因此需12个32位寄存器**FIFO_DAT0**-**FIFO_DAT11**,按小端字节序共同组成384bit位宽。将数据写入这12个寄存器后,应对位**WS**写入1,此时数据寄存器组中的数据写入到FIFO中。 - -偏移地址: 0x00...0x2C
复位值: 0x0000 0000 - -![image-20220613202916591](pl_reference_mannual.assets/fifo_datx.png) - -| **Field** | **Description** | -| :------------------------------ | :----------------------------------------------------------- | -| 位31:0 **DTIN[x\*32+31:x\*32]** | FIFO数据寄存器x写入数据位[x\*32+31:x\*32]
写入数据后该寄存器将保持写入的值,直到对**WS**位写入1,数据才会进入FIFO队列。不要读取该寄存器。结合VALVE外设可得
0: 对应喷阀关闭
1: 对应喷阀打开 | - - - -#### FIFO状态寄存器 (FIFO_SR) - -状态寄存器指示FIFO的内部状态,数据数量等,为只读寄存器,不可写 - -偏移地址: 0x30
复位值: 0x0000 0000 - -![image-20220613203939644](pl_reference_mannual.assets/fifo_sr.png) - -| **Field** | **Description** | -| :------------- | :----------------------------------------------------------- | -| 位31:17 保留 | 必须保持复位值 | -| 位16 **VLD** | 数据输出有效标志 (Valid)
0: 当前无有效输出,输出保持上一状态
1: 当前队列正在输出有效数据 | -| 位15 **AMEM** | 队列将空标志 (Almost Empty)
0: 队列没有被读空
1: 队列在一个读时钟周期后会被读空 | -| 位14 **EM** | 队列空标志 (Empty)
0: 队列中存在有效数据,没有被读空
1: 队列中已经没有有效数据 | -| 位13 **AMFU** | 队列将满标志 (Almost Full)
0: 队列没有被写满
1: 队列在一个写时钟周期后会被写满 | -| 位12 **FU** | 队列满标志 (Almost Full)
0: 队列中的有效数据小于FIFO数据深度
1: 队列中的有效数据达到FIFO数据深度 | -| 位11:0 **CNT** | 队列数据数量 (Data Count)
该值指示队列中的数据数量
注意:一个数据为384位宽 | - -#### FIFO空计数寄存器 (FIFO_ECR) - -队列为空后被读的次数 - -偏移地址: 0x34
复位值: 0x0000 0000 - -![image-20220613212701816](pl_reference_mannual.assets/fifo_ecr.png) - -| **Field** | **Description** | -| :------------- | :----------------------------------------------------------- | -| 位31:0 **CNT** | 队列为空读次数 (Empty Count)
该值指示队列为空后被读的次数
注意:改寄存器只读,仅在FIFO复位时自动清零 | - -#### FIFO控制寄存器 (FIFO_CR) - -偏移地址: 0x38
复位值: 0x0000 00xx - -![image-20220613212701816](pl_reference_mannual.assets/fifo_cr.png) - -| **Field** | **Description** | -| :---------- | :----------------------------------------------------------- | -| 位31:2 保留 | 必须保持复位值 | -| 位1 **CLR** | 清空队列 (Clear)
对该位写入1,队列将清空,同时队列输出为全0。
注意:不要写入除1以外的任何值。 | -| 位0 **WS** | 写入同步 (Write Synchronization)
对该位写入1,**FIFO_DATx**的数据按字节小端序进入队列。
注意:不要写入除1以外的任何值。 | - -#### FIFO寄存器映射 - -FIFO寄存器可映射为32位可寻址寄存器,如下表所述: - - diff --git a/doc/version b/doc/version index 840ca8c..400122e 100644 --- a/doc/version +++ b/doc/version @@ -1 +1 @@ -1.4 \ No newline at end of file +1.5 \ No newline at end of file diff --git a/hardware/pl_platform/README.md b/hardware/pl_platform/README.md deleted file mode 100644 index 6790377..0000000 --- a/hardware/pl_platform/README.md +++ /dev/null @@ -1 +0,0 @@ -PL端的fpga工程待补充 \ No newline at end of file diff --git a/hardware/pl_platform/bd/system.tcl b/hardware/pl_platform/bd/system.tcl new file mode 100644 index 0000000..031d029 --- /dev/null +++ b/hardware/pl_platform/bd/system.tcl @@ -0,0 +1,648 @@ + +################################################################ +# This is a generated script based on design: system +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2022.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source system_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xc7z010clg400-1 +} + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name system + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +user.org:user:ip_encoder:1.1\ +user.org:user:ip_fan:1.0\ +xilinx.com:ip:processing_system7:5.5\ +xilinx.com:ip:proc_sys_reset:5.0\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ] + + set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] + + + # Create ports + set encoder_signal [ create_bd_port -dir I encoder_signal ] + set exrst_n [ create_bd_port -dir I exrst_n ] + set fan [ create_bd_port -dir O fan ] + set out_signal_camera_a [ create_bd_port -dir O out_signal_camera_a ] + set out_signal_camera_b [ create_bd_port -dir O out_signal_camera_b ] + set out_signal_camera_c [ create_bd_port -dir O out_signal_camera_c ] + set out_signal_camera_d [ create_bd_port -dir O out_signal_camera_d ] + + # Create instance: ip_encoder_0, and set properties + set ip_encoder_0 [ create_bd_cell -type ip -vlnv user.org:user:ip_encoder:1.1 ip_encoder_0 ] + + # Create instance: ip_fan_0, and set properties + set ip_fan_0 [ create_bd_cell -type ip -vlnv user.org:user:ip_fan:1.0 ip_fan_0 ] + + # Create instance: processing_system7_0, and set properties + set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ] + set_property -dict [ list \ + CONFIG.PCW_ACT_APU_PERIPHERAL_FREQMHZ {666.666687} \ + CONFIG.PCW_ACT_CAN_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_DCI_PERIPHERAL_FREQMHZ {10.158730} \ + CONFIG.PCW_ACT_ENET0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_ENET1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_PCAP_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_QSPI_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_SDIO_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_ACT_SMC_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_SPI_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_TPIU_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_UART_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_ACT_WDT_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ARMPLL_CTRL_FBDIV {40} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_CLK0_FREQ {200000000} \ + CONFIG.PCW_CLK1_FREQ {10000000} \ + CONFIG.PCW_CLK2_FREQ {10000000} \ + CONFIG.PCW_CLK3_FREQ {10000000} \ + CONFIG.PCW_CPU_CPU_PLL_FREQMHZ {1333.333} \ + CONFIG.PCW_CPU_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR0 {15} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR1 {7} \ + CONFIG.PCW_DDRPLL_CTRL_FBDIV {32} \ + CONFIG.PCW_DDR_DDR_PLL_FREQMHZ {1066.667} \ + CONFIG.PCW_DDR_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DDR_RAM_HIGHADDR {0x1FFFFFFF} \ + CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27} \ + CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {1} \ + CONFIG.PCW_ENET0_GRP_MDIO_IO {MIO 52 .. 53} \ + CONFIG.PCW_ENET0_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR0 {8} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ {1000 Mbps} \ + CONFIG.PCW_ENET0_RESET_ENABLE {1} \ + CONFIG.PCW_ENET0_RESET_IO {MIO 7} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET1_RESET_ENABLE {0} \ + CONFIG.PCW_ENET_RESET_ENABLE {1} \ + CONFIG.PCW_ENET_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_EN_EMIO_ENET0 {0} \ + CONFIG.PCW_EN_EMIO_SDIO1 {0} \ + CONFIG.PCW_EN_EMIO_TTC0 {1} \ + CONFIG.PCW_EN_EMIO_UART0 {0} \ + CONFIG.PCW_EN_ENET0 {1} \ + CONFIG.PCW_EN_GPIO {1} \ + CONFIG.PCW_EN_QSPI {1} \ + CONFIG.PCW_EN_SDIO0 {1} \ + CONFIG.PCW_EN_SDIO1 {1} \ + CONFIG.PCW_EN_TTC0 {1} \ + CONFIG.PCW_EN_UART0 {1} \ + CONFIG.PCW_EN_USB0 {1} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_FPGA_FCLK0_ENABLE {1} \ + CONFIG.PCW_FPGA_FCLK1_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK2_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK3_ENABLE {0} \ + CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1} \ + CONFIG.PCW_GPIO_MIO_GPIO_IO {MIO} \ + CONFIG.PCW_I2C0_RESET_ENABLE {0} \ + CONFIG.PCW_I2C1_RESET_ENABLE {0} \ + CONFIG.PCW_I2C_PERIPHERAL_FREQMHZ {25} \ + CONFIG.PCW_I2C_RESET_ENABLE {1} \ + CONFIG.PCW_IOPLL_CTRL_FBDIV {30} \ + CONFIG.PCW_IO_IO_PLL_FREQMHZ {1000.000} \ + CONFIG.PCW_MIO_0_DIRECTION {inout} \ + CONFIG.PCW_MIO_0_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_0_PULLUP {enabled} \ + CONFIG.PCW_MIO_0_SLEW {slow} \ + CONFIG.PCW_MIO_10_DIRECTION {inout} \ + CONFIG.PCW_MIO_10_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_10_PULLUP {enabled} \ + CONFIG.PCW_MIO_10_SLEW {slow} \ + CONFIG.PCW_MIO_11_DIRECTION {inout} \ + CONFIG.PCW_MIO_11_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_11_PULLUP {enabled} \ + CONFIG.PCW_MIO_11_SLEW {slow} \ + CONFIG.PCW_MIO_12_DIRECTION {inout} \ + CONFIG.PCW_MIO_12_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_12_PULLUP {enabled} \ + CONFIG.PCW_MIO_12_SLEW {slow} \ + CONFIG.PCW_MIO_13_DIRECTION {inout} \ + CONFIG.PCW_MIO_13_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_13_PULLUP {enabled} \ + CONFIG.PCW_MIO_13_SLEW {slow} \ + CONFIG.PCW_MIO_14_DIRECTION {in} \ + CONFIG.PCW_MIO_14_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_14_PULLUP {enabled} \ + CONFIG.PCW_MIO_14_SLEW {slow} \ + CONFIG.PCW_MIO_15_DIRECTION {out} \ + CONFIG.PCW_MIO_15_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_15_PULLUP {enabled} \ + CONFIG.PCW_MIO_15_SLEW {slow} \ + CONFIG.PCW_MIO_16_DIRECTION {out} \ + CONFIG.PCW_MIO_16_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_16_PULLUP {enabled} \ + CONFIG.PCW_MIO_16_SLEW {fast} \ + CONFIG.PCW_MIO_17_DIRECTION {out} \ + CONFIG.PCW_MIO_17_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_17_PULLUP {enabled} \ + CONFIG.PCW_MIO_17_SLEW {fast} \ + CONFIG.PCW_MIO_18_DIRECTION {out} \ + CONFIG.PCW_MIO_18_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_18_PULLUP {enabled} \ + CONFIG.PCW_MIO_18_SLEW {fast} \ + CONFIG.PCW_MIO_19_DIRECTION {out} \ + CONFIG.PCW_MIO_19_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_19_PULLUP {enabled} \ + CONFIG.PCW_MIO_19_SLEW {fast} \ + CONFIG.PCW_MIO_1_DIRECTION {out} \ + CONFIG.PCW_MIO_1_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_1_PULLUP {enabled} \ + CONFIG.PCW_MIO_1_SLEW {fast} \ + CONFIG.PCW_MIO_20_DIRECTION {out} \ + CONFIG.PCW_MIO_20_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_20_PULLUP {enabled} \ + CONFIG.PCW_MIO_20_SLEW {fast} \ + CONFIG.PCW_MIO_21_DIRECTION {out} \ + CONFIG.PCW_MIO_21_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_21_PULLUP {enabled} \ + CONFIG.PCW_MIO_21_SLEW {fast} \ + CONFIG.PCW_MIO_22_DIRECTION {in} \ + CONFIG.PCW_MIO_22_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_22_PULLUP {enabled} \ + CONFIG.PCW_MIO_22_SLEW {fast} \ + CONFIG.PCW_MIO_23_DIRECTION {in} \ + CONFIG.PCW_MIO_23_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_23_PULLUP {enabled} \ + CONFIG.PCW_MIO_23_SLEW {fast} \ + CONFIG.PCW_MIO_24_DIRECTION {in} \ + CONFIG.PCW_MIO_24_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_24_PULLUP {enabled} \ + CONFIG.PCW_MIO_24_SLEW {fast} \ + CONFIG.PCW_MIO_25_DIRECTION {in} \ + CONFIG.PCW_MIO_25_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_25_PULLUP {enabled} \ + CONFIG.PCW_MIO_25_SLEW {fast} \ + CONFIG.PCW_MIO_26_DIRECTION {in} \ + CONFIG.PCW_MIO_26_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_26_PULLUP {enabled} \ + CONFIG.PCW_MIO_26_SLEW {fast} \ + CONFIG.PCW_MIO_27_DIRECTION {in} \ + CONFIG.PCW_MIO_27_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_27_PULLUP {enabled} \ + CONFIG.PCW_MIO_27_SLEW {fast} \ + CONFIG.PCW_MIO_28_DIRECTION {inout} \ + CONFIG.PCW_MIO_28_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_28_PULLUP {enabled} \ + CONFIG.PCW_MIO_28_SLEW {slow} \ + CONFIG.PCW_MIO_29_DIRECTION {in} \ + CONFIG.PCW_MIO_29_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_29_PULLUP {enabled} \ + CONFIG.PCW_MIO_29_SLEW {slow} \ + CONFIG.PCW_MIO_2_DIRECTION {inout} \ + CONFIG.PCW_MIO_2_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_2_PULLUP {disabled} \ + CONFIG.PCW_MIO_2_SLEW {fast} \ + CONFIG.PCW_MIO_30_DIRECTION {out} \ + CONFIG.PCW_MIO_30_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_30_PULLUP {enabled} \ + CONFIG.PCW_MIO_30_SLEW {slow} \ + CONFIG.PCW_MIO_31_DIRECTION {in} \ + CONFIG.PCW_MIO_31_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_31_PULLUP {enabled} \ + CONFIG.PCW_MIO_31_SLEW {slow} \ + CONFIG.PCW_MIO_32_DIRECTION {inout} \ + CONFIG.PCW_MIO_32_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_32_PULLUP {enabled} \ + CONFIG.PCW_MIO_32_SLEW {slow} \ + CONFIG.PCW_MIO_33_DIRECTION {inout} \ + CONFIG.PCW_MIO_33_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_33_PULLUP {enabled} \ + CONFIG.PCW_MIO_33_SLEW {slow} \ + CONFIG.PCW_MIO_34_DIRECTION {inout} \ + CONFIG.PCW_MIO_34_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_34_PULLUP {enabled} \ + CONFIG.PCW_MIO_34_SLEW {slow} \ + CONFIG.PCW_MIO_35_DIRECTION {inout} \ + CONFIG.PCW_MIO_35_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_35_PULLUP {enabled} \ + CONFIG.PCW_MIO_35_SLEW {slow} \ + CONFIG.PCW_MIO_36_DIRECTION {in} \ + CONFIG.PCW_MIO_36_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_36_PULLUP {enabled} \ + CONFIG.PCW_MIO_36_SLEW {slow} \ + CONFIG.PCW_MIO_37_DIRECTION {inout} \ + CONFIG.PCW_MIO_37_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_37_PULLUP {enabled} \ + CONFIG.PCW_MIO_37_SLEW {slow} \ + CONFIG.PCW_MIO_38_DIRECTION {inout} \ + CONFIG.PCW_MIO_38_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_38_PULLUP {enabled} \ + CONFIG.PCW_MIO_38_SLEW {slow} \ + CONFIG.PCW_MIO_39_DIRECTION {inout} \ + CONFIG.PCW_MIO_39_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_39_PULLUP {enabled} \ + CONFIG.PCW_MIO_39_SLEW {slow} \ + CONFIG.PCW_MIO_3_DIRECTION {inout} \ + CONFIG.PCW_MIO_3_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_3_PULLUP {disabled} \ + CONFIG.PCW_MIO_3_SLEW {fast} \ + CONFIG.PCW_MIO_40_DIRECTION {inout} \ + CONFIG.PCW_MIO_40_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_40_PULLUP {enabled} \ + CONFIG.PCW_MIO_40_SLEW {slow} \ + CONFIG.PCW_MIO_41_DIRECTION {inout} \ + CONFIG.PCW_MIO_41_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_41_PULLUP {enabled} \ + CONFIG.PCW_MIO_41_SLEW {slow} \ + CONFIG.PCW_MIO_42_DIRECTION {inout} \ + CONFIG.PCW_MIO_42_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_42_PULLUP {enabled} \ + CONFIG.PCW_MIO_42_SLEW {slow} \ + CONFIG.PCW_MIO_43_DIRECTION {inout} \ + CONFIG.PCW_MIO_43_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_43_PULLUP {enabled} \ + CONFIG.PCW_MIO_43_SLEW {slow} \ + CONFIG.PCW_MIO_44_DIRECTION {inout} \ + CONFIG.PCW_MIO_44_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_44_PULLUP {enabled} \ + CONFIG.PCW_MIO_44_SLEW {slow} \ + CONFIG.PCW_MIO_45_DIRECTION {inout} \ + CONFIG.PCW_MIO_45_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_45_PULLUP {enabled} \ + CONFIG.PCW_MIO_45_SLEW {slow} \ + CONFIG.PCW_MIO_46_DIRECTION {inout} \ + CONFIG.PCW_MIO_46_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_46_PULLUP {enabled} \ + CONFIG.PCW_MIO_46_SLEW {slow} \ + CONFIG.PCW_MIO_47_DIRECTION {inout} \ + CONFIG.PCW_MIO_47_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_47_PULLUP {enabled} \ + CONFIG.PCW_MIO_47_SLEW {slow} \ + CONFIG.PCW_MIO_48_DIRECTION {inout} \ + CONFIG.PCW_MIO_48_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_48_PULLUP {enabled} \ + CONFIG.PCW_MIO_48_SLEW {slow} \ + CONFIG.PCW_MIO_49_DIRECTION {inout} \ + CONFIG.PCW_MIO_49_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_49_PULLUP {enabled} \ + CONFIG.PCW_MIO_49_SLEW {slow} \ + CONFIG.PCW_MIO_4_DIRECTION {inout} \ + CONFIG.PCW_MIO_4_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_4_PULLUP {disabled} \ + CONFIG.PCW_MIO_4_SLEW {fast} \ + CONFIG.PCW_MIO_50_DIRECTION {inout} \ + CONFIG.PCW_MIO_50_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_50_PULLUP {enabled} \ + CONFIG.PCW_MIO_50_SLEW {slow} \ + CONFIG.PCW_MIO_51_DIRECTION {inout} \ + CONFIG.PCW_MIO_51_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_51_PULLUP {enabled} \ + CONFIG.PCW_MIO_51_SLEW {slow} \ + CONFIG.PCW_MIO_52_DIRECTION {out} \ + CONFIG.PCW_MIO_52_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_52_PULLUP {enabled} \ + CONFIG.PCW_MIO_52_SLEW {slow} \ + CONFIG.PCW_MIO_53_DIRECTION {inout} \ + CONFIG.PCW_MIO_53_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_53_PULLUP {enabled} \ + CONFIG.PCW_MIO_53_SLEW {slow} \ + CONFIG.PCW_MIO_5_DIRECTION {inout} \ + CONFIG.PCW_MIO_5_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_5_PULLUP {disabled} \ + CONFIG.PCW_MIO_5_SLEW {fast} \ + CONFIG.PCW_MIO_6_DIRECTION {out} \ + CONFIG.PCW_MIO_6_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_6_PULLUP {disabled} \ + CONFIG.PCW_MIO_6_SLEW {fast} \ + CONFIG.PCW_MIO_7_DIRECTION {out} \ + CONFIG.PCW_MIO_7_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_7_PULLUP {disabled} \ + CONFIG.PCW_MIO_7_SLEW {slow} \ + CONFIG.PCW_MIO_8_DIRECTION {out} \ + CONFIG.PCW_MIO_8_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_8_PULLUP {disabled} \ + CONFIG.PCW_MIO_8_SLEW {slow} \ + CONFIG.PCW_MIO_9_DIRECTION {inout} \ + CONFIG.PCW_MIO_9_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_9_PULLUP {enabled} \ + CONFIG.PCW_MIO_9_SLEW {slow} \ + CONFIG.PCW_MIO_TREE_PERIPHERALS {\ +GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI\ +Flash#Quad SPI Flash#ENET Reset#USB Reset#GPIO#GPIO#GPIO#GPIO#GPIO#UART 0#UART\ +0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet\ +0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB\ +0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#Enet 0#Enet 0} \ + CONFIG.PCW_MIO_TREE_SIGNALS {\ +gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]/HOLD_B#qspi0_sclk#reset#reset#gpio[9]#gpio[10]#gpio[11]#gpio[12]#gpio[13]#rx#tx#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#data[0]#cmd#clk#data[1]#data[2]#data[3]#mdc#mdio} \ + CONFIG.PCW_NAND_GRP_D8_ENABLE {0} \ + CONFIG.PCW_NAND_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_A25_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_INT_ENABLE {0} \ + CONFIG.PCW_NOR_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PCAP_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 1.8V} \ + CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_IO1_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_IO {MIO 1 .. 6} \ + CONFIG.PCW_QSPI_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_QSPI_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_QSPI_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_QSPI_QSPI_IO {MIO 1 .. 6} \ + CONFIG.PCW_SD0_GRP_CD_ENABLE {0} \ + CONFIG.PCW_SD0_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD0_GRP_WP_ENABLE {0} \ + CONFIG.PCW_SD0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SD0_SD0_IO {MIO 40 .. 45} \ + CONFIG.PCW_SD1_GRP_CD_ENABLE {0} \ + CONFIG.PCW_SD1_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD1_GRP_WP_ENABLE {0} \ + CONFIG.PCW_SD1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SD1_SD1_IO {MIO 46 .. 51} \ + CONFIG.PCW_SDIO_PERIPHERAL_DIVISOR0 {10} \ + CONFIG.PCW_SDIO_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_SDIO_PERIPHERAL_VALID {1} \ + CONFIG.PCW_SINGLE_QSPI_DATA_MODE {x4} \ + CONFIG.PCW_SMC_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_SPI_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TPIU_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_TTC0_TTC0_IO {EMIO} \ + CONFIG.PCW_TTC_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART0_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UART0_UART0_IO {MIO 14 .. 15} \ + CONFIG.PCW_UART_PERIPHERAL_DIVISOR0 {10} \ + CONFIG.PCW_UART_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_UART_PERIPHERAL_VALID {1} \ + CONFIG.PCW_UIPARAM_ACT_DDR_FREQ_MHZ {533.333374} \ + CONFIG.PCW_UIPARAM_DDR_BANK_ADDR_COUNT {3} \ + CONFIG.PCW_UIPARAM_DDR_CL {7} \ + CONFIG.PCW_UIPARAM_DDR_COL_ADDR_COUNT {10} \ + CONFIG.PCW_UIPARAM_DDR_CWL {6} \ + CONFIG.PCW_UIPARAM_DDR_DEVICE_CAPACITY {2048 MBits} \ + CONFIG.PCW_UIPARAM_DDR_DRAM_WIDTH {16 Bits} \ + CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41J128M16 HA-125} \ + CONFIG.PCW_UIPARAM_DDR_ROW_ADDR_COUNT {14} \ + CONFIG.PCW_UIPARAM_DDR_SPEED_BIN {DDR3_1066F} \ + CONFIG.PCW_UIPARAM_DDR_T_FAW {40.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RAS_MIN {35.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RC {48.75} \ + CONFIG.PCW_UIPARAM_DDR_T_RCD {7} \ + CONFIG.PCW_UIPARAM_DDR_T_RP {7} \ + CONFIG.PCW_USB0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_USB0_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_USB0_RESET_ENABLE {1} \ + CONFIG.PCW_USB0_RESET_IO {MIO 8} \ + CONFIG.PCW_USB0_USB0_IO {MIO 28 .. 39} \ + CONFIG.PCW_USB1_RESET_ENABLE {0} \ + CONFIG.PCW_USB_RESET_ENABLE {1} \ + CONFIG.PCW_USB_RESET_SELECT {Share reset pin} \ + ] $processing_system7_0 + + # Create instance: ps7_0_axi_periph, and set properties + set ps7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps7_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps7_0_axi_periph + + # Create instance: rst_ps7_0_200M, and set properties + set rst_ps7_0_200M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps7_0_200M ] + + # Create interface connections + connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR] + connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO] + connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins ps7_0_axi_periph/S00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M00_AXI [get_bd_intf_pins ip_encoder_0/S00_AXI] [get_bd_intf_pins ps7_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M01_AXI [get_bd_intf_pins ip_fan_0/S00_AXI] [get_bd_intf_pins ps7_0_axi_periph/M01_AXI] + + # Create port connections + connect_bd_net -net exrst_n_0_1 [get_bd_ports exrst_n] [get_bd_pins ip_encoder_0/exrst_n] + connect_bd_net -net in_signal_0_1 [get_bd_ports encoder_signal] [get_bd_pins ip_encoder_0/in_signal] + connect_bd_net -net ip_encoder_0_out_signal_camera_a [get_bd_ports out_signal_camera_a] [get_bd_pins ip_encoder_0/out_signal_camera_a] + connect_bd_net -net ip_encoder_0_out_signal_camera_b [get_bd_ports out_signal_camera_b] [get_bd_pins ip_encoder_0/out_signal_camera_b] + connect_bd_net -net ip_encoder_0_out_signal_camera_c [get_bd_ports out_signal_camera_c] [get_bd_pins ip_encoder_0/out_signal_camera_c] + connect_bd_net -net ip_encoder_0_out_signal_camera_d [get_bd_ports out_signal_camera_d] [get_bd_pins ip_encoder_0/out_signal_camera_d] + connect_bd_net -net ip_fan_0_fan [get_bd_ports fan] [get_bd_pins ip_fan_0/fan] + connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins ip_encoder_0/s00_axi_aclk] [get_bd_pins ip_fan_0/s00_axi_aclk] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_200M/slowest_sync_clk] + connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_ps7_0_200M/ext_reset_in] + connect_bd_net -net rst_ps7_0_200M_peripheral_aresetn [get_bd_pins ip_encoder_0/s00_axi_aresetn] [get_bd_pins ip_fan_0/s00_axi_aresetn] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_200M/peripheral_aresetn] + + # Create address segments + assign_bd_address -offset 0x43C10000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs ip_encoder_0/S00_AXI/S00_AXI_reg] -force + assign_bd_address -offset 0x43C20000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs ip_fan_0/S00_AXI/S00_AXI_reg] -force + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hardware/pl_platform/cstr/lower_machine.xdc b/hardware/pl_platform/cstr/lower_machine.xdc new file mode 100644 index 0000000..fcbfbd2 --- /dev/null +++ b/hardware/pl_platform/cstr/lower_machine.xdc @@ -0,0 +1,30 @@ + +set_property PACKAGE_PIN R14 [get_ports encoder_signal] +set_property IOSTANDARD LVCMOS33 [get_ports encoder_signal] + + +set_property PACKAGE_PIN J20 [get_ports fan] +set_property IOSTANDARD LVCMOS33 [get_ports fan] +set_property SLEW SLOW [get_ports fan] + + +set_property PACKAGE_PIN T10 [get_ports out_signal_camera_a] +set_property IOSTANDARD LVCMOS33 [get_ports out_signal_camera_a] +set_property SLEW FAST [get_ports out_signal_camera_a] +set_property IOSTANDARD LVCMOS33 [get_ports out_signal_camera_b] +set_property IOSTANDARD LVCMOS33 [get_ports out_signal_camera_c] +set_property IOSTANDARD LVCMOS33 [get_ports out_signal_camera_d] +set_property PACKAGE_PIN U12 [get_ports out_signal_camera_b] +set_property PACKAGE_PIN V12 [get_ports out_signal_camera_c] +set_property PACKAGE_PIN W13 [get_ports out_signal_camera_d] +set_property SLEW FAST [get_ports out_signal_camera_b] +set_property SLEW FAST [get_ports out_signal_camera_c] +set_property SLEW FAST [get_ports out_signal_camera_d] + +set_property OFFCHIP_TERM NONE [get_ports fan] +set_property OFFCHIP_TERM NONE [get_ports out_signal_camera_a] +set_property OFFCHIP_TERM NONE [get_ports out_signal_camera_b] +set_property OFFCHIP_TERM NONE [get_ports out_signal_camera_c] +set_property OFFCHIP_TERM NONE [get_ports out_signal_camera_d] +set_property IOSTANDARD LVCMOS33 [get_ports exrst_n] +set_property PACKAGE_PIN T12 [get_ports exrst_n] diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/.Xil/.ip_encoder_0.xcix.lock b/hardware/pl_platform/ip_repo/ip_encoder_1.0/.Xil/.ip_encoder_0.xcix.lock new file mode 100644 index 0000000..e69de29 diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/bd/bd.tcl b/hardware/pl_platform/ip_repo/ip_encoder_1.0/bd/bd.tcl new file mode 100644 index 0000000..4804aeb --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/bd/bd.tcl @@ -0,0 +1,86 @@ + +proc init { cellpath otherInfo } { + + set cell_handle [get_bd_cells $cellpath] + set all_busif [get_bd_intf_pins $cellpath/*] + set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH] + set full_sbusif_list [list ] + + foreach busif $all_busif { + if { [string equal -nocase [get_property MODE $busif] "slave"] == 1 } { + set busif_param_list [list] + set busif_name [get_property NAME $busif] + if { [lsearch -exact -nocase $full_sbusif_list $busif_name ] == -1 } { + continue + } + foreach tparam $axi_standard_param_list { + lappend busif_param_list "C_${busif_name}_${tparam}" + } + bd::mark_propagate_only $cell_handle $busif_param_list + } + } +} + + +proc pre_propagate {cellpath otherInfo } { + + set cell_handle [get_bd_cells $cellpath] + set all_busif [get_bd_intf_pins $cellpath/*] + set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH] + + foreach busif $all_busif { + if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } { + continue + } + if { [string equal -nocase [get_property MODE $busif] "master"] != 1 } { + continue + } + + set busif_name [get_property NAME $busif] + foreach tparam $axi_standard_param_list { + set busif_param_name "C_${busif_name}_${tparam}" + + set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif] + set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle] + + if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } { + if { $val_on_cell != "" } { + set_property CONFIG.${tparam} $val_on_cell $busif + } + } + } + } +} + + +proc propagate {cellpath otherInfo } { + + set cell_handle [get_bd_cells $cellpath] + set all_busif [get_bd_intf_pins $cellpath/*] + set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH] + + foreach busif $all_busif { + if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } { + continue + } + if { [string equal -nocase [get_property MODE $busif] "slave"] != 1 } { + continue + } + + set busif_name [get_property NAME $busif] + foreach tparam $axi_standard_param_list { + set busif_param_name "C_${busif_name}_${tparam}" + + set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif] + set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle] + + if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } { + #override property of bd_interface_net to bd_cell -- only for slaves. May check for supported values.. + if { $val_on_cell_intf_pin != "" } { + set_property CONFIG.${busif_param_name} $val_on_cell_intf_pin $cell_handle + } + } + } + } +} + diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/component.xml b/hardware/pl_platform/ip_repo/ip_encoder_1.0/component.xml new file mode 100644 index 0000000..b733991 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/component.xml @@ -0,0 +1,1105 @@ + + + user.org + user + ip_encoder + 1.1 + + + S00_AXI + + + + + + + + + AWADDR + + + s00_axi_awaddr + + + + + AWPROT + + + s00_axi_awprot + + + + + AWVALID + + + s00_axi_awvalid + + + + + AWREADY + + + s00_axi_awready + + + + + WDATA + + + s00_axi_wdata + + + + + WSTRB + + + s00_axi_wstrb + + + + + WVALID + + + s00_axi_wvalid + + + + + WREADY + + + s00_axi_wready + + + + + BRESP + + + s00_axi_bresp + + + + + BVALID + + + s00_axi_bvalid + + + + + BREADY + + + s00_axi_bready + + + + + ARADDR + + + s00_axi_araddr + + + + + ARPROT + + + s00_axi_arprot + + + + + ARVALID + + + s00_axi_arvalid + + + + + ARREADY + + + s00_axi_arready + + + + + RDATA + + + s00_axi_rdata + + + + + RRESP + + + s00_axi_rresp + + + + + RVALID + + + s00_axi_rvalid + + + + + RREADY + + + s00_axi_rready + + + + + + WIZ_DATA_WIDTH + 32 + + + WIZ_NUM_REG + 4 + + + SUPPORTS_NARROW_BURST + 0 + + + + + S00_AXI_RST + + + + + + + RST + + + s00_axi_aresetn + + + + + + POLARITY + ACTIVE_LOW + + + + + S00_AXI_CLK + + + + + + + CLK + + + s00_axi_aclk + + + + + + ASSOCIATED_BUSIF + S00_AXI + + + ASSOCIATED_RESET + s00_axi_aresetn + + + + + + + S00_AXI + + S00_AXI_reg + 0 + 4096 + 32 + register + + + OFFSET_BASE_PARAM + C_S00_AXI_BASEADDR + + + OFFSET_HIGH_PARAM + C_S00_AXI_HIGHADDR + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + ip_encoder_v1_0 + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + 01ec01e9 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + ip_encoder_v1_0 + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + 01ec01e9 + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 5ea3f00b + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + cb63bd89 + + + + + bd_tcl + Block Diagram + :vivado.xilinx.com:block.diagram + + bd_tcl_view_fileset + + + + viewChecksum + 45a2f450 + + + + + + + in_signal + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + exrst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_valve_posedge + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_valve + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_a_posedge + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_b_posedge + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_c_posedge + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_d_posedge + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_a + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_b + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_c + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + out_signal_camera_d + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_aclk + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_aresetn + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awaddr + + in + + 4 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awprot + + in + + 2 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awvalid + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awready + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wdata + + in + + 31 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wstrb + + in + + 3 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wvalid + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wready + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_bresp + + out + + 1 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_bvalid + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_bready + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_araddr + + in + + 4 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_arprot + + in + + 2 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_arvalid + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_arready + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rdata + + out + + 31 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rresp + + out + + 1 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rvalid + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rready + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S00_AXI_DATA_WIDTH + C S00 AXI DATA WIDTH + Width of S_AXI data bus + 32 + + + C_S00_AXI_ADDR_WIDTH + C S00 AXI ADDR WIDTH + Width of S_AXI address bus + 5 + + + + + + choice_list_6fc15197 + 32 + + + choice_list_9d8b0d81 + ACTIVE_HIGH + ACTIVE_LOW + + + choice_pairs_ce1226b1 + 1 + 0 + + + + + xilinx_verilogsynthesis_view_fileset + + src/encoder.v + verilogSource + + + hdl/ip_encoder_v1_0_S00_AXI.v + verilogSource + + + hdl/ip_encoder_v1_0.v + verilogSource + CHECKSUM_33abba7b + + + + xilinx_verilogbehavioralsimulation_view_fileset + + src/encoder.v + verilogSource + + + hdl/ip_encoder_v1_0_S00_AXI.v + verilogSource + + + hdl/ip_encoder_v1_0.v + verilogSource + + + + xilinx_softwaredriver_view_fileset + + drivers/ip_encoder_v1_0/data/ip_encoder.mdd + mdd + driver_mdd + + + drivers/ip_encoder_v1_0/data/ip_encoder.tcl + tclSource + driver_tcl + + + drivers/ip_encoder_v1_0/src/Makefile + driver_src + + + drivers/ip_encoder_v1_0/src/ip_encoder.h + cSource + driver_src + + + drivers/ip_encoder_v1_0/src/ip_encoder.c + cSource + driver_src + + + drivers/ip_encoder_v1_0/src/ip_encoder_selftest.c + cSource + driver_src + + + + xilinx_xpgui_view_fileset + + xgui/ip_encoder_v1_1.tcl + tclSource + CHECKSUM_cb63bd89 + XGUI_VERSION_2 + + + + bd_tcl_view_fileset + + bd/bd.tcl + tclSource + + + + ip_encoder + + + C_S00_AXI_DATA_WIDTH + C S00 AXI DATA WIDTH + Width of S_AXI data bus + 32 + + + + false + + + + + + C_S00_AXI_ADDR_WIDTH + C S00 AXI ADDR WIDTH + Width of S_AXI address bus + 5 + + + + false + + + + + + C_S00_AXI_BASEADDR + C S00 AXI BASEADDR + 0xFFFFFFFF + + + + false + + + + + + C_S00_AXI_HIGHADDR + C S00 AXI HIGHADDR + 0x00000000 + + + + false + + + + + + Component_Name + ip_encoder_v1_0 + + + + + + zynq + + + AXI_Peripheral + + ip_encoder_v1.0 + 20 + + user.org:user:ip_encoder:1.0 + + 2023-04-26T08:46:12Z + + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + /home/miaow/zynq/ip_repo/ip_encoder_1.0 + + + + 2022.1 + + + + + + + + + + + + + + diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.mdd b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.mdd new file mode 100644 index 0000000..ba75dbe --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.mdd @@ -0,0 +1,10 @@ + + +OPTION psf_version = 2.1; + +BEGIN DRIVER ip_encoder + OPTION supported_peripherals = (ip_encoder); + OPTION copyfiles = all; + OPTION VERSION = 1.0; + OPTION NAME = ip_encoder; +END DRIVER diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.tcl b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.tcl new file mode 100644 index 0000000..e4dbbf0 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/data/ip_encoder.tcl @@ -0,0 +1,5 @@ + + +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "ip_encoder" "NUM_INSTANCES" "DEVICE_ID" "C_S00_AXI_BASEADDR" "C_S00_AXI_HIGHADDR" +} diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/Makefile b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/Makefile new file mode 100644 index 0000000..18d6967 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/Makefile @@ -0,0 +1,26 @@ +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + +libs: + echo "Compiling ip_encoder..." + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS} + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.c b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.c new file mode 100644 index 0000000..d3162a7 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.c @@ -0,0 +1,6 @@ + + +/***************************** Include Files *******************************/ +#include "ip_encoder.h" + +/************************** Function Definitions ***************************/ diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.h b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.h new file mode 100644 index 0000000..562108a --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder.h @@ -0,0 +1,79 @@ + +#ifndef IP_ENCODER_H +#define IP_ENCODER_H + + +/****************** Include Files ********************/ +#include "xil_types.h" +#include "xstatus.h" + +#define IP_ENCODER_S00_AXI_SLV_REG0_OFFSET 0 +#define IP_ENCODER_S00_AXI_SLV_REG1_OFFSET 4 +#define IP_ENCODER_S00_AXI_SLV_REG2_OFFSET 8 +#define IP_ENCODER_S00_AXI_SLV_REG3_OFFSET 12 + + +/**************************** Type Definitions *****************************/ +/** + * + * Write a value to a IP_ENCODER register. A 32 bit write is performed. + * If the component is implemented in a smaller width, only the least + * significant data is written. + * + * @param BaseAddress is the base address of the IP_ENCODERdevice. + * @param RegOffset is the register offset from the base to write to. + * @param Data is the data written to the register. + * + * @return None. + * + * @note + * C-style signature: + * void IP_ENCODER_mWriteReg(u32 BaseAddress, unsigned RegOffset, u32 Data) + * + */ +#define IP_ENCODER_mWriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) + +/** + * + * Read a value from a IP_ENCODER register. A 32 bit read is performed. + * If the component is implemented in a smaller width, only the least + * significant data is read from the register. The most significant data + * will be read as 0. + * + * @param BaseAddress is the base address of the IP_ENCODER device. + * @param RegOffset is the register offset from the base to write to. + * + * @return Data is the data from the register. + * + * @note + * C-style signature: + * u32 IP_ENCODER_mReadReg(u32 BaseAddress, unsigned RegOffset) + * + */ +#define IP_ENCODER_mReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) + +/************************** Function Prototypes ****************************/ +/** + * + * Run a self-test on the driver/device. Note this may be a destructive test if + * resets of the device are performed. + * + * If the hardware system is not built correctly, this function may never + * return to the caller. + * + * @param baseaddr_p is the base address of the IP_ENCODER instance to be worked on. + * + * @return + * + * - XST_SUCCESS if all self-test code passed + * - XST_FAILURE if any self-test code failed + * + * @note Caching must be turned off for this function to work. + * @note Self test may fail if data memory and device are not on the same bus. + * + */ +XStatus IP_ENCODER_Reg_SelfTest(void * baseaddr_p); + +#endif // IP_ENCODER_H diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder_selftest.c b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder_selftest.c new file mode 100644 index 0000000..bc1f76c --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/drivers/ip_encoder_v1_0/src/ip_encoder_selftest.c @@ -0,0 +1,60 @@ + +/***************************** Include Files *******************************/ +#include "ip_encoder.h" +#include "xparameters.h" +#include "stdio.h" +#include "xil_io.h" + +/************************** Constant Definitions ***************************/ +#define READ_WRITE_MUL_FACTOR 0x10 + +/************************** Function Definitions ***************************/ +/** + * + * Run a self-test on the driver/device. Note this may be a destructive test if + * resets of the device are performed. + * + * If the hardware system is not built correctly, this function may never + * return to the caller. + * + * @param baseaddr_p is the base address of the IP_ENCODERinstance to be worked on. + * + * @return + * + * - XST_SUCCESS if all self-test code passed + * - XST_FAILURE if any self-test code failed + * + * @note Caching must be turned off for this function to work. + * @note Self test may fail if data memory and device are not on the same bus. + * + */ +XStatus IP_ENCODER_Reg_SelfTest(void * baseaddr_p) +{ + u32 baseaddr; + int write_loop_index; + int read_loop_index; + int Index; + + baseaddr = (u32) baseaddr_p; + + xil_printf("******************************\n\r"); + xil_printf("* User Peripheral Self Test\n\r"); + xil_printf("******************************\n\n\r"); + + /* + * Write to user logic slave module register(s) and read back + */ + xil_printf("User logic slave module test...\n\r"); + + for (write_loop_index = 0 ; write_loop_index < 4; write_loop_index++) + IP_ENCODER_mWriteReg (baseaddr, write_loop_index*4, (write_loop_index+1)*READ_WRITE_MUL_FACTOR); + for (read_loop_index = 0 ; read_loop_index < 4; read_loop_index++) + if ( IP_ENCODER_mReadReg (baseaddr, read_loop_index*4) != (read_loop_index+1)*READ_WRITE_MUL_FACTOR){ + xil_printf ("Error reading register value at address %x\n", (int)baseaddr + read_loop_index*4); + return XST_FAILURE; + } + + xil_printf(" - slave register write/read passed\n\n\r"); + + return XST_SUCCESS; +} diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/design.tcl b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/design.tcl new file mode 100644 index 0000000..65a930e --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/design.tcl @@ -0,0 +1,88 @@ +proc create_ipi_design { offsetfile design_name } { + create_bd_design $design_name + open_bd_design $design_name + + # Create Clock and Reset Ports + set ACLK [ create_bd_port -dir I -type clk ACLK ] + set_property -dict [ list CONFIG.FREQ_HZ {100000000} CONFIG.PHASE {0.000} CONFIG.CLK_DOMAIN "${design_name}_ACLK" ] $ACLK + set ARESETN [ create_bd_port -dir I -type rst ARESETN ] + set_property -dict [ list CONFIG.POLARITY {ACTIVE_LOW} ] $ARESETN + set_property CONFIG.ASSOCIATED_RESET ARESETN $ACLK + + # Create instance: ip_encoder_0, and set properties + set ip_encoder_0 [ create_bd_cell -type ip -vlnv user.org:user:ip_encoder:1.0 ip_encoder_0] + + # Create instance: master_0, and set properties + set master_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_vip master_0] + set_property -dict [ list CONFIG.PROTOCOL {AXI4LITE} CONFIG.INTERFACE_MODE {MASTER} ] $master_0 + + # Create interface connections + connect_bd_intf_net [get_bd_intf_pins master_0/M_AXI ] [get_bd_intf_pins ip_encoder_0/S00_AXI] + + # Create port connections + connect_bd_net -net aclk_net [get_bd_ports ACLK] [get_bd_pins master_0/ACLK] [get_bd_pins ip_encoder_0/S00_AXI_ACLK] + connect_bd_net -net aresetn_net [get_bd_ports ARESETN] [get_bd_pins master_0/ARESETN] [get_bd_pins ip_encoder_0/S00_AXI_ARESETN] +set_property target_simulator XSim [current_project] +set_property -name {xsim.simulate.runtime} -value {100ms} -objects [get_filesets sim_1] + + # Auto assign address + assign_bd_address + + # Copy all address to interface_address.vh file + set bd_path [file dirname [get_property NAME [get_files ${design_name}.bd]]] + upvar 1 $offsetfile offset_file + set offset_file "${bd_path}/ip_encoder_v1_0_tb_include.svh" + set fp [open $offset_file "w"] + puts $fp "`ifndef ip_encoder_v1_0_tb_include_vh_" + puts $fp "`define ip_encoder_v1_0_tb_include_vh_\n" + puts $fp "//Configuration current bd names" + puts $fp "`define BD_NAME ${design_name}" + puts $fp "`define BD_INST_NAME ${design_name}_i" + puts $fp "`define BD_WRAPPER ${design_name}_wrapper\n" + puts $fp "//Configuration address parameters" + + puts $fp "`endif" + close $fp +} + +set ip_path [file dirname [file normalize [get_property XML_FILE_NAME [ipx::get_cores user.org:user:ip_encoder:1.0]]]] +set test_bench_file ${ip_path}/example_designs/bfm_design/ip_encoder_v1_0_tb.sv +set interface_address_vh_file "" + +# Set IP Repository and Update IP Catalogue +set repo_paths [get_property ip_repo_paths [current_fileset]] +if { [lsearch -exact -nocase $repo_paths $ip_path ] == -1 } { + set_property ip_repo_paths "$ip_path [get_property ip_repo_paths [current_fileset]]" [current_fileset] + update_ip_catalog +} + +set design_name "" +set all_bd {} +set all_bd_files [get_files *.bd -quiet] +foreach file $all_bd_files { +set file_name [string range $file [expr {[string last "/" $file] + 1}] end] +set bd_name [string range $file_name 0 [expr {[string last "." $file_name] -1}]] +lappend all_bd $bd_name +} + +for { set i 1 } { 1 } { incr i } { + set design_name "ip_encoder_v1_0_bfm_${i}" + if { [lsearch -exact -nocase $all_bd $design_name ] == -1 } { + break + } +} + +create_ipi_design interface_address_vh_file ${design_name} +validate_bd_design + +set wrapper_file [make_wrapper -files [get_files ${design_name}.bd] -top -force] +import_files -force -norecurse $wrapper_file + +set_property SOURCE_SET sources_1 [get_filesets sim_1] +import_files -fileset sim_1 -norecurse -force $test_bench_file +remove_files -quiet -fileset sim_1 ip_encoder_v1_0_tb_include.vh +import_files -fileset sim_1 -norecurse -force $interface_address_vh_file +set_property top ip_encoder_v1_0_tb [get_filesets sim_1] +set_property top_lib {} [get_filesets sim_1] +set_property top_file {} [get_filesets sim_1] +launch_simulation -simset sim_1 -mode behavioral diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/ip_encoder_v1_0_tb.sv b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/ip_encoder_v1_0_tb.sv new file mode 100644 index 0000000..e5939a0 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/bfm_design/ip_encoder_v1_0_tb.sv @@ -0,0 +1,197 @@ + +`timescale 1ns / 1ps +`include "ip_encoder_v1_0_tb_include.svh" + +import axi_vip_pkg::*; +import ip_encoder_v1_0_bfm_1_master_0_0_pkg::*; + +module ip_encoder_v1_0_tb(); + + +xil_axi_uint error_cnt = 0; +xil_axi_uint comparison_cnt = 0; +axi_transaction wr_transaction; +axi_transaction rd_transaction; +axi_monitor_transaction mst_monitor_transaction; +axi_monitor_transaction master_moniter_transaction_queue[$]; +xil_axi_uint master_moniter_transaction_queue_size =0; +axi_monitor_transaction mst_scb_transaction; +axi_monitor_transaction passthrough_monitor_transaction; +axi_monitor_transaction passthrough_master_moniter_transaction_queue[$]; +xil_axi_uint passthrough_master_moniter_transaction_queue_size =0; +axi_monitor_transaction passthrough_mst_scb_transaction; +axi_monitor_transaction passthrough_slave_moniter_transaction_queue[$]; +xil_axi_uint passthrough_slave_moniter_transaction_queue_size =0; +axi_monitor_transaction passthrough_slv_scb_transaction; +axi_monitor_transaction slv_monitor_transaction; +axi_monitor_transaction slave_moniter_transaction_queue[$]; +xil_axi_uint slave_moniter_transaction_queue_size =0; +axi_monitor_transaction slv_scb_transaction; +xil_axi_uint mst_agent_verbosity = 0; +xil_axi_uint slv_agent_verbosity = 0; +xil_axi_uint passthrough_agent_verbosity = 0; +bit clock; +bit reset; +integer result_slave; +bit [31:0] S00_AXI_test_data[3:0]; + localparam LC_AXI_BURST_LENGTH = 8; + localparam LC_AXI_DATA_WIDTH = 32; +task automatic COMPARE_DATA; + input [(LC_AXI_BURST_LENGTH * LC_AXI_DATA_WIDTH)-1:0]expected; + input [(LC_AXI_BURST_LENGTH * LC_AXI_DATA_WIDTH)-1:0]actual; + begin + if (expected === 'hx || actual === 'hx) begin + $display("TESTBENCH ERROR! COMPARE_DATA cannot be performed with an expected or actual vector that is all 'x'!"); + result_slave = 0; $stop; + end + if (actual != expected) begin + $display("TESTBENCH ERROR! Data expected is not equal to actual.", " expected = 0x%h",expected, " actual = 0x%h",actual); + result_slave = 0; + $stop; + end + else + begin + $display("TESTBENCH Passed! Data expected is equal to actual.", + " expected = 0x%h",expected, " actual = 0x%h",actual); + end + end +endtask +integer i; +integer j; +xil_axi_uint trans_cnt_before_switch = 48; +xil_axi_uint passthrough_cmd_switch_cnt = 0; +event passthrough_mastermode_start_event; +event passthrough_mastermode_end_event; +event passthrough_slavemode_end_event; +xil_axi_uint mtestID; +xil_axi_ulong mtestADDR; +xil_axi_len_t mtestBurstLength; +xil_axi_size_t mtestDataSize; +xil_axi_burst_t mtestBurstType; +xil_axi_lock_t mtestLOCK; +xil_axi_cache_t mtestCacheType = 0; +xil_axi_prot_t mtestProtectionType = 3'b000; +xil_axi_region_t mtestRegion = 4'b000; +xil_axi_qos_t mtestQOS = 4'b000; +xil_axi_data_beat dbeat; +xil_axi_data_beat [255:0] mtestWUSER; +xil_axi_data_beat mtestAWUSER = 'h0; +xil_axi_data_beat mtestARUSER = 0; +xil_axi_data_beat [255:0] mtestRUSER; +xil_axi_uint mtestBUSER = 0; +xil_axi_resp_t mtestBresp; +xil_axi_resp_t[255:0] mtestRresp; +bit [63:0] mtestWDataL; +bit [63:0] mtestRDataL; +axi_transaction pss_wr_transaction; +axi_transaction pss_rd_transaction; +axi_transaction reactive_transaction; +axi_transaction rd_payload_transaction; +axi_transaction wr_rand; +axi_transaction rd_rand; +axi_transaction wr_reactive; +axi_transaction rd_reactive; +axi_transaction wr_reactive2; +axi_transaction rd_reactive2; +axi_ready_gen bready_gen; +axi_ready_gen rready_gen; +axi_ready_gen awready_gen; +axi_ready_gen wready_gen; +axi_ready_gen arready_gen; +axi_ready_gen bready_gen2; +axi_ready_gen rready_gen2; +axi_ready_gen awready_gen2; +axi_ready_gen wready_gen2; +axi_ready_gen arready_gen2; +xil_axi_payload_byte data_mem[xil_axi_ulong]; +ip_encoder_v1_0_bfm_1_master_0_0_mst_t mst_agent_0; + + `BD_WRAPPER DUT( + .ARESETN(reset), + .ACLK(clock) + ); + +initial begin + mst_agent_0 = new("master vip agent",DUT.`BD_INST_NAME.master_0.inst.IF);//ms + mst_agent_0.vif_proxy.set_dummy_drive_type(XIL_AXI_VIF_DRIVE_NONE); + mst_agent_0.set_agent_tag("Master VIP"); + mst_agent_0.set_verbosity(mst_agent_verbosity); + mst_agent_0.start_master(); + $timeformat (-12, 1, " ps", 1); + end + initial begin + reset <= 1'b0; + #200ns; + reset <= 1'b1; + repeat (5) @(negedge clock); + end + always #5 clock <= ~clock; + initial begin + S_AXI_TEST ( ); + + #1ns; + $finish; + end +task automatic S_AXI_TEST; +begin +#1; + $display("Sequential write transfers example similar to AXI BFM WRITE_BURST method starts"); + mtestID = 0; + mtestADDR = 64'h00000000; + mtestBurstLength = 0; + mtestDataSize = xil_axi_size_t'(xil_clog2(32/8)); + mtestBurstType = XIL_AXI_BURST_TYPE_INCR; + mtestLOCK = XIL_AXI_ALOCK_NOLOCK; + mtestCacheType = 0; + mtestProtectionType = 0; + mtestRegion = 0; + mtestQOS = 0; + result_slave = 1; + mtestWDataL[31:0] = 32'h00000001; + for(int i = 0; i < 4;i++) begin + S00_AXI_test_data[i] <= mtestWDataL[31:0]; + mst_agent_0.AXI4LITE_WRITE_BURST( + mtestADDR, + mtestProtectionType, + mtestWDataL, + mtestBresp + ); + mtestWDataL[31:0] = mtestWDataL[31:0] + 1; + mtestADDR = mtestADDR + 64'h4; + end + $display("Sequential write transfers example similar to AXI BFM WRITE_BURST method completes"); + $display("Sequential read transfers example similar to AXI BFM READ_BURST method starts"); + mtestID = 0; + mtestADDR = 64'h00000000; + mtestBurstLength = 0; + mtestDataSize = xil_axi_size_t'(xil_clog2(32/8)); + mtestBurstType = XIL_AXI_BURST_TYPE_INCR; + mtestLOCK = XIL_AXI_ALOCK_NOLOCK; + mtestCacheType = 0; + mtestProtectionType = 0; + mtestRegion = 0; + mtestQOS = 0; + for(int i = 0; i < 4;i++) begin + mst_agent_0.AXI4LITE_READ_BURST( + mtestADDR, + mtestProtectionType, + mtestRDataL, + mtestRresp + ); + mtestADDR = mtestADDR + 64'h4; + COMPARE_DATA(S00_AXI_test_data[i],mtestRDataL); + end + $display("Sequential read transfers example similar to AXI BFM READ_BURST method completes"); + $display("Sequential read transfers example similar to AXI VIP READ_BURST method completes"); + $display("---------------------------------------------------------"); + $display("EXAMPLE TEST S00_AXI: PTGEN_TEST_FINISHED!"); + if ( result_slave ) begin + $display("PTGEN_TEST: PASSED!"); + end else begin + $display("PTGEN_TEST: FAILED!"); + end + $display("---------------------------------------------------------"); + end +endtask + +endmodule diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/design.tcl b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/design.tcl new file mode 100644 index 0000000..370404f --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/design.tcl @@ -0,0 +1,118 @@ + +proc create_ipi_design { offsetfile design_name } { + + create_bd_design $design_name + open_bd_design $design_name + + # Create and configure Clock/Reset + create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz sys_clk_0 + create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset sys_reset_0 + + #Constraints will be provided manually while pin planning. + create_bd_port -dir I -type rst reset_rtl + set_property CONFIG.POLARITY [get_property CONFIG.POLARITY [get_bd_pins sys_clk_0/reset]] [get_bd_ports reset_rtl] + connect_bd_net [get_bd_pins sys_reset_0/ext_reset_in] [get_bd_ports reset_rtl] + connect_bd_net [get_bd_ports reset_rtl] [get_bd_pins sys_clk_0/reset] + set external_reset_port reset_rtl + create_bd_port -dir I -type clk clock_rtl + connect_bd_net [get_bd_pins sys_clk_0/clk_in1] [get_bd_ports clock_rtl] + set external_clock_port clock_rtl + + #Avoid IPI DRC, make clock port synchronous to reset + if { $external_clock_port ne "" && $external_reset_port ne "" } { + set_property CONFIG.ASSOCIATED_RESET $external_reset_port [get_bd_ports $external_clock_port] + } + + # Connect other sys_reset pins + connect_bd_net [get_bd_pins sys_reset_0/slowest_sync_clk] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins sys_clk_0/locked] [get_bd_pins sys_reset_0/dcm_locked] + + # Create instance: ip_encoder_0, and set properties + set ip_encoder_0 [ create_bd_cell -type ip -vlnv user.org:user:ip_encoder:1.0 ip_encoder_0 ] + + # Create instance: jtag_axi_0, and set properties + set jtag_axi_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:jtag_axi jtag_axi_0 ] + set_property -dict [list CONFIG.PROTOCOL {0}] [get_bd_cells jtag_axi_0] + connect_bd_net [get_bd_pins jtag_axi_0/aclk] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins jtag_axi_0/aresetn] [get_bd_pins sys_reset_0/peripheral_aresetn] + + # Create instance: axi_peri_interconnect, and set properties + set axi_peri_interconnect [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect axi_peri_interconnect ] + connect_bd_net [get_bd_pins axi_peri_interconnect/ACLK] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins axi_peri_interconnect/ARESETN] [get_bd_pins sys_reset_0/interconnect_aresetn] + set_property -dict [ list CONFIG.NUM_SI {1} ] $axi_peri_interconnect + connect_bd_net [get_bd_pins axi_peri_interconnect/S00_ACLK] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins axi_peri_interconnect/S00_ARESETN] [get_bd_pins sys_reset_0/peripheral_aresetn] + connect_bd_intf_net [get_bd_intf_pins jtag_axi_0/M_AXI] [get_bd_intf_pins axi_peri_interconnect/S00_AXI] + + set_property -dict [ list CONFIG.NUM_MI {1} ] $axi_peri_interconnect + connect_bd_net [get_bd_pins axi_peri_interconnect/M00_ACLK] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins axi_peri_interconnect/M00_ARESETN] [get_bd_pins sys_reset_0/peripheral_aresetn] + + # Connect all clock & reset of ip_encoder_0 slave interfaces.. + connect_bd_intf_net [get_bd_intf_pins axi_peri_interconnect/M00_AXI] [get_bd_intf_pins ip_encoder_0/S00_AXI] + connect_bd_net [get_bd_pins ip_encoder_0/s00_axi_aclk] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins ip_encoder_0/s00_axi_aresetn] [get_bd_pins sys_reset_0/peripheral_aresetn] + + + # Auto assign address + assign_bd_address + + # Copy all address to ip_encoder_v1_0_include.tcl file + set bd_path [get_property DIRECTORY [current_project]]/[current_project].srcs/[current_fileset]/bd + upvar 1 $offsetfile offset_file + set offset_file "${bd_path}/ip_encoder_v1_0_include.tcl" + set fp [open $offset_file "w"] + puts $fp "# Configuration address parameters" + + set offset [get_property OFFSET [get_bd_addr_segs /jtag_axi_0/Data/SEG_ip_encoder_0_S00_AXI_* ]] + puts $fp "set s00_axi_addr ${offset}" + + close $fp +} + +# Set IP Repository and Update IP Catalogue +set ip_path [file dirname [file normalize [get_property XML_FILE_NAME [ipx::get_cores user.org:user:ip_encoder:1.0]]]] +set hw_test_file ${ip_path}/example_designs/debug_hw_design/ip_encoder_v1_0_hw_test.tcl + +set repo_paths [get_property ip_repo_paths [current_fileset]] +if { [lsearch -exact -nocase $repo_paths $ip_path ] == -1 } { + set_property ip_repo_paths "$ip_path [get_property ip_repo_paths [current_fileset]]" [current_fileset] + update_ip_catalog +} + +set design_name "" +set all_bd {} +set all_bd_files [get_files *.bd -quiet] +foreach file $all_bd_files { +set file_name [string range $file [expr {[string last "/" $file] + 1}] end] +set bd_name [string range $file_name 0 [expr {[string last "." $file_name] -1}]] +lappend all_bd $bd_name +} + +for { set i 1 } { 1 } { incr i } { + set design_name "ip_encoder_v1_0_hw_${i}" + if { [lsearch -exact -nocase $all_bd $design_name ] == -1 } { + break + } +} + +set intf_address_include_file "" +create_ipi_design intf_address_include_file ${design_name} +save_bd_design +validate_bd_design + +set wrapper_file [make_wrapper -files [get_files ${design_name}.bd] -top -force] +import_files -force -norecurse $wrapper_file + +puts "-------------------------------------------------------------------------------------------------" +puts "INFO NEXT STEPS : Until this stage, debug hardware design has been created, " +puts " please perform following steps to test design in targeted board." +puts "1. Generate bitstream" +puts "2. Setup your targeted board, open hardware manager and open new(or existing) hardware target" +puts "3. Download generated bitstream" +puts "4. Run generated hardware test using below command, this invokes basic read/write operation" +puts " to every interface present in the peripheral : xilinx.com:user:myip:1.0" +puts " : source -notrace ${hw_test_file}" +puts "-------------------------------------------------------------------------------------------------" + diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/ip_encoder_v1_0_hw_test.tcl b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/ip_encoder_v1_0_hw_test.tcl new file mode 100644 index 0000000..a08bb26 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/example_designs/debug_hw_design/ip_encoder_v1_0_hw_test.tcl @@ -0,0 +1,45 @@ +# Runtime Tcl commands to interact with - ip_encoder_v1_0 + +# Sourcing design address info tcl +set bd_path [get_property DIRECTORY [current_project]]/[current_project].srcs/[current_fileset]/bd +source ${bd_path}/ip_encoder_v1_0_include.tcl + +# jtag axi master interface hardware name, change as per your design. +set jtag_axi_master hw_axi_1 +set ec 0 + +# hw test script +# Delete all previous axis transactions +if { [llength [get_hw_axi_txns -quiet]] } { + delete_hw_axi_txn [get_hw_axi_txns -quiet] +} + + +# Test all lite slaves. +set wdata_1 abcd1234 + +# Test: S00_AXI +# Create a write transaction at s00_axi_addr address +create_hw_axi_txn w_s00_axi_addr [get_hw_axis $jtag_axi_master] -type write -address $s00_axi_addr -data $wdata_1 +# Create a read transaction at s00_axi_addr address +create_hw_axi_txn r_s00_axi_addr [get_hw_axis $jtag_axi_master] -type read -address $s00_axi_addr +# Initiate transactions +run_hw_axi r_s00_axi_addr +run_hw_axi w_s00_axi_addr +run_hw_axi r_s00_axi_addr +set rdata_tmp [get_property DATA [get_hw_axi_txn r_s00_axi_addr]] +# Compare read data +if { $rdata_tmp == $wdata_1 } { + puts "Data comparison test pass for - S00_AXI" +} else { + puts "Data comparison test fail for - S00_AXI, expected-$wdata_1 actual-$rdata_tmp" + inc ec +} + +# Check error flag +if { $ec == 0 } { + puts "PTGEN_TEST: PASSED!" +} else { + puts "PTGEN_TEST: FAILED!" +} + diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0.v b/hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0.v new file mode 100644 index 0000000..92d055a --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0.v @@ -0,0 +1,102 @@ + +`timescale 1 ns / 1 ps + + module ip_encoder_v1_0 # + ( + // Users to add parameters here + + // User parameters ends + // Do not modify the parameters beyond this line + + + // Parameters of Axi Slave Bus Interface S00_AXI + parameter integer C_S00_AXI_DATA_WIDTH = 32, + parameter integer C_S00_AXI_ADDR_WIDTH = 5 + ) + ( + // Users to add ports here + input in_signal, + input exrst_n, + output out_signal_valve_posedge, + output out_signal_valve, + output out_signal_camera_a_posedge, + output out_signal_camera_b_posedge, + output out_signal_camera_c_posedge, + output out_signal_camera_d_posedge, + output out_signal_camera_a, + output out_signal_camera_b, + output out_signal_camera_c, + output out_signal_camera_d, + + // User ports ends + // Do not modify the ports beyond this line + + + // Ports of Axi Slave Bus Interface S00_AXI + input wire s00_axi_aclk, + input wire s00_axi_aresetn, + input wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_awaddr, + input wire [2 : 0] s00_axi_awprot, + input wire s00_axi_awvalid, + output wire s00_axi_awready, + input wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_wdata, + input wire [(C_S00_AXI_DATA_WIDTH/8)-1 : 0] s00_axi_wstrb, + input wire s00_axi_wvalid, + output wire s00_axi_wready, + output wire [1 : 0] s00_axi_bresp, + output wire s00_axi_bvalid, + input wire s00_axi_bready, + input wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_araddr, + input wire [2 : 0] s00_axi_arprot, + input wire s00_axi_arvalid, + output wire s00_axi_arready, + output wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_rdata, + output wire [1 : 0] s00_axi_rresp, + output wire s00_axi_rvalid, + input wire s00_axi_rready + ); +// Instantiation of Axi Bus Interface S00_AXI + ip_encoder_v1_0_S00_AXI # ( + .C_S_AXI_DATA_WIDTH(C_S00_AXI_DATA_WIDTH), + .C_S_AXI_ADDR_WIDTH(C_S00_AXI_ADDR_WIDTH) + ) ip_encoder_v1_0_S00_AXI_inst ( + .in_signal(in_signal), + .exrst_n (exrst_n), + .out_signal_valve_posedge(out_signal_valve_posedge), + .out_signal_valve(out_signal_valve), + .out_signal_camera_a_posedge(out_signal_camera_a_posedge), + .out_signal_camera_b_posedge(out_signal_camera_b_posedge), + .out_signal_camera_c_posedge(out_signal_camera_c_posedge), + .out_signal_camera_d_posedge(out_signal_camera_d_posedge), + .out_signal_camera_a(out_signal_camera_a), + .out_signal_camera_b(out_signal_camera_b), + .out_signal_camera_c(out_signal_camera_c), + .out_signal_camera_d(out_signal_camera_d), + .S_AXI_ACLK(s00_axi_aclk), + .S_AXI_ARESETN(s00_axi_aresetn), + .S_AXI_AWADDR(s00_axi_awaddr), + .S_AXI_AWPROT(s00_axi_awprot), + .S_AXI_AWVALID(s00_axi_awvalid), + .S_AXI_AWREADY(s00_axi_awready), + .S_AXI_WDATA(s00_axi_wdata), + .S_AXI_WSTRB(s00_axi_wstrb), + .S_AXI_WVALID(s00_axi_wvalid), + .S_AXI_WREADY(s00_axi_wready), + .S_AXI_BRESP(s00_axi_bresp), + .S_AXI_BVALID(s00_axi_bvalid), + .S_AXI_BREADY(s00_axi_bready), + .S_AXI_ARADDR(s00_axi_araddr), + .S_AXI_ARPROT(s00_axi_arprot), + .S_AXI_ARVALID(s00_axi_arvalid), + .S_AXI_ARREADY(s00_axi_arready), + .S_AXI_RDATA(s00_axi_rdata), + .S_AXI_RRESP(s00_axi_rresp), + .S_AXI_RVALID(s00_axi_rvalid), + .S_AXI_RREADY(s00_axi_rready) + ); + + // Add user logic here + + // User logic ends + + endmodule diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0_S00_AXI.v b/hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0_S00_AXI.v new file mode 100644 index 0000000..0179a57 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/hdl/ip_encoder_v1_0_S00_AXI.v @@ -0,0 +1,482 @@ + +`timescale 1 ns / 1 ps + + module ip_encoder_v1_0_S00_AXI # + ( + // Users to add parameters here + + // User parameters ends + // Do not modify the parameters beyond this line + + // Width of S_AXI data bus + parameter integer C_S_AXI_DATA_WIDTH = 32, + // Width of S_AXI address bus + parameter integer C_S_AXI_ADDR_WIDTH = 5 + ) + ( + // Users to add ports here + input in_signal, + input exrst_n, + output out_signal_valve_posedge, + output out_signal_valve, + output out_signal_camera_a_posedge, + output out_signal_camera_b_posedge, + output out_signal_camera_c_posedge, + output out_signal_camera_d_posedge, + output out_signal_camera_a, + output out_signal_camera_b, + output out_signal_camera_c, + output out_signal_camera_d, + + // User ports ends + // Do not modify the ports beyond this line + + // Global Clock Signal + input wire S_AXI_ACLK, + // Global Reset Signal. This Signal is Active LOW + input wire S_AXI_ARESETN, + // Write address (issued by master, acceped by Slave) + input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_AWADDR, + // Write channel Protection type. This signal indicates the + // privilege and security level of the transaction, and whether + // the transaction is a data access or an instruction access. + input wire [2 : 0] S_AXI_AWPROT, + // Write address valid. This signal indicates that the master signaling + // valid write address and control information. + input wire S_AXI_AWVALID, + // Write address ready. This signal indicates that the slave is ready + // to accept an address and associated control signals. + output wire S_AXI_AWREADY, + // Write data (issued by master, acceped by Slave) + input wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_WDATA, + // Write strobes. This signal indicates which byte lanes hold + // valid data. There is one write strobe bit for each eight + // bits of the write data bus. + input wire [(C_S_AXI_DATA_WIDTH/8)-1 : 0] S_AXI_WSTRB, + // Write valid. This signal indicates that valid write + // data and strobes are available. + input wire S_AXI_WVALID, + // Write ready. This signal indicates that the slave + // can accept the write data. + output wire S_AXI_WREADY, + // Write response. This signal indicates the status + // of the write transaction. + output wire [1 : 0] S_AXI_BRESP, + // Write response valid. This signal indicates that the channel + // is signaling a valid write response. + output wire S_AXI_BVALID, + // Response ready. This signal indicates that the master + // can accept a write response. + input wire S_AXI_BREADY, + // Read address (issued by master, acceped by Slave) + input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_ARADDR, + // Protection type. This signal indicates the privilege + // and security level of the transaction, and whether the + // transaction is a data access or an instruction access. + input wire [2 : 0] S_AXI_ARPROT, + // Read address valid. This signal indicates that the channel + // is signaling valid read address and control information. + input wire S_AXI_ARVALID, + // Read address ready. This signal indicates that the slave is + // ready to accept an address and associated control signals. + output wire S_AXI_ARREADY, + // Read data (issued by slave) + output wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_RDATA, + // Read response. This signal indicates the status of the + // read transfer. + output wire [1 : 0] S_AXI_RRESP, + // Read valid. This signal indicates that the channel is + // signaling the required read data. + output wire S_AXI_RVALID, + // Read ready. This signal indicates that the master can + // accept the read data and response information. + input wire S_AXI_RREADY + ); + + // AXI4LITE signals + reg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_awaddr; + reg axi_awready; + reg axi_wready; + reg [1 : 0] axi_bresp; + reg axi_bvalid; + reg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_araddr; + reg axi_arready; + reg [C_S_AXI_DATA_WIDTH-1 : 0] axi_rdata; + reg [1 : 0] axi_rresp; + reg axi_rvalid; + + // Example-specific design signals + // local parameter for addressing 32 bit / 64 bit C_S_AXI_DATA_WIDTH + // ADDR_LSB is used for addressing 32/64 bit registers/memories + // ADDR_LSB = 2 for 32 bits (n downto 2) + // ADDR_LSB = 3 for 64 bits (n downto 3) + localparam integer ADDR_LSB = (C_S_AXI_DATA_WIDTH/32) + 1; + localparam integer OPT_MEM_ADDR_BITS = 2; + //---------------------------------------------- + //-- Signals for user logic register space example + //------------------------------------------------ + //-- Number of Slave Registers 8 + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg0; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg1; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg2; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg3; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg4; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg5; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg6; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg7; + wire slv_reg_rden; + wire slv_reg_wren; + reg [C_S_AXI_DATA_WIDTH-1:0] reg_data_out; + integer byte_index; + reg aw_en; + + // I/O Connections assignments + + assign S_AXI_AWREADY = axi_awready; + assign S_AXI_WREADY = axi_wready; + assign S_AXI_BRESP = axi_bresp; + assign S_AXI_BVALID = axi_bvalid; + assign S_AXI_ARREADY = axi_arready; + assign S_AXI_RDATA = axi_rdata; + assign S_AXI_RRESP = axi_rresp; + assign S_AXI_RVALID = axi_rvalid; + // Implement axi_awready generation + // axi_awready is asserted for one S_AXI_ACLK clock cycle when both + // S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is + // de-asserted when reset is low. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_awready <= 1'b0; + aw_en <= 1'b1; + end + else + begin + if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) + begin + // slave is ready to accept write address when + // there is a valid write address and write data + // on the write address and data bus. This design + // expects no outstanding transactions. + axi_awready <= 1'b1; + aw_en <= 1'b0; + end + else if (S_AXI_BREADY && axi_bvalid) + begin + aw_en <= 1'b1; + axi_awready <= 1'b0; + end + else + begin + axi_awready <= 1'b0; + end + end + end + + // Implement axi_awaddr latching + // This process is used to latch the address when both + // S_AXI_AWVALID and S_AXI_WVALID are valid. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_awaddr <= 0; + end + else + begin + if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) + begin + // Write Address latching + axi_awaddr <= S_AXI_AWADDR; + end + end + end + + // Implement axi_wready generation + // axi_wready is asserted for one S_AXI_ACLK clock cycle when both + // S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_wready is + // de-asserted when reset is low. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_wready <= 1'b0; + end + else + begin + if (~axi_wready && S_AXI_WVALID && S_AXI_AWVALID && aw_en ) + begin + // slave is ready to accept write data when + // there is a valid write address and write data + // on the write address and data bus. This design + // expects no outstanding transactions. + axi_wready <= 1'b1; + end + else + begin + axi_wready <= 1'b0; + end + end + end + + // Implement memory mapped register select and write logic generation + // The write data is accepted and written to memory mapped registers when + // axi_awready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. Write strobes are used to + // select byte enables of slave registers while writing. + // These registers are cleared when reset (active low) is applied. + // Slave register write enable is asserted when valid address and data are available + // and the slave is ready to accept the write address and write data. + assign slv_reg_wren = axi_wready && S_AXI_WVALID && axi_awready && S_AXI_AWVALID; + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + slv_reg0 <= 32'h9; + slv_reg1 <= 0; + slv_reg2 <= 0; + slv_reg3 <= 0; + slv_reg4 <= 0; + slv_reg5 <= 0; + slv_reg6 <= 0; + slv_reg7 <= 0; + end + else begin + if (slv_reg_wren) + begin + case ( axi_awaddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] ) + 3'h0: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 0 + slv_reg0[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 3'h1: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 1 + slv_reg1[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 3'h2: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 2 + slv_reg2[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 3'h3: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 3 + slv_reg3[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 3'h4: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 3 + slv_reg4[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 3'h5: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 3 + slv_reg5[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 3'h6: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 3 + slv_reg6[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 3'h7: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 3 + slv_reg7[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + default : begin + slv_reg0 <= slv_reg0; + slv_reg1 <= slv_reg1; + slv_reg2 <= slv_reg2; + slv_reg3 <= slv_reg3; + slv_reg4 <= slv_reg4; + slv_reg5 <= slv_reg5; + slv_reg6 <= slv_reg6; + slv_reg7 <= slv_reg7; + end + endcase + end + end + end + + // Implement write response logic generation + // The write response and response valid signals are asserted by the slave + // when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. + // This marks the acceptance of address and indicates the status of + // write transaction. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_bvalid <= 0; + axi_bresp <= 2'b0; + end + else + begin + if (axi_awready && S_AXI_AWVALID && ~axi_bvalid && axi_wready && S_AXI_WVALID) + begin + // indicates a valid write response is available + axi_bvalid <= 1'b1; + axi_bresp <= 2'b0; // 'OKAY' response + end // work error responses in future + else + begin + if (S_AXI_BREADY && axi_bvalid) + //check if bready is asserted while bvalid is high) + //(there is a possibility that bready is always asserted high) + begin + axi_bvalid <= 1'b0; + end + end + end + end + + // Implement axi_arready generation + // axi_arready is asserted for one S_AXI_ACLK clock cycle when + // S_AXI_ARVALID is asserted. axi_awready is + // de-asserted when reset (active low) is asserted. + // The read address is also latched when S_AXI_ARVALID is + // asserted. axi_araddr is reset to zero on reset assertion. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_arready <= 1'b0; + axi_araddr <= 32'b0; + end + else + begin + if (~axi_arready && S_AXI_ARVALID) + begin + // indicates that the slave has acceped the valid read address + axi_arready <= 1'b1; + // Read address latching + axi_araddr <= S_AXI_ARADDR; + end + else + begin + axi_arready <= 1'b0; + end + end + end + + // Implement axi_arvalid generation + // axi_rvalid is asserted for one S_AXI_ACLK clock cycle when both + // S_AXI_ARVALID and axi_arready are asserted. The slave registers + // data are available on the axi_rdata bus at this instance. The + // assertion of axi_rvalid marks the validity of read data on the + // bus and axi_rresp indicates the status of read transaction.axi_rvalid + // is deasserted on reset (active low). axi_rresp and axi_rdata are + // cleared to zero on reset (active low). + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_rvalid <= 0; + axi_rresp <= 0; + end + else + begin + if (axi_arready && S_AXI_ARVALID && ~axi_rvalid) + begin + // Valid read data is available at the read data bus + axi_rvalid <= 1'b1; + axi_rresp <= 2'b0; // 'OKAY' response + end + else if (axi_rvalid && S_AXI_RREADY) + begin + // Read data is accepted by the master + axi_rvalid <= 1'b0; + end + end + end + + // Implement memory mapped register select and read logic generation + // Slave register read enable is asserted when valid address is available + // and the slave is ready to accept the read address. + assign slv_reg_rden = axi_arready & S_AXI_ARVALID & ~axi_rvalid; + always @(*) + begin + // Address decoding for reading registers + case ( axi_araddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] ) + 3'h0 : reg_data_out <= slv_reg0; + 3'h1 : reg_data_out <= slv_reg1; + 3'h2 : reg_data_out <= slv_reg2; + 3'h3 : reg_data_out <= slv_reg3; + 3'h4 : reg_data_out <= slv_reg4; + 3'h5 : reg_data_out <= slv_reg5; + 3'h6 : reg_data_out <= slv_reg6; + 3'h7 : reg_data_out <= slv_reg7; + default : reg_data_out <= 0; + endcase + end + + // Output register or memory read data + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_rdata <= 0; + end + else + begin + // When there is a valid read address (S_AXI_ARVALID) with + // acceptance of read address by the slave (axi_arready), + // output the read dada + if (slv_reg_rden) + begin + axi_rdata <= reg_data_out; // register read data + end + end + end + + wire in_signal_tmp = slv_reg0[1] ? slv_reg0[2] : in_signal; //0:external 1:internal + wire encoder_rst_n = slv_reg0[0] & S_AXI_ARESETN & (slv_reg0[3] | exrst_n); + // Add user logic here + encoder encoder_inst( + .sys_clk(S_AXI_ACLK), + .rst_n(encoder_rst_n), + .in_signal(in_signal_tmp), + .valve_signal_divider(slv_reg1), + .camera_signal_divider_a(slv_reg2), + .camera_signal_divider_b(slv_reg3), + .camera_signal_divider_c(slv_reg4), + .camera_signal_divider_d(slv_reg5), + + .out_signal_valve_posedge(out_signal_valve_posedge), + .out_signal_valve(out_signal_valve), + .out_signal_camera_a_posedge(out_signal_camera_a_posedge), + .out_signal_camera_b_posedge(out_signal_camera_b_posedge), + .out_signal_camera_c_posedge(out_signal_camera_c_posedge), + .out_signal_camera_d_posedge(out_signal_camera_d_posedge), + .out_signal_camera_a(out_signal_camera_a), + .out_signal_camera_b(out_signal_camera_b), + .out_signal_camera_c(out_signal_camera_c), + .out_signal_camera_d(out_signal_camera_d) + ); + // User logic ends + + endmodule diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/ip_encoder_0.xcix b/hardware/pl_platform/ip_repo/ip_encoder_1.0/ip_encoder_0.xcix new file mode 100644 index 0000000000000000000000000000000000000000..3373acb47a14e6e0dc9959b4b21c29e37e670799 GIT binary patch literal 241 zcmWIWW@gc4U}NB5C|-LdBzs~?OFjbw!+aoSV-R6TPS&f)&0%B^0P<16=8fx5oDJ0Q z*3~+9=KSVRqbtS%K^|wl&-tG`Kk^BYyXD+VxIJe~@`%K=jE$2}0|3~+ONsyh literal 0 HcmV?d00001 diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/src/encoder.v b/hardware/pl_platform/ip_repo/ip_encoder_1.0/src/encoder.v new file mode 100644 index 0000000..8c2e876 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/src/encoder.v @@ -0,0 +1,226 @@ +module encoder( + input sys_clk, + input rst_n, + input in_signal, + input [31:0] valve_signal_divider, + input [31:0] camera_signal_divider_a, + input [31:0] camera_signal_divider_b, + input [31:0] camera_signal_divider_c, + input [31:0] camera_signal_divider_d, + output out_signal_valve_posedge, + output reg out_signal_valve, + output out_signal_camera_a_posedge, + output out_signal_camera_b_posedge, + output out_signal_camera_c_posedge, + output out_signal_camera_d_posedge, + output reg out_signal_camera_a, + output reg out_signal_camera_b, + output reg out_signal_camera_c, + output reg out_signal_camera_d + ); + + wire [31:0] valve_signal_divider_div_2 = {1'b0, valve_signal_divider[31:1]}; + wire [31:0] camera_signal_divider_a_div_2 = {1'b0, camera_signal_divider_a[31:1]}; + wire [31:0] camera_signal_divider_b_div_2 = {1'b0, camera_signal_divider_b[31:1]}; + wire [31:0] camera_signal_divider_c_div_2 = {1'b0, camera_signal_divider_c[31:1]}; + wire [31:0] camera_signal_divider_d_div_2 = {1'b0, camera_signal_divider_d[31:1]}; + + reg [31:0] valve_signal_divider_tmp; + reg [31:0] camera_signal_divider_a_tmp; + reg [31:0] camera_signal_divider_b_tmp; + reg [31:0] camera_signal_divider_c_tmp; + reg [31:0] camera_signal_divider_d_tmp; + + wire rst_n_inter = (valve_signal_divider_tmp == valve_signal_divider) && (camera_signal_divider_a_tmp == camera_signal_divider_a) && (camera_signal_divider_b_tmp == camera_signal_divider_b)&& (camera_signal_divider_c_tmp == camera_signal_divider_c)&& (camera_signal_divider_d_tmp == camera_signal_divider_d)&& rst_n; + always @(posedge sys_clk) begin + valve_signal_divider_tmp <= valve_signal_divider; + camera_signal_divider_a_tmp <= camera_signal_divider_a; + camera_signal_divider_b_tmp <= camera_signal_divider_b; + camera_signal_divider_c_tmp <= camera_signal_divider_c; + camera_signal_divider_d_tmp <= camera_signal_divider_d; + end + + reg [1:0] in_signal_buffer; + wire in_signal_posedge = in_signal_buffer[0] && !in_signal_buffer[1]; + wire in_signal_negedge = !in_signal_buffer[0] && in_signal_buffer[1]; + wire in_signal_edge = in_signal_posedge || in_signal_negedge; + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + in_signal_buffer <= 0; + end + else begin + in_signal_buffer[0] <= in_signal; + in_signal_buffer[1] <= in_signal_buffer[0]; + end + end + + reg [1:0] out_signal_valve_buffer; + // Actually, !out_signal_valve_buffer[0] && out_signal_valve_buffer[1] is the negedge, it is name posedge because I accidentally made a mistake. + // When I found the mistake, It's too much trouble to change the name, so it was not changed. + assign out_signal_valve_posedge = !out_signal_valve_buffer[0] && out_signal_valve_buffer[1];//实际为下降沿 + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_valve_buffer <= 0; + end + else begin + out_signal_valve_buffer[0] <= out_signal_valve; + out_signal_valve_buffer[1] <= out_signal_valve_buffer[0]; + end + end + + reg[1:0] out_signal_camera_a_buffer; + reg[1:0] out_signal_camera_b_buffer; + reg[1:0] out_signal_camera_c_buffer; + reg[1:0] out_signal_camera_d_buffer; + assign out_signal_camera_a_posedge = out_signal_camera_a_buffer[0] && !out_signal_camera_a_buffer[1]; + assign out_signal_camera_b_posedge = out_signal_camera_b_buffer[0] && !out_signal_camera_b_buffer[1]; + assign out_signal_camera_c_posedge = out_signal_camera_c_buffer[0] && !out_signal_camera_c_buffer[1]; + assign out_signal_camera_d_posedge = out_signal_camera_d_buffer[0] && !out_signal_camera_d_buffer[1]; + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_a_buffer <= 0; + end + else begin + out_signal_camera_a_buffer[0] <= out_signal_camera_a; + out_signal_camera_a_buffer[1] <= out_signal_camera_a_buffer[0]; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_b_buffer <= 0; + end + else begin + out_signal_camera_b_buffer[0] <= out_signal_camera_b; + out_signal_camera_b_buffer[1] <= out_signal_camera_b_buffer[0]; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_c_buffer <= 0; + end + else begin + out_signal_camera_c_buffer[0] <= out_signal_camera_c; + out_signal_camera_c_buffer[1] <= out_signal_camera_c_buffer[0]; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_d_buffer <= 0; + end + else begin + out_signal_camera_d_buffer[0] <= out_signal_camera_d; + out_signal_camera_d_buffer[1] <= out_signal_camera_d_buffer[0]; + end + end + + reg [31:0] counter_valve; + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + counter_valve <= 0; + end + else if (counter_valve == valve_signal_divider_div_2) begin + counter_valve <= 0; + end + else if (in_signal_posedge) begin + counter_valve <= counter_valve + 1; + end + end + + reg [31:0] counter_camera_a; + reg [31:0] counter_camera_b; + reg [31:0] counter_camera_c; + reg [31:0] counter_camera_d; + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + counter_camera_a <= 0; + end + else if (counter_camera_a == camera_signal_divider_a_div_2) begin + counter_camera_a <= 0; + end + else if (in_signal_posedge) begin + counter_camera_a <= counter_camera_a + 1; + end + end + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + counter_camera_b <= 0; + end + else if (counter_camera_b == camera_signal_divider_b_div_2) begin + counter_camera_b <= 0; + end + else if (in_signal_posedge) begin + counter_camera_b <= counter_camera_b + 1; + end + end + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + counter_camera_c <= 0; + end + else if (counter_camera_c == camera_signal_divider_c_div_2) begin + counter_camera_c <= 0; + end + else if (in_signal_posedge) begin + counter_camera_c <= counter_camera_c + 1; + end + end + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + counter_camera_d <= 0; + end + else if (counter_camera_d == camera_signal_divider_d_div_2) begin + counter_camera_d <= 0; + end + else if (in_signal_posedge) begin + counter_camera_d <= counter_camera_d + 1; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_valve <= 0; + end + else if (counter_valve == valve_signal_divider_div_2) begin + out_signal_valve <= !out_signal_valve; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_a <= 1; // Please set the camera to posedge trig mode, in case of trig at half period of the first cycle. + end + else if (counter_camera_a == camera_signal_divider_a_div_2) begin + out_signal_camera_a <= !out_signal_camera_a; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_b <= 1; // Please set the camera to posedge trig mode, in case of trig at half period of the first cycle. + end + else if (counter_camera_b == camera_signal_divider_b_div_2) begin + out_signal_camera_b <= !out_signal_camera_b; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_c <= 1; // Please set the camera to posedge trig mode, in case of trig at half period of the first cycle. + end + else if (counter_camera_c == camera_signal_divider_c_div_2) begin + out_signal_camera_c <= !out_signal_camera_c; + end + end + + always @(posedge sys_clk) begin + if (!rst_n_inter) begin + out_signal_camera_d <= 1; // Please set the camera to posedge trig mode, in case of trig at half period of the first cycle. + end + else if (counter_camera_d == camera_signal_divider_d_div_2) begin + out_signal_camera_d <= !out_signal_camera_d; + end + end + +endmodule \ No newline at end of file diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_0.tcl b/hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_0.tcl new file mode 100644 index 0000000..124ff1a --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_0.tcl @@ -0,0 +1,56 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + ipgui::add_page $IPINST -name "Page 0" + + +} + +proc update_PARAM_VALUE.C_S00_AXI_DATA_WIDTH { PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to update C_S00_AXI_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_DATA_WIDTH { PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to validate C_S00_AXI_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_ADDR_WIDTH { PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to update C_S00_AXI_ADDR_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_ADDR_WIDTH { PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to validate C_S00_AXI_ADDR_WIDTH + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_BASEADDR { PARAM_VALUE.C_S00_AXI_BASEADDR } { + # Procedure called to update C_S00_AXI_BASEADDR when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_BASEADDR { PARAM_VALUE.C_S00_AXI_BASEADDR } { + # Procedure called to validate C_S00_AXI_BASEADDR + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_HIGHADDR { PARAM_VALUE.C_S00_AXI_HIGHADDR } { + # Procedure called to update C_S00_AXI_HIGHADDR when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_HIGHADDR { PARAM_VALUE.C_S00_AXI_HIGHADDR } { + # Procedure called to validate C_S00_AXI_HIGHADDR + return true +} + + +proc update_MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH { MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_S00_AXI_DATA_WIDTH}] ${MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH { MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_S00_AXI_ADDR_WIDTH}] ${MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH} +} + diff --git a/hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_1.tcl b/hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_1.tcl new file mode 100644 index 0000000..a8982ff --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_encoder_1.0/xgui/ip_encoder_v1_1.tcl @@ -0,0 +1,53 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + +} + +proc update_PARAM_VALUE.C_S00_AXI_DATA_WIDTH { PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to update C_S00_AXI_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_DATA_WIDTH { PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to validate C_S00_AXI_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_ADDR_WIDTH { PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to update C_S00_AXI_ADDR_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_ADDR_WIDTH { PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to validate C_S00_AXI_ADDR_WIDTH + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_BASEADDR { PARAM_VALUE.C_S00_AXI_BASEADDR } { + # Procedure called to update C_S00_AXI_BASEADDR when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_BASEADDR { PARAM_VALUE.C_S00_AXI_BASEADDR } { + # Procedure called to validate C_S00_AXI_BASEADDR + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_HIGHADDR { PARAM_VALUE.C_S00_AXI_HIGHADDR } { + # Procedure called to update C_S00_AXI_HIGHADDR when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_HIGHADDR { PARAM_VALUE.C_S00_AXI_HIGHADDR } { + # Procedure called to validate C_S00_AXI_HIGHADDR + return true +} + + +proc update_MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH { MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_S00_AXI_DATA_WIDTH}] ${MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH { MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_S00_AXI_ADDR_WIDTH}] ${MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH} +} + diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/bd/bd.tcl b/hardware/pl_platform/ip_repo/ip_fan_1.0/bd/bd.tcl new file mode 100644 index 0000000..4804aeb --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/bd/bd.tcl @@ -0,0 +1,86 @@ + +proc init { cellpath otherInfo } { + + set cell_handle [get_bd_cells $cellpath] + set all_busif [get_bd_intf_pins $cellpath/*] + set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH] + set full_sbusif_list [list ] + + foreach busif $all_busif { + if { [string equal -nocase [get_property MODE $busif] "slave"] == 1 } { + set busif_param_list [list] + set busif_name [get_property NAME $busif] + if { [lsearch -exact -nocase $full_sbusif_list $busif_name ] == -1 } { + continue + } + foreach tparam $axi_standard_param_list { + lappend busif_param_list "C_${busif_name}_${tparam}" + } + bd::mark_propagate_only $cell_handle $busif_param_list + } + } +} + + +proc pre_propagate {cellpath otherInfo } { + + set cell_handle [get_bd_cells $cellpath] + set all_busif [get_bd_intf_pins $cellpath/*] + set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH] + + foreach busif $all_busif { + if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } { + continue + } + if { [string equal -nocase [get_property MODE $busif] "master"] != 1 } { + continue + } + + set busif_name [get_property NAME $busif] + foreach tparam $axi_standard_param_list { + set busif_param_name "C_${busif_name}_${tparam}" + + set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif] + set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle] + + if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } { + if { $val_on_cell != "" } { + set_property CONFIG.${tparam} $val_on_cell $busif + } + } + } + } +} + + +proc propagate {cellpath otherInfo } { + + set cell_handle [get_bd_cells $cellpath] + set all_busif [get_bd_intf_pins $cellpath/*] + set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH] + + foreach busif $all_busif { + if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } { + continue + } + if { [string equal -nocase [get_property MODE $busif] "slave"] != 1 } { + continue + } + + set busif_name [get_property NAME $busif] + foreach tparam $axi_standard_param_list { + set busif_param_name "C_${busif_name}_${tparam}" + + set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif] + set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle] + + if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } { + #override property of bd_interface_net to bd_cell -- only for slaves. May check for supported values.. + if { $val_on_cell_intf_pin != "" } { + set_property CONFIG.${busif_param_name} $val_on_cell_intf_pin $cell_handle + } + } + } + } +} + diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/component.xml b/hardware/pl_platform/ip_repo/ip_fan_1.0/component.xml new file mode 100644 index 0000000..173f27d --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/component.xml @@ -0,0 +1,993 @@ + + + user.org + user + ip_fan + 1.0 + + + S00_AXI + + + + + + + + + AWADDR + + + s00_axi_awaddr + + + + + AWPROT + + + s00_axi_awprot + + + + + AWVALID + + + s00_axi_awvalid + + + + + AWREADY + + + s00_axi_awready + + + + + WDATA + + + s00_axi_wdata + + + + + WSTRB + + + s00_axi_wstrb + + + + + WVALID + + + s00_axi_wvalid + + + + + WREADY + + + s00_axi_wready + + + + + BRESP + + + s00_axi_bresp + + + + + BVALID + + + s00_axi_bvalid + + + + + BREADY + + + s00_axi_bready + + + + + ARADDR + + + s00_axi_araddr + + + + + ARPROT + + + s00_axi_arprot + + + + + ARVALID + + + s00_axi_arvalid + + + + + ARREADY + + + s00_axi_arready + + + + + RDATA + + + s00_axi_rdata + + + + + RRESP + + + s00_axi_rresp + + + + + RVALID + + + s00_axi_rvalid + + + + + RREADY + + + s00_axi_rready + + + + + + WIZ_DATA_WIDTH + 32 + + + WIZ_NUM_REG + 4 + + + SUPPORTS_NARROW_BURST + 0 + + + + + S00_AXI_RST + + + + + + + RST + + + s00_axi_aresetn + + + + + + POLARITY + ACTIVE_LOW + + + + + S00_AXI_CLK + + + + + + + CLK + + + s00_axi_aclk + + + + + + ASSOCIATED_BUSIF + S00_AXI + + + ASSOCIATED_RESET + s00_axi_aresetn + + + + + + + S00_AXI + + S00_AXI_reg + 0 + 4096 + 32 + register + + + OFFSET_BASE_PARAM + C_S00_AXI_BASEADDR + + + OFFSET_HIGH_PARAM + C_S00_AXI_HIGHADDR + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + ip_fan_v1_0 + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + 728a76ba + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + ip_fan_v1_0 + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + 728a76ba + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 33320685 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 0e00759d + + + + + bd_tcl + Block Diagram + :vivado.xilinx.com:block.diagram + + bd_tcl_view_fileset + + + + viewChecksum + 45a2f450 + + + + + + + fan + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_aclk + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_aresetn + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awaddr + + in + + 3 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awprot + + in + + 2 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awvalid + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_awready + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wdata + + in + + 31 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wstrb + + in + + 3 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wvalid + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_wready + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_bresp + + out + + 1 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_bvalid + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_bready + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_araddr + + in + + 3 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_arprot + + in + + 2 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_arvalid + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_arready + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rdata + + out + + 31 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rresp + + out + + 1 + 0 + + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rvalid + + out + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s00_axi_rready + + in + + + wire + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S00_AXI_DATA_WIDTH + C S00 AXI DATA WIDTH + Width of S_AXI data bus + 32 + + + C_S00_AXI_ADDR_WIDTH + C S00 AXI ADDR WIDTH + Width of S_AXI address bus + 4 + + + FAN_PWM_FREQ + Fan Pwm Freq + 10 + + + SYS_CLK_FREQ + Sys Clk Freq + 200000000 + + + + + + choice_list_6fc15197 + 32 + + + choice_list_9d8b0d81 + ACTIVE_HIGH + ACTIVE_LOW + + + choice_pairs_ce1226b1 + 1 + 0 + + + + + xilinx_verilogsynthesis_view_fileset + + hdl/ip_fan_v1_0_S00_AXI.v + verilogSource + + + hdl/ip_fan_v1_0.v + verilogSource + CHECKSUM_686eeef6 + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/ip_fan_v1_0_S00_AXI.v + verilogSource + + + hdl/ip_fan_v1_0.v + verilogSource + + + + xilinx_softwaredriver_view_fileset + + drivers/ip_fan_v1_0/data/ip_fan.mdd + mdd + driver_mdd + + + drivers/ip_fan_v1_0/data/ip_fan.tcl + tclSource + driver_tcl + + + drivers/ip_fan_v1_0/src/Makefile + driver_src + + + drivers/ip_fan_v1_0/src/ip_fan.h + cSource + driver_src + + + drivers/ip_fan_v1_0/src/ip_fan.c + cSource + driver_src + + + drivers/ip_fan_v1_0/src/ip_fan_selftest.c + cSource + driver_src + + + + xilinx_xpgui_view_fileset + + xgui/ip_fan_v1_0.tcl + tclSource + CHECKSUM_0e00759d + XGUI_VERSION_2 + + + + bd_tcl_view_fileset + + bd/bd.tcl + tclSource + + + + ip for controlling fan + + + C_S00_AXI_DATA_WIDTH + C S00 AXI DATA WIDTH + Width of S_AXI data bus + 32 + + + + false + + + + + + C_S00_AXI_ADDR_WIDTH + C S00 AXI ADDR WIDTH + Width of S_AXI address bus + 4 + + + + false + + + + + + C_S00_AXI_BASEADDR + C S00 AXI BASEADDR + 0xFFFFFFFF + + + + false + + + + + + C_S00_AXI_HIGHADDR + C S00 AXI HIGHADDR + 0x00000000 + + + + false + + + + + + Component_Name + ip_fan_v1_0 + + + FAN_PWM_FREQ + FAN_PWM_FREQ (HZ) + 10 + + + SYS_CLK_FREQ + SYS_CLK_FREQ (HZ) + 200000000 + + + + + + zynq + qzynq + azynq + + + AXI_Peripheral + + ip_fan_v1.0 + 13 + 2022-07-18T09:29:45Z + + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + /home/miaow/zynq/ip_repo/ip_fan_1.0 + + + + 2022.1 + + + + + + + + + diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.mdd b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.mdd new file mode 100644 index 0000000..0f8a4a3 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.mdd @@ -0,0 +1,10 @@ + + +OPTION psf_version = 2.1; + +BEGIN DRIVER ip_fan + OPTION supported_peripherals = (ip_fan); + OPTION copyfiles = all; + OPTION VERSION = 1.0; + OPTION NAME = ip_fan; +END DRIVER diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.tcl b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.tcl new file mode 100644 index 0000000..437a934 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/data/ip_fan.tcl @@ -0,0 +1,5 @@ + + +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "ip_fan" "NUM_INSTANCES" "DEVICE_ID" "C_S00_AXI_BASEADDR" "C_S00_AXI_HIGHADDR" +} diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/Makefile b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/Makefile new file mode 100644 index 0000000..87f6d25 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/Makefile @@ -0,0 +1,26 @@ +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + +libs: + echo "Compiling ip_fan..." + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS} + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.c b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.c new file mode 100644 index 0000000..cc2d5a1 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.c @@ -0,0 +1,6 @@ + + +/***************************** Include Files *******************************/ +#include "ip_fan.h" + +/************************** Function Definitions ***************************/ diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.h b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.h new file mode 100644 index 0000000..94a8b77 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan.h @@ -0,0 +1,79 @@ + +#ifndef IP_FAN_H +#define IP_FAN_H + + +/****************** Include Files ********************/ +#include "xil_types.h" +#include "xstatus.h" + +#define IP_FAN_S00_AXI_SLV_REG0_OFFSET 0 +#define IP_FAN_S00_AXI_SLV_REG1_OFFSET 4 +#define IP_FAN_S00_AXI_SLV_REG2_OFFSET 8 +#define IP_FAN_S00_AXI_SLV_REG3_OFFSET 12 + + +/**************************** Type Definitions *****************************/ +/** + * + * Write a value to a IP_FAN register. A 32 bit write is performed. + * If the component is implemented in a smaller width, only the least + * significant data is written. + * + * @param BaseAddress is the base address of the IP_FANdevice. + * @param RegOffset is the register offset from the base to write to. + * @param Data is the data written to the register. + * + * @return None. + * + * @note + * C-style signature: + * void IP_FAN_mWriteReg(u32 BaseAddress, unsigned RegOffset, u32 Data) + * + */ +#define IP_FAN_mWriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) + +/** + * + * Read a value from a IP_FAN register. A 32 bit read is performed. + * If the component is implemented in a smaller width, only the least + * significant data is read from the register. The most significant data + * will be read as 0. + * + * @param BaseAddress is the base address of the IP_FAN device. + * @param RegOffset is the register offset from the base to write to. + * + * @return Data is the data from the register. + * + * @note + * C-style signature: + * u32 IP_FAN_mReadReg(u32 BaseAddress, unsigned RegOffset) + * + */ +#define IP_FAN_mReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) + +/************************** Function Prototypes ****************************/ +/** + * + * Run a self-test on the driver/device. Note this may be a destructive test if + * resets of the device are performed. + * + * If the hardware system is not built correctly, this function may never + * return to the caller. + * + * @param baseaddr_p is the base address of the IP_FAN instance to be worked on. + * + * @return + * + * - XST_SUCCESS if all self-test code passed + * - XST_FAILURE if any self-test code failed + * + * @note Caching must be turned off for this function to work. + * @note Self test may fail if data memory and device are not on the same bus. + * + */ +XStatus IP_FAN_Reg_SelfTest(void * baseaddr_p); + +#endif // IP_FAN_H diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan_selftest.c b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan_selftest.c new file mode 100644 index 0000000..682c8bf --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/drivers/ip_fan_v1_0/src/ip_fan_selftest.c @@ -0,0 +1,60 @@ + +/***************************** Include Files *******************************/ +#include "ip_fan.h" +#include "xparameters.h" +#include "stdio.h" +#include "xil_io.h" + +/************************** Constant Definitions ***************************/ +#define READ_WRITE_MUL_FACTOR 0x10 + +/************************** Function Definitions ***************************/ +/** + * + * Run a self-test on the driver/device. Note this may be a destructive test if + * resets of the device are performed. + * + * If the hardware system is not built correctly, this function may never + * return to the caller. + * + * @param baseaddr_p is the base address of the IP_FANinstance to be worked on. + * + * @return + * + * - XST_SUCCESS if all self-test code passed + * - XST_FAILURE if any self-test code failed + * + * @note Caching must be turned off for this function to work. + * @note Self test may fail if data memory and device are not on the same bus. + * + */ +XStatus IP_FAN_Reg_SelfTest(void * baseaddr_p) +{ + u32 baseaddr; + int write_loop_index; + int read_loop_index; + int Index; + + baseaddr = (u32) baseaddr_p; + + xil_printf("******************************\n\r"); + xil_printf("* User Peripheral Self Test\n\r"); + xil_printf("******************************\n\n\r"); + + /* + * Write to user logic slave module register(s) and read back + */ + xil_printf("User logic slave module test...\n\r"); + + for (write_loop_index = 0 ; write_loop_index < 4; write_loop_index++) + IP_FAN_mWriteReg (baseaddr, write_loop_index*4, (write_loop_index+1)*READ_WRITE_MUL_FACTOR); + for (read_loop_index = 0 ; read_loop_index < 4; read_loop_index++) + if ( IP_FAN_mReadReg (baseaddr, read_loop_index*4) != (read_loop_index+1)*READ_WRITE_MUL_FACTOR){ + xil_printf ("Error reading register value at address %x\n", (int)baseaddr + read_loop_index*4); + return XST_FAILURE; + } + + xil_printf(" - slave register write/read passed\n\n\r"); + + return XST_SUCCESS; +} diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/design.tcl b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/design.tcl new file mode 100644 index 0000000..8a5abf6 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/design.tcl @@ -0,0 +1,88 @@ +proc create_ipi_design { offsetfile design_name } { + create_bd_design $design_name + open_bd_design $design_name + + # Create Clock and Reset Ports + set ACLK [ create_bd_port -dir I -type clk ACLK ] + set_property -dict [ list CONFIG.FREQ_HZ {100000000} CONFIG.PHASE {0.000} CONFIG.CLK_DOMAIN "${design_name}_ACLK" ] $ACLK + set ARESETN [ create_bd_port -dir I -type rst ARESETN ] + set_property -dict [ list CONFIG.POLARITY {ACTIVE_LOW} ] $ARESETN + set_property CONFIG.ASSOCIATED_RESET ARESETN $ACLK + + # Create instance: ip_fan_0, and set properties + set ip_fan_0 [ create_bd_cell -type ip -vlnv user.org:user:ip_fan:1.0 ip_fan_0] + + # Create instance: master_0, and set properties + set master_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_vip master_0] + set_property -dict [ list CONFIG.PROTOCOL {AXI4LITE} CONFIG.INTERFACE_MODE {MASTER} ] $master_0 + + # Create interface connections + connect_bd_intf_net [get_bd_intf_pins master_0/M_AXI ] [get_bd_intf_pins ip_fan_0/S00_AXI] + + # Create port connections + connect_bd_net -net aclk_net [get_bd_ports ACLK] [get_bd_pins master_0/ACLK] [get_bd_pins ip_fan_0/S00_AXI_ACLK] + connect_bd_net -net aresetn_net [get_bd_ports ARESETN] [get_bd_pins master_0/ARESETN] [get_bd_pins ip_fan_0/S00_AXI_ARESETN] +set_property target_simulator XSim [current_project] +set_property -name {xsim.simulate.runtime} -value {100ms} -objects [get_filesets sim_1] + + # Auto assign address + assign_bd_address + + # Copy all address to interface_address.vh file + set bd_path [file dirname [get_property NAME [get_files ${design_name}.bd]]] + upvar 1 $offsetfile offset_file + set offset_file "${bd_path}/ip_fan_v1_0_tb_include.svh" + set fp [open $offset_file "w"] + puts $fp "`ifndef ip_fan_v1_0_tb_include_vh_" + puts $fp "`define ip_fan_v1_0_tb_include_vh_\n" + puts $fp "//Configuration current bd names" + puts $fp "`define BD_NAME ${design_name}" + puts $fp "`define BD_INST_NAME ${design_name}_i" + puts $fp "`define BD_WRAPPER ${design_name}_wrapper\n" + puts $fp "//Configuration address parameters" + + puts $fp "`endif" + close $fp +} + +set ip_path [file dirname [file normalize [get_property XML_FILE_NAME [ipx::get_cores user.org:user:ip_fan:1.0]]]] +set test_bench_file ${ip_path}/example_designs/bfm_design/ip_fan_v1_0_tb.sv +set interface_address_vh_file "" + +# Set IP Repository and Update IP Catalogue +set repo_paths [get_property ip_repo_paths [current_fileset]] +if { [lsearch -exact -nocase $repo_paths $ip_path ] == -1 } { + set_property ip_repo_paths "$ip_path [get_property ip_repo_paths [current_fileset]]" [current_fileset] + update_ip_catalog +} + +set design_name "" +set all_bd {} +set all_bd_files [get_files *.bd -quiet] +foreach file $all_bd_files { +set file_name [string range $file [expr {[string last "/" $file] + 1}] end] +set bd_name [string range $file_name 0 [expr {[string last "." $file_name] -1}]] +lappend all_bd $bd_name +} + +for { set i 1 } { 1 } { incr i } { + set design_name "ip_fan_v1_0_bfm_${i}" + if { [lsearch -exact -nocase $all_bd $design_name ] == -1 } { + break + } +} + +create_ipi_design interface_address_vh_file ${design_name} +validate_bd_design + +set wrapper_file [make_wrapper -files [get_files ${design_name}.bd] -top -force] +import_files -force -norecurse $wrapper_file + +set_property SOURCE_SET sources_1 [get_filesets sim_1] +import_files -fileset sim_1 -norecurse -force $test_bench_file +remove_files -quiet -fileset sim_1 ip_fan_v1_0_tb_include.vh +import_files -fileset sim_1 -norecurse -force $interface_address_vh_file +set_property top ip_fan_v1_0_tb [get_filesets sim_1] +set_property top_lib {} [get_filesets sim_1] +set_property top_file {} [get_filesets sim_1] +launch_simulation -simset sim_1 -mode behavioral diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/ip_fan_v1_0_tb.sv b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/ip_fan_v1_0_tb.sv new file mode 100644 index 0000000..6002760 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/bfm_design/ip_fan_v1_0_tb.sv @@ -0,0 +1,197 @@ + +`timescale 1ns / 1ps +`include "ip_fan_v1_0_tb_include.svh" + +import axi_vip_pkg::*; +import ip_fan_v1_0_bfm_1_master_0_0_pkg::*; + +module ip_fan_v1_0_tb(); + + +xil_axi_uint error_cnt = 0; +xil_axi_uint comparison_cnt = 0; +axi_transaction wr_transaction; +axi_transaction rd_transaction; +axi_monitor_transaction mst_monitor_transaction; +axi_monitor_transaction master_moniter_transaction_queue[$]; +xil_axi_uint master_moniter_transaction_queue_size =0; +axi_monitor_transaction mst_scb_transaction; +axi_monitor_transaction passthrough_monitor_transaction; +axi_monitor_transaction passthrough_master_moniter_transaction_queue[$]; +xil_axi_uint passthrough_master_moniter_transaction_queue_size =0; +axi_monitor_transaction passthrough_mst_scb_transaction; +axi_monitor_transaction passthrough_slave_moniter_transaction_queue[$]; +xil_axi_uint passthrough_slave_moniter_transaction_queue_size =0; +axi_monitor_transaction passthrough_slv_scb_transaction; +axi_monitor_transaction slv_monitor_transaction; +axi_monitor_transaction slave_moniter_transaction_queue[$]; +xil_axi_uint slave_moniter_transaction_queue_size =0; +axi_monitor_transaction slv_scb_transaction; +xil_axi_uint mst_agent_verbosity = 0; +xil_axi_uint slv_agent_verbosity = 0; +xil_axi_uint passthrough_agent_verbosity = 0; +bit clock; +bit reset; +integer result_slave; +bit [31:0] S00_AXI_test_data[3:0]; + localparam LC_AXI_BURST_LENGTH = 8; + localparam LC_AXI_DATA_WIDTH = 32; +task automatic COMPARE_DATA; + input [(LC_AXI_BURST_LENGTH * LC_AXI_DATA_WIDTH)-1:0]expected; + input [(LC_AXI_BURST_LENGTH * LC_AXI_DATA_WIDTH)-1:0]actual; + begin + if (expected === 'hx || actual === 'hx) begin + $display("TESTBENCH ERROR! COMPARE_DATA cannot be performed with an expected or actual vector that is all 'x'!"); + result_slave = 0; $stop; + end + if (actual != expected) begin + $display("TESTBENCH ERROR! Data expected is not equal to actual.", " expected = 0x%h",expected, " actual = 0x%h",actual); + result_slave = 0; + $stop; + end + else + begin + $display("TESTBENCH Passed! Data expected is equal to actual.", + " expected = 0x%h",expected, " actual = 0x%h",actual); + end + end +endtask +integer i; +integer j; +xil_axi_uint trans_cnt_before_switch = 48; +xil_axi_uint passthrough_cmd_switch_cnt = 0; +event passthrough_mastermode_start_event; +event passthrough_mastermode_end_event; +event passthrough_slavemode_end_event; +xil_axi_uint mtestID; +xil_axi_ulong mtestADDR; +xil_axi_len_t mtestBurstLength; +xil_axi_size_t mtestDataSize; +xil_axi_burst_t mtestBurstType; +xil_axi_lock_t mtestLOCK; +xil_axi_cache_t mtestCacheType = 0; +xil_axi_prot_t mtestProtectionType = 3'b000; +xil_axi_region_t mtestRegion = 4'b000; +xil_axi_qos_t mtestQOS = 4'b000; +xil_axi_data_beat dbeat; +xil_axi_data_beat [255:0] mtestWUSER; +xil_axi_data_beat mtestAWUSER = 'h0; +xil_axi_data_beat mtestARUSER = 0; +xil_axi_data_beat [255:0] mtestRUSER; +xil_axi_uint mtestBUSER = 0; +xil_axi_resp_t mtestBresp; +xil_axi_resp_t[255:0] mtestRresp; +bit [63:0] mtestWDataL; +bit [63:0] mtestRDataL; +axi_transaction pss_wr_transaction; +axi_transaction pss_rd_transaction; +axi_transaction reactive_transaction; +axi_transaction rd_payload_transaction; +axi_transaction wr_rand; +axi_transaction rd_rand; +axi_transaction wr_reactive; +axi_transaction rd_reactive; +axi_transaction wr_reactive2; +axi_transaction rd_reactive2; +axi_ready_gen bready_gen; +axi_ready_gen rready_gen; +axi_ready_gen awready_gen; +axi_ready_gen wready_gen; +axi_ready_gen arready_gen; +axi_ready_gen bready_gen2; +axi_ready_gen rready_gen2; +axi_ready_gen awready_gen2; +axi_ready_gen wready_gen2; +axi_ready_gen arready_gen2; +xil_axi_payload_byte data_mem[xil_axi_ulong]; +ip_fan_v1_0_bfm_1_master_0_0_mst_t mst_agent_0; + + `BD_WRAPPER DUT( + .ARESETN(reset), + .ACLK(clock) + ); + +initial begin + mst_agent_0 = new("master vip agent",DUT.`BD_INST_NAME.master_0.inst.IF);//ms + mst_agent_0.vif_proxy.set_dummy_drive_type(XIL_AXI_VIF_DRIVE_NONE); + mst_agent_0.set_agent_tag("Master VIP"); + mst_agent_0.set_verbosity(mst_agent_verbosity); + mst_agent_0.start_master(); + $timeformat (-12, 1, " ps", 1); + end + initial begin + reset <= 1'b0; + #200ns; + reset <= 1'b1; + repeat (5) @(negedge clock); + end + always #5 clock <= ~clock; + initial begin + S_AXI_TEST ( ); + + #1ns; + $finish; + end +task automatic S_AXI_TEST; +begin +#1; + $display("Sequential write transfers example similar to AXI BFM WRITE_BURST method starts"); + mtestID = 0; + mtestADDR = 64'h00000000; + mtestBurstLength = 0; + mtestDataSize = xil_axi_size_t'(xil_clog2(32/8)); + mtestBurstType = XIL_AXI_BURST_TYPE_INCR; + mtestLOCK = XIL_AXI_ALOCK_NOLOCK; + mtestCacheType = 0; + mtestProtectionType = 0; + mtestRegion = 0; + mtestQOS = 0; + result_slave = 1; + mtestWDataL[31:0] = 32'h00000001; + for(int i = 0; i < 4;i++) begin + S00_AXI_test_data[i] <= mtestWDataL[31:0]; + mst_agent_0.AXI4LITE_WRITE_BURST( + mtestADDR, + mtestProtectionType, + mtestWDataL, + mtestBresp + ); + mtestWDataL[31:0] = mtestWDataL[31:0] + 1; + mtestADDR = mtestADDR + 64'h4; + end + $display("Sequential write transfers example similar to AXI BFM WRITE_BURST method completes"); + $display("Sequential read transfers example similar to AXI BFM READ_BURST method starts"); + mtestID = 0; + mtestADDR = 64'h00000000; + mtestBurstLength = 0; + mtestDataSize = xil_axi_size_t'(xil_clog2(32/8)); + mtestBurstType = XIL_AXI_BURST_TYPE_INCR; + mtestLOCK = XIL_AXI_ALOCK_NOLOCK; + mtestCacheType = 0; + mtestProtectionType = 0; + mtestRegion = 0; + mtestQOS = 0; + for(int i = 0; i < 4;i++) begin + mst_agent_0.AXI4LITE_READ_BURST( + mtestADDR, + mtestProtectionType, + mtestRDataL, + mtestRresp + ); + mtestADDR = mtestADDR + 64'h4; + COMPARE_DATA(S00_AXI_test_data[i],mtestRDataL); + end + $display("Sequential read transfers example similar to AXI BFM READ_BURST method completes"); + $display("Sequential read transfers example similar to AXI VIP READ_BURST method completes"); + $display("---------------------------------------------------------"); + $display("EXAMPLE TEST S00_AXI: PTGEN_TEST_FINISHED!"); + if ( result_slave ) begin + $display("PTGEN_TEST: PASSED!"); + end else begin + $display("PTGEN_TEST: FAILED!"); + end + $display("---------------------------------------------------------"); + end +endtask + +endmodule diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/design.tcl b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/design.tcl new file mode 100644 index 0000000..420cb86 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/design.tcl @@ -0,0 +1,118 @@ + +proc create_ipi_design { offsetfile design_name } { + + create_bd_design $design_name + open_bd_design $design_name + + # Create and configure Clock/Reset + create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz sys_clk_0 + create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset sys_reset_0 + + #Constraints will be provided manually while pin planning. + create_bd_port -dir I -type rst reset_rtl + set_property CONFIG.POLARITY [get_property CONFIG.POLARITY [get_bd_pins sys_clk_0/reset]] [get_bd_ports reset_rtl] + connect_bd_net [get_bd_pins sys_reset_0/ext_reset_in] [get_bd_ports reset_rtl] + connect_bd_net [get_bd_ports reset_rtl] [get_bd_pins sys_clk_0/reset] + set external_reset_port reset_rtl + create_bd_port -dir I -type clk clock_rtl + connect_bd_net [get_bd_pins sys_clk_0/clk_in1] [get_bd_ports clock_rtl] + set external_clock_port clock_rtl + + #Avoid IPI DRC, make clock port synchronous to reset + if { $external_clock_port ne "" && $external_reset_port ne "" } { + set_property CONFIG.ASSOCIATED_RESET $external_reset_port [get_bd_ports $external_clock_port] + } + + # Connect other sys_reset pins + connect_bd_net [get_bd_pins sys_reset_0/slowest_sync_clk] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins sys_clk_0/locked] [get_bd_pins sys_reset_0/dcm_locked] + + # Create instance: ip_fan_0, and set properties + set ip_fan_0 [ create_bd_cell -type ip -vlnv user.org:user:ip_fan:1.0 ip_fan_0 ] + + # Create instance: jtag_axi_0, and set properties + set jtag_axi_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:jtag_axi jtag_axi_0 ] + set_property -dict [list CONFIG.PROTOCOL {0}] [get_bd_cells jtag_axi_0] + connect_bd_net [get_bd_pins jtag_axi_0/aclk] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins jtag_axi_0/aresetn] [get_bd_pins sys_reset_0/peripheral_aresetn] + + # Create instance: axi_peri_interconnect, and set properties + set axi_peri_interconnect [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect axi_peri_interconnect ] + connect_bd_net [get_bd_pins axi_peri_interconnect/ACLK] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins axi_peri_interconnect/ARESETN] [get_bd_pins sys_reset_0/interconnect_aresetn] + set_property -dict [ list CONFIG.NUM_SI {1} ] $axi_peri_interconnect + connect_bd_net [get_bd_pins axi_peri_interconnect/S00_ACLK] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins axi_peri_interconnect/S00_ARESETN] [get_bd_pins sys_reset_0/peripheral_aresetn] + connect_bd_intf_net [get_bd_intf_pins jtag_axi_0/M_AXI] [get_bd_intf_pins axi_peri_interconnect/S00_AXI] + + set_property -dict [ list CONFIG.NUM_MI {1} ] $axi_peri_interconnect + connect_bd_net [get_bd_pins axi_peri_interconnect/M00_ACLK] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins axi_peri_interconnect/M00_ARESETN] [get_bd_pins sys_reset_0/peripheral_aresetn] + + # Connect all clock & reset of ip_fan_0 slave interfaces.. + connect_bd_intf_net [get_bd_intf_pins axi_peri_interconnect/M00_AXI] [get_bd_intf_pins ip_fan_0/S00_AXI] + connect_bd_net [get_bd_pins ip_fan_0/s00_axi_aclk] [get_bd_pins sys_clk_0/clk_out1] + connect_bd_net [get_bd_pins ip_fan_0/s00_axi_aresetn] [get_bd_pins sys_reset_0/peripheral_aresetn] + + + # Auto assign address + assign_bd_address + + # Copy all address to ip_fan_v1_0_include.tcl file + set bd_path [get_property DIRECTORY [current_project]]/[current_project].srcs/[current_fileset]/bd + upvar 1 $offsetfile offset_file + set offset_file "${bd_path}/ip_fan_v1_0_include.tcl" + set fp [open $offset_file "w"] + puts $fp "# Configuration address parameters" + + set offset [get_property OFFSET [get_bd_addr_segs /jtag_axi_0/Data/SEG_ip_fan_0_S00_AXI_* ]] + puts $fp "set s00_axi_addr ${offset}" + + close $fp +} + +# Set IP Repository and Update IP Catalogue +set ip_path [file dirname [file normalize [get_property XML_FILE_NAME [ipx::get_cores user.org:user:ip_fan:1.0]]]] +set hw_test_file ${ip_path}/example_designs/debug_hw_design/ip_fan_v1_0_hw_test.tcl + +set repo_paths [get_property ip_repo_paths [current_fileset]] +if { [lsearch -exact -nocase $repo_paths $ip_path ] == -1 } { + set_property ip_repo_paths "$ip_path [get_property ip_repo_paths [current_fileset]]" [current_fileset] + update_ip_catalog +} + +set design_name "" +set all_bd {} +set all_bd_files [get_files *.bd -quiet] +foreach file $all_bd_files { +set file_name [string range $file [expr {[string last "/" $file] + 1}] end] +set bd_name [string range $file_name 0 [expr {[string last "." $file_name] -1}]] +lappend all_bd $bd_name +} + +for { set i 1 } { 1 } { incr i } { + set design_name "ip_fan_v1_0_hw_${i}" + if { [lsearch -exact -nocase $all_bd $design_name ] == -1 } { + break + } +} + +set intf_address_include_file "" +create_ipi_design intf_address_include_file ${design_name} +save_bd_design +validate_bd_design + +set wrapper_file [make_wrapper -files [get_files ${design_name}.bd] -top -force] +import_files -force -norecurse $wrapper_file + +puts "-------------------------------------------------------------------------------------------------" +puts "INFO NEXT STEPS : Until this stage, debug hardware design has been created, " +puts " please perform following steps to test design in targeted board." +puts "1. Generate bitstream" +puts "2. Setup your targeted board, open hardware manager and open new(or existing) hardware target" +puts "3. Download generated bitstream" +puts "4. Run generated hardware test using below command, this invokes basic read/write operation" +puts " to every interface present in the peripheral : xilinx.com:user:myip:1.0" +puts " : source -notrace ${hw_test_file}" +puts "-------------------------------------------------------------------------------------------------" + diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/ip_fan_v1_0_hw_test.tcl b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/ip_fan_v1_0_hw_test.tcl new file mode 100644 index 0000000..6287e38 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/example_designs/debug_hw_design/ip_fan_v1_0_hw_test.tcl @@ -0,0 +1,45 @@ +# Runtime Tcl commands to interact with - ip_fan_v1_0 + +# Sourcing design address info tcl +set bd_path [get_property DIRECTORY [current_project]]/[current_project].srcs/[current_fileset]/bd +source ${bd_path}/ip_fan_v1_0_include.tcl + +# jtag axi master interface hardware name, change as per your design. +set jtag_axi_master hw_axi_1 +set ec 0 + +# hw test script +# Delete all previous axis transactions +if { [llength [get_hw_axi_txns -quiet]] } { + delete_hw_axi_txn [get_hw_axi_txns -quiet] +} + + +# Test all lite slaves. +set wdata_1 abcd1234 + +# Test: S00_AXI +# Create a write transaction at s00_axi_addr address +create_hw_axi_txn w_s00_axi_addr [get_hw_axis $jtag_axi_master] -type write -address $s00_axi_addr -data $wdata_1 +# Create a read transaction at s00_axi_addr address +create_hw_axi_txn r_s00_axi_addr [get_hw_axis $jtag_axi_master] -type read -address $s00_axi_addr +# Initiate transactions +run_hw_axi r_s00_axi_addr +run_hw_axi w_s00_axi_addr +run_hw_axi r_s00_axi_addr +set rdata_tmp [get_property DATA [get_hw_axi_txn r_s00_axi_addr]] +# Compare read data +if { $rdata_tmp == $wdata_1 } { + puts "Data comparison test pass for - S00_AXI" +} else { + puts "Data comparison test fail for - S00_AXI, expected-$wdata_1 actual-$rdata_tmp" + inc ec +} + +# Check error flag +if { $ec == 0 } { + puts "PTGEN_TEST: PASSED!" +} else { + puts "PTGEN_TEST: FAILED!" +} + diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0.v b/hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0.v new file mode 100644 index 0000000..96ee1e9 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0.v @@ -0,0 +1,82 @@ + +`timescale 1 ns / 1 ps + + module ip_fan_v1_0 # + ( + // Users to add parameters here + parameter FAN_PWM_FREQ = 10, + parameter SYS_CLK_FREQ = 200_000_000, + // User parameters ends + // Do not modify the parameters beyond this line + + + // Parameters of Axi Slave Bus Interface S00_AXI + parameter integer C_S00_AXI_DATA_WIDTH = 32, + parameter integer C_S00_AXI_ADDR_WIDTH = 4 + ) + ( + // Users to add ports here + output wire fan, + // User ports ends + // Do not modify the ports beyond this line + + + // Ports of Axi Slave Bus Interface S00_AXI + input wire s00_axi_aclk, + input wire s00_axi_aresetn, + input wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_awaddr, + input wire [2 : 0] s00_axi_awprot, + input wire s00_axi_awvalid, + output wire s00_axi_awready, + input wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_wdata, + input wire [(C_S00_AXI_DATA_WIDTH/8)-1 : 0] s00_axi_wstrb, + input wire s00_axi_wvalid, + output wire s00_axi_wready, + output wire [1 : 0] s00_axi_bresp, + output wire s00_axi_bvalid, + input wire s00_axi_bready, + input wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_araddr, + input wire [2 : 0] s00_axi_arprot, + input wire s00_axi_arvalid, + output wire s00_axi_arready, + output wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_rdata, + output wire [1 : 0] s00_axi_rresp, + output wire s00_axi_rvalid, + input wire s00_axi_rready + ); +// Instantiation of Axi Bus Interface S00_AXI + ip_fan_v1_0_S00_AXI # ( + .FAN_PWM_FREQ(FAN_PWM_FREQ), + .SYS_CLK_FREQ(SYS_CLK_FREQ), + .C_S_AXI_DATA_WIDTH(C_S00_AXI_DATA_WIDTH), + .C_S_AXI_ADDR_WIDTH(C_S00_AXI_ADDR_WIDTH) + ) ip_fan_v1_0_S00_AXI_inst ( + .fan(fan), + .S_AXI_ACLK(s00_axi_aclk), + .S_AXI_ARESETN(s00_axi_aresetn), + .S_AXI_AWADDR(s00_axi_awaddr), + .S_AXI_AWPROT(s00_axi_awprot), + .S_AXI_AWVALID(s00_axi_awvalid), + .S_AXI_AWREADY(s00_axi_awready), + .S_AXI_WDATA(s00_axi_wdata), + .S_AXI_WSTRB(s00_axi_wstrb), + .S_AXI_WVALID(s00_axi_wvalid), + .S_AXI_WREADY(s00_axi_wready), + .S_AXI_BRESP(s00_axi_bresp), + .S_AXI_BVALID(s00_axi_bvalid), + .S_AXI_BREADY(s00_axi_bready), + .S_AXI_ARADDR(s00_axi_araddr), + .S_AXI_ARPROT(s00_axi_arprot), + .S_AXI_ARVALID(s00_axi_arvalid), + .S_AXI_ARREADY(s00_axi_arready), + .S_AXI_RDATA(s00_axi_rdata), + .S_AXI_RRESP(s00_axi_rresp), + .S_AXI_RVALID(s00_axi_rvalid), + .S_AXI_RREADY(s00_axi_rready) + ); + + // Add user logic here + + // User logic ends + + endmodule diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0_S00_AXI.v b/hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0_S00_AXI.v new file mode 100644 index 0000000..560e2f1 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/hdl/ip_fan_v1_0_S00_AXI.v @@ -0,0 +1,457 @@ + +`timescale 1 ns / 1 ps + + module ip_fan_v1_0_S00_AXI # + ( + // Users to add parameters here + parameter FAN_PWM_FREQ = 200, + parameter SYS_CLK_FREQ = 20_000_000, + // User parameters ends + // Do not modify the parameters beyond this line + + // Width of S_AXI data bus + parameter integer C_S_AXI_DATA_WIDTH = 32, + // Width of S_AXI address bus + parameter integer C_S_AXI_ADDR_WIDTH = 4 + ) + ( + // Users to add ports here + + output reg fan, + + // User ports ends + // Do not modify the ports beyond this line + + // Global Clock Signal + input wire S_AXI_ACLK, + // Global Reset Signal. This Signal is Active LOW + input wire S_AXI_ARESETN, + // Write address (issued by master, acceped by Slave) + input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_AWADDR, + // Write channel Protection type. This signal indicates the + // privilege and security level of the transaction, and whether + // the transaction is a data access or an instruction access. + input wire [2 : 0] S_AXI_AWPROT, + // Write address valid. This signal indicates that the master signaling + // valid write address and control information. + input wire S_AXI_AWVALID, + // Write address ready. This signal indicates that the slave is ready + // to accept an address and associated control signals. + output wire S_AXI_AWREADY, + // Write data (issued by master, acceped by Slave) + input wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_WDATA, + // Write strobes. This signal indicates which byte lanes hold + // valid data. There is one write strobe bit for each eight + // bits of the write data bus. + input wire [(C_S_AXI_DATA_WIDTH/8)-1 : 0] S_AXI_WSTRB, + // Write valid. This signal indicates that valid write + // data and strobes are available. + input wire S_AXI_WVALID, + // Write ready. This signal indicates that the slave + // can accept the write data. + output wire S_AXI_WREADY, + // Write response. This signal indicates the status + // of the write transaction. + output wire [1 : 0] S_AXI_BRESP, + // Write response valid. This signal indicates that the channel + // is signaling a valid write response. + output wire S_AXI_BVALID, + // Response ready. This signal indicates that the master + // can accept a write response. + input wire S_AXI_BREADY, + // Read address (issued by master, acceped by Slave) + input wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_ARADDR, + // Protection type. This signal indicates the privilege + // and security level of the transaction, and whether the + // transaction is a data access or an instruction access. + input wire [2 : 0] S_AXI_ARPROT, + // Read address valid. This signal indicates that the channel + // is signaling valid read address and control information. + input wire S_AXI_ARVALID, + // Read address ready. This signal indicates that the slave is + // ready to accept an address and associated control signals. + output wire S_AXI_ARREADY, + // Read data (issued by slave) + output wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_RDATA, + // Read response. This signal indicates the status of the + // read transfer. + output wire [1 : 0] S_AXI_RRESP, + // Read valid. This signal indicates that the channel is + // signaling the required read data. + output wire S_AXI_RVALID, + // Read ready. This signal indicates that the master can + // accept the read data and response information. + input wire S_AXI_RREADY + ); + + // AXI4LITE signals + reg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_awaddr; + reg axi_awready; + reg axi_wready; + reg [1 : 0] axi_bresp; + reg axi_bvalid; + reg [C_S_AXI_ADDR_WIDTH-1 : 0] axi_araddr; + reg axi_arready; + reg [C_S_AXI_DATA_WIDTH-1 : 0] axi_rdata; + reg [1 : 0] axi_rresp; + reg axi_rvalid; + + // Example-specific design signals + // local parameter for addressing 32 bit / 64 bit C_S_AXI_DATA_WIDTH + // ADDR_LSB is used for addressing 32/64 bit registers/memories + // ADDR_LSB = 2 for 32 bits (n downto 2) + // ADDR_LSB = 3 for 64 bits (n downto 3) + localparam integer ADDR_LSB = (C_S_AXI_DATA_WIDTH/32) + 1; + localparam integer OPT_MEM_ADDR_BITS = 1; + //---------------------------------------------- + //-- Signals for user logic register space example + //------------------------------------------------ + //-- Number of Slave Registers 4 + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg0; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg1; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg2; + reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg3; + wire slv_reg_rden; + wire slv_reg_wren; + reg [C_S_AXI_DATA_WIDTH-1:0] reg_data_out; + integer byte_index; + reg aw_en; + + // I/O Connections assignments + + assign S_AXI_AWREADY = axi_awready; + assign S_AXI_WREADY = axi_wready; + assign S_AXI_BRESP = axi_bresp; + assign S_AXI_BVALID = axi_bvalid; + assign S_AXI_ARREADY = axi_arready; + assign S_AXI_RDATA = axi_rdata; + assign S_AXI_RRESP = axi_rresp; + assign S_AXI_RVALID = axi_rvalid; + // Implement axi_awready generation + // axi_awready is asserted for one S_AXI_ACLK clock cycle when both + // S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is + // de-asserted when reset is low. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_awready <= 1'b0; + aw_en <= 1'b1; + end + else + begin + if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) + begin + // slave is ready to accept write address when + // there is a valid write address and write data + // on the write address and data bus. This design + // expects no outstanding transactions. + axi_awready <= 1'b1; + aw_en <= 1'b0; + end + else if (S_AXI_BREADY && axi_bvalid) + begin + aw_en <= 1'b1; + axi_awready <= 1'b0; + end + else + begin + axi_awready <= 1'b0; + end + end + end + + // Implement axi_awaddr latching + // This process is used to latch the address when both + // S_AXI_AWVALID and S_AXI_WVALID are valid. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_awaddr <= 0; + end + else + begin + if (~axi_awready && S_AXI_AWVALID && S_AXI_WVALID && aw_en) + begin + // Write Address latching + axi_awaddr <= S_AXI_AWADDR; + end + end + end + + // Implement axi_wready generation + // axi_wready is asserted for one S_AXI_ACLK clock cycle when both + // S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_wready is + // de-asserted when reset is low. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_wready <= 1'b0; + end + else + begin + if (~axi_wready && S_AXI_WVALID && S_AXI_AWVALID && aw_en ) + begin + // slave is ready to accept write data when + // there is a valid write address and write data + // on the write address and data bus. This design + // expects no outstanding transactions. + axi_wready <= 1'b1; + end + else + begin + axi_wready <= 1'b0; + end + end + end + + // Implement memory mapped register select and write logic generation + // The write data is accepted and written to memory mapped registers when + // axi_awready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. Write strobes are used to + // select byte enables of slave registers while writing. + // These registers are cleared when reset (active low) is applied. + // Slave register write enable is asserted when valid address and data are available + // and the slave is ready to accept the write address and write data. + assign slv_reg_wren = axi_wready && S_AXI_WVALID && axi_awready && S_AXI_AWVALID; + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + slv_reg0 <= 0; + slv_reg1 <= 0; + slv_reg2 <= 0; + slv_reg3 <= 0; + end + else begin + if (slv_reg_wren) begin + case ( axi_awaddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] ) + 2'h0: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 0 + slv_reg0[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 2'h1: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 1 + slv_reg1[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 2'h2: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 2 + slv_reg2[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + 2'h3: + for ( byte_index = 0; byte_index <= (C_S_AXI_DATA_WIDTH/8)-1; byte_index = byte_index+1 ) + if ( S_AXI_WSTRB[byte_index] == 1 ) begin + // Respective byte enables are asserted as per write strobes + // Slave register 3 + slv_reg3[(byte_index*8) +: 8] <= S_AXI_WDATA[(byte_index*8) +: 8]; + end + default : begin + slv_reg0 <= slv_reg0; + slv_reg1 <= slv_reg1; + slv_reg2 <= slv_reg2; + slv_reg3 <= slv_reg3; + end + endcase + end + end + end + + // Implement write response logic generation + // The write response and response valid signals are asserted by the slave + // when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. + // This marks the acceptance of address and indicates the status of + // write transaction. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_bvalid <= 0; + axi_bresp <= 2'b0; + end + else + begin + if (axi_awready && S_AXI_AWVALID && ~axi_bvalid && axi_wready && S_AXI_WVALID) + begin + // indicates a valid write response is available + axi_bvalid <= 1'b1; + axi_bresp <= 2'b0; // 'OKAY' response + end // work error responses in future + else + begin + if (S_AXI_BREADY && axi_bvalid) + //check if bready is asserted while bvalid is high) + //(there is a possibility that bready is always asserted high) + begin + axi_bvalid <= 1'b0; + end + end + end + end + + // Implement axi_arready generation + // axi_arready is asserted for one S_AXI_ACLK clock cycle when + // S_AXI_ARVALID is asserted. axi_awready is + // de-asserted when reset (active low) is asserted. + // The read address is also latched when S_AXI_ARVALID is + // asserted. axi_araddr is reset to zero on reset assertion. + + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_arready <= 1'b0; + axi_araddr <= 32'b0; + end + else + begin + if (~axi_arready && S_AXI_ARVALID) + begin + // indicates that the slave has acceped the valid read address + axi_arready <= 1'b1; + // Read address latching + axi_araddr <= S_AXI_ARADDR; + end + else + begin + axi_arready <= 1'b0; + end + end + end + + // Implement axi_arvalid generation + // axi_rvalid is asserted for one S_AXI_ACLK clock cycle when both + // S_AXI_ARVALID and axi_arready are asserted. The slave registers + // data are available on the axi_rdata bus at this instance. The + // assertion of axi_rvalid marks the validity of read data on the + // bus and axi_rresp indicates the status of read transaction.axi_rvalid + // is deasserted on reset (active low). axi_rresp and axi_rdata are + // cleared to zero on reset (active low). + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_rvalid <= 0; + axi_rresp <= 0; + end + else + begin + if (axi_arready && S_AXI_ARVALID && ~axi_rvalid) + begin + // Valid read data is available at the read data bus + axi_rvalid <= 1'b1; + axi_rresp <= 2'b0; // 'OKAY' response + end + else if (axi_rvalid && S_AXI_RREADY) + begin + // Read data is accepted by the master + axi_rvalid <= 1'b0; + end + end + end + + // Implement memory mapped register select and read logic generation + // Slave register read enable is asserted when valid address is available + // and the slave is ready to accept the read address. + assign slv_reg_rden = axi_arready & S_AXI_ARVALID & ~axi_rvalid; + always @(*) + begin + // Address decoding for reading registers + case ( axi_araddr[ADDR_LSB+OPT_MEM_ADDR_BITS:ADDR_LSB] ) + 2'h0 : reg_data_out <= slv_reg0; + 2'h1 : reg_data_out <= slv_reg1; + 2'h2 : reg_data_out <= slv_reg2; + 2'h3 : reg_data_out <= slv_reg3; + default : reg_data_out <= 0; + endcase + end + + // slv_reg0[0]: + // 1 - turn on pwm, the fan is controlled by pwm + // 0 - turn off the fan + + // slv_reg1: + // 32bit register, an unsigned integer defining the dutycycle of pwm. dutycycle% = slv_reg1 / (2 ^ 32 - 1) * 100% + // + // Output register or memory read data + always @( posedge S_AXI_ACLK ) + begin + if ( S_AXI_ARESETN == 1'b0 ) + begin + axi_rdata <= 0; + end + else + begin + // When there is a valid read address (S_AXI_ARVALID) with + // acceptance of read address by the slave (axi_arready), + // output the read dada + if (slv_reg_rden) + begin + axi_rdata <= reg_data_out; // register read data + end + end + end + + // Add user logic here + reg S_AXI_BREADY_D0; + reg S_AXI_BREADY_D1; + wire S_AXI_BREADY_NEGEDGE = S_AXI_BREADY_D0 && !S_AXI_BREADY_D1; + parameter RELOAD_VALUE = SYS_CLK_FREQ / FAN_PWM_FREQ; + reg [31:0] counter; + + always @(posedge S_AXI_ACLK) begin + if (S_AXI_ARESETN == 1'b0) begin + S_AXI_BREADY_D0 <= 0; + S_AXI_BREADY_D1 <= 0; + end + else begin + S_AXI_BREADY_D0 <= S_AXI_BREADY; + S_AXI_BREADY_D1 <= S_AXI_BREADY_D0; + end + end + + always @(posedge S_AXI_ACLK) begin + if ( S_AXI_ARESETN == 1'b0 || S_AXI_BREADY_NEGEDGE == 1'b1) begin + fan <= 0; + end + else if (counter < slv_reg1) begin + fan <= 1'b1 & slv_reg0[0]; + end + else begin + fan <= 1'b0; + end + end + + always @(posedge S_AXI_ACLK) begin + if ( S_AXI_ARESETN == 1'b0 || S_AXI_BREADY_NEGEDGE == 1'b1) begin + counter <= 0; + end + else if (slv_reg0[0] == 1'b1)begin + if (counter >= RELOAD_VALUE) begin + counter <= 0; + end + else begin + counter <= counter + 32'd1; + end + end + else begin + counter <= 0; + end + end + // User logic ends + + endmodule diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/ip_fan_0.xcix b/hardware/pl_platform/ip_repo/ip_fan_1.0/ip_fan_0.xcix new file mode 100644 index 0000000000000000000000000000000000000000..2bc5da00acbd27897b292030b066ee7c3bbd76f0 GIT binary patch literal 239 zcmWIWW@gc4U}NB5&|Z5bL?Eq!BbR}JVLA}AF^DiEC+k(@<}fk{0Qsn3^Tzcj&IW3D z>uQ}lbAEHE(G}x>Adj=&=loBe@!lTF#anoJYrv-Mk2e*b)AuSpcV64`%o%Uppbx%h zPU&+sXEJ4dJbT7jaKq!E0EX9vr_Xq9J+0H>?|r7*{6f3o7p+OgxnCU9nx5`d$l39; qEQTS#n~_O`Sp1-+yjj^mJVqci0n$rB90mZy4oE@( literal 0 HcmV?d00001 diff --git a/hardware/pl_platform/ip_repo/ip_fan_1.0/xgui/ip_fan_v1_0.tcl b/hardware/pl_platform/ip_repo/ip_fan_1.0/xgui/ip_fan_v1_0.tcl new file mode 100644 index 0000000..80d5298 --- /dev/null +++ b/hardware/pl_platform/ip_repo/ip_fan_1.0/xgui/ip_fan_v1_0.tcl @@ -0,0 +1,81 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + +} + +proc update_PARAM_VALUE.FAN_PWM_FREQ { PARAM_VALUE.FAN_PWM_FREQ } { + # Procedure called to update FAN_PWM_FREQ when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.FAN_PWM_FREQ { PARAM_VALUE.FAN_PWM_FREQ } { + # Procedure called to validate FAN_PWM_FREQ + return true +} + +proc update_PARAM_VALUE.SYS_CLK_FREQ { PARAM_VALUE.SYS_CLK_FREQ } { + # Procedure called to update SYS_CLK_FREQ when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.SYS_CLK_FREQ { PARAM_VALUE.SYS_CLK_FREQ } { + # Procedure called to validate SYS_CLK_FREQ + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_DATA_WIDTH { PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to update C_S00_AXI_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_DATA_WIDTH { PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to validate C_S00_AXI_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_ADDR_WIDTH { PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to update C_S00_AXI_ADDR_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_ADDR_WIDTH { PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to validate C_S00_AXI_ADDR_WIDTH + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_BASEADDR { PARAM_VALUE.C_S00_AXI_BASEADDR } { + # Procedure called to update C_S00_AXI_BASEADDR when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_BASEADDR { PARAM_VALUE.C_S00_AXI_BASEADDR } { + # Procedure called to validate C_S00_AXI_BASEADDR + return true +} + +proc update_PARAM_VALUE.C_S00_AXI_HIGHADDR { PARAM_VALUE.C_S00_AXI_HIGHADDR } { + # Procedure called to update C_S00_AXI_HIGHADDR when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_S00_AXI_HIGHADDR { PARAM_VALUE.C_S00_AXI_HIGHADDR } { + # Procedure called to validate C_S00_AXI_HIGHADDR + return true +} + + +proc update_MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH { MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH PARAM_VALUE.C_S00_AXI_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_S00_AXI_DATA_WIDTH}] ${MODELPARAM_VALUE.C_S00_AXI_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH { MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH PARAM_VALUE.C_S00_AXI_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_S00_AXI_ADDR_WIDTH}] ${MODELPARAM_VALUE.C_S00_AXI_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.FAN_PWM_FREQ { MODELPARAM_VALUE.FAN_PWM_FREQ PARAM_VALUE.FAN_PWM_FREQ } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.FAN_PWM_FREQ}] ${MODELPARAM_VALUE.FAN_PWM_FREQ} +} + +proc update_MODELPARAM_VALUE.SYS_CLK_FREQ { MODELPARAM_VALUE.SYS_CLK_FREQ PARAM_VALUE.SYS_CLK_FREQ } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.SYS_CLK_FREQ}] ${MODELPARAM_VALUE.SYS_CLK_FREQ} +} + diff --git a/hardware/pl_platform/lower_machine.tcl b/hardware/pl_platform/lower_machine.tcl new file mode 100644 index 0000000..43db30e --- /dev/null +++ b/hardware/pl_platform/lower_machine.tcl @@ -0,0 +1,568 @@ +#***************************************************************************************** +# Vivado (TM) v2022.1 (64-bit) +# +# lower_machine.tcl: Tcl script for re-creating project 'lower_machine' +# +# Generated by Vivado on Fri Apr 28 09:33:21 PDT 2023 +# IP Build 3524634 on Mon Apr 18 20:55:01 MDT 2022 +# +# This file contains the Vivado Tcl commands for re-creating the project to the state* +# when this script was generated. In order to re-create the project, please source this +# file in the Vivado Tcl Shell. +# +# * Note that the runs in the created project will be configured the same way as the +# original project, however they will not be launched automatically. To regenerate the +# run results please launch the synthesis/implementation runs as needed. +# +#***************************************************************************************** +# NOTE: In order to use this script for source control purposes, please make sure that the +# following files are added to the source control system:- +# +# 1. This project restoration tcl script (lower_machine.tcl) that was generated. +# +# 2. The following source(s) files that were local or imported into the original project. +# (Please see the '$orig_proj_dir' and '$origin_dir' variable setting below at the start of the script) +# +# "$origin_dir/bd/system.tcl" +# +# 3. The following remote source files that were added to the original project:- +# +# "$origin_dir/cstr/lower_machine.xdc" +# +#***************************************************************************************** + +# Check file required for this script exists +proc checkRequiredFiles { origin_dir} { + set status true + set files [list \ + "[file normalize "$origin_dir/bd/system.tcl"]"\ + ] + foreach ifile $files { + if { ![file isfile $ifile] } { + puts " Could not find local file $ifile " + set status false + } + } + + set files [list \ + "[file normalize "$origin_dir/cstr/lower_machine.xdc"]"\ + ] + foreach ifile $files { + if { ![file isfile $ifile] } { + puts " Could not find remote file $ifile " + set status false + } + } + + set paths [list \ + "[file normalize "$origin_dir/../[file normalize "$origin_dir/ip_repo"]"]"\ + ] + foreach ipath $paths { + if { ![file isdirectory $ipath] } { + puts " Could not access $ipath " + set status false + } + } + + return $status +} +# Set the reference directory for source file relative paths (by default the value is script directory path) +set origin_dir [file dirname [info script]] + +# Use origin directory path location variable, if specified in the tcl shell +if { [info exists ::origin_dir_loc] } { + set origin_dir $::origin_dir_loc +} + +# Set the project name +set _xil_proj_name_ "lower_machine" + +# Use project name variable, if specified in the tcl shell +if { [info exists ::user_project_name] } { + set _xil_proj_name_ $::user_project_name +} + +variable script_file +set script_file "lower_machine.tcl" + +# Help information for this script +proc print_help {} { + variable script_file + puts "\nDescription:" + puts "Recreate a Vivado project from this script. The created project will be" + puts "functionally equivalent to the original project for which this script was" + puts "generated. The script contains commands for creating a project, filesets," + puts "runs, adding/importing sources and setting properties on various objects.\n" + puts "Syntax:" + puts "$script_file" + puts "$script_file -tclargs \[--origin_dir \]" + puts "$script_file -tclargs \[--project_name \]" + puts "$script_file -tclargs \[--help\]\n" + puts "Usage:" + puts "Name Description" + puts "-------------------------------------------------------------------------" + puts "\[--origin_dir \] Determine source file paths wrt this path. Default" + puts " origin_dir path value is \".\", otherwise, the value" + puts " that was set with the \"-paths_relative_to\" switch" + puts " when this script was generated.\n" + puts "\[--project_name \] Create project with the specified name. Default" + puts " name is the name of the project from where this" + puts " script was generated.\n" + puts "\[--help\] Print help information for this script" + puts "-------------------------------------------------------------------------\n" + exit 0 +} + +if { $::argc > 0 } { + for {set i 0} {$i < $::argc} {incr i} { + set option [string trim [lindex $::argv $i]] + switch -regexp -- $option { + "--origin_dir" { incr i; set origin_dir [lindex $::argv $i] } + "--project_name" { incr i; set _xil_proj_name_ [lindex $::argv $i] } + "--help" { print_help } + default { + if { [regexp {^-} $option] } { + puts "ERROR: Unknown option '$option' specified, please type '$script_file -tclargs --help' for usage info.\n" + return 1 + } + } + } + } +} + +# Set the directory path for the original project from where this script was exported +set orig_proj_dir "[file normalize "$origin_dir/lower_machine"]" + +# Check for paths and files needed for project creation +set validate_required 0 +if { $validate_required } { + if { [checkRequiredFiles $origin_dir] } { + puts "Tcl file $script_file is valid. All files required for project creation is accesable. " + } else { + puts "Tcl file $script_file is not valid. Not all files required for project creation is accesable. " + return + } +} + +# Create project +create_project ${_xil_proj_name_} $origin_dir/${_xil_proj_name_} -part xc7z010clg400-1 + +# Set the directory path for the new project +set proj_dir [get_property directory [current_project]] + +# Set project properties +set obj [current_project] +set_property -name "default_lib" -value "xil_defaultlib" -objects $obj +set_property -name "enable_resource_estimation" -value "0" -objects $obj +set_property -name "enable_vhdl_2008" -value "1" -objects $obj +set_property -name "ip_cache_permissions" -value "read write" -objects $obj +set_property -name "ip_output_repo" -value "$proj_dir/${_xil_proj_name_}.cache/ip" -objects $obj +set_property -name "mem.enable_memory_map_generation" -value "1" -objects $obj +set_property -name "part" -value "xc7z010clg400-1" -objects $obj +set_property -name "revised_directory_structure" -value "1" -objects $obj +set_property -name "sim.central_dir" -value "$proj_dir/${_xil_proj_name_}.ip_user_files" -objects $obj +set_property -name "sim.ip.auto_export_scripts" -value "1" -objects $obj +set_property -name "simulator_language" -value "Mixed" -objects $obj +set_property -name "webtalk.activehdl_export_sim" -value "1" -objects $obj +set_property -name "webtalk.modelsim_export_sim" -value "1" -objects $obj +set_property -name "webtalk.questa_export_sim" -value "1" -objects $obj +set_property -name "webtalk.riviera_export_sim" -value "1" -objects $obj +set_property -name "webtalk.vcs_export_sim" -value "1" -objects $obj +set_property -name "webtalk.xcelium_export_sim" -value "1" -objects $obj +set_property -name "webtalk.xsim_export_sim" -value "1" -objects $obj +set_property -name "xpm_libraries" -value "XPM_CDC XPM_MEMORY" -objects $obj + +# Create 'sources_1' fileset (if not found) +if {[string equal [get_filesets -quiet sources_1] ""]} { + create_fileset -srcset sources_1 +} + +# Set IP repository paths +set obj [get_filesets sources_1] +if { $obj != {} } { + set_property "ip_repo_paths" "[file normalize "$origin_dir/ip_repo"]" $obj + + # Rebuild user ip_repo's index before adding any source files + update_ip_catalog -rebuild +} + +# Create block design +source $origin_dir/bd/system.tcl + +# Generate the wrapper +make_wrapper -files [get_files system.bd] -top -import + + +# Set 'sources_1' fileset file properties for local files +set file "system/system.bd" +set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]] +set_property -name "registered_with_manager" -value "1" -objects $file_obj + + +# Set 'sources_1' fileset properties +set obj [get_filesets sources_1] +set_property -name "top" -value "system_wrapper" -objects $obj + +# Create 'constrs_1' fileset (if not found) +if {[string equal [get_filesets -quiet constrs_1] ""]} { + create_fileset -constrset constrs_1 +} + +# Set 'constrs_1' fileset object +set obj [get_filesets constrs_1] + +# Add/Import constrs file and set constrs file properties +set file "[file normalize "$origin_dir/cstr/lower_machine.xdc"]" +set file_added [add_files -norecurse -fileset $obj [list $file]] +set file "$origin_dir/cstr/lower_machine.xdc" +set file [file normalize $file] +set file_obj [get_files -of_objects [get_filesets constrs_1] [list "*$file"]] +set_property -name "file_type" -value "XDC" -objects $file_obj + +# Set 'constrs_1' fileset properties +set obj [get_filesets constrs_1] +set_property -name "target_part" -value "xc7z010clg400-1" -objects $obj + +# Create 'sim_1' fileset (if not found) +if {[string equal [get_filesets -quiet sim_1] ""]} { + create_fileset -simset sim_1 +} + +# Set 'sim_1' fileset object +set obj [get_filesets sim_1] +# Empty (no sources present) + +# Set 'sim_1' fileset properties +set obj [get_filesets sim_1] +set_property -name "incremental" -value "0" -objects $obj +set_property -name "top" -value "system_wrapper" -objects $obj +set_property -name "top_lib" -value "xil_defaultlib" -objects $obj + +# Set 'utils_1' fileset object +set obj [get_filesets utils_1] +# Empty (no sources present) + +# Set 'utils_1' fileset properties +set obj [get_filesets utils_1] + +set idrFlowPropertiesConstraints "" +catch { + set idrFlowPropertiesConstraints [get_param runs.disableIDRFlowPropertyConstraints] + set_param runs.disableIDRFlowPropertyConstraints 1 +} + +# Create 'synth_1' run (if not found) +if {[string equal [get_runs -quiet synth_1] ""]} { + create_run -name synth_1 -part xc7z010clg400-1 -flow {Vivado Synthesis 2022} -strategy "Flow_PerfOptimized_high" -report_strategy {No Reports} -constrset constrs_1 +} else { + set_property strategy "Flow_PerfOptimized_high" [get_runs synth_1] + set_property flow "Vivado Synthesis 2022" [get_runs synth_1] +} +set obj [get_runs synth_1] +set_property set_report_strategy_name 1 $obj +set_property report_strategy {Vivado Synthesis Default Reports} $obj +set_property set_report_strategy_name 0 $obj +# Create 'synth_1_synth_report_utilization_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0] "" ] } { + create_report_config -report_name synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs synth_1 +} +set obj [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0] +if { $obj != "" } { + +} +set obj [get_runs synth_1] +set_property -name "part" -value "xc7z010clg400-1" -objects $obj +set_property -name "strategy" -value "Flow_PerfOptimized_high" -objects $obj +set_property -name "steps.synth_design.args.directive" -value "PerformanceOptimized" -objects $obj +set_property -name "steps.synth_design.args.fsm_extraction" -value "one_hot" -objects $obj +set_property -name "steps.synth_design.args.keep_equivalent_registers" -value "1" -objects $obj +set_property -name "steps.synth_design.args.resource_sharing" -value "off" -objects $obj +set_property -name "steps.synth_design.args.no_lc" -value "1" -objects $obj +set_property -name "steps.synth_design.args.shreg_min_size" -value "5" -objects $obj + +# set the current synth run +current_run -synthesis [get_runs synth_1] + +# Create 'impl_1' run (if not found) +if {[string equal [get_runs -quiet impl_1] ""]} { + create_run -name impl_1 -part xc7z010clg400-1 -flow {Vivado Implementation 2022} -strategy "Performance_ExtraTimingOpt" -report_strategy {No Reports} -constrset constrs_1 -parent_run synth_1 +} else { + set_property strategy "Performance_ExtraTimingOpt" [get_runs impl_1] + set_property flow "Vivado Implementation 2022" [get_runs impl_1] +} +set obj [get_runs impl_1] +set_property set_report_strategy_name 1 $obj +set_property report_strategy {Vivado Implementation Default Reports} $obj +set_property set_report_strategy_name 0 $obj +# Create 'impl_1_init_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_init_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps init_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj + +} +# Create 'impl_1_opt_report_drc_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0] "" ] } { + create_report_config -report_name impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0] +if { $obj != "" } { + +} +# Create 'impl_1_opt_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps opt_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj + +} +# Create 'impl_1_power_opt_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps power_opt_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj + +} +# Create 'impl_1_place_report_io_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0] "" ] } { + create_report_config -report_name impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0] +if { $obj != "" } { + +} +# Create 'impl_1_place_report_utilization_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0] "" ] } { + create_report_config -report_name impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0] +if { $obj != "" } { + +} +# Create 'impl_1_place_report_control_sets_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0] "" ] } { + create_report_config -report_name impl_1_place_report_control_sets_0 -report_type report_control_sets:1.0 -steps place_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0] +if { $obj != "" } { +set_property -name "options.verbose" -value "1" -objects $obj + +} +# Create 'impl_1_place_report_incremental_reuse_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0] "" ] } { + create_report_config -report_name impl_1_place_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps place_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj + +} +# Create 'impl_1_place_report_incremental_reuse_1' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1] "" ] } { + create_report_config -report_name impl_1_place_report_incremental_reuse_1 -report_type report_incremental_reuse:1.0 -steps place_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj + +} +# Create 'impl_1_place_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_place_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps place_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj + +} +# Create 'impl_1_post_place_power_opt_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_post_place_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_place_power_opt_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj + +} +# Create 'impl_1_phys_opt_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps phys_opt_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0] +if { $obj != "" } { +set_property -name "is_enabled" -value "0" -objects $obj +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj + +} +# Create 'impl_1_route_report_drc_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0] "" ] } { + create_report_config -report_name impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0] +if { $obj != "" } { + +} +# Create 'impl_1_route_report_methodology_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0] "" ] } { + create_report_config -report_name impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0] +if { $obj != "" } { + +} +# Create 'impl_1_route_report_power_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0] "" ] } { + create_report_config -report_name impl_1_route_report_power_0 -report_type report_power:1.0 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0] +if { $obj != "" } { + +} +# Create 'impl_1_route_report_route_status_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0] "" ] } { + create_report_config -report_name impl_1_route_report_route_status_0 -report_type report_route_status:1.0 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0] +if { $obj != "" } { + +} +# Create 'impl_1_route_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_route_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0] +if { $obj != "" } { +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj + +} +# Create 'impl_1_route_report_incremental_reuse_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0] "" ] } { + create_report_config -report_name impl_1_route_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0] +if { $obj != "" } { + +} +# Create 'impl_1_route_report_clock_utilization_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0] "" ] } { + create_report_config -report_name impl_1_route_report_clock_utilization_0 -report_type report_clock_utilization:1.0 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0] +if { $obj != "" } { + +} +# Create 'impl_1_route_report_bus_skew_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0] "" ] } { + create_report_config -report_name impl_1_route_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps route_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0] +if { $obj != "" } { +set_property -name "options.warn_on_violation" -value "1" -objects $obj + +} +# Create 'impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } { + create_report_config -report_name impl_1_post_route_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_route_phys_opt_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0] +if { $obj != "" } { +set_property -name "options.max_paths" -value "10" -objects $obj +set_property -name "options.report_unconstrained" -value "1" -objects $obj +set_property -name "options.warn_on_violation" -value "1" -objects $obj + +} +# Create 'impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found) +if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } { + create_report_config -report_name impl_1_post_route_phys_opt_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps post_route_phys_opt_design -runs impl_1 +} +set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0] +if { $obj != "" } { +set_property -name "options.warn_on_violation" -value "1" -objects $obj + +} +set obj [get_runs impl_1] +set_property -name "part" -value "xc7z010clg400-1" -objects $obj +set_property -name "strategy" -value "Performance_ExtraTimingOpt" -objects $obj +set_property -name "steps.place_design.args.directive" -value "ExtraTimingOpt" -objects $obj +set_property -name "steps.phys_opt_design.args.directive" -value "Explore" -objects $obj +set_property -name "steps.route_design.args.directive" -value "NoTimingRelaxation" -objects $obj +set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj +set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj + +# set the current impl run +current_run -implementation [get_runs impl_1] +catch { + if { $idrFlowPropertiesConstraints != {} } { + set_param runs.disableIDRFlowPropertyConstraints $idrFlowPropertiesConstraints + } +} + +puts "INFO: Project created:${_xil_proj_name_}" +# Create 'drc_1' gadget (if not found) +if {[string equal [get_dashboard_gadgets [ list "drc_1" ] ] ""]} { +create_dashboard_gadget -name {drc_1} -type drc +} +set obj [get_dashboard_gadgets [ list "drc_1" ] ] +set_property -name "reports" -value "impl_1#impl_1_route_report_drc_0" -objects $obj + +# Create 'methodology_1' gadget (if not found) +if {[string equal [get_dashboard_gadgets [ list "methodology_1" ] ] ""]} { +create_dashboard_gadget -name {methodology_1} -type methodology +} +set obj [get_dashboard_gadgets [ list "methodology_1" ] ] +set_property -name "reports" -value "impl_1#impl_1_route_report_methodology_0" -objects $obj + +# Create 'power_1' gadget (if not found) +if {[string equal [get_dashboard_gadgets [ list "power_1" ] ] ""]} { +create_dashboard_gadget -name {power_1} -type power +} +set obj [get_dashboard_gadgets [ list "power_1" ] ] +set_property -name "reports" -value "impl_1#impl_1_route_report_power_0" -objects $obj + +# Create 'timing_1' gadget (if not found) +if {[string equal [get_dashboard_gadgets [ list "timing_1" ] ] ""]} { +create_dashboard_gadget -name {timing_1} -type timing +} +set obj [get_dashboard_gadgets [ list "timing_1" ] ] +set_property -name "reports" -value "impl_1#impl_1_route_report_timing_summary_0" -objects $obj + +# Create 'utilization_1' gadget (if not found) +if {[string equal [get_dashboard_gadgets [ list "utilization_1" ] ] ""]} { +create_dashboard_gadget -name {utilization_1} -type utilization +} +set obj [get_dashboard_gadgets [ list "utilization_1" ] ] +set_property -name "reports" -value "synth_1#synth_1_synth_report_utilization_0" -objects $obj +set_property -name "run.step" -value "synth_design" -objects $obj +set_property -name "run.type" -value "synthesis" -objects $obj + +# Create 'utilization_2' gadget (if not found) +if {[string equal [get_dashboard_gadgets [ list "utilization_2" ] ] ""]} { +create_dashboard_gadget -name {utilization_2} -type utilization +} +set obj [get_dashboard_gadgets [ list "utilization_2" ] ] +set_property -name "reports" -value "impl_1#impl_1_place_report_utilization_0" -objects $obj + +move_dashboard_gadget -name {utilization_1} -row 0 -col 0 +move_dashboard_gadget -name {power_1} -row 1 -col 0 +move_dashboard_gadget -name {drc_1} -row 2 -col 0 +move_dashboard_gadget -name {timing_1} -row 0 -col 1 +move_dashboard_gadget -name {utilization_2} -row 1 -col 1 +move_dashboard_gadget -name {methodology_1} -row 2 -col 1 diff --git a/hardware/pl_platform/version b/hardware/pl_platform/version index b123147..ea710ab 100644 --- a/hardware/pl_platform/version +++ b/hardware/pl_platform/version @@ -1 +1 @@ -1.1 \ No newline at end of file +1.2 \ No newline at end of file diff --git a/script/loadfifo.sh b/script/loadfifo.sh deleted file mode 100644 index cb77206..0000000 --- a/script/loadfifo.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -modprobe fifo \ No newline at end of file diff --git a/script/version b/script/version index 9f8e9b6..b123147 100644 --- a/script/version +++ b/script/version @@ -1 +1 @@ -1.0 \ No newline at end of file +1.1 \ No newline at end of file diff --git a/source/linux_driver/fifo.c b/source/linux_driver/fifo.c deleted file mode 100644 index 703219d..0000000 --- a/source/linux_driver/fifo.c +++ /dev/null @@ -1,354 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define FIFO_CNT 1 /* 设备号个数 */ -#define FIFO_NAME "fifo" /* 名字 */ -#define FIFO_CMD_FUNCTION_CLEAR 1 -#define FIFO_CMD_FUNCTION_PADDING 2 -#define FIFO_CMD_GET_EMPTYCOUNT 3 - -/* - * 相关寄存器地址定义 - */ -#define FIFO_REG_BASE 0x43C00000 -#define FIFO_REG_0_OFFSET 0x00000000 -#define FIFO_REG_1_OFFSET 0x00000004 -#define FIFO_REG_2_OFFSET 0x00000008 -#define FIFO_REG_3_OFFSET 0x0000000C -#define FIFO_REG_4_OFFSET 0x00000010 -#define FIFO_REG_5_OFFSET 0x00000014 -#define FIFO_REG_6_OFFSET 0x00000018 -#define FIFO_REG_7_OFFSET 0x0000001C -#define FIFO_REG_8_OFFSET 0x00000020 -#define FIFO_REG_9_OFFSET 0x00000024 -#define FIFO_REG_10_OFFSET 0x00000028 -#define FIFO_REG_11_OFFSET 0x0000002C -#define FIFO_REG_12_OFFSET 0x00000030 // {16'b0, almost_empty, empty, almost_full, full, data_count[11:0]}; -#define FIFO_REG_13_OFFSET 0x00000034 -#define FIFO_REG_14_OFFSET 0x00000038 - -#define FIFO_CR_CLR_MASK ((u32)(1 << 1)) // 清空队列 (Clear) 对该位写入1,队列将清空,同时队列输出为全0。注意:不要写入除1以外的任何值。 -#define FIFO_CR_WS_MASK ((u32)(1 << 0)) // 写入同步 (Write Synchronization) 对该位写入1,FIFO_DATx的数据按字节小端序进入队列。 注意:不要写入除1以外的任何值。 - -#define FIFO_SR_VLD_MASK ((u32)(1 << 16)) // 数据输出有效标志 (Valid) 0: 当前无有效输出,输出保持上一状态 1: 当前队列正在输出有效数据 -#define FIFO_SR_AMEM_MASK ((u32)(1 << 15)) // 队列将空标志 (Almost Empty) 0: 队列没有被读空 1: 队列在一个读时钟周期后会被读空 -#define FIFO_SR_EM_MASK ((u32)(1 << 14)) // 队列空标志 (Empty) 0: 队列中存在有效数据,没有被读空 1: 队列中已经没有有效数据 -#define FIFO_SR_AMFU_MASK ((u32)(1 << 13)) // 队列将满标志 (Almost Full) 0: 队列没有被写满 1: 队列在一个写时钟周期后会被写满 -#define FIFO_SR_FU_MASK ((u32)(1 << 12)) // 队列满标志 (Almost Full) 0: 队列中的有效数据小于FIFO数据深度 1: 队列中的有效数据达到FIFO数据深度 -#define FIFO_SR_CNT_MASK ((u32)(0xFFF << 0)) // 队列数据数量 (Data Count) 该值指示队列中的数据数量 注意:一个数据为384位宽 - -#define FIFO_ECR_CNT_MASK ((u32)0xFFFFFFFF) // 队列空读取累计次数 - -/* 映射后的寄存器虚拟地址指针 */ -static void __iomem *fifo_dat0_addr; -static void __iomem *fifo_dat1_addr; -static void __iomem *fifo_dat2_addr; -static void __iomem *fifo_dat3_addr; -static void __iomem *fifo_dat4_addr; -static void __iomem *fifo_dat5_addr; -static void __iomem *fifo_dat6_addr; -static void __iomem *fifo_dat7_addr; -static void __iomem *fifo_dat8_addr; -static void __iomem *fifo_dat9_addr; -static void __iomem *fifo_dat10_addr; -static void __iomem *fifo_dat11_addr; -static void __iomem *fifo_sr_addr; -static void __iomem *fifo_ecr_addr; -static void __iomem *fifo_cr_addr; - -/* fifo设备结构体 */ -struct fifo_dev -{ - dev_t devid; /* 设备号 */ - struct cdev cdev; /* cdev */ - struct class *class; /* 类 */ - struct device *device; /* 设备 */ - int major; /* 主设备号 */ - int minor; /* 次设备号 */ -}; - -static struct fifo_dev fifo; /* led设备 */ - -/* - * @description : 打开设备 - * @param – inode : 传递给驱动的inode - * @param - filp : 设备文件,file结构体有个叫做private_data的成员变量 - * 一般在open的时候将private_data指向设备结构体。 - * @return : 0 成功;其他 失败 - */ -static int fifo_open(struct inode *inode, struct file *filp) -{ - return 0; -} - -/* - * @description : 从设备读取数据 - * @param - filp : 要打开的设备文件(文件描述符) - * @param - buf : 返回给用户空间的数据缓冲区 - * @param - cnt : 要读取的数据长度 - * @param - offt : 相对于文件首地址的偏移 - * @return : 读取的字节数,如果为负值,表示读取失败 - */ -static ssize_t fifo_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt) -{ - u32 data = readl(fifo_sr_addr) & FIFO_SR_CNT_MASK; - copy_to_user(buf, &data, 4); - return cnt; -} - -static u32 kern_buf_u32[8 * 4096]; - -/* - * @description : 向设备写数据 - * @param - filp : 设备文件,表示打开的文件描述符 - * @param - buf : 要写给设备写入的数据 - * @param - cnt : 要写入的数据长度 - * @param - offt : 相对于文件首地址的偏移 - * @return : 写入的字节数,如果为负值,表示写入失败 - */ -static ssize_t fifo_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt) -{ - int ret; - int i; - - if (cnt % 32 != 0 || cnt > sizeof(kern_buf_u32)) - { - printk(KERN_ERR "cnt error, cnt=%d, sizeof=%d\r\n", cnt, (u32)sizeof(kern_buf_u32)); - return -1; - } - - ret = copy_from_user(kern_buf_u32, buf, cnt); // 得到应用层传递过来的数据 - if (ret < 0) - { - printk(KERN_ERR "kernel write failed!\r\n"); - return -EFAULT; - } - - for (i = 0; i < (cnt / sizeof(u32)); i += 8) - { - writel(kern_buf_u32[i], fifo_dat0_addr); - writel(kern_buf_u32[i + 1], fifo_dat1_addr); - writel(kern_buf_u32[i + 2], fifo_dat2_addr); - writel(kern_buf_u32[i + 3], fifo_dat3_addr); - writel(kern_buf_u32[i + 4], fifo_dat4_addr); - writel(kern_buf_u32[i + 5], fifo_dat5_addr); - writel(kern_buf_u32[i + 6], fifo_dat6_addr); - writel(kern_buf_u32[i + 7], fifo_dat7_addr); - writel(0, fifo_dat8_addr); - writel(0, fifo_dat9_addr); - writel(0, fifo_dat10_addr); - writel(0, fifo_dat11_addr); - writel(FIFO_CR_WS_MASK, fifo_cr_addr); - } - - return cnt; -} - -/* - * @description : 关闭/释放设备 - * @param – filp : 要关闭的设备文件(文件描述符) - * @return : 0 成功;其他 失败 - */ -static int fifo_release(struct inode *inode, struct file *filp) -{ - return 0; -} - -static long fifo_ioctl(struct file *fp, unsigned int cmd, unsigned long tmp) -{ - if (_IOC_TYPE(cmd) != 'D') - { - printk(KERN_ERR "IOC_TYPE or IOC_WRITE error: IOC_TYPE=%c, IOC_WRITE=%d\r\n", _IOC_TYPE(cmd), _IOC_DIR(cmd)); - return -EINVAL; - } - if (_IOC_NR(cmd) == FIFO_CMD_GET_EMPTYCOUNT) - { - u32 empty_count = readl(fifo_ecr_addr) & FIFO_ECR_CNT_MASK; - printk("%d\r\n", empty_count); - if (copy_to_user((u32 *)tmp, &empty_count, 4) < 0) - { - printk(KERN_ERR "get empty count error\r\n"); - return -EINVAL; - } - } - else if (_IOC_NR(cmd) == FIFO_CMD_FUNCTION_CLEAR) - { - // 清空队列 - writel(FIFO_CR_CLR_MASK, fifo_cr_addr); - } - else if (_IOC_NR(cmd) == FIFO_CMD_FUNCTION_PADDING) - { - // 对队列中添加tmp个数的0元素 - int i; - for (i = 0; i < tmp; i ++) - { - writel((u32)0, fifo_dat0_addr); - writel((u32)0, fifo_dat1_addr); - writel((u32)0, fifo_dat2_addr); - writel((u32)0, fifo_dat3_addr); - writel((u32)0, fifo_dat4_addr); - writel((u32)0, fifo_dat5_addr); - writel((u32)0, fifo_dat6_addr); - writel((u32)0, fifo_dat7_addr); - writel((u32)0, fifo_dat8_addr); - writel((u32)0, fifo_dat9_addr); - writel((u32)0, fifo_dat10_addr); - writel((u32)0, fifo_dat11_addr); - writel(FIFO_CR_WS_MASK, fifo_cr_addr); - } - } - return 0; -} - -/* 设备操作函数 */ -static struct file_operations fifo_fops = { - .owner = THIS_MODULE, - .open = fifo_open, - .read = fifo_read, - .write = fifo_write, - .release = fifo_release, - .unlocked_ioctl = fifo_ioctl, -}; - -static int __init fifo_init(void) -{ - int ret; - /* 寄存器地址映射 */ - fifo_dat0_addr = ioremap(FIFO_REG_BASE + FIFO_REG_0_OFFSET, 4); - fifo_dat1_addr = ioremap(FIFO_REG_BASE + FIFO_REG_1_OFFSET, 4); - fifo_dat2_addr = ioremap(FIFO_REG_BASE + FIFO_REG_2_OFFSET, 4); - fifo_dat3_addr = ioremap(FIFO_REG_BASE + FIFO_REG_3_OFFSET, 4); - fifo_dat4_addr = ioremap(FIFO_REG_BASE + FIFO_REG_4_OFFSET, 4); - fifo_dat5_addr = ioremap(FIFO_REG_BASE + FIFO_REG_5_OFFSET, 4); - fifo_dat6_addr = ioremap(FIFO_REG_BASE + FIFO_REG_6_OFFSET, 4); - fifo_dat7_addr = ioremap(FIFO_REG_BASE + FIFO_REG_7_OFFSET, 4); - fifo_dat8_addr = ioremap(FIFO_REG_BASE + FIFO_REG_8_OFFSET, 4); - fifo_dat9_addr = ioremap(FIFO_REG_BASE + FIFO_REG_9_OFFSET, 4); - fifo_dat10_addr = ioremap(FIFO_REG_BASE + FIFO_REG_10_OFFSET, 4); - fifo_dat11_addr = ioremap(FIFO_REG_BASE + FIFO_REG_11_OFFSET, 4); - fifo_sr_addr = ioremap(FIFO_REG_BASE + FIFO_REG_12_OFFSET, 4); - fifo_ecr_addr = ioremap(FIFO_REG_BASE + FIFO_REG_13_OFFSET, 4); - fifo_cr_addr = ioremap(FIFO_REG_BASE + FIFO_REG_14_OFFSET, 4); - - /* 注册字符设备驱动 */ - //(1)创建设备号 - if (fifo.major) - { - fifo.devid = MKDEV(fifo.major, 0); - ret = register_chrdev_region(fifo.devid, FIFO_CNT, FIFO_NAME); - if (ret) - goto FAIL_REGISTER_CHR_DEV; - } - else - { - ret = alloc_chrdev_region(&fifo.devid, 0, FIFO_CNT, FIFO_NAME); - if (ret) - goto FAIL_REGISTER_CHR_DEV; - fifo.major = MAJOR(fifo.devid); - fifo.minor = MINOR(fifo.devid); - } - - //(2)初始化cdev - fifo.cdev.owner = THIS_MODULE; - cdev_init(&fifo.cdev, &fifo_fops); - - //(3)添加cdev - ret = cdev_add(&fifo.cdev, fifo.devid, FIFO_CNT); - if (ret) - goto FAIL_ADD_CDEV; - - //(4)创建类 - fifo.class = class_create(THIS_MODULE, FIFO_NAME); - if (IS_ERR(fifo.class)) - { - ret = PTR_ERR(fifo.class); - goto FAIL_CREATE_CLASS; - } - - //(5)创建设备 - fifo.device = device_create(fifo.class, NULL, fifo.devid, NULL, FIFO_NAME); - if (IS_ERR(fifo.device)) - { - ret = PTR_ERR(fifo.device); - goto FAIL_CREATE_DEV; - } - - return 0; - -FAIL_CREATE_DEV: - class_destroy(fifo.class); - -FAIL_CREATE_CLASS: - cdev_del(&fifo.cdev); - -FAIL_ADD_CDEV: - unregister_chrdev_region(fifo.devid, FIFO_CNT); - -FAIL_REGISTER_CHR_DEV: - iounmap(fifo_dat0_addr); - iounmap(fifo_dat1_addr); - iounmap(fifo_dat2_addr); - iounmap(fifo_dat3_addr); - iounmap(fifo_dat4_addr); - iounmap(fifo_dat5_addr); - iounmap(fifo_dat6_addr); - iounmap(fifo_dat7_addr); - iounmap(fifo_dat8_addr); - iounmap(fifo_dat9_addr); - iounmap(fifo_dat10_addr); - iounmap(fifo_dat11_addr); - iounmap(fifo_sr_addr); - iounmap(fifo_ecr_addr); - iounmap(fifo_cr_addr); - - return ret; -} - -static void __exit fifo_exit(void) -{ - - //(1)注销设备 - device_destroy(fifo.class, fifo.devid); - - //(2)注销类 - class_destroy(fifo.class); - - //(3)删除cdev - cdev_del(&fifo.cdev); - - //(4)注销设备号 - unregister_chrdev_region(fifo.devid, FIFO_CNT); - - //(5)取消内存映射 - iounmap(fifo_dat0_addr); - iounmap(fifo_dat1_addr); - iounmap(fifo_dat2_addr); - iounmap(fifo_dat3_addr); - iounmap(fifo_dat4_addr); - iounmap(fifo_dat5_addr); - iounmap(fifo_dat6_addr); - iounmap(fifo_dat7_addr); - iounmap(fifo_dat8_addr); - iounmap(fifo_dat9_addr); - iounmap(fifo_dat10_addr); - iounmap(fifo_dat11_addr); - iounmap(fifo_sr_addr); - iounmap(fifo_ecr_addr); - iounmap(fifo_cr_addr); -} - -/* 驱动模块入口和出口函数注册 */ -module_init(fifo_init); -module_exit(fifo_exit); -MODULE_AUTHOR("Dingkun"); -MODULE_DESCRIPTION("driver for hardware fifo in the platform"); -MODULE_LICENSE("GPL"); diff --git a/source/linux_driver/version b/source/linux_driver/version index 840ca8c..400122e 100644 --- a/source/linux_driver/version +++ b/source/linux_driver/version @@ -1 +1 @@ -1.4 \ No newline at end of file +1.5 \ No newline at end of file

Mt6J)9&P9 z{ulVy+hGq#f6Rz#{0ZVh8R_4wBF6<&d{M5@5%FBHx%D$EKvu24$W zwP{ot&@i)wG09oMi@wQ_*9geuXr?tRGiqRWNnZJ|LA#QXAWvf>o1PXfd$eM)h`Yi{4BIN>7UP$I zib(zMB%2%l!6_b8ErHru@&VW`YR+xCRn?OpF#;yE_CWc=tm5fI;Sn)`s;9}LgvMq^ z@flTixjg}XNPf?jb)Y-LI&{%w$N!Yw+9cUSBH(A{Lb3cSyLAPprISGb+cmmlW?9ky z^KrB;R_ohTw31He%gW0_ne|GKFP8g213k50Ruh?NtHQ{(#6iDDc5_;1m5m?bajxYh10zyi^tN?uGYbGqd)6q2W0+WIAz;(Crz_PEo|j; zJUn4!>8JpokI5d?nE{nshecn+t11?EJklNKAin|7~4pBHUS;9q5qIc~~ zNs28p5=$Dz3%npNXU%GH^8>D>wD^_TW@br&uI(E)&Z;&O9yMTq0&_s|HAMPE^S;99 z=vpm^Mc$nvtNg^kU3?cMe=>RyZUizHiyrz2CGz-hs`8&N)T8N3;{4xQ0x?>9*sF+* zj%mbbyUIy&oUBw^Zh~+MH?(*5h}LfXB@G?nl2Upt`z!ZWWW;a-3Cm}^MhB#QWN=ZT zqccoVR#&)_zm)+mk+))dR2aL10B9xaKBDIeVQRY7ijn& z6?UHM5;X$#E|16S>nRTB9~Y{7YAh~56~~yrr9oo{0iREA_lJXMo0}bjuetV*aB&ZL zA7m>+5|=u>>{7$`gyFCT^6xXuBYpagXsZ&PIfb{GdgzS2g6TQ=a#IK^4w^+|`}$wS zY`HqI=BJubB@*vnvRDl7eU}c(AZoJg&+z^$tV?9KLxAT~*h(#fZCogzj)nb|D}vj}EHfvRMm(h6`w1aSsikZ?9|f59gb z{+*a6EjC0+%$Nma*CW1%wulm`McC@PUEzfpH8v+;`E9R7G_6Z;tD7ctT8P<4ECER` zYg4m%b)DRhtL{>hEAKv}vE&5{H?5>S`&D|*DEly4uwp77NG5XUa8ageKrw3IB+41V zSKC7)3daB^q#~|sasA%-_N3e1$sz)z)W@P8mB1&SXy+s%W`jpx5bnJeDqIyQlf1*uyAwe$M{L5C| z=@k;h9W0wHFB!gTrB)F=ZQ{2Y&Z4YHh)`wA=x)b2eaY1vd<8~+{4?0kPbh$j0t6&8 z;J@1#fG)FO5dY6M2B42DRfublN;WC+|1PXY0sNc#e;?FvpywPKqW@FT3;^K#-{XKA z&_XsHs4bfi!U05(LkIfECd8Si2LK!$UB9~6TA7-;{LhI4^uMM!PecyBFdH~Dm$%T1X2y1-0_D(=ai%e9!Mc7wTJmYXuo>6xs( zLQMuSYQn$(3?U@2VDe偏移寄存器313029282726252423222120191817161514131211109876543210ENCODER_CRICOVTSMODCLRReset value1001ENCODER_VDIVRReset value00000000000000000000000000000000ENCODER_CDIVRAReset value00000000000000000000000000000000ENCODER_CDIVRBReset value00000000000000000000000000000000ENCODER_CDIVRCReset value00000000000000000000000000000000ENCODER_CDIVRDReset value000000000000000000000000000000000x000x04VDIV[31:0]0x08CDIV[31:0]Reserved0x10CDIV[31:0]0x14CDIV[31:0]0x0CCDIV[31:0] \ No newline at end of file +偏移寄存器313029282726252423222120191817161514131211109876543210ENCODER_CRICOVTSMODCLRReset value1000ENCODER_VDIVRReset value00000000000000000000000000000000ENCODER_CDIVRAReset value00000000000000000000000000000000ENCODER_CDIVRBReset value00000000000000000000000000000000ENCODER_CDIVRCReset value00000000000000000000000000000000ENCODER_CDIVRDReset value000000000000000000000000000000000x10CDIV[31:0]0x14CDIV[31:0]0x0CCDIV[31:0]0x000x04VDIV[31:0]0x08CDIV[31:0]Reserved \ No newline at end of file diff --git a/doc/pl_reference_mannual.assets/fifo_cr.png b/doc/pl_reference_mannual.assets/fifo_cr.png deleted file mode 100644 index b964aaa9448317673415eb34bdefc6f3ab8c9df4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5379 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 diff --git a/doc/pl_reference_mannual.assets/fifo_ecr.png b/doc/pl_reference_mannual.assets/fifo_ecr.png deleted file mode 100644 index dfbf0060d193a5ab119a4fb349def9718af412cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12254 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