首页 > 代码库 > Verilog分频器

Verilog分频器

verilog设计进阶

时间:2014年5月6日星期二

 

主要收获:

1.自己动手写了第一个verilog程序。

 

题目:

利用10M的时钟,设计一个单周期形状如下的周期波形。

 

思考:

最开始的想法是:定义两个计数器进行计数,两个使能标志位分别控制这两个变量。但是这样逻辑又太复杂,网上搜了搜,还是定义一个计数器比较好。

 

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;

       end

      

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;

       end

      

       fdivision u1(clk, rst, clk_out);

 

endmodule

 

仿真波形图: