看板 Electronics 關於我們 聯絡資訊
想請問一下高手 小弟新手試寫verilog FPGA板的震盪器頻率為50MHz 問題一:我寫了一個除10萬的除頻器 照理說週期應該是要2ms 我給一個方波去看 發現週期是4ms請問下是我的程式寫錯了嗎 問題二:我試寫一個三角波 除10萬的除頻器跑不出圖形 改成除500的除頻器 就可以跑出 圖形可是圖形有斷層請問一下原因在哪 麻煩各位高手解答 以下是我的verilog程式 https://i.imgur.com/L93Mq5F.jpg https://i.imgur.com/ac9xLpb.jpg https://i.imgur.com/mSRyPp0.jpg https://i.imgur.com/R9iQUom.jpg module handsome(clk,rst,CS,RW,data,AB,cnt,dir,o_clk); input clk,rst; output reg RW; output reg CS; output reg AB='b0; output reg [11:0]data; output reg[3:0]cnt;//計數器選case output reg [1:0]dir; //1往上 0往下 output reg o_clk;//除頻後的clock reg[20:0]cout;//除頻用的計數器 reg[3:0]a; always@(posedge clk or negedge rst) begin if(!rst)cnt<='d0; else if(cnt==5)cnt<='d0; else cnt<=cnt+1; end always@(posedge o_clk)//三角波 begin if(rst==0) begin data<=0; dir<='d1; end if(dir==0) begin if(data>1000) begin dir<='d0; data<=data-1; end else begin dir<='d1; data<=data+1; end end else begin if(data<4000) begin dir<='d1; data<=data+1; end else begin dir<='d0; data<=data-1; end end end always@(posedge clk or negedge rst) begin if(!rst) begin RW<=1; CS<=1; end case(cnt) 'd0: begin RW<=1; CS<=1; end 'd1://read begin RW<=0; CS<=1; end 'd2://load begin RW<=0; CS<=0; end /*'d3://read begin RW<=0; CS<=1; end 'd4: begin RW<=1; CS<=1; end 'd5: begin RW<=1; CS<=0; end 'd6: begin RW<=1; CS<=1; end 'd7://read begin RW<=0; CS<=1; end */ endcase end always@(posedge clk or negedge rst) begin if (!rst) cout <= 0; else if (cout == 99999) // 0 ~ 99999 cout <= 0; else cout <= cout + 1; end always@(posedge clk or negedge rst) begin if (!rst) o_clk <= 0; else if (cout < 50000) // 0 ~ 49999 o_clk = 0; else // 50000 ~ 99999 o_clk = 1; end always@(posedge o_clk or negedge rst) begin if(!rst)a<='d0; else if(a==1)a<='d0; else a<=a+1; end always@(posedge o_clk or negedge rst ) //方波 begin if(!rst)data<='d0; else if(a==1)data<=4000; else data<=100; end endmodule -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.76.222.60 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1639991908.A.AF3.html
god145145: 用別人的程式確認過板子沒問題了嗎? 12/20 20:52
Jasonnnnn: 還沒試過欸 請問一下我的寫法沒有錯嗎~ 12/20 22:17
mmonkeyboyy: 你把 DAC 前的數字拿出來看不就得了@_@ 12/21 01:55
mmonkeyboyy: 你的寫法有沒有錯 = =" 拿個simulator 跑一下啊 12/21 01:56
Jasonnnnn: 我那個simulator 到一半都會寫error 跑不出結果QQ 12/21 13:18
mmonkeyboyy: 那你就是有出錯了啊 不然這樣 你到edaplayground 12/22 02:09
mmonkeyboyy: 跑一下 然後把link 貼過來大家幫你看一下 12/22 02:09
mmonkeyboyy: 你要是code就錯了....後面都不用提了啊 = =" 12/22 02:09
mmonkeyboyy: 要解這種東西 要先code 對 simu對 板子吃 上板對 12/22 02:10
mmonkeyboyy: 大概有這幾個分析的階段 你要一個一個來啊XD 12/22 02:11
mmonkeyboyy: 如果你覺得還吃不下 也可以verilator 12/22 02:11
Jasonnnnn: 了解 感謝高手 晚點去學校試試看再貼上來 順帶一提 DAC 12/22 10:41
Jasonnnnn: 如果輸出有毛刺是什麼問題 本身FPGA板輸出的5V 3.3V好 12/22 10:41
Jasonnnnn: 像就有毛刺了QQ 12/22 10:41
mmonkeyboyy: 要看是一直出現還是跳著出現 還是只出幾次 12/22 11:09
mmonkeyboyy: 通常是電源問題 (不一定是外部 內部也是) 12/22 11:10
mmonkeyboyy: 你外面可以接個負載再看情況 12/22 11:10
mmonkeyboyy: 最差情況加個lpf也可以 12/22 11:10
mmonkeyboyy: dac有毛刺這問題很常見 但要理解原因不容易 12/22 11:11
Jasonnnnn: 我同學的一直出現 我的倒是還好 感覺是電源問題 12/22 15:15