ブロックalways
ブロックとブロックalways @*
の違いはありますか?Verilog: `always`と` always @ * 'の相違点
3
A
答えて
3
always @*
は、always
ブロックの1つである。組合せ論理を推論するために使用されます。
always @(posedge clock)
は、順次ロジックを推論するために使用されます。
詳細については、IEEE標準(1800-2009など)を参照してください。
0
これらは異なるです!私は彼らが同じだと思っていました。そうではありません。
常に@(*)は何も意味しませんが、コンパイラは自動的にそれを記入します。それが組み合わせロジックの場合は、それを使用してください!だからあなたは何も忘れずに機能を失敗させません。
常には、常に文章が実行されることを意味します。遅延がなければ、システムはを停止し、シミュレーション結果は得られません!とてもうるさい。
たとえば、FSMの次の状態ロジック部分では、常に@(*)ではなく常に使用すると動作しません。
以下は、私が書いた簡単なシーケンス検出器です。あなたが望むなら、それを実行するためにtbを書くことができます。
`タイムスケール1nsの/ 10PS
モジュールseq_detect3(//順序10110 を検出し、//シーケンス入力 CLK、//クロックの正エッジが RST、//リセット、アクティブハイ同期 一致をtrigged //アウトマッチ、一致する "1" );
input in, clk, rst;
output match;
wire in, clk, rst;
reg match;
reg [5:0] state, next_state;
parameter IDLE = 6'b000001; //no bit matched
parameter STATE1 = 6'b000010; //first 1 bit matched
parameter STATE2 = 6'b000100; //first 2 bits matched
parameter STATE3 = 6'b001000; //first 3 bits matched
parameter STATE4 = 6'b010000; //first 4 bits matched
parameter STATE5 = 6'b100000; //all 5 bits matched
//-----------S.M. & O.F.L.-----------
always @ (posedge clk) begin
if(rst) begin
state <= IDLE;
match <= #1 0;
end
else begin
state <= next_state;
if(state == STATE5) begin
match <= #1 1;
end
else begin
match <= #1 0;
end
end
end
//-----------next state logic-----------
always @(*) begin //Can not replaced by always here!!
case(state)
IDLE: if(in) next_state = STATE1; //0 keep, 1 next
else next_state = IDLE;
STATE1: if(in) next_state = STATE1; //0 next, 1 keep
else next_state = STATE2;
STATE2: if(in) next_state = STATE3; //0 idle, 1 next
else next_state = IDLE;
STATE3: if(in) next_state = STATE4; //0 s2, 1 next
else next_state = STATE2;
STATE4: if(in) next_state = STATE1; //0 next, 1 s1
else next_state = STATE5;
STATE5: if(in) next_state = STATE3; //0 idle, 1 s3
else next_state = IDLE;
default: next_state = IDLE;
endcase
end
ENDMODULE
関連する問題
- 1. シミュレーションとVerilog alwaysブロックの合成の差異
- 2. Delphi - RoundTo - always down
- 3. Verilog alwaysブロックで 'generate'を使用する際の問題
- 4. STE ChangeTracker.OriginalValues always Empty
- 5. FileUpload.HasFile()always null
- 6. Verilogゲート定義の相違点
- 7. Verilogの "always" definitonでの入力値の使い方
- 8. mongodb insert()always successful
- 9. else if elif always yeilds間違った値
- 10. foreverとalwaysステートメントの使用
- 11. Jquery always functions
- 12. tf.train.get_checkpoint_state alwaysなし
- 13. carrierwave content_type always nil
- 14. jQuery serialize()always empty
- 15. wp_nav_menu()always null
- 16. c#MainWindowHandle always zero
- 17. Android canGoBack always false
- 18. browser position.address.postalCode always null
- 19. ファブリック:TwitterSession always null
- 20. Express req.query always empty
- 21. Azureウェブサイト "Always On"
- 22. jQuery - always on top
- 23. java Scanner.hasNext always false
- 24. Firebase Auth always nil
- 25. C opendir always NULL
- 26. PhantomJS screenshot always blank
- 27. INCreateNoteIntent groupName always null
- 28. Ckeditor getSelectedElement always null
- 29. WPF:SelectedValue always null
- 30. php isUserExist always false