引
我们学校的电工电子实验使用的是一块十分老旧的 FPGA ,开发其所使用的软件 ISE 也已经彻底不支持 Windows 11 了。即使网上有一些教程可以成功将其安装在 Windows 11 上,但是使用起来还是会遇到很多 bug 。通常我们会使用 Windows 虚拟机来解决这个问题,但是虚拟机占用资源太多,太浪费磁盘空间了。考虑到 ISE 提供了 Linux 版本的包,于是我决定在 WSL 中使用 ISE 。
准备工作
首先我们需要安装 WSL ,已安装的可以跳过这一步。
按 Win + R
,输入 wt
打开终端,然后输入以下命令开启 WSL :
wsl --enable-wsl
然后我们要下载 ISE 的 Linux 版本的安装包,官方下载链接。
接着我们要准备一份 ISE 的激活文件。在 Github 上可以找到一份激活文件 xilinx_ise.lic ,将文件保存到本地。
最后我们要准备一份 HW_Server 用来远程烧录,官方下载链接。如果你已经安装了 Vivado 的话,可以跳过这一步,直接使用 Vivado 里面的 hw_server 即可。
把上面三项文件下载到本地后,放在你想要安装 ISE 的目录下,我们将在这个文件夹下安装 ISE 。
文件清单:
- ISE 的 Linux 版本的安装包
Xilinx_ISE_DS_Lin_14.7_1015_1.tar
- ISE 的激活文件
xilinx_ise.lic
- HW_Server 的安装包
Xilinx_HW_Server_Win_2019.2_1106_2127.tar.gz
开始安装
首先解压 HW_Server ,直接右键使用 Windows 自带的「全部解压缩」功能即可。解压完成后,双击文件夹中的 xsetup.exe
进行安装,安装完成后,记住安装路径,我们后面会用到。
在刚刚存放那三个文件的文件夹中,右键空白处,点击「在终端中打开」打开终端,输入以下命令安装 ubuntu :
curl.exe -sL https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64-root.tar.xz -o ubuntu.tar.xz
wsl --import ISE ISE ubuntu.tar.xz
del ubuntu.tar.xz
安装完成后,就可以输入 wsl -d ISE
进入 ISE 的 WSL 环境了。
进入之后,我们先换源:
cat <<EOF > /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
EOF
将文件移动到 WSL 内:
mv Xilinx_ISE_DS_Lin_14.7_1015_1.tar ~
mkdir -p ~/.Xilinx
mv xilinx_ise.lic ~/.Xilinx
切到主目录:
cd
安装依赖:
apt update
DEBIAN_FRONTEND=noninteractive apt install -y libncurses5 gcc libx11-6 libglib2.0-0 libsm6 libxi6 libxrender1 libxrandr2 libfreetype6 libfontconfig1 libxtst6
apt clean
rm -rf /var/lib/apt/lists/*
解压安装 ISE 软件本体:
tar xvf Xilinx*.tar
rm Xilinx*.tar
./Xilinx*/xsetup # 一路下一步即可
rm -rf Xilinx* .xinstall
echo ". /opt/Xilinx/14.7/ISE_DS/settings64.sh > /dev/null" >> .bashrc
安装完成之后,按 Ctrl + D
退出 WSL 。
由于前面的安装会产生额外磁盘占用,所以我们可以通过导出后重新导入来节省这部分空间。
wsl --export ISE ISE.tar
wsl --unregister ISE
wsl --import ISE ISE ISE.tar
del ISE.tar
启动 ISE
在桌面上右键「新建」-「快捷方式」,输入 wsl -d ISE bash -ic "ise"
,名称输入 ISE
,完成后双击快捷方式即可启动 ISE 。
使用 HW_Server 烧录
关于烧录的问题,由于 WSL2 不支持直接访问宿主机的 USB 设备,所以我们需要使用 HW_Server 来进行远程烧录。
最前面我们已经安装了 HW_Server ,现在我们需要启动它。在前面 HW_Server 的安装目录下,打开 Xilinx\HWSRVR\2019.2\bin
目录,双击 hw_server.bat
启动 HW_Server 。然后你应该会看到类似以下的提示:
To connect to this hw_server instance use url: TCP:insmtr-PC:3121
记住这个端口号 3121
。
在 ISE 中打开烧录界面,点击 Boundary Scan
,然后右键空白处选择 Cable Setup...
,Communication Mode 选择 HW Server
,Cable Location 中的 Host Name 填写: TCP:宿主机IP:上面记住的端口号
。
WSL 宿主机 IP 的获取方式请参考微软文档使用 WSL 访问网络应用程序,如果开了镜像 Mirrored 模式网络,则可以使用 127.0.0.1
从 WSL 访问 Windows 宿主机。而在默认的 NAT 网络下,则应该通过命令查询:
wsl -d ISE
ip route show | grep -i default | awk '{ print $3}'
比如这里我是 Mirrored 模式网络,我需要填写的就是 TCP:127.0.0.1:3121
。
后面就是正常的烧录流程了,不过多赘述。
结语
在 WSL 中使用 ISE 的体验还是不错的,虽然有些地方不太方便,但是总比在 Windows 虚拟机上使用要好很多。希望这篇文章能对你有所帮助。