Board logo

标题: 求verilog代码 [打印本页]

作者: boyfly    时间: 2004-9-9 15:21

呵呵,这个太简单了吧,看看说肯定可以写得呀!
作者: boyfly    时间: 2004-9-9 15:24

你找一本verilog的书看一下,了解计数器就可以做出来了
作者: heihei419    时间: 2004-9-15 21:03     标题: 求verilog代码

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

由于还有4天,不完整的代码也行,给个一部分其他我自己试试琢磨琢磨。谢谢各位了。
作者: dulianweia    时间: 2004-9-15 21:03

`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




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0