|
第一次從寫Verilog HDL 到仿真,感覺(jué)Quartus ii有點(diǎn)難用,挺麻煩的,關(guān)于那些亂七八糟的設(shè)置也是不懂。
第一次寫的是老師布置的有限狀態(tài)機(jī)實(shí)現(xiàn)序列檢測(cè)器。參考了好多Verilog HDL其它模塊的程序才把整個(gè)程序?qū)懗鰜?lái),因?yàn)閷?duì)基本語(yǔ)法還是很不適應(yīng),雖然和C很像,但有很多不同,特別是并發(fā),搞得自己在具體程序中很難轉(zhuǎn)變概念。
寫出來(lái)的程序仿真不對(duì),在序列末的前一位就輸出值了,這肯定是不正常的,到程序里看感覺(jué)是最后一個(gè)狀態(tài)的處理出了問(wèn)題
always@(current_state or SeqIn)
begin
case(current_state)
S3: if(SeqIn==67) //'C'
begin
Detected=1'b1;
end
default:
begin
Detected=1'b0;
end
endcase
end
但是怎么檢查都發(fā)現(xiàn)不了問(wèn)題。更改了條件語(yǔ)句的值發(fā)現(xiàn)還是有問(wèn)題,證明IF語(yǔ)句根本就沒(méi)執(zhí)行,可是Detected卻被賦值了,想了半天可能是沒(méi)羅列所有情況的原因,于是加入一句
else
begin
Detected=1'b0;
end
問(wèn)題解決了。應(yīng)該就是老師總說(shuō)的防止觸發(fā)器的產(chǎn)生,但具體怎么造成錯(cuò)誤的還是沒(méi)搞懂,以后得好好研究下。
另外一個(gè)感覺(jué),這個(gè)EDA編譯、仿真太慢了。這個(gè)程序出來(lái)也才用14個(gè)LE,和其他很少的資源,編譯也需要好一會(huì)兒,尤其是調(diào)試極不方便,改一個(gè)值就要編譯等上好一會(huì)兒。
在功能仿真的時(shí)候,老是提示沒(méi)產(chǎn)生功能仿真網(wǎng)表,然后要打開仿真工具產(chǎn)生,也不知道為什么。
開始學(xué)習(xí)的時(shí)候覺(jué)得應(yīng)該不是很難,現(xiàn)在的情況讓我很是憂慮啊。得好好努力了。
|
|