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