Verilog延遲語句的運用

2021-08-19 15:59:42 字數 1089 閱讀 9539

**:

module full_adder(a,b,sum);

input a,b;

output reg sum;

always @(a,b) #13 sum = (a & b) ;   或者   always @(a,b) sum = #13 (a & b) ;

endmodule

注意到兩個always語句的延遲語句的位置不同,後乙個語句稱為內部指定延遲。

第乙個always語句說明在a或b變化後,先阻塞執行,延遲13ns,再根據當前的a,b的值,計算sum的值。這就導致計算得到的sum值可能與13ns之前的不一樣。

第二個always語句表示的是a或b變化後,立即計算當前的sum值,13ns後將該值賦給sum,得到的是13ns之前的值。

在相同的testbench下**

module test_fulladder;

// inputs

reg a;

reg b;

// outputs

wire sum;

// instantiate the unit under test (uut)

full_adder uut (.a(a), .b(b), .sum(sum)    );

initial begin

// initialize inputs

a = 0;

b = 0;

// wait 100 ns for global reset to finish

#10 a =1;

#11 b =1;

#11 a =0;

#25 a = 1;

// add stimulus here

endendmodule

結果如下:

第乙個always語句對應的圖

第二個always語句對應的圖

由圖可知,在21ns時刻,b變化,此時a=1,b=1,sum=a&b=1,,而第乙個圖的結果在13ns後即34ns時刻的值卻是0,第二個圖則是1,。說明第一圖是將34ns的計算結果值賦給了sum,而第二圖是將21ns的sum計算結果延遲13ns到34ns時刻再賦給sum。因此,兩種延遲結構的特點很顯而易見了。

Sql Server Alter語句 運用

在修改 sql server 表結構時,常用到 alter 語句,把一些常用的 alter 語句列舉如下。1 向表中新增字段 alter table 表名 add 列名 型別 2 刪除字段 alter table 表名 drop column 列名 3 修改表中字段型別 可以修改列的型別,是否為空 ...

MySQL Alter語句 運用

修改表名 mysql alter table student rename person 這裡的student是原名,person是修改過後的名字 用rename來重新命名,也可以使用rename to 修改欄位的資料型別 mysql alter table person modify name v...

Verilog中幾種賦值語句

在verilog中有兩種型別的賦值語句 連續賦值和過程賦值 賦值表示式由三個部分組成 左 值賦值運算子 或 和右值右值可以是任何型別的資料報括net型和register型但對連續 賦值 左值必須是net型別的資料 而過程賦值 左值必須是register型別的資料 下面將作詳細描 述1連續賦值 在in...