alphavor_jay的个人空间 https://blog.eetop.cn/?840234 [收藏] [复制] [分享] [RSS]

日志

Good Verilog Coding

已有 2036 次阅读| 2012-6-23 01:08 |个人分类:Verilog Coding

1. 50%占空比的三分频

module div3(clk, reset, clk_div3);

input clk;

input reset;

output clk_div3;

reg clk1;

reg[1:0] state;


always@(posedge clk or negedge reset)

begin

if(!reset)

         state<= 2’b00;

else

begin

case(state)

2’b00: state<= 2’b01;

2’b01: state<= 2’b11;

2’b10: state<= 2’b00;

2’b11: state<= 2’b00;

endcase

end

end


always@(negedge clk or negedge reset)

begin

if(!reset)

         clk1<= 0;

else

         clk1<= state[0];

end


assign clk_div3 = clk1 & state[0];


endmodule

=========================================================

进一步推广,如果要得到50%占空比的奇数倍(2N+1)分频,可以使用两个count, count_0使用上升沿计数,产生的clk_0占空比为N/(2N+1),count_1使用下降沿计数, 产生的clk_1占空比为N/(2N+1),然后将clk_0和clk_1进行或运算,即得到50%占空比的时钟信号。

2. 根据时序图写verilog代码,已知时钟信号clk和输入信号a,要获得如图所示的b,应该怎么编写verilog代码?

解答:将a用寄存器打一拍,然后和原来的a异或一下就出来了b这个信号了

=========================================================

将这个波形进一步推广,一个电平有效的异步信号,如果要同步到某一个时钟域,且要在电平切换时形成脉冲式的信号,可以用上面这种方式。

3. 


点赞

发表评论 评论 (1 个评论)

回复 aganzilong 2016-5-4 13:00
It's very helpful!

facelist

您需要登录后才可以评论 登录 | 注册

  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 8

    粉丝
  • 0

    好友
  • 29

    获赞
  • 52

    评论
  • 2681

    访问数
关闭

站长推荐 上一条 /3 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-11 09:28 , Processed in 0.013361 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部