[問題] Dual edge triggered flip flop

看板Electronics作者 (gecer)時間6年前 (2019/11/04 19:54), 6年前編輯推噓2(207)
留言9則, 2人參與, 6年前最新討論串1/1
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
你沒有宣告q為reg,預設是wire所以就接一起了
11/04 21:35, 1F

11/04 21:47, 6年前 , 2F
dual edge trigger物理上需要兩個dff跟一個mux實現
11/04 21:47, 2F

11/04 21:48, 6年前 , 3F
下面的code寫法會比較合理
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
主要是你的code對電路來說不知道怎麼實現,要看tool怎
11/05 09:22, 4F

11/05 09:22, 6年前 , 5F
麼理解你的code,目前看來他不知道怎麼辦就直接接起來
11/05 09:22, 5F

11/05 13:29, 6年前 , 6F
有雙向的flip-flop嗎?數位不及格
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
習慣讓code跟硬體連結,比較不會出事。
11/05 21:38, 9F
文章代碼(AID): #1Tm15opD (Electronics)