[問題] Dual edge triggered flip flop
https://hdlbits.01xz.net/wiki/Dualedge
在hdlbits上dual edge flip flop 小弟code 如下
module top_module (
input clk,
input d,
output q
);
wire invert_clk;
assign invert_clk=~clk;
always@(posedge clk or posedge invert_clk) begin
q<=d;
end
endmodule
但是得到的結果如下圖 好像是 assign q=d 不用clock 觸發
https://imgur.com/2ErzdfZ

已知解答是下列code 但是小弟不能理解為什麼上面code無法有flip flop的效果
module top_module (
input clk,
input d,
output q
);
reg q1, q2;
assign q = clk?q1:q2;
always @ (posedge clk)
begin
q1 <= d;
end
always @ (negedge clk)
begin
q2 <= d;
end
endmodule
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.18.119 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1572868466.A.CCD.html
※ 編輯: gecer (122.121.18.119 臺灣), 11/04/2019 19:56:00
→
11/04 21:35,
6年前
, 1F
11/04 21:35, 1F
→
11/04 21:47,
6年前
, 2F
11/04 21:47, 2F
→
11/04 21:48,
6年前
, 3F
11/04 21:48, 3F
module top_module (
input clk,
input d,
output reg q
);
wire invert_clk;
assign invert_clk=~clk;
always@(posedge clk or posedge invert_clk) begin
q<=d;
end
endmodule
我把q用 reg 宣告後 仍然是 https://imgur.com/2ErzdfZ

似乎只有下面的code可呈現 dual edge trigger
※ 編輯: gecer (122.121.18.119 臺灣), 11/05/2019 08:35:17
→
11/05 09:22,
6年前
, 4F
11/05 09:22, 4F
→
11/05 09:22,
6年前
, 5F
11/05 09:22, 5F
推
11/05 13:29,
6年前
, 6F
11/05 13:29, 6F
一樣的code 我用 icarus verilog 模擬 便出現 flip flop 的功能
https://imgur.com/a/E0Fcusc
跟samm3320 大大說得符合 端看tool理解code的方式
※ 編輯: gecer (122.121.18.119 臺灣), 11/05/2019 19:43:31
※ 編輯: gecer (122.121.18.119 臺灣), 11/05/2019 19:44:15
推
11/05 19:57,
6年前
, 7F
11/05 19:57, 7F
→
11/05 21:38,
6年前
, 8F
11/05 21:38, 8F
→
11/05 21:38,
6年前
, 9F
11/05 21:38, 9F