【声明】纯属原创,未经允许,禁止转载。
3.5 将硬件集成设计方案转变成verilog封装形式
到此为止,对于SoC的设计是存储在.bd格式的文件中的,这种格式应该是便于配置和图形化显示,但是这种格式不能让FPGA接受,需要转变成verilog格式。
这个转换的过程称为“Create HDL Wrapper”,Wrapper字面的意思是“包装纸,书皮”。也就是加一个封装形式。
操作如下所示:
选择如图所示的选项即可。
运行完毕之后,变为:
可 以看到,在MySystem.db文件上层又封装了一个MySystem_wrapper.v的verilog文件。打开这个文件,只是一个模型定义,里 面直接实例化了一个MySystem的模块,而MySystem的实现是黑盒子,应该是已经自动后台综合成了网表,用户无法看到其具体的RTL级设计。
再看上图中的Constraints项,并没有约束文件,那么Zynq子系统使用的PS_CLK, DDR, UART (MIO[48:49]), 具体是怎么约束的呢?
3.6 SoC系统管脚绑定
点击Flow Navigator中的Synthesis下的Run Synthesis项。
系 统会开始进行综合,将Block Design转化成网表(Vivado结构下是否还叫网表有待研究),运行时间会比较长,耐心等待。综合完成后,选择Open Synthesis Design,如果错过了该入口,可以点击上图的Open Synthesis Design,从而进入Synthesis Design功能页面。
进入Synthesis Design页面后,在工具栏的下拉列表中选择I/O Planning,如下图所示。
将会进入IO管脚的配置界面,在下方的I/O Ports列表中将会显示所有的管脚信息,包括Zynq子系统固定的管脚配置。
可 以看到Block Designed中跟Zynq子系统Auto Block Automation中绑定的外接管脚DDR, FIXED 都已经出现了。还有用户自定义模块中gpio_sw中由软件Auto Connection Automation绑定的的sw_8bit也几经自动绑定了管脚约束。
而我们没有让软件自行绑定的btn_5bits也自动绑定了,而且还是对的。真是奇怪了。
打开FIXED_ID菜单,可以看到Zynq子系统中指明的54个MIO都已经被明确了管脚。其中[48:49]是指定的UART1的TX和RX。
根据原理图,配置是正确的,也不知道修改Block Design中UART1的MIO管脚对应关系,Vivado是否会自动修改FIXED_MIO的管脚约束,这个有待进一步验证。
【注意】相似I/O Port页面这些管脚约束是不可修改的,但在IO Port Properties页面是可以修改的。除非对系统结构特别明白,否则建议不要这样做。
从上图可以看到针对Zynq子系统的PS_CLK和RST管脚具体绑定的物理管脚,对照原理图,也是正确的,如下图所示,但是对于PS_CLK管脚的IO口,原理图给的参考电压是3.3V,而约束配置默认的是1.8V是否会有问题??有待研究。
DDR的结构类似,也可以看到,这里就不再分析。
如果对于管脚的绑定,全部采用软件默认的配置结果,系统中是不会产生约束文件的。
这里修改一个btn_5bits的管脚绑定顺序。
此时,工具栏的保存按钮被激活。
点击之后,弹出如下对话框。
点击OK之后,显示如下对话框。
因为现在系统中没有约束文件,因此点击Update按钮软件也会提示你新建一个约束文件,显示的操作界面如下:
在这种方法下,创建的约束文件会保存在Constrs_1的约束集下。
【未完待续】。。。
文章评论(0条评论)
登录后参与讨论