ersha4877 发表于 2010-12-19 16:14:01

一个按键,LED显示的程序问题,高手帮忙看看

`timescale 1ns/1ns


module key( clk ,rst, key,led);
input clk;
input rst;

input key;
output led;


wire hhreg;
wire llreg;

keyscan u1 (
.clk(clk),
.rst(rst),
.key1(key),
.hhreg(hhreg),
.llreg(llreg)

);

keyout u2 (
.clk(clk),
.rst(rst),
.hhreg(hhreg),
.llreg(llreg),
.led(led)
);

endmodule   




      
module keyscan ( clk ,rst,key1 ,hhreg,llreg);
      
input   clk;
input   rst;
input   key1;
//outputled;
outputhhreg;
outputllreg;


parameter t1ms=16'd19_999;   
      

reg count;


reg h2hreg;
reg h2lreg;
reg l2hreg;
reg l2lreg;
reg isen;

always @(posedge clk or negedge rst )
   
      if(!rst)
       begin
          isen <=1'b0;
          count<=16'd0;
       end
      else if(count==t1ms)
      begin
          isen <=1'b1;
      end
      else
      begin
          count<=count +1'b1;
      end


always @(posedge clk or negedge rst )
      
   if(!rst)
       begin
         h2hreg <=1'b1;
         h2lreg <=1'b1;
         l2hreg <=1'b0;
         l2lreg <=1'b0;
      
       end
   else
       begin
         h2hreg <=key1;
         h2lreg <=h2hreg;
         l2hreg <=key1;
         l2lreg <=l2hreg;
       end
   
   
assign   hhreg = isen? (h2hreg&!h2lreg):1'b0;
assign   llreg = isen? (!l2hreg&l2lreg):1'b0;

endmodule
   
//*********************************************************   




   
module keyout ( clk ,rst ,hhreg,llreg,led);
      
input   clk;
input   rst;


inputhhreg;
inputllreg;
outputled;

parameter t20ms=20'hfffff;   
      

reg count; //20ms
reg led1;
//reg led1;
reg i;


always @(posedge clk or negedge rst )
   
      if(!rst)
       begin
         
          count<=20'd0;
       end
      
      else
      begin
          count<=count +1'b1;
      end
      


   
always @(posedge clk or negedge rst )
   
      if(!rst)
       begin
          i<=2'd0;
          count<=20'd0;
       end   
   else if(count==t20ms)
       begin
      case (i)
      
         2'd0:
             begin
               if(hhreg) i<=2'd1;
               else if(llreg) i<=2'd2;
             end
         2'd1:
            
               begin
                  led1<=1'b0;
                  i<=2'd0;
               end
         2'd2:
            
               begin
               
                  led1<=1'b1;
                  i<=2'd0;
                  end
          endcase
      end
   
   
assignled=led1;


endmodule

ersha4877 发表于 2010-12-19 16:15:27

为何老显示COUNT这个变量有问题
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10029): Constant driver at key.v(143)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error (10028): Can't resolve multiple constant drivers for net "count" at key.v(137)
Error: Can't elaborate user hierarchy "keyout:u2"

ersha4877 发表于 2010-12-19 16:24:53

解决了 把最后一个count<=20'd0; 去掉就可以了
页: [1]
查看完整版本: 一个按键,LED显示的程序问题,高手帮忙看看