Verilog HDL程式設計心得(持續記錄)

tianhen791發表於2012-12-08

1. 高速設計時可把輸出直接指定為狀態的某幾位

parameter
IDLE=5'b0_000_0,
START=5'b1_001_1;
assign K2=state[4];
assign K1=state[0];
//K1,K2為輸出,直接與每個狀態高位和地位對應起來(在state增加兩位,作為輸出碼)


 2. 把狀態的變化和輸出開關的控制分開寫,採用多個always,分別控制一個輸出訊號

always @ (state or A) //state為狀態,A為輸入
         case(state)
              //
              //
          endcase

3.  自動包含所有電平敏感列表

always @ (*)



4.     接收外部時鐘和資料時採用組合邏輯,提高實時性。

assign data_out=(flag==1'b0)?data_in:2'b0; //資料接收

assign fifo_wrclk=(flag==1'b0)? ~clk_in:1'b0; //時鐘接收作為FIFO時鐘

assign fifo_wr=(flag==1'b0)? 1'b1:1'b0; //門控接收

5.     把狀態的變化和輸出開關的控制分開寫,採用多個always,分別控制一個輸出訊號。

6.     模組之間工作的協調方式:採用請求應答機制

a)       請求舉例:(滿872位元組傳送請求訊號)

assignre q1=(fifo_rcv1_rdusedw>=16'd436)?1'b1:1'b0;


b)應答舉例

(1)3小節中的循查模組的Check_over,循查完之後給資料寫入模組傳送check_over標誌;

(2)接收的資料寫入FIFO完畢之後給後續模組傳送data_ready標誌。

always @(posedge clkor negedge rst)

      if(!rst)

             data_ready<=1'b0;

      else case (state)

                    WAIT: data_ready<=1'b1;

              default:data_ready<=1'b0;

      endcase

(3)資料傳送完畢之後給循查模組傳送t_over標誌表示可以繼續響應其他的請求訊號了;

 

 

7.     分析清楚是採用電平觸發還是邊沿觸發。比如之前的應答機制採用邊沿觸發較好,如果採用電平觸發可能造成時序的混亂。

 

關於邊沿檢測的方法:

(1)宣告check_over_old;

always @ (posedge clkor negedge rst)

              if(!rst)

                     check_over_old<=1'b0;

              else

              check_over_old<=check_over;

(2)檢測 見3小節中。

8.對於相對複雜的邏輯,狀態與訊號控制分離,即採用多個always結構,分別控制狀態和每一個輸出訊號,便於分析程式和修改維護。

 

9.關於FIFO使用注意事項總結:

(1)    讀寫時鐘一直給,通過讀寫使能來控制。在讀寫時鐘的下降沿給讀寫使能訊號賦值。

---主要體現在:除錯時,讀寫時鐘停止後rdusedw和wrusedw不更新了,原因是先使能讀或者寫有效,然後才給時鐘,然後讀寫使能無效後也停止給時鐘了,導致FIFO裡面的存有的位元組數不能及時更新,對讀寫造成影響,造成滿872位元組這個條件無法判斷。

(2)   rdempty為低時,rdusedw才更新

(3)    在rdempty為高時,從FIFO裡面讀出來的前兩個數總是一樣的。

-----解決辦法:

a)                  在rdempty為低時再使用讀出的資料,這樣第一次讀出來的數會因為rdempty為高而當做無效資料跳過。

b)                 採用1中的方法讀寫時鐘一直給,只控制讀寫使能,這樣rdempty會在寫資料的時候就被更新,變成低電平,這樣讀出來的數就可以直接用。

建議:採用以上兩種方法合用,因為資料更新要延後一個時鐘週期,在使用讀取的資料時候判斷下rdempty能夠有效防止這樣的問題。

 

(4)    關於rdusedw和wrusedw更新的延後的理解,可以看做是先在每個讀寫的時鐘上升沿到來時,先更新rdusedw和wrusedw再讀寫資料。

 

 

相關文章