---
# System prepended metadata

title: 第三篇 在c語言中沒有的東西

---

==always敘述==  
1. 驅動某值至reg( 等號的左式必為reg，右式可為net 或 reg )
2. 行為層次的描述方式，可用於敘述組合邏輯和序向邏輯
3. 事件與事件之間需用”or”或”逗號 , ”分開
4. 當”事件”有變化時( 0→1、1→0 )，則會執行”敘述”
5. 事件中可以使用正緣觸發posedge(0→1)和負緣觸發negedge(1→0)  
6. 若寫成always @(* ) 或 always @* 代表always內任一變化即執行敘述  
![](https://hackmd.io/_uploads/SkreaGtjn.png)

==case、casex與casez敘述==  
1. expr可為定值或變數，可放連結運算子
2. 不允許expr中有x或z
3. 允許casez中的item值除了”0” “1”外，還可以使用z
4. 允許casex中的item值除了”0” “1” “z”外，還可以使用x  
![](https://hackmd.io/_uploads/BkPW6MKo2.png)  

應用  
![](https://hackmd.io/_uploads/rkg6TfFih.png)

==Blocking/Non-Blocking敘述==  
1. Blocking ( = )，具有順序性，敘述會與先後有關係 ( 順序處理 )  
2. Non-Blocking ( <= )，具有同時性，敘述與先後沒有關係 ( 平行處理 )  
![](https://hackmd.io/_uploads/B1wrTzFon.png)

應用  
![](https://hackmd.io/_uploads/H1dy0zFin.png)

(資料來源:[網路](https://hom-wang.gitbooks.io/verilog-hdl/content/Chapter_05.html))