Re: [問題] verilog 計時器要如何停止

看板Electronics作者 (Colin Shih)時間13年前 (2011/01/09 00:58), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《pikachu2005 (Pikachu)》之銘言: : 請問各位,我在寫ㄧ個計數器的程式~ : input:clk1 clk2 reset : output:out3 : 動作是 : 有兩個方波pulse輸入,分別是clk1跟clk2 : 當偵測reset為負緣時,就把計時的值清除為0 : reset放開時,計時器同時開始對f1與f2計數~ : 當f1值計數到5次時,就把f2值丟給out3輸出並停止計數(out3就不會在變) : 當下一次按下reset時~整個電路在重新計時~ 你的 code 懶的看 (因為太鳥) assume clk1, clk2 async. //clk1 domain always @(...) if(!rst_) f1 <= 0; else (f1_en) f1 <= f1 + 1; assign f1_en = f1 < 5; //clk2 domain always @(....) if(!rst_) out3 <= 0; else if(f2_en) out3 <= out3 + 1; // clk1, clk2 crossing always @(posedge clk1) f1_en_d <= f1_en; // clk1 sampling always @(posedge clk2) begin f1_en_syn1 <= f1_en_d; //clk2 synchronizing f1_en_syn2 <= f1_en_syn1; end assign f2_en = f1_en_syn2; 除非 clk1, clk2 為同步, 即 phase locked, 否則 clk1, clk2 非同步, 為了必免 signal crossing clocks meta-stable f1_en 必需經過 synchronizer (1b), resynch. to clk2 out3 直接計數, 若不能更動 請再改 code 另外, reset 訊號 需要 debounce, : 我寫的程式如下: : /////////////////////////////////////////////////////////////////// : module counter1(reset,clk1,clk2,out3); : input reset,clk1,clk2; : output [8:0] out3; : reg [8:0] out1; : reg [8:0] out2; : reg [8:0] out3; : reg ee; : //---------------------------------------// : always@(posedge clk1 or negedge reset) : begin : if (!reset) : out1=0; : else if(ee==1) : out1=out1+1; : end : //---------------------------------------// : always@(posedge clk2 or negedge reset) : begin : if (!reset) : out2=0; : else if (out1<5) : begin : out2=out2+1; : ee=1; : end : else : begin : ee=0; : out3=out2; : end : end : //---------------------------------------// : endmodule : /////////////////////////////////////////////////////////////////// : 但是燒錄到FPGA裡面,用LED接出來看,結果還是錯誤(輸出的值亂跳)~@@ : 因為我之前沒上過verilog,自己看書學,為了解決這問題,借了幾本verilog的書~ : 試了很久還是失敗,請問我這程式這樣寫是不是有些用法錯誤? : 另外請問,verilog裡面可以放多個always@()這個東西嗎?因為我看到範例程式 : 好像都只寫ㄧ個always@()? : 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.234.183 ※ 編輯: colinshih 來自: 122.116.234.183 (01/09 01:20)

01/09 01:52, , 1F
好嗆喔@@
01/09 01:52, 1F

01/09 04:37, , 2F
這位葛格好兇喔 >_<"""
01/09 04:37, 2F

01/09 13:56, , 3F
喔喔喔
01/09 13:56, 3F

01/09 23:56, , 4F
嗆是對 code 的恭維?
01/09 23:56, 4F
文章代碼(AID): #1DA9VJwa (Electronics)
文章代碼(AID): #1DA9VJwa (Electronics)