您的位置:首页 > 其它

verilog写的三分频

2014-02-25 16:42 399 查看
笔试的时候有一道题目要求设计三分频电路,晕,想了半天想不出来,回到宿舍里才动手写了出来,如下:

其实3分频电路有很多种方法,这里选用其中一种:先求出两个占空比为1/3的频率波形,注意分别为上升沿触发和下降沿触发,最后两个信号波形进行或运算,代码如下:

module san(

 input clk,

 input rst,

 output clk_3

);

reg [1:0]cnt;

reg [1:0]cnt1;

reg clk1;

reg clk2;

always@(posedge clk or negedge rst)

if(!rst)  begin cnt<=2'b00;end

else if(cnt==2'b10) cnt<=2'b00;

else cnt<=cnt+2'b01;

always@(negedge clk or negedge rst)

if(!rst) begin cnt1<=2'd0;end

else if(cnt1==2'b10) cnt1<=2'b00;

else cnt1<=cnt1+2'b01;

always@(posedge clk or negedge rst)

if(!rst) clk1<=1'b1;

else if(cnt==2'b00||cnt==2'b10) clk1=~clk1;

else clk1<=clk1;

always@(negedge clk or negedge rst)

if(!rst)  clk2<=1'b1;

else if(cnt1==2'b00||cnt1==2'b10) clk2<=~clk2;

else clk2<=clk2;

assign clk_3=clk1|clk2;

endmodule

 

功能仿真波形图:



 

时序仿真波形图:



 

写程序的时候有些需要注意的地方:1、不要在不同的always块中对同一个变量进行赋值操作;

                                                                2、注意在哪个计数器状态进行时钟的翻转。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: