我剛學(xué)vhdl,有幾個(gè)疑問(wèn)的地方想請(qǐng)教各位大俠,大家不吝賜教??!
1。vhdl里面有沒(méi)有類似高級(jí)語(yǔ)言或匯編語(yǔ)言里的“宏”?宏用起來(lái)好方便的說(shuō),但vhdl里好像沒(méi)看到有這個(gè)。如果我想把一段程序做成一個(gè)模塊,以后不停調(diào)用模塊該怎么辦?只有用子函數(shù)了?
3。為什么我不能用while()loop指令,編譯時(shí)總出錯(cuò),并告訴我只有用第一種循環(huán)指令可用:for xx in()loop。
2。我看別人的程序里,定時(shí)器都是自己編程實(shí)現(xiàn)的,但諸如“after 10 ns”“wait for 2 ns”又是怎么回事??jī)?nèi)部沒(méi)有定時(shí)器它怎么知道延遲10ns呢?
3。幫看看下面怎么回事?
process(a_1)
begin
if(a_1'event and a_1='1')then
a1<=a_1 after 1 us;
end if;
a1<=a_1 ;
end process;
我想實(shí)現(xiàn)的是:當(dāng)a_1變化時(shí),若是上升沿,則延遲1us,若下降沿,不需延遲。
但編譯通不過(guò),說(shuō)重復(fù)賦值?我如何來(lái)實(shí)現(xiàn)延遲???
大俠們,謝過(guò)了,幫幫我好嗎?
有誰(shuí)用過(guò)VHDL語(yǔ)言的嗎?請(qǐng)進(jìn)來(lái)看一下子:)
全部回復(fù)(4)
正序查看
倒序查看
@frex
在同一個(gè)process里,不能對(duì)同一個(gè)信號(hào)付值兩次
謝謝賜教!
再請(qǐng)問(wèn)一下:
1.為什么我的MAXPLUS II版本里,不能用while loop和generic指令(其他不能用的還沒(méi)碰上呢),哪怕是書上現(xiàn)成的例子,涉及到這幾條指令的,都告訴我無(wú)法用它。
2.“after 10 ns用于仿真,綜合后就沒(méi)用了”是不是指如果我把程序下載到CPLD器件后,信號(hào)發(fā)生的時(shí)候就沒(méi)法實(shí)現(xiàn)延遲了?
3.那我要實(shí)現(xiàn)上升沿延遲該怎么辦?有沒(méi)有空指令或等待指令,讓我定時(shí)器計(jì)數(shù)的時(shí)候不干任何事,只是等待就行。
再請(qǐng)問(wèn)一下:
1.為什么我的MAXPLUS II版本里,不能用while loop和generic指令(其他不能用的還沒(méi)碰上呢),哪怕是書上現(xiàn)成的例子,涉及到這幾條指令的,都告訴我無(wú)法用它。
2.“after 10 ns用于仿真,綜合后就沒(méi)用了”是不是指如果我把程序下載到CPLD器件后,信號(hào)發(fā)生的時(shí)候就沒(méi)法實(shí)現(xiàn)延遲了?
3.那我要實(shí)現(xiàn)上升沿延遲該怎么辦?有沒(méi)有空指令或等待指令,讓我定時(shí)器計(jì)數(shù)的時(shí)候不干任何事,只是等待就行。
0
回復(fù)