![1d1b8295d2312c7f86445218b785f2a2.png](https://i-blog.csdnimg.cn/blog_migrate/c76bb9f887ec3115c1aebb2e4942b0d9.jpeg)
上期内容:一个异或运算引发的设计技巧(1)
![738da32681c1b4e8f9c8dfc7c21d7e56.png](https://i-blog.csdnimg.cn/blog_migrate/757879cee0546ee5550c6837f7897098.png)
上篇文章中我们提到了可以利用use_dsp属性,将异或运算映射到DSP48中。但存在的问题是如果直接将位宽设置为512,就会出现很大一部分位的异或运算仍然采用LUT实现。为此,我们想到了将如图1所示的代码模块,在顶层通过for-generate语句实例化多次。这依然存在一个问题,use_dsp属性值无法在顶层灵活修改,如果需要将异或运算通过LUT实现,就要找到底层修改,多有不便。这里,我们可以采用如下技巧。
![6d51df104fb8906b1e0b6ec7163ff993.png](https://i-blog.csdnimg.cn/blog_migrate/a7b0a1ad79e8e6bea02e91c3a26ce939.png)
图1
技巧1
:
采用条件编译 采用条件编译时,定义一个头文件macro.vh,文件内容如图2所示。同时,在m