SOGO論壇
  登入   註冊   找回密碼
查看: 2325|回覆: 2
列印 上一主題 下一主題

[問題求助] Verilog問題... [複製連結]

論壇顧問

Q^心靈導師^Q

Rank: 14Rank: 14Rank: 14Rank: 14

顧問勳章 原創及親傳圖影片高手勳章 布布達人勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2011-7-21 11:01:38 |只看該作者 |倒序瀏覽
老鳥這陣子有點時間,搞了一片FPGA實驗板來玩,從簡單的全加器、BCD計數器開始,昨天開始研究使用Verilog寫PWM產生器,在此之前就先研究一下除頻器,但也遇到了一些問題,不知道有沒有掏手可以幫一下...


功能是將25MHz除頻成1MHz

module OSC1M(clk_in,clk_1M);
  input   clk_in;
  output  clk_1M;
  wire    clk_in,clk_1M;
  reg     [4:0]count=5'h00;
  
  always @(posedge clk_in)
    begin
      count = count+1;
      clk_1M = count[4];
    end
endmodule


這段在compile時出現錯誤:Error: C:/altera/90/BY4/1MOSC.v(11): (vlog-2110) Illegal reference to net "clk_1M".
想半天還是沒搞出來...

再來,模擬時,老鳥想灌一個25MHz的固定頻率來做輸入訊號,於是寫了一段testbench:

`timescale 1ms/100ms
module SOC1M_tb;
  SOC1M dex(.clkin(clkin),.clkout(clkout));
  parameter hperi=40;
  
  initial begin
    clkin=1'b0;
  end
  
  always begin
    forever # hperi clkin=~clkin;
  end
  
endmodule


這更慘!也還搞不清楚那邊出錯...= = "
有沒有高手可以幫忙看一下...
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 5Rank: 5

數位軟體勳章

狀態︰ 離線
2
發表於 2011-7-21 21:06:34 |只看該作者
使用wire 所宣告的變數必須配合assign 敘述來
改變其值,且不能在always 區塊中作為敘述的
左值(l-value) 。
使用reg 所宣告的變數必須使用在always 區塊
中作為敘述的左值。
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您 ...

總評分: 威望 + 2   查看全部評分

Rank: 5Rank: 5

數位硬體勳章

狀態︰ 離線
3
發表於 2011-7-26 14:35:01 |只看該作者
module OSC1M(clk_in,clk_1M);
  input   clk_in;
  output  clk_1M;
  reg     [4:0] count;
  
assign  clk_1M = count[4];

always @(posedge clk_in)
   begin
      if (count < 24) count <= count + 1; //計數到24的下一個clock將count歸零,所以count會從0~24共25個clock
      else count <= 0;
   end
endmodule

《 本帖最後由 Jackchen00 於 2011-7-26 14:39 編輯 》
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-11-25 12:36

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部