求大神帮忙写个verilog HDL代码 设计一个具有异步清零功能的同步计数器
设计一个具有异步清零功能的同步计数器,要求计数器从1,2,3....计到12,1,2....不断循环。上电后计数器其初始状态为12,然后整计数从12,1,2....12,...
设计一个具有异步清零功能的同步计数器,要求计数器从1,2,3....计到12,1,2....不断循环。上电后计数器其初始状态为12,然后整计数从12,1,2....12,1不断循环,当有异步清零信号时,计数器被清零,在清零信号撤去后,从12开始计数。给出verilog HDL代码
展开
3个回答
展开全部
`timescale 1ns / 1ps
module top(
input clk,
input rst_n,
output reg [3:0] cnt
);
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
cnt<=0;
else if(cnt==0)
cnt<=12;
else if(cnt>=12)
cnt<=1;
else
cnt<=cnt+1;
end
endmodule
代码贴在这格式就乱了,不过比较简单,应该不会有阅读障碍,应该是符合你的要求的。附件上也上传了.v文件!
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
module(clk, aclr,cunt);
output reg [3:0] cunt;
input clk;
input aclr;
initial begin cunt<= 4'hc; end; //初始状态设为12
always@(posedge clk or posedge aclr)//把清零信号rst列在这里面就代表异步清零
if(rst) cunt<= 4'hc;
else begin
if(cunt==4'hc) cunt<= 1;
else cunt<= cunt+ 1; end
endmodule
output reg [3:0] cunt;
input clk;
input aclr;
initial begin cunt<= 4'hc; end; //初始状态设为12
always@(posedge clk or posedge aclr)//把清零信号rst列在这里面就代表异步清零
if(rst) cunt<= 4'hc;
else begin
if(cunt==4'hc) cunt<= 1;
else cunt<= cunt+ 1; end
endmodule
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
module(clk, aclr,cnt);
output [3:0] cnt;
input clk;
input aclr;
reg [3:0] cnt;
always@(posedge clk or posedge aclr)
begin
if(aclr)
cnt[3:0] <= 4'hc;
else
begin
if(cnt[3:0] == 4'hc)
cnt[3:0] <= 4'h1;
else
cnt[3:0] <= cnt[3:0]+ 1'b1;
end
end
endmodule
output [3:0] cnt;
input clk;
input aclr;
reg [3:0] cnt;
always@(posedge clk or posedge aclr)
begin
if(aclr)
cnt[3:0] <= 4'hc;
else
begin
if(cnt[3:0] == 4'hc)
cnt[3:0] <= 4'h1;
else
cnt[3:0] <= cnt[3:0]+ 1'b1;
end
end
endmodule
追问
请问下 你这个和下面的答案 哪个比较好啊?
追答
上面的那位同学写错了一些,比如rst信号没有定义,代码不规范等,思想都是一样的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询