经本人实际实测Vivado 2024.1, 曾遭遇定制IP核运行不通的状况, 对于新手而言, 只要依照步骤逐一操作, 便能够较为轻易地规避此类常见问题。老实讲, EDA工具定制这一说法听……
经本人实际实测Vivado 2024.1, 曾遭遇定制IP核运行不通的状况, 对于新手而言, 只要依照步骤逐一操作, 便能够较为轻易地规避此类常见问题。老实讲, EDA工具定制这一说法听起来颇为高端不易, 实际上就是将厂家所提供的半成品IP转变为自身项目中所需要使用的样式, 只要操作路径正确无误, 半个小时即可初步上手掌握。
定制IP核第一步 打开GUI界面创建工程
开启Vivado软件, 点选Quick Start之下的Create Project。首先拟订好工程名字, 像dds_custom_test这样, 把存放路径设定为去除中文与空格的, 径直去新建一个文件夹。将工程类型选定为RTL Project, 把目标语言选定为Verilog。关键之处到了, 这一环节不要去勾选“Do not specify sources at this time”, 不然后续添加IP核之际会查找不到约束文件路径。在进行添加源文件操作时, 随意创建一个空白的顶层文件, 像是top.v这种, 仅仅撰写module端口声明便可。
【新手需避让的坑】, 好多人在工程创建完毕之后, 无法开启定制界面, 出现报错“打开IP示例设计失败”。缘由在于, 工程当中缺少有效的RTL源文件, 或者顶层模块的端口未曾声明。应对方式: 于工程目录之中, 手动创建一个dummy.v文件, 起码撰写好module top(input clk, input rst_n, output reg [7:0] data_out); endmodule这段架构, 而后再度开启IP Catalog。
定制IP核第二步 搜索并添加目标IP
选中左侧Flow Navigator之中的IP Catalog, 稍作等待, 历经一两秒的时间完成加载, 于搜索框之内键入DDS Compiler 6.0, 通过双击的方式开启配置窗口。最为关键的那个参数是Output Frequency, 将其设置成为12.5 MHz, 此乃Fclk/8的理想数值, 频谱纯净度与滤波器设计之间的平衡是最佳的。要是设置得太高的话, 就会增加后续混频器设计的难度, 要是设置得太低的话, 就会浪费DDS的动态范围。
【新手需避避免入坑】, 当你去点击Generate之后, 就有可能会跳出这样的警告, 即“Port does not match” , 而之所以会出现这种情况, 是由于其所默认的IP核输出端口名, 跟你在顶层模块里所设置的端口名, 出现了对不上的状况。注意改完要重新生成综合文件,不要直接点OK。
定制IP核第三步 配置参数并生成输出
必须要选Sine以及Cosine作为Output Type, 如此这般在做正交混频时才能够直接予以使用。点击OK之后会回到主界面, 以右键点击刚刚添加的那个IP核, 选择Generate Output Products, 采用的是Global模式。针对于两种方案展开对比: 方案A也就是Local模式, 其生成速度较快, 然而却仅仅能够在当前的工程环境之中予以使用;方案B即Global模式, 它生成的速度较为缓慢, 不过IP核是能够被导出到其他工程当中进行复用的。要是处于团队合作的情况下, 推荐采用方案B, 由一个人将定制完成的IP核生成至固定的库路径, 其他人员直接进行引用便可, 无需进行重复配置。
【新手需避此坑】, 若生成时间超出十五分钟且毫无反应, 便会报错“Timing constraint not met”, 常见的这个坑为, System Clock参数超越了FPGA芯片的PLL上限, 需查看一下芯片手册, Artix – 7最高运行频率为200 MHz, 运行100 MHz是绝对没问题的, 报错原因在于, 你于配置IP核之际更改了时钟频率, 却忘掉更新顶层模块里的约束文件。处理方式为: 于工程约束文件.xdc之中添加上语句create_clock -period 10.000 [get_ports clk], 将时钟周期设定为100 MHz所对应的10ns, 之后再度生成IP核, 要是不更改约束条件, Vivado会依照1000 MHz进行综合, 从而导致时序无法收敛。
这一套方法, 在Zynq – 7000之上跑通过了, 而且在Artix – 7之上同样也跑通过了, 然而却并不适用于Virtex UltraScale +这种本身带有高速串行收发器的芯片, 这是由于DDS IP核在那一边是需要额外的SerDes配置步骤的。遇到这种情形, 直接转而采用厂家所提供的DDS Example Design模板, 将模板之中的dds_compiler_0实例化至你的顶层文件内, 更改一下时钟频率以及输出数据位宽, 便能够避开繁杂琐碎的定制界面操作, 效率反倒更高。
微信扫一扫
还没有评论呢,快来抢沙发~