在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6061|回复: 12

[原创] 分频

[复制链接]
发表于 2011-4-12 21:48:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
各位大侠们好啊,初学Verilog HDL,看了好几个例子中都有类似的语句,好像是分频用的,但具体不知道是什么意思!请各位帮忙看看啊!
begin
       if(cnt==25'b1_0111_1101_0111_1000_0100_0000)
              begin
                    ..........
               end
if后面括号里起什么作用,搞了好久没有整明白
发表于 2011-4-12 21:51:03 | 显示全部楼层
你确定是分频的么?
发表于 2011-4-13 09:07:26 | 显示全部楼层
一般不是分频。。。
发表于 2011-4-13 10:18:53 | 显示全部楼层
好歹也贴段完整的啊,这样能看出来那真是神仙了
发表于 2011-4-13 10:19:06 | 显示全部楼层
如果是分频的话,那就是分频倍数,也有可能是分频倍数的1/2,不同的代码实现不一样的功能。你要多自己做做仿真,马上就能看到结果。何必来问。
发表于 2011-4-13 12:14:46 | 显示全部楼层
括号只是为了阅读的时候区分开来而已,没有也没有关系。不过为了良好的习惯,还是加上比较好。
 楼主| 发表于 2011-4-13 17:23:46 | 显示全部楼层
呵呵,对不起各位啊!太菜了,忘记附程序了,好像是延时的,但是如果是延时的,请问延时的具体时间是怎么实现的啊!也就是说具体延时多久是怎么体现的!谢谢各位!辛苦啦!
module led(sys_clk,rst_n,led);
input sys_clk,rst_n;
output [2:0] led;
reg [25:0] count;
reg [2:0] led;
reg [1:0] flag;
always @(posedge sys_clk,negedge rst_n)
if(!rst_n)
        begin
                flag <= 2'b0;
                count <= 26'b0;
        end
else
        begin
                if( count == 26'b11_1111_1111_1111_1111_1111_1110 )
                        begin
                                count <= 26'b0;
                                if(flag == 2'b10)
                                        flag <= 2'b00;
                                else
                                        flag <= flag+2'b01;
                        end
                else
                        count <= count + 1;       
           end
always @(posedge sys_clk)
begin
        case(flag)               
                      2'b00: led <= 3'b011;
                2'b01: led <= 3'b101;
                2'b10: led <= 3'b110;
                default:led <= 3'b111;
endcase
end
endmodule
 楼主| 发表于 2011-4-13 17:24:57 | 显示全部楼层
回复 5# acgoal
 楼主| 发表于 2011-4-13 17:27:02 | 显示全部楼层
回复 2# yangkaiqu


    恩,理解错了,好像是为了延时用的,如果是,延时的具体时间是怎么实现的!谢谢啊!附一个例程
module led(sys_clk,rst_n,led);
input sys_clk,rst_n;
output [2:0] led;
reg [25:0] count;
reg [2:0] led;
reg [1:0] flag;
always @(posedge sys_clk,negedge rst_n)
if(!rst_n)
begin
  flag <= 2'b0;
  count <= 26'b0;
end
else
begin
  if( count == 26'b11_1111_1111_1111_1111_1111_1110 )
   begin
    count <= 26'b0;
    if(flag == 2'b10)
     flag <= 2'b00;
    else
     flag <= flag+2'b01;
   end
  else
   count <= count + 1;
           end
always @(posedge sys_clk)
begin
case(flag)  
                      2'b00: led <= 3'b011;
  2'b01: led <= 3'b101;
  2'b10: led <= 3'b110;
  default:led <= 3'b111;
endcase
end
endmodule
 楼主| 发表于 2011-4-13 17:28:09 | 显示全部楼层
回复 4# AmoiBB


    呵呵,对不起各位啊!太菜了,忘记附程序了,好像是延时的,但是如果是延时的,请问延时的具体时间是怎么实现的啊!也就是说具体延时多久是怎么体现的!谢谢各位!辛苦啦!
module led(sys_clk,rst_n,led);
input sys_clk,rst_n;
output [2:0] led;
reg [25:0] count;
reg [2:0] led;
reg [1:0] flag;
always @(posedge sys_clk,negedge rst_n)
if(!rst_n)
begin
  flag <= 2'b0;
  count <= 26'b0;
end
else
begin
  if( count == 26'b11_1111_1111_1111_1111_1111_1110 )
   begin
    count <= 26'b0;
    if(flag == 2'b10)
     flag <= 2'b00;
    else
     flag <= flag+2'b01;
   end
  else
   count <= count + 1;
           end
always @(posedge sys_clk)
begin
case(flag)  
                      2'b00: led <= 3'b011;
  2'b01: led <= 3'b101;
  2'b10: led <= 3'b110;
  default:led <= 3'b111;
endcase
end
endmodule
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-22 22:56 , Processed in 0.034346 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表