- 註冊時間
- 2006-10-8
- 最後登錄
- 2019-6-20
- 主題
- 查看
- 積分
- 1306
- 閱讀權限
- 110
- 文章
- 1388
- 相冊
- 0
- 日誌
- 1
   
狀態︰
離線
|
本帖最後由 mm117777 於 2012-6-30 12:17 編輯
module mux(f, a, b, sel); // 模組
output f;
input a, b, sel; // 參數型態
and g1(f1, a, nsel), g2(f2, b, sel);
or g3(f, f1, f2);
not g4(nsel, sel); // 模組可以使用基本元件或其他模組
endmodule
Always 型的寫法
module mux(f, a, b, sel);
output f;
input a, b, sel;
reg f; // reg 型態會記住某些值,直到被某個 assign 指定改變為止
always @(a or b or sel) // 當任何變數改變的時候,會執行內部區塊
if (sel) f = a; // Always 內部的區塊採用 imperative 程式語言的寫法。
else f = b;
endmodule
Assign 型的寫法
module mux(f, a, b, sel);
output f;
input a, b, sel;
assign f = sel ? a : b; // 右邊的任何改變都會造成左邊重新賦值
endmodule
真值表寫法
primitive mux(f, a, b, sel); // 真值表型的寫法,其型態必須是 primitive。
output f;
input a, b, sel;
table
1?0 : 1; // 可以使用 ? 代表 don't care
0?0 : 0;
?11 : 1;
?01 : 0;
11? : 1; // 當 a,b 對的時候,sel 會被忽略
00? : 0;
endtable
endprimitive
|
|