FPGA學習 3 Verilog語言語法

2021-09-24 10:17:03 字數 1889 閱讀 5151

系統:win10

平台:quartus ii

fpga:ep4ce6

reg cout; //定義cout為資料型別reg

reg [3:0] out; //四位reg型號

wire a,b,c,d,f; //定義為wire(連線)型

一般定義個宣告放到一起

output reg f;

output reg [3:0] out;

或者將埠宣告和定義放到一起

module aoi(input wire a,b,c,d, output wire f);

endmodule

assig 持續賦值語句定義

例1  assign f=~((a&b)|(~(c&d)));		//邏輯功能描述

例2 always @(a or b or c or d)

begin

f=~((a&b)|(~(c&d)));

endendmodule

內建門元件呼叫

and a3(out,a,b,c);	//呼叫三輸入與門

and c2(out,in1, in2); //二輸入與門

邏輯0 gnd

邏輯1 vcc

邏輯x 未知

邏輯z 高組態,外部沒有激勵訊號是乙個懸空狀態

二進位制表示如下:4』b0101表示4位二進位制數字0101;

十進位制表示如下:4』d2表示4位十進位制數字2(二進位制0010);

十六進製制表示如下:4』ha表示4位十六進製制數字a(二進位制1010),十六進製制的計數方式

為0,1,2…9,a,b,c,d,e,f,最大計數為f(f:十進位制表示為15)。

預設32位位寬, 10進製數

16』b1001_1010_1010_1001 = 16』h9aa9 //前面的下劃線為增加可讀性,編譯時會忽略

字母數字$下劃線 第乙個字元必須是字母或下劃線

區分大小寫

不建議大小寫混合使用

內部訊號建議全部小寫

訊號命名體現訊號的含義

推薦寫法: 使用下劃線進行區分

有意義的:sum cpu_addr

clk_50, clk_cpu

1 暫存器型別:

reg [31:0]delay_cnt;	//延時計數	[31:0]暫存器位寬,32位暫存器

reg key_reg; // 預設位寬1, 不定值x

reg只能在always和initial語句被賦值

時序邏輯: always有時鐘訊號,對應的是暫存器

組合邏輯: always不帶時鐘訊號,硬體連線

2 線網型別:

wire key_flag;	不能儲存值,值由驅動他的元件所決定

門 連續賦值語句,assign能夠給wire變數賦值

預設高組態z

3 引數型別:(常亮)跟define 提高**可讀性和修改方便

//parameter define 

parameter hagsg = 11'd41;

常用語表示狀態機,資料位寬, 延遲大小

算數運算子:加減乘除 %

關係運算子:

邏輯運算子: ! && ||

條件運算子:

a?b:c (如果a為真,則選擇b,否則選擇c)

位運算子:

~a 將a每一位取反

a^b 異或

移位運算子:

a>b 右移b位,注意:高位補0, 低位直接乾掉

拼接運算子:

將a和b的高四位拼接起來,作為乙個新的訊號,注意表示位置

FPGA學習筆記(二) verilog 語法講解

verilog語法介紹 數位電路中主要有組合邏輯和時序邏輯兩種電路。組合邏輯 多路選擇器 解碼器 加法器 乘法器等 時序邏輯 最基本的是計數器。verilog檔案的基本結構 乙個檔案中可以包含多個模組。方法1 模組宣告 模組名 埠列表 module mux2 a,b,sel,out,io 埠屬性定義...

FPGA學習筆記 Verilog語言的模組化設計

在進行模組化設計中,對於複雜的數字系統,我們一般採用自頂向下的設計方式。可以把系統劃分成幾個功能模組,每個功能模組再劃分成下一層的子模組 每個模組的設計對應乙個module,乙個module設計成乙個verilog程式檔案。因此,對乙個系統的頂層模組,我們採用結構化的設計,即頂層模組分別呼叫了各個功...

FPGA 學習之路 verilog學習第二天

fpga 學習之路 verilog學習第二天 今天用quartus ii 12.1的64位系統來學習,寫了最簡單1個與門語句,編譯通過了,有點小興奮。module first a,b,c input a input b output c assign c a b endmodule 雖然很簡單,萬事...