数字逻辑实验时遇到的问题
前言
你好!这是我第一次写博客,主要目的是留下一点作为学习笔记一样的东西,以后回过头来看看,能捡起以前学习新技术时遇到的各种问题。内容完全是想到哪写到哪,可能会很简陋。里面的总结全靠个人经验理解,可能会有很多错误,希望各位网友适当参考,不能全信。
关于报错[Synth 8-91] ambiguous clock in event control
这个报错是因为只能在一个if-else语句里面对一个变量赋值,如果在两个if语句里对一个变量赋值,就会出现这个错误。仔细想想也确实搜索这样:verilog是并行逻辑,如果两个if都成立,给一个信号赋了不同的值,那么信号该听谁的呢?
always @ (posedge clk or negedge rst_n )begin
if(!rst_n) begin cnt<=25'd0;inc<=0; end
if(button) begin cnt<=0; inc<=1; end
if(cnt_inc) cnt<=cnt+1;
if(cnt_end) cnt<=25'd0;`
这里多个if语句都对cnt赋值,导致综合时报错。
always @ (posedge clk or negedge rst_n )begin
if(!rst_n) begin cnt<=25'd0;inc<=0; end
else if(button) begin cnt<=0; inc<=1; end
else if(cnt_inc) cnt<=cnt+1;
else if(cnt_end) cnt<=25'd0;
关于赋初值的问题
给变量赋初值最好写在rst语句里面,我也不知道为什么,因为别人告诉我最好不要写在外面,也不要用initial。
尾记
先就这样,主要是熟悉一下这个博客要怎么写,以后想到问题再加,拜拜!再拜!
版权声明:本文为qq_51134359原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。