Verilog HDL 代碼規範 - 學習筆記

Verilog HDL 代碼規範

接口時序設計規範
模塊和模塊之間的通過模塊的接口實現關聯,因此規範的時序設計,對於程序設計
的過程,以及程序的維護,團隊之間的溝通都是非常必要的
命名規範
1頂層文件:
對象+功能+Top :video_oneline_top
2 邏輯控制文件
對象+ctr : ddr_ctr.v
3 驅動程序命名:
對象+功能+dri : lcd_dri.v、uart_rxd_dri.v
4 參數文件命名 :
對象+para :lcd_para.v
5 模塊接口命名:
文件名+u :lcd_dir lcd_dir_u
6 模塊接口命名 :
特徵名+文件名 +u: mcb_read c3_mcb_read_u
7 程序註釋: //
8 端口註釋 :
Input Video_vs_i //asdasdasd

9 信號命名:
對象+功能+(極性)+特性
10 時鐘信號:
對象+功能+特性 :
11 復位信號:
對象+功能+極性+特性
12 延遲信號:
對象+功能+特性1+特性2
13 特定功能計數器
對象+cnt
功能+cnt
對象+功能+cnt
對象+對象+cnt

14 一般計數器
Cnt+序號
15 時序同步信號:
對象+功能+特性
16 使能信號:
功能+en
對象+功能+en

三 ,Verilog 最基本語法

關鍵字:
Input : 模塊數輸入
Output: 模塊數輸出
Inout:模塊的輸入輸出雙向信號
Wire :線信號
Reg:寄存器(和線信號不同,它可以在 always 中被賦值,經常用於時序邏
輯中)

結構部分:
Module()

Endmodule
代表一個模塊,代碼寫入兩個關鍵字之中

Always@() 括號內部是敏感信號,
Always@(pasedge CLK) 敏感信號是pasedge Clk 含義: 上升沿的時候有釋放, 和可以是 negedge Clk 含義,下降沿的時候有釋放。
也可以是用“*”來表示敏感信號,表示一直處於敏感的,一般應用組合邏輯,

Assign 使用來給input 、inout,以及Wire類型的進行連續的,assign 相當於一條線,將表達式右邊的電路直接通過wire連接到左邊,左邊的信號必須是wire 、(output、inout)

Eg:
Wire a,b,y;
Assign y = a &b;

If 語句

和高級語音很像,
Begin
End
是作用範圍,類似{}

符號部分:
“;”分號:表示一句代碼的結束,
“:”冒號:用在數組,條件運算、已經case語句中,
“<=”賦值符號:非堵塞賦值, 在一個always模塊中,所有的語句一起更新;也可以表示小於或等於,可根據當前的編譯環境來判斷, 小於等於一般應用If語句中,
“=”堵塞賦值,或者給信號賦值,如果是always語句,這條語句會馬上被執行, “+,-,*,/”加 減 乘除 和C語言一樣。
“<小於”
“<=”小於等於
“>” 大於
“>=” 上都是比較。
“==” 比較
“!=”比較
“>>”
“<<”
“~”
“&”
“^”
“&&”
三目運算: a = b ? c:d
以上和C語言一樣,

“ { }” 在Verilog中表示拼接符, {a,b}:把括號內部的數字按位並在一起,

參數部分:
Parameter 定義一個符號阿德常數

預處理

Include 這個是C語言一樣的,但是這些預處理是在寫的時候前面都是帶點的“`”

數值的表示
二進制:8’ b1010_1010;// 其中“_”是容易觀察到位數,可有可無
十進制:8’ d180;
十六進制 : 8’ hAA;

堵塞賦值和非堵塞賦值
1,非堵塞賦值

這段程序裏,A 和 B 是同時被賦值的,具體是說在時鐘的上升沿來的時刻,A 和 B同時被置 1。調換 A 和 B 的上下順序,將得到相同的結果。

這段程序,與第一段程序也是完全等價的,A 和 B 在同一時刻被賦值。兩段程序綜
合出的邏輯也是完全相同的。這就是非阻塞賦值的特點,體現了 FPGA 的並行性!

2,堵塞賦值

上面這個程序是阻塞和非阻塞的混合使用,一般教材是極力反對這種寫法的。
其實只要你理解了,有的時候這種用法還能幫上大忙。只不過,不理解的話亂用會導致
時序違規。
我們這麼寫是爲了更好的理解阻塞賦值:當時鐘上升沿來臨的時刻,首
先 A 會被置 1,然後 B 寄存器再置 1。區別就是 A 和 B 不再同時置 1。A 要比 B 提前零點
幾納秒。這樣就出現了先後順序。這個過程還是在一個時鐘內完成的,但是數據到達 B
寄存器相比上面兩段程序晚了那麼零點幾納秒!
當我們的時鐘跑的比較慢的時候,比如 50M,一個週期有 20ns,那麼這麼短暫的延
時基本可以忽略不計,但是隨着設計的複雜,以及時鐘速度的提高,這樣的語句就要小
心。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章