加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ACTEL FPGA 输入口被优化

(2016-11-18 10:56:46)
分类: FPGA
贴出问题代码:
entity top_led is --实体说明输入输出
port(
        CLK : in std_logic;     --时钟输入
        RST_N : in std_logic;  --复位
        LED : out std_logic  --接灯
);
end top_led;
输入1:CLK 直接接入到PLL中分频(100MHz——1MHz)输出到clk_int
inst_PLL:PLL1 port map(POWERDOWN  => PWRDWN_int,
                            CLKA      => CLK,
                            GLA       => clk_int,
                            LOCK      => LOCK_out
                            );
输入2:RST_N(复位)
clk_in:process( RST_N,clk_int)
begin
         if RST_N='0' then 
  int_count<=(others=>'0');--计数器复位 
  elsif clk_int='1' and clk_int'event then --判断上升沿 
  int_count<=int_count+1;
 end if; 
 end process;
综合后IO报告:
http://s4/mw690/006puSeyzy76vz8BDwv33&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
显示成功! 但IO数量只有一个 通过 Desiger->IO Attribute Editor 
http://s12/mw690/006puSeyzy76vzjhRTd3b&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
确实只有一个,尝试了一下,仅仅修改实体代码:
entity top_led is --实体说明输入输出
port(
        CLK : in std_logic;     --时钟输入
        RST_N : in std_logic;  --复位
        RST_N2 : in std_logic;  --复位
        LED : out std_logic;  --接灯
        LED2:out std_logic
);
end top_led;
综合报告:
http://s1/mw690/006puSeyzy76vzz51Yc00&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
两个IO? 再次进入 管口特性编辑界面(Desiger->Attribute Editor)
http://s15/mw690/006puSeyzy76vzMgJDo1e&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />得,有两个输出IO,输入根本没理我,问了一些大神。都说,没有在逻辑中使用,就被优化了,暂不去理解什么叫在逻辑中中使用,但有两点可以确定:
1.在代码中,仅仅对该输入取反,不是在逻辑中使用(亲测)
2.procee(输入),这里仅仅将该输入作为该过程的敏感列表,页非在逻辑中使用(见代码)
好在大神给了条明路,通过Smart Desiger 设计加上 相应的buffer.
http://s8/mw690/006puSeyzy76vA85vTx87&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
如上图所示。
再次综合,如下图:
http://s2/mw690/006puSeyzy76vCRpzoZ21&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
永远的问题,永远的ERROR!得,继续研究这个错误。
Message提示:
Net "N_15" in work.top_led(rt1) create combinational loop around inverter work.top_led(rt1)-N_7_i 
http://s5/mw690/006puSeyzy76vD0P6ZK54&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />

http://s5/mw690/006puSeyzy76vD5VGeMa4&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
搞不懂这是个啥意思,出现问题不可怕,可怕的是这个问题没有官方的解决方案,错误代码:MO162.
让我歇息一下 
----------------------------------------------------------------------------休息分割线
决定研究所有的错误代码ID,看看是否能找到灵感,反正都是学习的过程。
http://s1/mw690/006puSeyzy76vEwdOvKd0&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
1.W BN137 Found combinational loop during mapping at net N_3 led_out.vhd (23)
LED_SMART.srr (68) 11:57:08 Fri Nov 18 mapperReport
组合环的出现,导致错误,组合环,我认为是:激励的结果影响了激励!无限循环!
上天是公平的,这个BN137的警告消除后,错误MO162也消失了!
仅仅修改代码,附上之前的代码
architecture LED_ARCH of LED_OUT_DRIVER is
signal LED_COUNT:std_logic_vector(3 downto 0);
    begin
        SHAN_SHUO:process(LED_CLK)
            begin
                    LED_COUNT<=LED_COUNT+1;
            end process;
     LED_OUT<=LED_COUNT(1);
end LED_ARCH;
修改后:
architecture LED_ARCH of LED_OUT_DRIVER is
signal LED_COUNT:std_logic_vector(3 downto 0);
    begin
        SHAN_SHUO:process(LED_CLK)
            begin
                if LED_CLK='0' THEN
                    LED_COUNT<=LED_COUNT+1;
                END IF;
            end process;
     LED_OUT<=LED_COUNT(1);
end LED_ARCH;
猜想:之前Process(LED_CLK)属于组合逻辑?修改后属于时序逻辑?不明白。
----------------------------------------------------------------------------------进入下一个问题,我要去看看的IO输出有几个、输入有几个、是否依然被优化了。

http://s2/mw690/006puSeyzy76vN7VgD701&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
完美!终于有三个IO口了,去IO属性编辑窗口看看
-------------------------------------------------------------------
http://s16/mw690/006puSeyzy76vNoVsxpdf&690FPGA 输入口被优化" TITLE="ACTEL FPGA 输入口被优化" />
Good guy!就等分配IO口了!
思考:
这里应该有其他方式,防止被综合掉,语句之类!
好好学习,天天向上!
不对之处,欢迎指正,交流!

0

阅读 收藏 喜欢 打印举报/Report
后一篇:Sinc函数
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有