当前位置: 代码迷 >> 嵌入开发 >> FPGA xilinx 程序调试出错,该如何解决
  详细解决方案

FPGA xilinx 程序调试出错,该如何解决

热度:511   发布时间:2016-04-25 08:34:19.0
FPGA xilinx 程序调试出错
本帖最后由 wzh212 于 2014-06-03 16:27:55 编辑
WARNING:PhysDesignRules:372 - Gated clock. Clock net rd_en is sourced by a
   combinatorial pin. This is not good design practice. Use the CE pin to
   control the loading of data into the flip-flop.




reg  rd_en;

always @(*)
begin
rd_en <= ~csn && ~rdn;
WR_RISING <= ~csn && ~wrn;
end


always @(posedge rd_en)
begin
if(rd_en == 1)
begin
case(addr[2:0])
3'b000:data_reg <= ARM_FPGA_REG0;
3'b001:data_reg <= ARM_FPGA_REG1;
3'b010:data_reg <= ARM_FPGA_REG2;
3'b011:data_reg <= ARM_FPGA_REG3;
3'b100:data_reg <= ARM_FPGA_REG4;
3'b101:data_reg <= ARM_FPGA_REG5;
3'b110:data_reg <= ARM_FPGA_REG6;
3'b111:data_reg <= ARM_FPGA_REG7;
default:;
endcase
end
end


程序用到rd_en的地方,麻烦高手指点下,非常感谢!


------解决方案--------------------
由于有以下一行:
always @(posedge rd_en)
综合工具会认为rd_en是时钟。所以有这个WARNING。假设真实时钟是clk,可以改为:
always @(posedge clk)
这样rd_en就会被综合成寄存器的CE(时钟使能)控制信号。
------解决方案--------------------
楼上正解~~~~~
  相关解决方案