【Lattice FPGA 开发】Diamond在线调试Reveal逻辑乱跳的解决

在Vivado中在always块中写逻辑时如果出现always块中的异步复位敏感词在块内部未使用的情况,如下例的rst:

复制代码
always @(posedge clk or posedge rst)
begin 	
	if(~tx_sense_flag)
		o_rd_adr <= 'd1;
    else if((o_rd_adr == 'd94) & (bit_cnt == 'd7))
        o_rd_adr <= 'd1;
	else if(bit_clk_en)
		o_rd_adr <= o_rd_adr + 7'd1;
    else
        o_rd_adr <= o_rd_adr;
end 

综合时出现[Synth 8-91] ambiguous clock in event control。

解决办法是在begin end 中加入复位初始化条件,或者删除@()中的 or posedge rst即可。

而在Diamond中对该情况不会进行报错。

这导致在调试时遇到Reveal抓取的逻辑与预期的并不相符,出现不规律乱跳的情况,如下图:

o_rd_adr应该在bit_clk_en为1时自加一,其他情况下保持不变。而实际中o_rd_adr并不是预期的效果。

解决办法:删除掉or posedge rst(由于块中未使用rst故改成同步复位),再进行调试即正确。

相关推荐
爱学习的张哥1 小时前
UDP--DDR--SFP,FPGA实现之指令监测模块实现
fpga开发·udp·指令
碎碎思4 小时前
FPGA+ESP32 = GameBoy 是你的童年吗?
fpga开发
搬砖的小码农_Sky5 小时前
FPGA:XILINX FPGA产品线以及器件选型建议
嵌入式硬件·fpga开发·硬件架构·硬件工程
MVP-curry-萌神5 小时前
FPGA图像处理(六)------ 图像腐蚀and图像膨胀
图像处理·人工智能·fpga开发
&Cheems6 小时前
ZYNQ笔记(二十):Clocking Wizard 动态配置
笔记·fpga开发
怪小庄吖6 小时前
7系列 之 I/O标准和终端技术
经验分享·笔记·fpga开发·硬件架构·硬件工程·xilinx 7系列 fpga·i/o标准和终端技术
爱学习的张哥6 小时前
专栏项目框架介绍
git·fpga开发·udp·ddr·gt收发器
南山维拉16 小时前
【AXI总线专题】AXI-FULL-Master
fpga开发·zynq·axi-full
矿渣渣17 小时前
ZYNQ处理器在发热后功耗增加的原因分析及解决方案
嵌入式硬件·fpga开发·zynq