天天看點

Verilog分頻器

verilog設計進階

時間:2014年5月6日星期二

主要收獲:

1.自己動手寫了第一個verilog程式。

題目:

利用10m的時鐘,設計一個單周期形狀如下的周期波形。

Verilog分頻器

思考:

最開始的想法是:定義兩個計數器進行計數,兩個使能标志位分别控制這兩個變量。但是這樣邏輯又太複雜,網上搜了搜,還是定義一個計數器比較好。

verilog程式:

modulefdivision(clk, rst, clk_out);

       input clk;

       input rst;

       output clk_out;

       reg[5:0] count;

       reg rclk_out;

       assign clk_out = rclk_out;

       always@(posedge clk or negedge rst) begin

              if(!rst) begin

                     count<=0;rclk_out<=0;

              end

              else if(count==30)

                     count<=0;

              else count<=count+1;

       end

       always@(posedge clk) begin

              if(count<=9) rclk_out<=1;

              else rclk_out<=0;

endmodule

測試檔案:

`timescale1ns/1ns

modulefdivision_test;

       reg clk, rst;

       wire clk_out;

       always #2 clk=~clk;

       initial begin

              clk=0;rst=1;

              #20 rst=0;

              #20 rst=1;

              #500 $stop;

       fdivision u1(clk, rst, clk_out);

仿真波形圖:

Verilog分頻器

繼續閱讀