首页 > 编程知识 正文

verilog调用ip核,vivado生成ip核

时间:2023-05-04 00:25:41 阅读:137415 作者:791

要添加自定义乘法IP核,必须在sources中单击鼠标右键,然后在Add Directories中添加

添加文件夹后,如下图所示。

测试将代码连接到主模块的端口的初学者容易出错

输入端口:从模块内部看,输入端口必须为线网数据类型,从模块外部看,输入端口可以连接到线网或reg数据类型的变量。

输出端口:从模块内部看,输出端口可以是线网或reg数据类型,从模块外部看,输出必须连接到线网类型的变量,不能连接到reg类型的变量。

(125条消息([初学者Verilog笔记]模块输入/输出_qq_34670678博客-CSDN博客https://blog.csdn.net/QQ _ 34670678/article/dette )

我的错误是某个英语“:”被错误地写在了中文的“:”里

(125条信息) Modelsim出现Syntax error,unexpected non-printable character错误_天津大学神经网络方向-研究生博客-CSDN博客3359 blog .

观察下一个模拟的顶层模块和测试模块是否正确

以下部分参考赛灵思IP除法器官方文档 《pg151-div-gen》

除法器IP LutMult

鼠标左键为Run

鼠标右键为Reset

latency=8,实际为7

latency=1

从功能模拟看正确的输出

合并后的模拟也基本相同

选择latency=4

右键单击选定的div_gen_900_synth_1,然后单击" sy thesis run properties " & gt; 选择报告

选择latency=4可以获得以下资源利用率

或者

report _ utilization-hierarchical

report _ utilization-name div _ gen _ 900 _ 1

除法器IP Radix2 latency=1

latency=8

根据实际情况更改位数:

div_gen_900除法器10位除法器12位

mult_gen_32_12乘法器32位12位

模拟验证

现在,让程序接近实际,

div_gen_10_12是10位除以12位得到的结果

mult_gen_5是五倍运算

mult_gen_20是20倍的运算

mult_gen_25是25倍的运算

mult_gen_32_8是32位8位

将div_gen_10_12的除数作为乘数代入mult_gen_32_8

模拟图

结果是正确的,但是除法太费时间了,定为1

assign相当于将公式右侧的电路直接用wire (线)连接到左侧的连接,左侧的信号必须为wire型。

(125条消息) Verilog赋值语句_FireBird的列-CSDN博客_verilog赋值https://blog.csdn.net/first lai/article/details/52712042

的赋值方式reg [9:0] set_div; always @ (negedgeresetorposedgeclkout ) Beginset_div=10 ) D900; 两点: Array信号必须标明维数,set_div值必须在always块赋值,不能直接用“=”在always语句块之外赋值。

在顶层模块内部用reg赋值,可以正确进行功能模拟

除法器看似马上生效,但输入数据分别在下降沿和上升沿更新,均在上升沿的后半周期左右完成除法器的除法运算。

风险一,这里保持始终较高的向除法器输入有效的信号,由于处理未被细分,因此可能存在风险。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。