找回密码
 注册
搜索
查看: 1779|回复: 5

[讨论] 如何用verilog产生如下波形?

[复制链接]
发表于 2007-11-14 11:13:48 | 显示全部楼层 |阅读模式
  

脉冲0.45us,小周期1.45us,大周期随意,可以设置为20us
下面是我写的程序,但是输出脉冲变高以后就不变了,请各位高手看看怎么回事?
module plus(rst,clkin,clkout);
input clkin,rst;
output clkout;
reg clkout;
reg [8:0]count;
always@(posedge clkin)
  begin
count<=count+1;
    if(rst)begin
      clkout<=1'b1;
      count<=1'b0;
      end
    else if(count==8)begin
      clkout<=1'b0;
      count<=count+1'b1;
      end
   else if(count==28)begin
       clkout<=1'b1;
       count<=count+1;
       end
       else if(count==37) begin
       clkout<=1'b0;
       count<=count+1;
       end
     else if(count==428) begin     //µÚ¶þ¸öÖÜÆÚΪ20΢Ãë
       clkout<=1'b1;
       count<=0;
       end
       else count<=count+1;
end
endmodule

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2007-11-16 18:04:48 | 显示全部楼层
module plus(rst,clkin,clkout);[52RD.com]
input clkin,rst;[52RD.com]
output clkout;[52RD.com]
reg clkout;[52RD.com]
reg [8:0]count;[52RD.com]
always@(posedge clkin)[52RD.com]
  begin[52RD.com]
count<=count+1;[52RD.com]//这行删掉
    if(rst)begin[52RD.com]
      clkout<=1'b1;[52RD.com]
      count<=1'b0;[52RD.com]
      end[52RD.com]
    else if(count==8)begin[52RD.com]
      clkout<=1'b0;[52RD.com]
      count<=count+1'b1;[52RD.com]
      end[52RD.com]
   else if(count==28)begin[52RD.com]
       clkout<=1'b1;[52RD.com]
       count<=count+1;[52RD.com]
       end[52RD.com]
       else if(count==37) begin[52RD.com]
       clkout<=1'b0;[52RD.com]
       count<=count+1;[52RD.com]
       end[52RD.com]
     else if(count==428) begin     //&micro;&Uacute;&para;&thorn;&cedil;&ouml;&Ouml;&Uuml;&AElig;&Uacute;&Icirc;&ordf;20&Icirc;&cent;&Atilde;&euml;[52RD.com]
       clkout<=1'b1;[52RD.com]
       count<=0;[52RD.com]
       end[52RD.com]
       else count<=count+1;[52RD.com]
end[52RD.com]
endmodule
点评回复

使用道具 举报

发表于 2008-7-14 15:36:14 | 显示全部楼层
也可以尝试用FSM来做应该更简单了
点评回复

使用道具 举报

发表于 2008-10-8 08:55:30 | 显示全部楼层
不太明白                          
点评回复

使用道具 举报

发表于 2008-10-9 12:54:40 | 显示全部楼层
看波形图是1:3分频电路吧,直接写个1:3分频电路嘛

或者用状态机,更简单,四个状态
我就喜欢用状态机去写一些信号发生器电路,清晰明了
本人只会写VHDL代码,VERILOG没写过,就不提供代码了哈
点评回复

使用道具 举报

发表于 2008-10-10 08:26:34 | 显示全部楼层
你的clkout声明称reg型,你的程序里面没见过有clkout <= 0;
我感觉不会出现低电平啊,
偶,不懂,没学过verilog~请楼下的讲解一番~
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-27 21:17 , Processed in 0.048352 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表