音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

再請(qǐng) VHDL高手進(jìn)來  (已經(jīng)縮編)

作者:hschina 欄目:技術(shù)交流
再請(qǐng) VHDL高手進(jìn)來  (已經(jīng)縮編)
有一段VHDL程序如下:
編譯后,系統(tǒng)提示這樣一個(gè)警告:
Warning: Macrocell buffer inserted after node "CPLDBLOCK:inst|SYSTEM_RD~3360"

HELP中是這么說的:
CAUSE: You turned on the Auto LOGIC Cell Insertion LOGIC option, or the Insert Additional LOGIC Cell LOGIC option, to add LOGIC cells to the design. As a result, the Quartus II SOFTWARE inserted a DUMMY macrocell buffer after the specified node, or the design has an illegal OE source.
ACTION: Turn off one of the LOGIC options.

關(guān)鍵是,最后的這句比較令人擔(dān)憂"or the design has an illegal OE source."

回憶程序剛開始寫的時(shí)候,這種警告大概有5~6個(gè),后來修改了程序后,最終剩下了一個(gè)警告,但怎么也去不掉了。

這是什么意思呢?有熟悉VHDL語言的高手幫忙給分析一下可能的原因么?就這么下載到芯片上有沒有問題呢?



相關(guān)的程序如下:


ENTITY CPLDBLOCK IS
    PORT
    (
    DB        :INOUT        STD_LOGIC_VECTOR(7 DOWNTO 0);
    IOR        :IN            STD_LOGIC;
    AB_EN    :IN            STD_LOGIC;
    ……    
     );
END CPLDBLOCK;

ARCHITECTURE MYWORK OF CPLDBLOCK IS
SIGNAL cs390             :STD_LOGIC;
SIGNAL cs391             :STD_LOGIC;
SIGNAL cs39C             :STD_LOGIC;
SIGNAL pstart            :STD_LOGIC;
SIGNAL ad1rd             :STD_LOGIC;
SIGNAL ad2rd             :STD_LOGIC;
SIGNAL ad3rd             :STD_LOGIC;
……

BEGIN
……

SYSTEM_RD:PROCESS(……)
BEGIN
    IF (IOR='0' AND AB_EN='0' AND pstart='1') THEN
        IF        (cs390='1') THEN
            DB(7 DOWNTO 0)<=ad0_result( 7 DOWNTO 0);
        ELSIF    (cs391='1') THEN
            DB(7 DOWNTO 0)<=ad0_result(11 downto 8) & "0000";
        ELSIF    (cs39C='1')    THEN
            DB(0)<=KEY0;
            DB(1)<=KEY1;
            DB(2)<=KEY2;
            DB(3)<=KEY3;
            DB(4)<=KEY4;
            DB(5)<=KEY5;
            DB(6)<='0';
            DB(7)<='0';
        ELSIF    (ad1rd='0') THEN
            DB(7 DOWNTO 0)<=ad1_result(7 DOWNTO 0);
        ELSIF    (ad2rd='0') THEN
            DB(7 DOWNTO 0)<=ad2_result(7 DOWNTO 0);
        ELSIF    (ad3rd='0') THEN
            DB(7 DOWNTO 0)<=ad3_result(7 DOWNTO 0);
        ELSE
            DB<="ZZZZZZZZ";
        END IF;
    ELSE
        DB<="ZZZZZZZZ";
    END IF;
END PROCESS;


……

END MYWORK;


* - 本貼最后修改時(shí)間:2006-6-28 16:41:28 修改者:hschina

2樓: >>參與討論
clz918
太長(zhǎng)了
 
3樓: >>參與討論
linqing171
沒有發(fā)現(xiàn)是哪句錯(cuò)誤的,太長(zhǎng)了。
你看看該加lcell的就加個(gè),多定義一個(gè)變量來緩沖一下,一般就沒有問題了。
你把兩個(gè)DB<="ZZZZZZZZ"; 去掉看看還有沒有問題。

    IF (IOR='0' AND AB_EN='0' AND pstart='1') THEN
        IF        (cs390='1') THEN
            DB(7 DOWNTO 0)<=ad0_result( 7 DOWNTO 0);
        ELSIF    (cs391='1') THEN
            DB(7 DOWNTO 0)<=ad0_result(11 downto 8) & "0000";
        ELSIF    (cs39C='1')    THEN
            DB(0)<=KEY0;
            DB(1)<=KEY1;
            DB(2)<=KEY2;
            DB(3)<=KEY3;
            DB(4)<=KEY4;
            DB(5)<=KEY5;
            DB(6)<='0';
            DB(7)<='0';
        ELSIF    (ad1rd='0') THEN
            DB(7 DOWNTO 0)<=ad1_result(7 DOWNTO 0);
        ELSIF    (ad2rd='0') THEN
            DB(7 DOWNTO 0)<=ad2_result(7 DOWNTO 0);
        ELSIF    (ad3rd='0') THEN
            DB(7 DOWNTO 0)<=ad3_result(7 DOWNTO 0);
        ELSE
            DB<="ZZZZZZZZ";
        END IF;
    ELSE
        DB<="ZZZZZZZZ";
    END IF;
為什么不修改成:
    IF not (IOR='0' AND AB_EN='0' AND pstart='1') THEN
        DB<="ZZZZZZZZ";
        elseIF        (cs390='1') THEN
            DB(7 DOWNTO 0)<=ad0_result( 7 DOWNTO 0);
        ELSIF    (cs391='1') THEN
            DB(7 DOWNTO 0)<=ad0_result(11 downto 8) & "0000";
        ELSIF    (cs39C='1')    THEN
            DB(0)<=KEY0;
            DB(1)<=KEY1;
            DB(2)<=KEY2;
            DB(3)<=KEY3;
            DB(4)<=KEY4;
            DB(5)<=KEY5;
            DB(6)<='0';
            DB(7)<='0';
        ELSIF    (ad1rd='0') THEN
            DB(7 DOWNTO 0)<=ad1_result(7 DOWNTO 0);
        ELSIF    (ad2rd='0') THEN
            DB(7 DOWNTO 0)<=ad2_result(7 DOWNTO 0);
        ELSIF    (ad3rd='0') THEN
            DB(7 DOWNTO 0)<=ad3_result(7 DOWNTO 0);
        ELSE
            DB<="ZZZZZZZZ";
        END IF;

這樣感覺邏輯上回好點(diǎn)。不過還是感覺變量少了點(diǎn),把我上面的兩個(gè)ZZZZ和一起,看看是不是編譯之后還一樣?

4樓: >>參與討論
hschina
致樓上:
你推薦的代碼,能完成預(yù)期的功能么?我原來寫的是IF嵌套,你給改成一層IF了?
那么:
……
elseIF (cs390='1') THEN
     DB(7 DOWNTO 0)<=ad0_result( 7 DOWNTO 0);
……
這句,執(zhí)行"DB(7 DOWNTO 0)<=ad0_result(6 DOWNTO 0)"的條件豈不是和IOR,AB_EN,pstart等信號(hào)都沒關(guān)系啦?

能這么改么??

5樓: >>參與討論
hschina
再給看看啊倒是!
沒人對(duì)這個(gè)感興趣么?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
關(guān)于DM642的flash燒寫
請(qǐng)問頻率到電壓的轉(zhuǎn)換芯片用什么?
請(qǐng)問OP07運(yùn)算放大器問題:
請(qǐng)教4051的問題
請(qǐng)問大家了解這樣的電子管嗎?進(jìn)來看看吧
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)