Verilog學習心得(一)
?
作為一個萌新,第一次讓我學習Verilog我是拒絕的,連數電都沒有學習過學Verilog真是一種折磨...不過自己選擇的路不管怎麽樣都要走下去.
硬件描述語言HDL(Hardware Description Language)是一種用文本形式描述數字電路和設計數字邏輯系統的語言.而Verilog HDL作為一種IEEE標準化的語言,正是我所學的對象.
Verilog和C的風格很類似,反正比VHDL容易多了2333.
表1 C語言與Verilog相對應的關鍵字與控制結構表
C |
Verilog |
sub-function |
module、function、task |
if-then-else |
if-then-else |
case |
case |
{,} |
begin、end |
for |
for |
while |
while |
break |
disable |
define |
define |
int |
int |
printf |
monitor、display、strobe |
表2 C語言與Verilog對應運算符表
C |
Verilog |
功 能 |
* |
* |
乘 |
/ |
/ |
除 |
+ |
+ |
加 |
- |
- |
減 |
% |
% |
取模 |
! |
! |
反邏輯 |
&& |
&& |
邏輯與 |
|| |
|| |
邏輯或 |
> |
> |
大於 |
< |
< |
小於 |
續表
C |
Verilog |
功 能 |
>= |
>= |
大於等於 |
<= |
<= |
小於等於 |
== |
== |
等於 |
!= |
!= |
不等於 |
~ |
~ |
位反相 |
& |
& |
按位邏輯與 |
| |
| |
按位邏輯或 |
^ |
^ |
按位邏輯異或 |
~^ |
~^ |
按位邏輯同或 |
>> |
>> |
右移 |
<< |
<< |
左移 |
?: |
?: |
相當於if-else |
實際上,Verilog語言與C語言最大的不同在於,C是順序執行語句,Verilog HDL程序是並行執行語句.這應在設計時充分考慮.另外,Verilog語言可以和C語言搭配使用.
Verilog程序的基本設計單元是模塊(module)
input 為輸入端口,output為輸出端口.
每個Verilog程序包括四個部分:模塊聲明,I/O說明,信號類型說明和邏輯功能描述.
1. 模塊聲明:
module 模塊名(口1,口2,口3,.......);
模塊結束關鍵字:endmodule.
2. I/O說明(三種形式)
(1) 輸入口
input 端口名1,端口名2,.....,端口名N; //(共有N個輸入口)
(2)輸出口
output 端口名1,端口名2,.....,端口名N; //(共有N個輸出口)
(3)輸入輸出口
inout 端口名1,端口名2,.....,端口名N; //(共有N個輸入輸出口)
I/O說明也可以寫在端口聲明語句中.其格式如下:
module module_name(input port1,input port2,...,output port1,output port2,...,inout port1,inout port2,...);
3.信號類型說明
默認為wire(網線)類型.
4.邏輯功能描述
(1)用assign聲明例句,一般給wire類型賦值
(2)用元件例化
(3)用always塊
always塊既可以描述組合邏輯,又可描述時序邏輯
模塊雖然是並行(同時)執行的,但是在always模塊內部,邏輯是按照指定的順序執行的.
Verilog學習心得(一)