首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求verilog代码

呵呵,这个太简单了吧,看看说肯定可以写得呀!
我是天堂的使者,向我倾诉吧
你找一本verilog的书看一下,了解计数器就可以做出来了
我是天堂的使者,向我倾诉吧

求verilog代码

我有一个作业,题目是用verilog编写一个类似棋钟的计数器,以加计时或减计时的方式设计两个计时范围不小于59”的时钟,两个按键分别停止己方计时和开启对方计时,计时到时,提供闪烁LED提示。我们的时间是2周,以前没有学过,这次看了10天的书了,还是不会,来求一个代码先顶上。

由于还有4天,不完整的代码也行,给个一部分其他我自己试试琢磨琢磨。谢谢各位了。
`timescale 1ns/1ns module clock( clk, reset, star, stop, led, restar ); input clk; input reset; input star; input stop; input restar; output led; output [7:0] counter; reg [7:0] counter; reg led; reg [7:0] micstate; parameter IDLE = 8'h00, CNTSTAR = 8'h01, CNTEND = 8'h02, ACTIVE = 8'h04; parameter MAXCNT = 8'h40, MAXLEDCNT = 8'h20; reg [7:0] ledcnt; reg led; always@(posedge clk or posedge reset) begin if(reset == 1'[b1) begin counter <= 0; micstate <= IDLE; ledcnt <= o; led <= 0; end else begin case(micstate) IDLE: begin if(star == 1'b1) micstate <= CNTSTAR; else micstate <= IDLE; end CNTSTAR: begin if(stop == 1'b1) micstate <= CNTEND; else if(counter >= MAXCNT) mimcstate <= ACTIVE; else begin counter <= counter + 1; micstate <= CNTSTAR; end end CNTEND: micstate <= IDLE; ACTIVE: begin if(restar) begin micstate <= IDLE; end else if(ledcnt >=MAXLEDCNT) begin ledcnt <= 0; led <= 1'b1; end else begin ledcnt <= ledcnt + 1; led <= 1'b0; end end end end
返回列表