半年前用经费买的ZYNQ开发板,最近才派上用场。
最近正在进行的一些工作需要用到它(没错就是那个离线式数字信号处理系列的),今天来写第一个程序,准备一下后面的数据采集操作。
使用官方给的Example来测试SD卡的读写。
首先打开Vivado,在这里我使用的版本是2019.1,属于比较新的版本,黑金给的很多例程不能正常编译了。。而我又是个硬件,我也看不懂C语言编译器报的到底是个什么鬼错误。
所以重新新建一个好了。先打开工程新建。
打开之后直接创建block design。因为我们的SD卡是纯运行在PS端的,所以不需要使用到任何PL的东西。
创建出来就是这个样子滴~
双击打开zynq processing system7来进行下一步配置,红框中的三个是我们需要进行配置的东西。
首先配置PS端的IO,通过查阅官方使用手册,我们可以找到本次实验需要外设所连接到的引脚位置
在SD卡IO的说明中可以看到,板子的生产商干了一件十分疑惑的事情,他们将SD卡的每个引脚通过了一颗电平转换芯片连接到FPGA的PS端,也就是说在SD的一端,其逻辑电平为LVCMOS3.3V,而在FPGA的一端,电平则为LVCMOS1.8V。如果配置成了3.3V就会导致出现错误,无法读写。这在我刚开始调这个例程的时候把我给坑惨了。
来到IO配置页面,把SD0和UART1这两个外设启动,注意SD卡那里要把它展开,勾选上Card Detect这一项,这是用来检测SD卡插入的。
两个外设根据刚才原理图上的接口选择就好了。
随后打开MIO configuration,在这里我们要修改Bank 1的IO电压,从原来的3.3V修改为1.8V,否则将会直接导致SD卡工作不正常。
接着打开DDR配置,修改成自己开发板的DDR内存型号就可以了。
完成之后直接点击OK就可。执行一下自动连线。
到这里,对PS的配置就完成了,接下来依次完成红框中的两个。这些的作用是Vivado会为IP子系统生成一个顶层文件,这样我们就可以对该系统进行综合、实现并生成bit流了。
各Block都搭建完成后,Generate Output Products主要是把IP参数和连接信息update到project中,同时也会检查错误。
然后就是素质三连hhhh
在生成比特流之后,我们需要导出硬件配置,以便我们在SDK中操作这些硬件。随后就可以打开SDK了。
新建一个工程~
重新编辑板级支持包,打开它的xilfs库。
打开打开使用长文件名的配置
可以看到编译器很快就编译好了我们刚才加入的库。接下来我们就可以导入官方库附带的例程了。
接下来我们打开SDK自带的终端,连接板子上PS端的UART1串口到IDE自带的终端上,方便观察信息。
打开后先返回Vivado,把bitstream烧写进FPGA里。
接下来运行这个例程就可以了。可以看到很轻松的print出了成功写入的消息。
如果打开SD卡里的文档,就是这个样子的。
以上desu。喵内!