本帖最后由 zhenfengsky_177151526 于 2019-11-3 23:59 编辑

今天主要是用米尔开发板进行PS和PL结合控制LED灯,让我们先来看下米尔官方提供开发板的整体硬件结构示意图。 649B13F8-860E-4847-87A1-25E8EAEDDF57.png
我们使用了米尔开发板上的LP FMC接口进行外扩出的XM105赛灵思官方的扩展板。
下面,让我们一步一步实现LED灯的控制:以下的步骤主要针对刚熟悉VIVADO开发环境的工程师,也能进一步熟悉米尔开发板硬软件的架构。
1:创建工程
一步一步的步骤如下,取名PS_PL_LED, 注意选择好FPGA器件 , 我是ZYNQ7z010clg400-1
0D39DBEA-4CAC-4d61-80E4-E10495930952.png
打开VIVADO,创建一个新的工程,
0815FB73-E70D-42c6-9E51-E62178064ADC.png
点击NEXT,
BA5B9708-C426-438c-BB87-AF1AD8439C1C.png
新建工程的名称为PS_PL_LED,这个名称大家可以自己设置,不违反规则就行,
339E3BD0-90FF-4a4e-88C1-719E50F95E64.png
新建RTL PROJECT,点击连续NEXT,来到下一个设置界面,主要设置我们主芯片的型号。
C53C1671-43DE-4624-83D1-09192EF36798.png
具体的设置如下,我们的开发板主要是XC7z010clg400-1,
271EA049-4941-4d81-94EF-344977018C57.png
至此,我们完成一个VIVADO工程的创建。
2.原理的设计
70446A7F-FF27-43ee-8F70-4E7AA9F8AC40.png
我们使用IP集成开发,新建一个名称design_1的设计环境,
BA366139-3755-46a1-AA90-1F1FA55FFA28.png
创建一个ZYNQ7的PS,创建的框图如下:
54D28A74-C749-44ad-942F-10322A3F85C4.png
然后我们双击框图,配置我们响应的串口以及GPIO等硬件参数
FB7449DD-F4B1-4f06-BD52-C90799A0319B.png
配置串口电平以及位置
5D6290C6-1880-48bc-AC41-B9A23BFF712A.png
配置DDR的接口型号,这个参看米尔开发板上的实际型号,因为选项中没有板上对应的型号,我们可以选相近的型号,只是封装不一样而已。
时钟设置等就不在一一阐述,其他的参数保持默认即可。然后我们单击OK,这样我们的第一个IP核就配置好了。
下面我们创建GPIO的IP核,如图所示:
8D5BB959-F154-4d9a-B757-1457F71902E5.png
点击+号,搜索GPIO的IP,双击AXI GPIO,如下图所示:
ED17160E-04B8-4c96-8DF3-71854F32D0F8.png
双击新建的IP核设置参数为4个输出的GPIO,参数设置如图:
这样我们两个IP核都已经创建,下面需要进行设置原理的连线,设置automation,自动连线。
55138FD6-ECBA-45f7-9929-E8B2A5AAFA1C.png
参照上述的步骤进行设置参数,接下来我们看到两个IP核连线已经成功。
77C85A32-4FB8-403a-8B2B-57838ECA0D8D.png
可以优化连线,重新生成LAYOUT布局,设置相应的GPIO名称显示其功能。
然后我们点击RUN BLOCK AUTOMATION,点击OK,完成最终连线.
1F33193D-18E2-4a02-8AC7-3913D722AB1C.png
3.生成HDL文件
完成以上设置后我们需要生成HDL的包装,然后生产.V的文件,如下图
377D9435-B4C4-43c9-8FAD-AECB703B250E.png
然后右击design文件如下图,出现另外的界面,点击generator。
ADC6EB77-B416-49fc-BB2B-89FC79574ADC.png
E4DF2656-A94B-478b-9CBF-2BDA6FEA22D4.png
接下来,我们即将创建LED灯引脚的约束条件,设置相应步骤如下:
633B16C3-6950-4711-B881-36C2721F8425.png
点击NEXT
7C9916DA-0D85-45df-B635-57CA6F0B8B24.png
点击create file
180D3D61-195A-4c90-B8E2-8B715A76D438.png
创建一个名称为led的xac约束文件,点击OK.
E1CEF664-7177-4ab5-8340-4A29E97ACB40.png
约束文件创建完毕,点击finish。
633B16C3-6950-4711-B881-36C2721F8425.png
双击LED.XAC,右边出现需要添加约束条件的设计框。
下面我们就添加约束的条件。LEDS_tri_o则是我们在上面design_1_wrapper.v 看到的端口名
通过查阅米尔电子官方提供的MYC-C7Z01020 管脚描述表文件和赛灵思FMC XM 105对应的LED接口,找出的对应关系如下:
set_property IOSTANDARD LVCMOS33 [get_ports {LEDS_tri_o[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LEDS_tri_o[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LEDS_tri_o[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LEDS_tri_o[0]}]
set_property PACKAGE_PIN P14 [get_ports {LEDS_tri_o[0]}]
set_property PACKAGE_PIN R14 [get_ports {LEDS_tri_o[1]}]
set_property PACKAGE_PIN V12 [get_ports {LEDS_tri_o[2]}]
set_property PACKAGE_PIN W13 [get_ports {LEDS_tri_o[3]}]
下面我们对PL部分的设置进行综合,步骤如下:
首先保存下.XAC约束文件,点击综合的按键,如图所示
633B16C3-6950-4711-B881-36C2721F8425.png
点击OK,如下图:
0CDD0DC9-F3F5-41df-B35B-3066078D96CE.png
在我们进行综合的过程中,状态栏有显示在进行中,若是完成会跳出界面显示,点击OK进行实现如下图.
3607AFCE-6481-4c70-9763-C76DEDBE5060.png
RUN implementation实现后,点击下一步生成BIT流,点击OK.
EC927338-8076-49bf-AF4F-52F16435BD9C.png
当BIT流文件生成后,我们暂时不用烧写进FPGA,出现的框图点击CANCEL。
E58601DA-BE3C-4cf7-8D22-897A66BE03C1.png
4.SDK部分

然后输出硬件,菜单 File ->Export ->Export Hardware

弹出对话框时,记得勾取包含比特流,如下,因为有PL 硬件。

FIle ->Launch SDK就进入SDK编程阶段,在SDK 里, 菜单 File -> New -> New application Project

创建名称为PS_PL_LED,点击NEXT,


E0C6A3EA-AB02-438d-839C-187B38D0E762.png

下面我们创建还是以HELLO WORLD 为模板,点击FINISH
32776472-7170-4d0b-A977-592384F34FAD.png
接下来,我们应用一个LED的模板来设计我们的亮灯试验:
下图主要是我们如何调用模板:
4C16D36C-21D5-45de-8FB4-29225C1AA48B.png
调用模板后,此模板为闪烁一只LED灯,我们需要更改LED的宏定义为0x0f,具体如下:
070B781B-EE3A-4bfa-99AC-6AA33C53B9B0.png
后面设置PS和PL电路的文件加载,具体设置如下:
D885FD79-3704-4f60-9DAE-B0AF8B92E915.png
配置文件然后我们看到BIT流文件设置,复位设置,PS编程设置打勾,如下图:
CCCB9594-A497-4259-971F-0CA0BE58DD1C.png
点击APPLY,然后点击RUN.....
程序下载进我们米尔开发板中,我们发现程序的四只LED灯没有闪烁。。。
后来发现我们程序中没有添加看门狗,所以我们拔掉JP1,最终程序终于点灯亮起,开心、、、
由于上传不了视频最后上传一张开发板点灯的效果图:在此感谢米尔提供的开发板,和网上
微信图片_20191103234322.jpg
在此感谢米尔提供的开发板以及相关的资料,感谢论坛上很多FPGA的大神们无私的奉献,也感谢米尔的陶(威威)工的耐心指导,
这只是熟悉米尔FPGA开发板的入门也是一个硬件了解FPGA一小步,后面持续更新中。。。。