MicroBlaze Simple IO Test

本实验使用Digilent Anvyl Spartan6 FPGA开发套件,只需要使用EDK中的Xilinx Platform Studio.(XPS) 务必注意后面的备注Could not detect MDM peripheral on hardware.这是我写博文的主要原因,竟然被这么一个愚蠢的问题给卡住了。。。

第一步:在XPS操作
(1)点击Create New Project Using Base System Builder
logo
(2)选择安装路径及命名
logo
(3)FPGA选择XC6SLX45,封装为csg484,按下图配置,一定要记住你是高电平复位还是低电平复位(这是我写这篇文档的重要原因)
logo
(4)按下图配置, 需要在Add Device中找到开关, LED灯, 串口加入。点击Finish
logo
(5)去掉CLK_N, 将CLK_P改成CLK得到下图
logo
(6)进入.mhs和.ucf文件
进入.mhs将DIFFERENTIAL_POLARITY = P去掉
logo
进入.ucf加入以下引脚绑定
logo
(7)点击Generate BitStream 开始生成, 若出现bug再重新点击Generate BitStream生成

第二步:进入SDK平台
(1)在XPS环境中导出SDK:
先选择XPS环境中Project下的“Export Hardware Design To SDK …”
logo
在弹出的对话框中选择“Export & Launch SDK”
logo
(2)选择工作目录,最好在SDK下面新建一个SDK_workspace文件夹, 点击OK
logo
(3)如下图所示界面,稍等片刻
logo
导入完成,出现如下界面,此时的CPU_SYS_hw_platform平台为默认的平台,我们可以理解为硬件平台。现在就完全进入了SDK环境,此后就可以从Windows界面直接进入。
logo
(4)新建一个工程,选择Xilinx C Project,点击Next
logo
(5)选择 Hello World 模板,点Next
logo
(6)生成成功,点击Finish 即可
logo
此时的模版已经生成,在里面hello_world_0下展开会有src文件夹,其中的helloworld.c可以进行编写,但是此时的程序已经是一个完整的程序,运行即可。

(7)由于要点亮LED灯,为简单起见,我们类似于上面的模版生成一个Peripheral Tests模版,如下图,点Next
logo
弹出下图所示界面后等待,如下图,完成后点Finish
logo
(8)Build Project
右键点击peripheral_test_o在弹出的选项中选择Build Project,或者在工具栏中的Project下选择Build Project
logo
(9)Program FPGA
单击工具栏的Program FPGA图标,如下图所示,或者在Xilinx Tools中选择Program FPGA
logo
在弹出的下图中选择相应目录下的.bit文件和.bmm文件(一般选择_bd的那一个),然后点击Program即可
logo
当进度条跑满的时候就表示下载成功

重新认识下工具栏中比较常用的几个,如下图所示。
第一个红色框框住的图标表示Program FPGA,这在前面已经用到过;
绿色框所示的图标为Debug模式下进行调试用的,一般会在完善程序的时候用到;
紫色框所示图标即为最常用的验证程序是否运行正确时使用到的,本次实验我们就点击这个图标,然后观察FPGA开发板上面的外围设备有没有按照预期的结果运行。
logo
(10)运行程序
点击上面提到的紫色框中图标右侧的小三角,选择“Run Configurations … ”或者在直接在菜单栏Run下面的选项中选择“Run Configurations … ”弹出如下图所示对话框
先选中左侧的peripheral_test_0.elf,在右侧的STDIO Connection下,先选中Connect STDIO to Console复选框,再在Port下拉菜单中选择COM1(这要看你的设备也可能是COM4等等),点击右下的Apply后,点Run即可
logo
此时,程序已经运行起来,因为是第一次设置,所以上述步骤不可省略。
运行完后观察FPGA开发板,可以看到8个LED灯依次亮起,打开串口调试工具并正确设置后也可以看到在接收区出现如下图所示输出,这充分表明Microblaze和SDK中的程序均正确运行起来。(如果我们在硬件平台设计时使用了“调试串口”,不需要专用的串口调试软件,在SDK的Console中就可以看到下面的信息)
logo
备注:如果你出现下面这种错误, 处理方法, 想想之前是RESET设置的高电平还是低电平重置, 如果是高电平重置,则当你Program一定要将RESET置为低电平, 否则置为高电平, 切记!
logo