assign和always的使用
| assign 用于描述組合邏輯 always@(敏感事件列表) 用于描述時序邏輯 敏感事件 上升沿 posedge,下降沿 negedge,或電平 敏感事件列表中可以包含多個敏感事件,但不可以同時包括電平敏感事件和邊沿敏感事件,也不可以同時包括同一個信號的上升沿和下降沿,這兩個事件可以合并為一個電平敏感事件。 在新的verilog2001中“,”和“or”都可以用來分割敏感事件了,可以用“*”代表所有輸入信號,這可以防止遺漏。 合法的寫法: always@ * (或always @ (*)、always) always@ (posedge clk1,negedge clk2) always@ (a or b) `timescale 100ns/100ns //定義仿真基本周期為100ns always #1 clk=~clk //#1代表一個仿真周期即100ns ? 所有的assign 和 always 塊都是并行發(fā)生的! 并行塊、順序塊將要并行執(zhí)行的語句寫在 fork //語句并行執(zhí)行 join 將要順序執(zhí)行的語句寫在 begin //語句順序執(zhí)行 end 并行塊和順序塊都可以寫在 initial 或 always@ 之后,也就是說寫在塊中的語句是時序邏輯的 對assign之后不能加塊,實現(xiàn)組合邏輯只能用逐句的使用assign 組合邏輯如果不考慮門的延時的話當(dāng)然可以理解為瞬時執(zhí)行的,因此沒有并行和順序之分,并行和順序是針對時序邏輯來說的。值得注意的是所有的時序塊都是并行執(zhí)行的。initial塊只在信號進入模塊后執(zhí)行1次而always塊是由敏感事件作為中斷來觸發(fā)執(zhí)行的。
|
轉(zhuǎn)載于:https://www.cnblogs.com/donlxn/archive/2011/12/14/2287026.html
總結(jié)
以上是生活随笔為你收集整理的assign和always的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [wiki]红黑树
- 下一篇: SQL查询效率注意事项