打印

在线求解

[复制链接]
1627|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ljl86400|  楼主 | 2011-6-1 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ljl86400|  楼主 | 2011-6-1 22:33 | 只看该作者
监视时钟的上升沿,和clr的下降沿

如果时钟信号高电平  寄存器q=0

如果是低电平
检查q是否等于寄存器预置数 6‘h32
如果是  则将q置零
如果不是  q自加1

是不是这样???初学者  各位帮我看看程序是不是错的,错在哪里啊
谢谢啦

使用特权

评论回复
板凳
ljl86400|  楼主 | 2011-6-1 22:35 | 只看该作者
是不是这样一直没法计数啊,因为时钟高电平 q=0
而计数就是数的时钟,这样计数永远都是0
无法继续
这样理解对不对啊,应该怎么改进呢??

使用特权

评论回复
地板
ljl86400|  楼主 | 2011-6-1 22:46 | 只看该作者
本帖最后由 ljl86400 于 2011-6-1 23:44 编辑

module mod6_cnt(clk,rst_n,cnt_out);

input clk;
input rst_n;
out_put[2:0] cnt_out;
reg[2:0] cnt_out;

always @ (posedge clk or negedge rst_n)
begin
   if(rst_n==1'b0)
        cnt_out<=3'b0;
else
   if (cnt_out==3'b101)
         cnt_out<=3'b0;
       else
         cnt_out<=cnt_out+1;
end

endmodule
-----------------------------------
这个模六的二进制计数器和上面的那个程序有什么不一样的地方???

使用特权

评论回复
5
ljl86400|  楼主 | 2011-6-2 12:08 | 只看该作者
对于四楼程序的解释:
当有“时钟上升沿”或者是“复位下降沿”出现时,判断复位的电平高低
是否“复位”低电平,是则为“计数器”置零
若“复位”高电平,继续判断“计数寄存器”内的数据是否大于101,二进制数,也就是“5”
如果是,则将寄存器清零
如果不是,则寄存器自加“1”

使用特权

评论回复
6
ljl86400|  楼主 | 2011-6-2 12:38 | 只看该作者
本帖最后由 ljl86400 于 2011-6-2 13:11 编辑

所以要实现一楼的五位十进制计数器只需要将
always语句模块里的程序稍加改动,如下:
module mod6_cnt(clk,rst_n,cnt_out);

input clk;
input rst_n;
out_put[5:0] cnt_out;
reg[5:0] cnt_out;

always @ (posedge clk or negedge rst_n)
begin
   if(rst_n==1'b0)
        cnt_out<=5'd0;
else
   if (cnt_out==6'd50)
         cnt_out<=6'd0;
       else
         cnt_out<=cnt_out+1;
end

endmodule
----------------------------------------------
一个位宽为6,进制为 十进制,计数50 的新的计数器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

0

粉丝