ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

FPGA程序编译后逻辑单元数为0

2019-08-16 13:02:26  阅读:527  来源: 互联网

标签:输出 顶层 FPGA clk 数为 编译 模块 input 单元


问题

FPGA代码写完后编译不报错,但是显示使用的逻辑单元数(Total logic elements)为0。当然程序也不工作。
我用的是Intel Altera FPGA,verilog语言,在Quartus下开发。

原因

顶层模块没有有效的输出。例如输出没有赋值,或者输出连接着子模块,但是子模块中出现问题。

如果没有正确地设置顶层模块的输出,则编译时优化,认为模块无输出,或者输出无需逻辑单元。
举例1:

module test
(
input clk,
input rst,
output out1,
output out2,
output out3
);

assign out1 = clk;
assign out2 = ~clk;

endmodule

out1直接将时钟信号输出,未做任何处理;out2将时钟信号反相输出,只需要一个非门,不需要逻辑单元;而out3没有任何处理。
因此上述代码编译得到的逻辑单元数为0。

举例2:

module test
(
input clk,
input rst,
input [3:0] data,
output out
);

reg [3:0] store [7:0];
reg [3:0] k;

always @ (posedge clk or negedge rst)
begin
    if (!rst)
        k <= 1'b0;
    else
    begin
        store[k] <= data;
        if (k == 4'd7)
            k <= 0;
        else
            k <= k + 1'b1;
    end
end

endmodule

看上去代码实现了某种功能,肯定要使用逻辑单元了吧?
但是实际上,顶层模块没有实际的输出,相当于你的代码做了无用的工作,有任何结果也没往外送。所以编译完后,仍然是没有使用逻辑单元。

解决方法

检查代码,特别是与顶层模块输出相关的部分,看顶层模块是否有有效的输出。

标签:输出,顶层,FPGA,clk,数为,编译,模块,input,单元
来源: https://www.cnblogs.com/xia-weiwen/p/11363200.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有