首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

我有段程序,不能通过综合.请个为高手指教.

我有段程序,不能通过综合.请个为高手指教.

Process(reset,addr,wr) begin if (reset='1') then resetout<='1'; ad_cs<='1'; ad_address<='0'; runled<='0'; errled<='1'; comled<='0'; mdmvcc<='0'; elsif (wr'event and wr='0' and rd='1') then if (addr="10010000") then ----9000 resetout<=data(0); elsif (addr="10010100") then --9400 ad_cs<=data(0); elsif (addr="10011000") then --9800 ad_address<=data(0); elsif (addr="10100000") then --a000 runled<=data(0); elsif (addr="10100100") then --a400 errled<=data(0); elsif (addr="10101000") then --a800h comled<=data(0); elsif (addr="11000000") then --c000h rfvcc<=data(0); elsif (addr="11000100") then --c400h mdmvcc<=data(0); elsif (addr="11001000") then --c800h switch<=data(0); elsif (addr="11001100") then --cc00h enabl<=data(0); else resetout<='0'; ad_cs<='0'; ad_address<='1'; rfvcc<='1'; mdmvcc<='1'; end if; else resetout<='0'; ad_cs<='1'; ad_address<='0'; rfvcc<='1'; mdmvcc<='1'; end if; end if; end Process; 问题出在红色的这部分,去掉他就能综合

[此贴子已经被作者于2005-6-15 0:10:12编辑过]

你好像倒数第二行多加了一个end if;   ,一个就够了吧!
我没用过vhdl,不过看你的程序
           if ()
           elseif()
           else  
                endif
之后怎么会还有else呢,应该没有这样写程序的吧
我对别人要求很少,只求自己做到最好; 我很少让别人失望,行动代表我的形象。
是多了一个END IF,但去掉也不行。
问题不在红色的部分,而在第一行process(reset,addr,wr),没必要也不应该把addr列为触发项。把它去掉试试。
返回列表